{ "version": 3, "sources": ["../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/punycode/punycode.js", "../node_modules/tr46/lib/regexes.js", "../node_modules/tr46/lib/mappingTable.json", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/infra.js", "../node_modules/whatwg-url/lib/urlencoded.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/lodash.sortby/index.js", "../node_modules/whatwg-url/lib/URLSearchParams-impl.js", "../node_modules/whatwg-url/lib/URLSearchParams.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/universal-url/browser.js", "../esbuild/url_shim.js", "../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/buffer/index.js", "../esbuild/buffer_shim.js", "../node_modules/graphql/version.js", "../node_modules/graphql/jsutils/devAssert.js", "../node_modules/graphql/jsutils/isPromise.js", "../node_modules/graphql/jsutils/isObjectLike.js", "../node_modules/graphql/jsutils/invariant.js", "../node_modules/graphql/language/location.js", "../node_modules/graphql/language/printLocation.js", "../node_modules/graphql/error/GraphQLError.js", "../node_modules/graphql/error/syntaxError.js", "../node_modules/graphql/language/ast.js", "../node_modules/graphql/language/directiveLocation.js", "../node_modules/graphql/language/kinds.js", "../node_modules/graphql/language/characterClasses.js", "../node_modules/graphql/language/blockString.js", "../node_modules/graphql/language/tokenKind.js", "../node_modules/graphql/language/lexer.js", "../node_modules/graphql/jsutils/inspect.js", "../node_modules/graphql/jsutils/instanceOf.js", "../node_modules/graphql/language/source.js", "../node_modules/graphql/language/parser.js", "../node_modules/graphql/jsutils/didYouMean.js", "../node_modules/graphql/jsutils/identityFunc.js", "../node_modules/graphql/jsutils/keyMap.js", "../node_modules/graphql/jsutils/keyValMap.js", "../node_modules/graphql/jsutils/mapValue.js", "../node_modules/graphql/jsutils/naturalCompare.js", "../node_modules/graphql/jsutils/suggestionList.js", "../node_modules/graphql/jsutils/toObjMap.js", "../node_modules/graphql/language/printString.js", "../node_modules/graphql/language/visitor.js", "../node_modules/graphql/language/printer.js", "../node_modules/graphql/utilities/valueFromASTUntyped.js", "../node_modules/graphql/type/assertName.js", "../node_modules/graphql/type/definition.js", "../node_modules/graphql/utilities/typeComparators.js", "../node_modules/graphql/type/scalars.js", "../node_modules/graphql/type/directives.js", "../node_modules/graphql/jsutils/isIterableObject.js", "../node_modules/graphql/utilities/astFromValue.js", "../node_modules/graphql/type/introspection.js", "../node_modules/graphql/type/schema.js", "../node_modules/graphql/type/validate.js", "../node_modules/graphql/utilities/typeFromAST.js", "../node_modules/graphql/utilities/TypeInfo.js", "../node_modules/graphql/language/predicates.js", "../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js", "../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js", "../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js", "../node_modules/graphql/validation/rules/KnownArgumentNamesRule.js", "../node_modules/graphql/validation/rules/KnownDirectivesRule.js", "../node_modules/graphql/validation/rules/KnownFragmentNamesRule.js", "../node_modules/graphql/validation/rules/KnownTypeNamesRule.js", "../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js", "../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js", "../node_modules/graphql/validation/rules/NoFragmentCyclesRule.js", "../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js", "../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js", "../node_modules/graphql/validation/rules/NoUnusedVariablesRule.js", "../node_modules/graphql/utilities/sortValueNode.js", "../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js", "../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js", "../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js", "../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js", "../node_modules/graphql/validation/rules/ScalarLeafsRule.js", "../node_modules/graphql/jsutils/printPathArray.js", "../node_modules/graphql/jsutils/Path.js", "../node_modules/graphql/utilities/coerceInputValue.js", "../node_modules/graphql/utilities/valueFromAST.js", "../node_modules/graphql/execution/values.js", "../node_modules/graphql/execution/collectFields.js", "../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js", "../node_modules/graphql/jsutils/groupBy.js", "../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js", "../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js", "../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js", "../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js", "../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js", "../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js", "../node_modules/graphql/validation/rules/UniqueOperationNamesRule.js", "../node_modules/graphql/validation/rules/UniqueOperationTypesRule.js", "../node_modules/graphql/validation/rules/UniqueTypeNamesRule.js", "../node_modules/graphql/validation/rules/UniqueVariableNamesRule.js", "../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js", "../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js", "../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js", "../node_modules/graphql/validation/specifiedRules.js", "../node_modules/graphql/validation/ValidationContext.js", "../node_modules/graphql/validation/validate.js", "../node_modules/graphql/jsutils/memoize3.js", "../node_modules/graphql/jsutils/promiseForObject.js", "../node_modules/graphql/jsutils/promiseReduce.js", "../node_modules/graphql/jsutils/toError.js", "../node_modules/graphql/error/locatedError.js", "../node_modules/graphql/execution/execute.js", "../node_modules/graphql/graphql.js", "../node_modules/graphql/type/index.js", "../node_modules/graphql/language/index.js", "../node_modules/graphql/jsutils/isAsyncIterable.js", "../node_modules/graphql/execution/mapAsyncIterator.js", "../node_modules/graphql/execution/subscribe.js", "../node_modules/graphql/execution/index.js", "../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js", "../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js", "../node_modules/graphql/validation/index.js", "../node_modules/graphql/error/index.js", "../node_modules/graphql/utilities/getIntrospectionQuery.js", "../node_modules/graphql/utilities/getOperationAST.js", "../node_modules/graphql/utilities/getOperationRootType.js", "../node_modules/graphql/utilities/introspectionFromSchema.js", "../node_modules/graphql/utilities/buildClientSchema.js", "../node_modules/graphql/utilities/extendSchema.js", "../node_modules/graphql/utilities/buildASTSchema.js", "../node_modules/graphql/utilities/lexicographicSortSchema.js", "../node_modules/graphql/utilities/printSchema.js", "../node_modules/graphql/utilities/concatAST.js", "../node_modules/graphql/utilities/separateOperations.js", "../node_modules/graphql/utilities/stripIgnoredCharacters.js", "../node_modules/graphql/utilities/assertValidName.js", "../node_modules/graphql/utilities/findBreakingChanges.js", "../node_modules/graphql/utilities/index.js", "../node_modules/graphql/index.js", "../node_modules/@apollo/federation-internals/src/types.ts", "../node_modules/@apollo/federation-internals/src/utils.ts", "../node_modules/@apollo/federation-internals/src/error.ts", "../node_modules/js-levenshtein/index.js", "../node_modules/@apollo/federation-internals/src/suggestions.ts", "../node_modules/has-symbols/shams.js", "../node_modules/has-tostringtag/shams.js", "../node_modules/es-errors/index.js", "../node_modules/es-errors/eval.js", "../node_modules/es-errors/range.js", "../node_modules/es-errors/ref.js", "../node_modules/es-errors/syntax.js", "../node_modules/es-errors/type.js", "../node_modules/es-errors/uri.js", "../node_modules/has-symbols/index.js", "../node_modules/has-proto/index.js", "../node_modules/function-bind/implementation.js", "../node_modules/function-bind/index.js", "../node_modules/hasown/index.js", "../node_modules/get-intrinsic/index.js", "../node_modules/es-define-property/index.js", "../node_modules/gopd/gOPD.js", "../node_modules/gopd/index.js", "../node_modules/define-data-property/index.js", "../node_modules/has-property-descriptors/index.js", "../node_modules/set-function-length/index.js", "../node_modules/call-bind/index.js", "../node_modules/call-bind/callBound.js", "../node_modules/is-arguments/index.js", "../node_modules/is-generator-function/index.js", "../node_modules/is-callable/index.js", "../node_modules/for-each/index.js", "../node_modules/available-typed-arrays/index.js", "../node_modules/which-typed-array/index.js", "../node_modules/is-typed-array/index.js", "../node_modules/util/support/types.js", "../node_modules/util/support/isBufferBrowser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/util/util.js", "../node_modules/@apollo/federation-internals/src/values.ts", "../node_modules/@apollo/federation-internals/src/knownCoreFeatures.ts", "../node_modules/@apollo/federation-internals/src/directiveAndTypeSpecification.ts", "../node_modules/@apollo/federation-internals/src/specs/coreSpec.ts", "../node_modules/@apollo/federation-internals/src/specs/inaccessibleSpec.ts", "../node_modules/@apollo/federation-internals/src/print.ts", "../node_modules/@apollo/federation-internals/src/introspection.ts", "../node_modules/@apollo/federation-internals/src/validate.ts", "../node_modules/@apollo/federation-internals/src/definitions.ts", "../node_modules/@apollo/federation-internals/src/buildSchema.ts", "../node_modules/@apollo/federation-internals/src/validation/KnownTypeNamesInFederationRule.ts", "../node_modules/uuid/dist/commonjs-browser/rng.js", "../node_modules/uuid/dist/commonjs-browser/regex.js", "../node_modules/uuid/dist/commonjs-browser/validate.js", "../node_modules/uuid/dist/commonjs-browser/stringify.js", "../node_modules/uuid/dist/commonjs-browser/v1.js", "../node_modules/uuid/dist/commonjs-browser/parse.js", "../node_modules/uuid/dist/commonjs-browser/v35.js", "../node_modules/uuid/dist/commonjs-browser/md5.js", "../node_modules/uuid/dist/commonjs-browser/v3.js", "../node_modules/uuid/dist/commonjs-browser/native.js", "../node_modules/uuid/dist/commonjs-browser/v4.js", "../node_modules/uuid/dist/commonjs-browser/sha1.js", "../node_modules/uuid/dist/commonjs-browser/v5.js", "../node_modules/uuid/dist/commonjs-browser/nil.js", "../node_modules/uuid/dist/commonjs-browser/version.js", "../node_modules/uuid/dist/commonjs-browser/index.js", "../node_modules/@apollo/federation-internals/src/operations.ts", "../node_modules/@apollo/federation-internals/src/specs/tagSpec.ts", "../node_modules/@apollo/federation-internals/src/precompute.ts", "../node_modules/@apollo/federation-internals/src/specs/authenticatedSpec.ts", "../node_modules/@apollo/federation-internals/src/argumentCompositionStrategies.ts", "../node_modules/@apollo/federation-internals/src/specs/requiresScopesSpec.ts", "../node_modules/@apollo/federation-internals/src/specs/policySpec.ts", "../node_modules/@apollo/federation-internals/src/specs/sourceSpec.ts", "../node_modules/@apollo/federation-internals/src/specs/contextSpec.ts", "../node_modules/@apollo/federation-internals/src/specs/costSpec.ts", "../node_modules/@apollo/federation-internals/src/specs/federationSpec.ts", "../node_modules/@apollo/federation-internals/src/specs/joinSpec.ts", "../node_modules/@apollo/federation-internals/src/federation.ts", "../node_modules/color-name/index.js", "../node_modules/color-convert/conversions.js", "../node_modules/color-convert/route.js", "../node_modules/color-convert/index.js", "../node_modules/ansi-styles/index.js", "../node_modules/supports-color/browser.js", "../node_modules/chalk/source/util.js", "../node_modules/chalk/source/templates.js", "../node_modules/chalk/source/index.js", "../node_modules/console-polyfill/index.js", "../node_modules/@apollo/federation-internals/src/debug.ts", "deno-fs:fs", "../node_modules/path-browserify/index.js", "../node_modules/@apollo/federation-internals/src/extractSubgraphsFromSupergraph.ts", "../node_modules/@apollo/federation-internals/src/supergraphs.ts", "../node_modules/@apollo/federation-internals/src/schemaUpgrader.ts", "../node_modules/@apollo/federation-internals/src/graphQLJSSchemaToAST.ts", "../node_modules/@apollo/federation-internals/src/index.ts", "../node_modules/@apollo/query-graphs/src/transition.ts", "../node_modules/@apollo/query-graphs/src/nonTrivialEdgePrecomputing.ts", "../node_modules/@apollo/query-graphs/src/querygraph.ts", "../node_modules/object-keys/isArguments.js", "../node_modules/object-keys/implementation.js", "../node_modules/object-keys/index.js", "../node_modules/define-properties/index.js", "../node_modules/object.assign/implementation.js", "../node_modules/object.assign/polyfill.js", "../node_modules/object.assign/shim.js", "../node_modules/object.assign/index.js", "../node_modules/functions-have-names/index.js", "../node_modules/set-function-name/index.js", "../node_modules/regexp.prototype.flags/implementation.js", "../node_modules/regexp.prototype.flags/polyfill.js", "../node_modules/regexp.prototype.flags/shim.js", "../node_modules/regexp.prototype.flags/index.js", "../node_modules/object-inspect/index.js", "../node_modules/side-channel/index.js", "../node_modules/internal-slot/index.js", "../node_modules/stop-iteration-iterator/index.js", "../node_modules/isarray/index.js", "../node_modules/is-string/index.js", "../node_modules/is-map/index.js", "../node_modules/is-set/index.js", "../node_modules/es-get-iterator/index.js", "../node_modules/object-is/implementation.js", "../node_modules/object-is/polyfill.js", "../node_modules/object-is/shim.js", "../node_modules/object-is/index.js", "../node_modules/is-array-buffer/index.js", "../node_modules/is-date-object/index.js", "../node_modules/is-regex/index.js", "../node_modules/is-shared-array-buffer/index.js", "../node_modules/is-number-object/index.js", "../node_modules/is-boolean-object/index.js", "../node_modules/safe-regex-test/index.js", "../node_modules/is-symbol/index.js", "../node_modules/has-bigints/index.js", "../node_modules/is-bigint/index.js", "../node_modules/which-boxed-primitive/index.js", "../node_modules/is-weakmap/index.js", "../node_modules/is-weakset/index.js", "../node_modules/which-collection/index.js", "../node_modules/array-buffer-byte-length/index.js", "../node_modules/deep-equal/index.js", "../node_modules/@apollo/query-graphs/src/pathContext.ts", "../node_modules/@apollo/query-graphs/src/pathTree.ts", "../node_modules/@apollo/query-graphs/src/graphPath.ts", "../node_modules/ts-graphviz/lib/common/index.cjs", "../node_modules/ts-graphviz/lib/utils/index.cjs", "../node_modules/ts-graphviz/lib/ast/index.cjs", "../node_modules/ts-graphviz/lib/core/index.cjs", "../node_modules/ts-graphviz/lib/index.cjs", "../node_modules/@apollo/query-graphs/src/graphviz.ts", "../node_modules/@apollo/query-graphs/src/conditionsCaching.ts", "../node_modules/@apollo/query-graphs/src/conditionsValidation.ts", "../node_modules/@apollo/query-graphs/src/mermaid.ts", "../node_modules/@apollo/query-graphs/src/index.ts", "../node_modules/@apollo/composition/src/hints.ts", "../node_modules/@apollo/composition/src/merging/reporter.ts", "../node_modules/@apollo/composition/src/composeDirectiveManager.ts", "../node_modules/@apollo/composition/src/merging/coreDirectiveCollector.ts", "../node_modules/@apollo/composition/src/merging/merge.ts", "../node_modules/@apollo/composition/src/merging/index.ts", "../node_modules/@apollo/composition/src/validate.ts", "../node_modules/@apollo/composition/src/compose.ts", "../node_modules/@apollo/composition/src/index.ts", "../js-src/composition.ts", "../js-src/index.ts"], "sourcesContent": ["\"use strict\";\n\nfunction _(message, opts) {\n return `${opts && opts.context ? opts.context : \"Value\"} ${message}.`;\n}\n\nfunction type(V) {\n if (V === null) {\n return \"Null\";\n }\n switch (typeof V) {\n case \"undefined\":\n return \"Undefined\";\n case \"boolean\":\n return \"Boolean\";\n case \"number\":\n return \"Number\";\n case \"string\":\n return \"String\";\n case \"symbol\":\n return \"Symbol\";\n case \"object\":\n // Falls through\n case \"function\":\n // Falls through\n default:\n // Per ES spec, typeof returns an implemention-defined value that is not any of the existing ones for\n // uncallable non-standard exotic objects. Yet Type() which the Web IDL spec depends on returns Object for\n // such cases. So treat the default case as an object.\n return \"Object\";\n }\n}\n\n// Round x to the nearest integer, choosing the even integer if it lies halfway between two.\nfunction evenRound(x) {\n // There are four cases for numbers with fractional part being .5:\n //\n // case | x | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 | example\n // 1 | 2n + 0.5 | 2n | 2n + 1 | 2n | > | 0.5 | 0 | 0.5 -> 0\n // 2 | 2n + 1.5 | 2n + 1 | 2n + 2 | 2n + 2 | > | 0.5 | 1 | 1.5 -> 2\n // 3 | -2n - 0.5 | -2n - 1 | -2n | -2n | < | -0.5 | 0 | -0.5 -> 0\n // 4 | -2n - 1.5 | -2n - 2 | -2n - 1 | -2n - 2 | < | -0.5 | 1 | -1.5 -> -2\n // (where n is a non-negative integer)\n //\n // Branch here for cases 1 and 4\n if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||\n (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {\n return censorNegativeZero(Math.floor(x));\n }\n\n return censorNegativeZero(Math.round(x));\n}\n\nfunction integerPart(n) {\n return censorNegativeZero(Math.trunc(n));\n}\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction modulo(x, y) {\n // https://tc39.github.io/ecma262/#eqn-modulo\n // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos\n const signMightNotMatch = x % y;\n if (sign(y) !== sign(signMightNotMatch)) {\n return signMightNotMatch + y;\n }\n return signMightNotMatch;\n}\n\nfunction censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n}\n\nfunction createIntegerConversion(bitLength, typeOpts) {\n const isSigned = !typeOpts.unsigned;\n\n let lowerBound;\n let upperBound;\n if (bitLength === 64) {\n upperBound = Math.pow(2, 53) - 1;\n lowerBound = !isSigned ? 0 : -Math.pow(2, 53) + 1;\n } else if (!isSigned) {\n lowerBound = 0;\n upperBound = Math.pow(2, bitLength) - 1;\n } else {\n lowerBound = -Math.pow(2, bitLength - 1);\n upperBound = Math.pow(2, bitLength - 1) - 1;\n }\n\n const twoToTheBitLength = Math.pow(2, bitLength);\n const twoToOneLessThanTheBitLength = Math.pow(2, bitLength - 1);\n\n return (V, opts) => {\n if (opts === undefined) {\n opts = {};\n }\n\n let x = +V;\n x = censorNegativeZero(x); // Spec discussion ongoing: https://github.com/heycam/webidl/issues/306\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(_(\"is not a finite number\", opts));\n }\n\n x = integerPart(x);\n\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(_(\n `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`, opts));\n }\n\n return x;\n }\n\n if (!Number.isNaN(x) && opts.clamp) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n x = evenRound(x);\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n x = integerPart(x);\n\n // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if\n // possible. Hopefully it's an optimization for the non-64-bitLength cases too.\n if (x >= lowerBound && x <= upperBound) {\n return x;\n }\n\n // These will not work great for bitLength of 64, but oh well. See the README for more details.\n x = modulo(x, twoToTheBitLength);\n if (isSigned && x >= twoToOneLessThanTheBitLength) {\n return x - twoToTheBitLength;\n }\n return x;\n };\n}\n\nexports.any = V => {\n return V;\n};\n\nexports.void = function () {\n return undefined;\n};\n\nexports.boolean = function (val) {\n return !!val;\n};\n\nexports.byte = createIntegerConversion(8, { unsigned: false });\nexports.octet = createIntegerConversion(8, { unsigned: true });\n\nexports.short = createIntegerConversion(16, { unsigned: false });\nexports[\"unsigned short\"] = createIntegerConversion(16, { unsigned: true });\n\nexports.long = createIntegerConversion(32, { unsigned: false });\nexports[\"unsigned long\"] = createIntegerConversion(32, { unsigned: true });\n\nexports[\"long long\"] = createIntegerConversion(64, { unsigned: false });\nexports[\"unsigned long long\"] = createIntegerConversion(64, { unsigned: true });\n\nexports.double = (V, opts) => {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(_(\"is not a finite floating-point value\", opts));\n }\n\n return x;\n};\n\nexports[\"unrestricted double\"] = V => {\n const x = +V;\n\n return x;\n};\n\nexports.float = (V, opts) => {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(_(\"is not a finite floating-point value\", opts));\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n const y = Math.fround(x);\n\n if (!Number.isFinite(y)) {\n throw new TypeError(_(\"is outside the range of a single-precision floating-point value\", opts));\n }\n\n return y;\n};\n\nexports[\"unrestricted float\"] = V => {\n const x = +V;\n\n if (isNaN(x)) {\n return x;\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n return Math.fround(x);\n};\n\nexports.DOMString = function (V, opts) {\n if (opts === undefined) {\n opts = {};\n }\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n if (typeof V === \"symbol\") {\n throw new TypeError(_(\"is a symbol, which cannot be converted to a string\", opts));\n }\n\n return String(V);\n};\n\nexports.ByteString = (V, opts) => {\n const x = exports.DOMString(V, opts);\n let c;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(_(\"is not a valid ByteString\", opts));\n }\n }\n\n return x;\n};\n\nexports.USVString = (V, opts) => {\n const S = exports.DOMString(V, opts);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + ((2 << 9) * a) + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n\n return U.join(\"\");\n};\n\nexports.object = (V, opts) => {\n if (type(V) !== \"Object\") {\n throw new TypeError(_(\"is not an object\", opts));\n }\n\n return V;\n};\n\n// Not exported, but used in Function and VoidFunction.\n\n// Neither Function nor VoidFunction is defined with [TreatNonObjectAsNull], so\n// handling for that is omitted.\nfunction convertCallbackFunction(V, opts) {\n if (typeof V !== \"function\") {\n throw new TypeError(_(\"is not a function\", opts));\n }\n return V;\n}\n\n[\n Error,\n ArrayBuffer, // The IsDetachedBuffer abstract operation is not exposed in JS\n DataView, Int8Array, Int16Array, Int32Array, Uint8Array,\n Uint16Array, Uint32Array, Uint8ClampedArray, Float32Array, Float64Array\n].forEach(func => {\n const name = func.name;\n const article = /^[AEIOU]/.test(name) ? \"an\" : \"a\";\n exports[name] = (V, opts) => {\n if (!(V instanceof func)) {\n throw new TypeError(_(`is not ${article} ${name} object`, opts));\n }\n\n return V;\n };\n});\n\n// Common definitions\n\nexports.ArrayBufferView = (V, opts) => {\n if (!ArrayBuffer.isView(V)) {\n throw new TypeError(_(\"is not a view on an ArrayBuffer object\", opts));\n }\n\n return V;\n};\n\nexports.BufferSource = (V, opts) => {\n if (!(ArrayBuffer.isView(V) || V instanceof ArrayBuffer)) {\n throw new TypeError(_(\"is not an ArrayBuffer object or a view on one\", opts));\n }\n\n return V;\n};\n\nexports.DOMTimeStamp = exports[\"unsigned long long\"];\n\nexports.Function = convertCallbackFunction;\n\nexports.VoidFunction = convertCallbackFunction;\n", "\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null || typeof value === \"function\";\n}\n\nfunction hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nconst getOwnPropertyDescriptors = typeof Object.getOwnPropertyDescriptors === \"function\" ?\n Object.getOwnPropertyDescriptors :\n // Polyfill exists until we require Node.js v8.x\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n obj => {\n if (obj === undefined || obj === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n obj = Object(obj);\n const ownKeys = Reflect.ownKeys(obj);\n const descriptors = {};\n for (const key of ownKeys) {\n const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);\n if (descriptor !== undefined) {\n Reflect.defineProperty(descriptors, key, {\n value: descriptor,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return descriptors;\n };\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\n\nfunction getSameObject(wrapper, prop, creator) {\n if (!wrapper[sameObjectCaches]) {\n wrapper[sameObjectCaches] = Object.create(null);\n }\n\n if (prop in wrapper[sameObjectCaches]) {\n return wrapper[sameObjectCaches][prop];\n }\n\n wrapper[sameObjectCaches][prop] = creator();\n return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n const wrapper = wrapperForImpl(impl);\n return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n const impl = implForWrapper(wrapper);\n return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\nconst IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));\n\nfunction isArrayIndexPropName(P) {\n if (typeof P !== \"string\") {\n return false;\n }\n const i = P >>> 0;\n if (i === Math.pow(2, 32) - 1) {\n return false;\n }\n const s = `${i}`;\n if (P !== s) {\n return false;\n }\n return true;\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nmodule.exports = exports = {\n isObject,\n hasOwn,\n getOwnPropertyDescriptors,\n wrapperSymbol,\n implSymbol,\n getSameObject,\n wrapperForImpl,\n implForWrapper,\n tryWrapperForImpl,\n tryImplForWrapper,\n iterInternalSymbol,\n IteratorPrototype,\n isArrayIndexPropName,\n supportsPropertyIndex,\n supportedPropertyIndices,\n supportsPropertyName,\n supportedPropertyNames,\n indexedGet,\n indexedSetNew,\n indexedSetExisting,\n namedGet,\n namedSetNew,\n namedSetExisting,\n namedDelete\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n", "\"use strict\";\n\nconst combiningMarks = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111CA}-\\u{111CC}\\u{1122C}-\\u{11237}\\u{1123E}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11435}-\\u{11446}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F51}-\\u{16F7E}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]/u;\nconst combiningClassVirama = /[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0BCD\\u0C4D\\u0CCD\\u0D3B\\u0D3C\\u0D4D\\u0DCA\\u0E3A\\u0F84\\u1039\\u103A\\u1714\\u1734\\u17D2\\u1A60\\u1B44\\u1BAA\\u1BAB\\u1BF2\\u1BF3\\u2D7F\\uA806\\uA8C4\\uA953\\uA9C0\\uAAF6\\uABED\\u{10A3F}\\u{11046}\\u{1107F}\\u{110B9}\\u{11133}\\u{11134}\\u{111C0}\\u{11235}\\u{112EA}\\u{1134D}\\u{11442}\\u{114C2}\\u{115BF}\\u{1163F}\\u{116B6}\\u{1172B}\\u{11A34}\\u{11A47}\\u{11A99}\\u{11C3F}\\u{11D44}\\u{11D45}]/u;\nconst validZWNJ = /[\\u0620\\u0626\\u0628\\u062A-\\u062E\\u0633-\\u063F\\u0641-\\u0647\\u0649\\u064A\\u066E\\u066F\\u0678-\\u0687\\u069A-\\u06BF\\u06C1\\u06C2\\u06CC\\u06CE\\u06D0\\u06D1\\u06FA-\\u06FC\\u06FF\\u0712-\\u0714\\u071A-\\u071D\\u071F-\\u0727\\u0729\\u072B\\u072D\\u072E\\u074E-\\u0758\\u075C-\\u076A\\u076D-\\u0770\\u0772\\u0775-\\u0777\\u077A-\\u077F\\u07CA-\\u07EA\\u0841-\\u0845\\u0848\\u084A-\\u0853\\u0855\\u0860\\u0862-\\u0865\\u0868\\u08A0-\\u08A9\\u08AF\\u08B0\\u08B3\\u08B4\\u08B6-\\u08B8\\u08BA-\\u08BD\\u1807\\u1820-\\u1877\\u1887-\\u18A8\\u18AA\\uA840-\\uA872\\u{10AC0}-\\u{10AC4}\\u{10ACD}\\u{10AD3}-\\u{10ADC}\\u{10ADE}-\\u{10AE0}\\u{10AEB}-\\u{10AEE}\\u{10B80}\\u{10B82}\\u{10B86}-\\u{10B88}\\u{10B8A}\\u{10B8B}\\u{10B8D}\\u{10B90}\\u{10BAD}\\u{10BAE}\\u{1E900}-\\u{1E943}][\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110BD}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111CA}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*\\u200C[\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110BD}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111CA}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*[\\u0620\\u0622-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u0673\\u0675-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u077F\\u07CA-\\u07EA\\u0840-\\u0855\\u0860\\u0862-\\u0865\\u0867-\\u086A\\u08A0-\\u08AC\\u08AE-\\u08B4\\u08B6-\\u08BD\\u1807\\u1820-\\u1877\\u1887-\\u18A8\\u18AA\\uA840-\\uA871\\u{10AC0}-\\u{10AC5}\\u{10AC7}\\u{10AC9}\\u{10ACA}\\u{10ACE}-\\u{10AD6}\\u{10AD8}-\\u{10AE1}\\u{10AE4}\\u{10AEB}-\\u{10AEF}\\u{10B80}-\\u{10B91}\\u{10BA9}-\\u{10BAE}\\u{1E900}-\\u{1E943}]/u;\nconst bidiDomain = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05F0-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B\\u061C\\u061E-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08E2\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A33}\\u{10A40}-\\u{10A47}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10CFF}\\u{10E60}-\\u{10E7E}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS1LTR = /[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u055F\\u0561-\\u0587\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C7F\\u0C80\\u0C82\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4B\\u1B50-\\u1B6A\\u1B74-\\u1B7C\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u3190-\\u31BA\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FD\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB65\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11143}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C9}\\u{111CD}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{11459}\\u{1145B}\\u{1145D}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{11719}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{1173F}\\u{118A0}-\\u{118F2}\\u{118FF}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A83}\\u{11A86}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11A9C}\\u{11A9E}-\\u{11AA2}\\u{11AC0}-\\u{11AF8}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{12000}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{13000}-\\u{1342E}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}\\u{16A6F}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16F00}-\\u{16F44}\\u{16F50}-\\u{16F7E}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{17000}-\\u{187EC}\\u{18800}-\\u{18AF2}\\u{1B000}-\\u{1B11E}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D360}-\\u{1D371}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6DA}\\u{1D6DC}-\\u{1D714}\\u{1D716}-\\u{1D74E}\\u{1D750}-\\u{1D788}\\u{1D78A}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D800}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{20000}-\\u{2A6D6}\\u{2A700}-\\u{2B734}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]/u;\nconst bidiS1RTL = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05F0-\\u05F4\\u0608\\u060B\\u060D\\u061B\\u061C\\u061E-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A33}\\u{10A40}-\\u{10A47}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10CFF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS2 = /^[\\0-\\x08\\x0E-\\x1B!-@\\[-`\\{-\\x84\\x86-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9\\u02BA\\u02C2-\\u02CF\\u02D2-\\u02DF\\u02E5-\\u02ED\\u02EF-\\u036F\\u0374\\u0375\\u037E\\u0384\\u0385\\u0387\\u03F6\\u0483-\\u0489\\u058A\\u058D-\\u058F\\u0591-\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F4\\u0600-\\u061C\\u061E-\\u070D\\u070F-\\u074A\\u074D-\\u07B1\\u07C0-\\u07FA\\u0800-\\u082D\\u0830-\\u083E\\u0840-\\u085B\\u085E\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09F2\\u09F3\\u09FB\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AF1\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0BF3-\\u0BFA\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C78-\\u0C7E\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E3F\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39-\\u0F3D\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1390-\\u1399\\u1400\\u169B\\u169C\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DB\\u17DD\\u17F0-\\u17F9\\u1800-\\u180E\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1940\\u1944\\u1945\\u19DE-\\u19FF\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u200B-\\u200D\\u200F-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20BF\\u20D0-\\u20F0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u2150-\\u215F\\u2189-\\u218B\\u2190-\\u2335\\u237B-\\u2394\\u2396-\\u2426\\u2440-\\u244A\\u2460-\\u249B\\u24EA-\\u26AB\\u26AD-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BB9\\u2BBD-\\u2BC8\\u2BCA-\\u2BD2\\u2BEC-\\u2BEF\\u2CE5-\\u2CEA\\u2CEF-\\u2CF1\\u2CF9-\\u2CFF\\u2D7F\\u2DE0-\\u2E49\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u3004\\u3008-\\u3020\\u302A-\\u302D\\u3030\\u3036\\u3037\\u303D-\\u303F\\u3099-\\u309C\\u30A0\\u30FB\\u31C0-\\u31E3\\u321D\\u321E\\u3250-\\u325F\\u327C-\\u327E\\u32B1-\\u32BF\\u32CC-\\u32CF\\u3377-\\u337A\\u33DE\\u33DF\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA60D-\\uA60F\\uA66F-\\uA67F\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA700-\\uA721\\uA788\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA828-\\uA82B\\uA838\\uA839\\uA874-\\uA877\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC1\\uFBD3-\\uFD3F\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFD\\uFE00-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10101}\\u{10140}-\\u{1018C}\\u{10190}-\\u{1019B}\\u{101A0}\\u{101FD}\\u{102E0}-\\u{102FB}\\u{10376}-\\u{1037A}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{1091F}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A33}\\u{10A38}-\\u{10A3A}\\u{10A3F}-\\u{10A47}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE6}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B39}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10CFF}\\u{10E60}-\\u{10E7E}\\u{11001}\\u{11038}-\\u{11046}\\u{11052}-\\u{11065}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111CA}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{11660}-\\u{1166C}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D200}-\\u{1D245}\\u{1D300}-\\u{1D356}\\u{1D6DB}\\u{1D715}\\u{1D74F}\\u{1D789}\\u{1D7C3}\\u{1D7CE}-\\u{1D7FF}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8D6}\\u{1E900}-\\u{1E94A}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F10C}\\u{1F16A}\\u{1F16B}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D4}\\u{1F6E0}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6F8}\\u{1F700}-\\u{1F773}\\u{1F780}-\\u{1F7D4}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F900}-\\u{1F90B}\\u{1F910}-\\u{1F93E}\\u{1F940}-\\u{1F94C}\\u{1F950}-\\u{1F96B}\\u{1F980}-\\u{1F997}\\u{1F9C0}\\u{1F9D0}-\\u{1F9E6}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS3 = /[0-9\\xB2\\xB3\\xB9\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05F0-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B\\u061C\\u061E-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08E2\\u200F\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A33}\\u{10A40}-\\u{10A47}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10CFF}\\u{10E60}-\\u{10E7E}\\u{1D7CE}-\\u{1D7FF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1F100}-\\u{1F10A}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111CA}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS4EN = /[0-9\\xB2\\xB3\\xB9\\u06F0-\\u06F9\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{1D7CE}-\\u{1D7FF}\\u{1F100}-\\u{1F10A}]/u;\nconst bidiS4AN = /[\\u0600-\\u0605\\u0660-\\u0669\\u066B\\u066C\\u06DD\\u08E2\\u{10E60}-\\u{10E7E}]/u;\nconst bidiS5 = /^[\\0-\\x08\\x0E-\\x1B!-\\x84\\x86-\\u0377\\u037A-\\u037F\\u0384-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u052F\\u0531-\\u0556\\u0559-\\u055F\\u0561-\\u0587\\u0589\\u058A\\u058D-\\u058F\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0606\\u0607\\u0609\\u060A\\u060C\\u060E-\\u061A\\u064B-\\u065F\\u066A\\u0670\\u06D6-\\u06DC\\u06DE-\\u06E4\\u06E7-\\u06ED\\u06F0-\\u06F9\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07F6-\\u07F9\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FD\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E3A\\u0E3F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1400-\\u167F\\u1681-\\u169C\\u16A0-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1736\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1800-\\u180E\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE-\\u1A1B\\u1A1E-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1AB0-\\u1ABE\\u1B00-\\u1B4B\\u1B50-\\u1B7C\\u1B80-\\u1BF3\\u1BFC-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1CC0-\\u1CC7\\u1CD0-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u200B-\\u200E\\u2010-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2071\\u2074-\\u208E\\u2090-\\u209C\\u20A0-\\u20BF\\u20D0-\\u20F0\\u2100-\\u218B\\u2190-\\u2426\\u2440-\\u244A\\u2460-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BB9\\u2BBD-\\u2BC8\\u2BCA-\\u2BD2\\u2BEC-\\u2BEF\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CF3\\u2CF9-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2E49\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303F\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u32FE\\u3300-\\u4DB5\\u4DC0-\\u9FEA\\uA000-\\uA48C\\uA490-\\uA4C6\\uA4D0-\\uA62B\\uA640-\\uA6F7\\uA700-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA82B\\uA830-\\uA839\\uA840-\\uA877\\uA880-\\uA8C5\\uA8CE-\\uA8D9\\uA8E0-\\uA8FD\\uA900-\\uA953\\uA95F-\\uA97C\\uA980-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAAC2\\uAADB-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB65\\uAB70-\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1E\\uFB29\\uFD3E\\uFD3F\\uFDFD\\uFE00-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}-\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1018E}\\u{10190}-\\u{1019B}\\u{101A0}\\u{101D0}-\\u{101FD}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E0}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{1037A}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{1091F}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10B39}-\\u{10B3F}\\u{11000}-\\u{1104D}\\u{11052}-\\u{1106F}\\u{1107F}-\\u{110C1}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11100}-\\u{11134}\\u{11136}-\\u{11143}\\u{11150}-\\u{11176}\\u{11180}-\\u{111CD}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1123E}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112EA}\\u{112F0}-\\u{112F9}\\u{11300}-\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133C}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11400}-\\u{11459}\\u{1145B}\\u{1145D}\\u{11480}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B5}\\u{115B8}-\\u{115DD}\\u{11600}-\\u{11644}\\u{11650}-\\u{11659}\\u{11660}-\\u{1166C}\\u{11680}-\\u{116B7}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{11719}\\u{1171D}-\\u{1172B}\\u{11730}-\\u{1173F}\\u{118A0}-\\u{118F2}\\u{118FF}\\u{11A00}-\\u{11A47}\\u{11A50}-\\u{11A83}\\u{11A86}-\\u{11A9C}\\u{11A9E}-\\u{11AA2}\\u{11AC0}-\\u{11AF8}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C36}\\u{11C38}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D47}\\u{11D50}-\\u{11D59}\\u{12000}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{13000}-\\u{1342E}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}\\u{16A6F}\\u{16AD0}-\\u{16AED}\\u{16AF0}-\\u{16AF5}\\u{16B00}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16F00}-\\u{16F44}\\u{16F50}-\\u{16F7E}\\u{16F8F}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{17000}-\\u{187EC}\\u{18800}-\\u{18AF2}\\u{1B000}-\\u{1B11E}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}-\\u{1BCA3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D1E8}\\u{1D200}-\\u{1D245}\\u{1D300}-\\u{1D356}\\u{1D360}-\\u{1D371}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D7CB}\\u{1D7CE}-\\u{1DA8B}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F10C}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F16B}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D4}\\u{1F6E0}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6F8}\\u{1F700}-\\u{1F773}\\u{1F780}-\\u{1F7D4}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F900}-\\u{1F90B}\\u{1F910}-\\u{1F93E}\\u{1F940}-\\u{1F94C}\\u{1F950}-\\u{1F96B}\\u{1F980}-\\u{1F997}\\u{1F9C0}\\u{1F9D0}-\\u{1F9E6}\\u{20000}-\\u{2A6D6}\\u{2A700}-\\u{2B734}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]*$/u;\nconst bidiS6 = /[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u055F\\u0561-\\u0587\\u0589\\u06F0-\\u06F9\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C7F\\u0C80\\u0C82\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4B\\u1B50-\\u1B6A\\u1B74-\\u1B7C\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u2488-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u3190-\\u31BA\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FD\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB65\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E1}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11143}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C9}\\u{111CD}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{11459}\\u{1145B}\\u{1145D}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{11719}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{1173F}\\u{118A0}-\\u{118F2}\\u{118FF}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A83}\\u{11A86}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11A9C}\\u{11A9E}-\\u{11AA2}\\u{11AC0}-\\u{11AF8}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{12000}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{13000}-\\u{1342E}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}\\u{16A6F}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16F00}-\\u{16F44}\\u{16F50}-\\u{16F7E}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{17000}-\\u{187EC}\\u{18800}-\\u{18AF2}\\u{1B000}-\\u{1B11E}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D360}-\\u{1D371}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6DA}\\u{1D6DC}-\\u{1D714}\\u{1D716}-\\u{1D74E}\\u{1D750}-\\u{1D788}\\u{1D78A}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D7CE}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1F100}-\\u{1F10A}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{20000}-\\u{2A6D6}\\u{2A700}-\\u{2B734}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111CA}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\n\nmodule.exports = {\n combiningMarks,\n combiningClassVirama,\n validZWNJ,\n bidiDomain,\n bidiS1LTR,\n bidiS1RTL,\n bidiS2,\n bidiS3,\n bidiS4EN,\n bidiS4AN,\n bidiS5,\n bidiS6\n};\n", "[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",\"a\"],[[66,66],\"mapped\",\"b\"],[[67,67],\"mapped\",\"c\"],[[68,68],\"mapped\",\"d\"],[[69,69],\"mapped\",\"e\"],[[70,70],\"mapped\",\"f\"],[[71,71],\"mapped\",\"g\"],[[72,72],\"mapped\",\"h\"],[[73,73],\"mapped\",\"i\"],[[74,74],\"mapped\",\"j\"],[[75,75],\"mapped\",\"k\"],[[76,76],\"mapped\",\"l\"],[[77,77],\"mapped\",\"m\"],[[78,78],\"mapped\",\"n\"],[[79,79],\"mapped\",\"o\"],[[80,80],\"mapped\",\"p\"],[[81,81],\"mapped\",\"q\"],[[82,82],\"mapped\",\"r\"],[[83,83],\"mapped\",\"s\"],[[84,84],\"mapped\",\"t\"],[[85,85],\"mapped\",\"u\"],[[86,86],\"mapped\",\"v\"],[[87,87],\"mapped\",\"w\"],[[88,88],\"mapped\",\"x\"],[[89,89],\"mapped\",\"y\"],[[90,90],\"mapped\",\"z\"],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",\" \"],[[161,167],\"valid\",\"\",\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",\" \u0308\"],[[169,169],\"valid\",\"\",\"NV8\"],[[170,170],\"mapped\",\"a\"],[[171,172],\"valid\",\"\",\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",\"\",\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",\" \u0304\"],[[176,177],\"valid\",\"\",\"NV8\"],[[178,178],\"mapped\",\"2\"],[[179,179],\"mapped\",\"3\"],[[180,180],\"disallowed_STD3_mapped\",\" \u0301\"],[[181,181],\"mapped\",\"\u03BC\"],[[182,182],\"valid\",\"\",\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",\" \u0327\"],[[185,185],\"mapped\",\"1\"],[[186,186],\"mapped\",\"o\"],[[187,187],\"valid\",\"\",\"NV8\"],[[188,188],\"mapped\",\"1\u20444\"],[[189,189],\"mapped\",\"1\u20442\"],[[190,190],\"mapped\",\"3\u20444\"],[[191,191],\"valid\",\"\",\"NV8\"],[[192,192],\"mapped\",\"\u00E0\"],[[193,193],\"mapped\",\"\u00E1\"],[[194,194],\"mapped\",\"\u00E2\"],[[195,195],\"mapped\",\"\u00E3\"],[[196,196],\"mapped\",\"\u00E4\"],[[197,197],\"mapped\",\"\u00E5\"],[[198,198],\"mapped\",\"\u00E6\"],[[199,199],\"mapped\",\"\u00E7\"],[[200,200],\"mapped\",\"\u00E8\"],[[201,201],\"mapped\",\"\u00E9\"],[[202,202],\"mapped\",\"\u00EA\"],[[203,203],\"mapped\",\"\u00EB\"],[[204,204],\"mapped\",\"\u00EC\"],[[205,205],\"mapped\",\"\u00ED\"],[[206,206],\"mapped\",\"\u00EE\"],[[207,207],\"mapped\",\"\u00EF\"],[[208,208],\"mapped\",\"\u00F0\"],[[209,209],\"mapped\",\"\u00F1\"],[[210,210],\"mapped\",\"\u00F2\"],[[211,211],\"mapped\",\"\u00F3\"],[[212,212],\"mapped\",\"\u00F4\"],[[213,213],\"mapped\",\"\u00F5\"],[[214,214],\"mapped\",\"\u00F6\"],[[215,215],\"valid\",\"\",\"NV8\"],[[216,216],\"mapped\",\"\u00F8\"],[[217,217],\"mapped\",\"\u00F9\"],[[218,218],\"mapped\",\"\u00FA\"],[[219,219],\"mapped\",\"\u00FB\"],[[220,220],\"mapped\",\"\u00FC\"],[[221,221],\"mapped\",\"\u00FD\"],[[222,222],\"mapped\",\"\u00FE\"],[[223,223],\"deviation\",\"ss\"],[[224,246],\"valid\"],[[247,247],\"valid\",\"\",\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",\"\u0101\"],[[257,257],\"valid\"],[[258,258],\"mapped\",\"\u0103\"],[[259,259],\"valid\"],[[260,260],\"mapped\",\"\u0105\"],[[261,261],\"valid\"],[[262,262],\"mapped\",\"\u0107\"],[[263,263],\"valid\"],[[264,264],\"mapped\",\"\u0109\"],[[265,265],\"valid\"],[[266,266],\"mapped\",\"\u010B\"],[[267,267],\"valid\"],[[268,268],\"mapped\",\"\u010D\"],[[269,269],\"valid\"],[[270,270],\"mapped\",\"\u010F\"],[[271,271],\"valid\"],[[272,272],\"mapped\",\"\u0111\"],[[273,273],\"valid\"],[[274,274],\"mapped\",\"\u0113\"],[[275,275],\"valid\"],[[276,276],\"mapped\",\"\u0115\"],[[277,277],\"valid\"],[[278,278],\"mapped\",\"\u0117\"],[[279,279],\"valid\"],[[280,280],\"mapped\",\"\u0119\"],[[281,281],\"valid\"],[[282,282],\"mapped\",\"\u011B\"],[[283,283],\"valid\"],[[284,284],\"mapped\",\"\u011D\"],[[285,285],\"valid\"],[[286,286],\"mapped\",\"\u011F\"],[[287,287],\"valid\"],[[288,288],\"mapped\",\"\u0121\"],[[289,289],\"valid\"],[[290,290],\"mapped\",\"\u0123\"],[[291,291],\"valid\"],[[292,292],\"mapped\",\"\u0125\"],[[293,293],\"valid\"],[[294,294],\"mapped\",\"\u0127\"],[[295,295],\"valid\"],[[296,296],\"mapped\",\"\u0129\"],[[297,297],\"valid\"],[[298,298],\"mapped\",\"\u012B\"],[[299,299],\"valid\"],[[300,300],\"mapped\",\"\u012D\"],[[301,301],\"valid\"],[[302,302],\"mapped\",\"\u012F\"],[[303,303],\"valid\"],[[304,304],\"mapped\",\"i\u0307\"],[[305,305],\"valid\"],[[306,307],\"mapped\",\"ij\"],[[308,308],\"mapped\",\"\u0135\"],[[309,309],\"valid\"],[[310,310],\"mapped\",\"\u0137\"],[[311,312],\"valid\"],[[313,313],\"mapped\",\"\u013A\"],[[314,314],\"valid\"],[[315,315],\"mapped\",\"\u013C\"],[[316,316],\"valid\"],[[317,317],\"mapped\",\"\u013E\"],[[318,318],\"valid\"],[[319,320],\"mapped\",\"l\u00B7\"],[[321,321],\"mapped\",\"\u0142\"],[[322,322],\"valid\"],[[323,323],\"mapped\",\"\u0144\"],[[324,324],\"valid\"],[[325,325],\"mapped\",\"\u0146\"],[[326,326],\"valid\"],[[327,327],\"mapped\",\"\u0148\"],[[328,328],\"valid\"],[[329,329],\"mapped\",\"\u02BCn\"],[[330,330],\"mapped\",\"\u014B\"],[[331,331],\"valid\"],[[332,332],\"mapped\",\"\u014D\"],[[333,333],\"valid\"],[[334,334],\"mapped\",\"\u014F\"],[[335,335],\"valid\"],[[336,336],\"mapped\",\"\u0151\"],[[337,337],\"valid\"],[[338,338],\"mapped\",\"\u0153\"],[[339,339],\"valid\"],[[340,340],\"mapped\",\"\u0155\"],[[341,341],\"valid\"],[[342,342],\"mapped\",\"\u0157\"],[[343,343],\"valid\"],[[344,344],\"mapped\",\"\u0159\"],[[345,345],\"valid\"],[[346,346],\"mapped\",\"\u015B\"],[[347,347],\"valid\"],[[348,348],\"mapped\",\"\u015D\"],[[349,349],\"valid\"],[[350,350],\"mapped\",\"\u015F\"],[[351,351],\"valid\"],[[352,352],\"mapped\",\"\u0161\"],[[353,353],\"valid\"],[[354,354],\"mapped\",\"\u0163\"],[[355,355],\"valid\"],[[356,356],\"mapped\",\"\u0165\"],[[357,357],\"valid\"],[[358,358],\"mapped\",\"\u0167\"],[[359,359],\"valid\"],[[360,360],\"mapped\",\"\u0169\"],[[361,361],\"valid\"],[[362,362],\"mapped\",\"\u016B\"],[[363,363],\"valid\"],[[364,364],\"mapped\",\"\u016D\"],[[365,365],\"valid\"],[[366,366],\"mapped\",\"\u016F\"],[[367,367],\"valid\"],[[368,368],\"mapped\",\"\u0171\"],[[369,369],\"valid\"],[[370,370],\"mapped\",\"\u0173\"],[[371,371],\"valid\"],[[372,372],\"mapped\",\"\u0175\"],[[373,373],\"valid\"],[[374,374],\"mapped\",\"\u0177\"],[[375,375],\"valid\"],[[376,376],\"mapped\",\"\u00FF\"],[[377,377],\"mapped\",\"\u017A\"],[[378,378],\"valid\"],[[379,379],\"mapped\",\"\u017C\"],[[380,380],\"valid\"],[[381,381],\"mapped\",\"\u017E\"],[[382,382],\"valid\"],[[383,383],\"mapped\",\"s\"],[[384,384],\"valid\"],[[385,385],\"mapped\",\"\u0253\"],[[386,386],\"mapped\",\"\u0183\"],[[387,387],\"valid\"],[[388,388],\"mapped\",\"\u0185\"],[[389,389],\"valid\"],[[390,390],\"mapped\",\"\u0254\"],[[391,391],\"mapped\",\"\u0188\"],[[392,392],\"valid\"],[[393,393],\"mapped\",\"\u0256\"],[[394,394],\"mapped\",\"\u0257\"],[[395,395],\"mapped\",\"\u018C\"],[[396,397],\"valid\"],[[398,398],\"mapped\",\"\u01DD\"],[[399,399],\"mapped\",\"\u0259\"],[[400,400],\"mapped\",\"\u025B\"],[[401,401],\"mapped\",\"\u0192\"],[[402,402],\"valid\"],[[403,403],\"mapped\",\"\u0260\"],[[404,404],\"mapped\",\"\u0263\"],[[405,405],\"valid\"],[[406,406],\"mapped\",\"\u0269\"],[[407,407],\"mapped\",\"\u0268\"],[[408,408],\"mapped\",\"\u0199\"],[[409,411],\"valid\"],[[412,412],\"mapped\",\"\u026F\"],[[413,413],\"mapped\",\"\u0272\"],[[414,414],\"valid\"],[[415,415],\"mapped\",\"\u0275\"],[[416,416],\"mapped\",\"\u01A1\"],[[417,417],\"valid\"],[[418,418],\"mapped\",\"\u01A3\"],[[419,419],\"valid\"],[[420,420],\"mapped\",\"\u01A5\"],[[421,421],\"valid\"],[[422,422],\"mapped\",\"\u0280\"],[[423,423],\"mapped\",\"\u01A8\"],[[424,424],\"valid\"],[[425,425],\"mapped\",\"\u0283\"],[[426,427],\"valid\"],[[428,428],\"mapped\",\"\u01AD\"],[[429,429],\"valid\"],[[430,430],\"mapped\",\"\u0288\"],[[431,431],\"mapped\",\"\u01B0\"],[[432,432],\"valid\"],[[433,433],\"mapped\",\"\u028A\"],[[434,434],\"mapped\",\"\u028B\"],[[435,435],\"mapped\",\"\u01B4\"],[[436,436],\"valid\"],[[437,437],\"mapped\",\"\u01B6\"],[[438,438],\"valid\"],[[439,439],\"mapped\",\"\u0292\"],[[440,440],\"mapped\",\"\u01B9\"],[[441,443],\"valid\"],[[444,444],\"mapped\",\"\u01BD\"],[[445,451],\"valid\"],[[452,454],\"mapped\",\"d\u017E\"],[[455,457],\"mapped\",\"lj\"],[[458,460],\"mapped\",\"nj\"],[[461,461],\"mapped\",\"\u01CE\"],[[462,462],\"valid\"],[[463,463],\"mapped\",\"\u01D0\"],[[464,464],\"valid\"],[[465,465],\"mapped\",\"\u01D2\"],[[466,466],\"valid\"],[[467,467],\"mapped\",\"\u01D4\"],[[468,468],\"valid\"],[[469,469],\"mapped\",\"\u01D6\"],[[470,470],\"valid\"],[[471,471],\"mapped\",\"\u01D8\"],[[472,472],\"valid\"],[[473,473],\"mapped\",\"\u01DA\"],[[474,474],\"valid\"],[[475,475],\"mapped\",\"\u01DC\"],[[476,477],\"valid\"],[[478,478],\"mapped\",\"\u01DF\"],[[479,479],\"valid\"],[[480,480],\"mapped\",\"\u01E1\"],[[481,481],\"valid\"],[[482,482],\"mapped\",\"\u01E3\"],[[483,483],\"valid\"],[[484,484],\"mapped\",\"\u01E5\"],[[485,485],\"valid\"],[[486,486],\"mapped\",\"\u01E7\"],[[487,487],\"valid\"],[[488,488],\"mapped\",\"\u01E9\"],[[489,489],\"valid\"],[[490,490],\"mapped\",\"\u01EB\"],[[491,491],\"valid\"],[[492,492],\"mapped\",\"\u01ED\"],[[493,493],\"valid\"],[[494,494],\"mapped\",\"\u01EF\"],[[495,496],\"valid\"],[[497,499],\"mapped\",\"dz\"],[[500,500],\"mapped\",\"\u01F5\"],[[501,501],\"valid\"],[[502,502],\"mapped\",\"\u0195\"],[[503,503],\"mapped\",\"\u01BF\"],[[504,504],\"mapped\",\"\u01F9\"],[[505,505],\"valid\"],[[506,506],\"mapped\",\"\u01FB\"],[[507,507],\"valid\"],[[508,508],\"mapped\",\"\u01FD\"],[[509,509],\"valid\"],[[510,510],\"mapped\",\"\u01FF\"],[[511,511],\"valid\"],[[512,512],\"mapped\",\"\u0201\"],[[513,513],\"valid\"],[[514,514],\"mapped\",\"\u0203\"],[[515,515],\"valid\"],[[516,516],\"mapped\",\"\u0205\"],[[517,517],\"valid\"],[[518,518],\"mapped\",\"\u0207\"],[[519,519],\"valid\"],[[520,520],\"mapped\",\"\u0209\"],[[521,521],\"valid\"],[[522,522],\"mapped\",\"\u020B\"],[[523,523],\"valid\"],[[524,524],\"mapped\",\"\u020D\"],[[525,525],\"valid\"],[[526,526],\"mapped\",\"\u020F\"],[[527,527],\"valid\"],[[528,528],\"mapped\",\"\u0211\"],[[529,529],\"valid\"],[[530,530],\"mapped\",\"\u0213\"],[[531,531],\"valid\"],[[532,532],\"mapped\",\"\u0215\"],[[533,533],\"valid\"],[[534,534],\"mapped\",\"\u0217\"],[[535,535],\"valid\"],[[536,536],\"mapped\",\"\u0219\"],[[537,537],\"valid\"],[[538,538],\"mapped\",\"\u021B\"],[[539,539],\"valid\"],[[540,540],\"mapped\",\"\u021D\"],[[541,541],\"valid\"],[[542,542],\"mapped\",\"\u021F\"],[[543,543],\"valid\"],[[544,544],\"mapped\",\"\u019E\"],[[545,545],\"valid\"],[[546,546],\"mapped\",\"\u0223\"],[[547,547],\"valid\"],[[548,548],\"mapped\",\"\u0225\"],[[549,549],\"valid\"],[[550,550],\"mapped\",\"\u0227\"],[[551,551],\"valid\"],[[552,552],\"mapped\",\"\u0229\"],[[553,553],\"valid\"],[[554,554],\"mapped\",\"\u022B\"],[[555,555],\"valid\"],[[556,556],\"mapped\",\"\u022D\"],[[557,557],\"valid\"],[[558,558],\"mapped\",\"\u022F\"],[[559,559],\"valid\"],[[560,560],\"mapped\",\"\u0231\"],[[561,561],\"valid\"],[[562,562],\"mapped\",\"\u0233\"],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",\"\u2C65\"],[[571,571],\"mapped\",\"\u023C\"],[[572,572],\"valid\"],[[573,573],\"mapped\",\"\u019A\"],[[574,574],\"mapped\",\"\u2C66\"],[[575,576],\"valid\"],[[577,577],\"mapped\",\"\u0242\"],[[578,578],\"valid\"],[[579,579],\"mapped\",\"\u0180\"],[[580,580],\"mapped\",\"\u0289\"],[[581,581],\"mapped\",\"\u028C\"],[[582,582],\"mapped\",\"\u0247\"],[[583,583],\"valid\"],[[584,584],\"mapped\",\"\u0249\"],[[585,585],\"valid\"],[[586,586],\"mapped\",\"\u024B\"],[[587,587],\"valid\"],[[588,588],\"mapped\",\"\u024D\"],[[589,589],\"valid\"],[[590,590],\"mapped\",\"\u024F\"],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",\"h\"],[[689,689],\"mapped\",\"\u0266\"],[[690,690],\"mapped\",\"j\"],[[691,691],\"mapped\",\"r\"],[[692,692],\"mapped\",\"\u0279\"],[[693,693],\"mapped\",\"\u027B\"],[[694,694],\"mapped\",\"\u0281\"],[[695,695],\"mapped\",\"w\"],[[696,696],\"mapped\",\"y\"],[[697,705],\"valid\"],[[706,709],\"valid\",\"\",\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",\"\",\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",\" \u0306\"],[[729,729],\"disallowed_STD3_mapped\",\" \u0307\"],[[730,730],\"disallowed_STD3_mapped\",\" \u030A\"],[[731,731],\"disallowed_STD3_mapped\",\" \u0328\"],[[732,732],\"disallowed_STD3_mapped\",\" \u0303\"],[[733,733],\"disallowed_STD3_mapped\",\" \u030B\"],[[734,734],\"valid\",\"\",\"NV8\"],[[735,735],\"valid\",\"\",\"NV8\"],[[736,736],\"mapped\",\"\u0263\"],[[737,737],\"mapped\",\"l\"],[[738,738],\"mapped\",\"s\"],[[739,739],\"mapped\",\"x\"],[[740,740],\"mapped\",\"\u0295\"],[[741,745],\"valid\",\"\",\"NV8\"],[[746,747],\"valid\",\"\",\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",\"\",\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",\"\",\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",\"\u0300\"],[[833,833],\"mapped\",\"\u0301\"],[[834,834],\"valid\"],[[835,835],\"mapped\",\"\u0313\"],[[836,836],\"mapped\",\"\u0308\u0301\"],[[837,837],\"mapped\",\"\u03B9\"],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",\"\u0371\"],[[881,881],\"valid\"],[[882,882],\"mapped\",\"\u0373\"],[[883,883],\"valid\"],[[884,884],\"mapped\",\"\u02B9\"],[[885,885],\"valid\"],[[886,886],\"mapped\",\"\u0377\"],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",\" \u03B9\"],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",\";\"],[[895,895],\"mapped\",\"\u03F3\"],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",\" \u0301\"],[[901,901],\"disallowed_STD3_mapped\",\" \u0308\u0301\"],[[902,902],\"mapped\",\"\u03AC\"],[[903,903],\"mapped\",\"\u00B7\"],[[904,904],\"mapped\",\"\u03AD\"],[[905,905],\"mapped\",\"\u03AE\"],[[906,906],\"mapped\",\"\u03AF\"],[[907,907],\"disallowed\"],[[908,908],\"mapped\",\"\u03CC\"],[[909,909],\"disallowed\"],[[910,910],\"mapped\",\"\u03CD\"],[[911,911],\"mapped\",\"\u03CE\"],[[912,912],\"valid\"],[[913,913],\"mapped\",\"\u03B1\"],[[914,914],\"mapped\",\"\u03B2\"],[[915,915],\"mapped\",\"\u03B3\"],[[916,916],\"mapped\",\"\u03B4\"],[[917,917],\"mapped\",\"\u03B5\"],[[918,918],\"mapped\",\"\u03B6\"],[[919,919],\"mapped\",\"\u03B7\"],[[920,920],\"mapped\",\"\u03B8\"],[[921,921],\"mapped\",\"\u03B9\"],[[922,922],\"mapped\",\"\u03BA\"],[[923,923],\"mapped\",\"\u03BB\"],[[924,924],\"mapped\",\"\u03BC\"],[[925,925],\"mapped\",\"\u03BD\"],[[926,926],\"mapped\",\"\u03BE\"],[[927,927],\"mapped\",\"\u03BF\"],[[928,928],\"mapped\",\"\u03C0\"],[[929,929],\"mapped\",\"\u03C1\"],[[930,930],\"disallowed\"],[[931,931],\"mapped\",\"\u03C3\"],[[932,932],\"mapped\",\"\u03C4\"],[[933,933],\"mapped\",\"\u03C5\"],[[934,934],\"mapped\",\"\u03C6\"],[[935,935],\"mapped\",\"\u03C7\"],[[936,936],\"mapped\",\"\u03C8\"],[[937,937],\"mapped\",\"\u03C9\"],[[938,938],\"mapped\",\"\u03CA\"],[[939,939],\"mapped\",\"\u03CB\"],[[940,961],\"valid\"],[[962,962],\"deviation\",\"\u03C3\"],[[963,974],\"valid\"],[[975,975],\"mapped\",\"\u03D7\"],[[976,976],\"mapped\",\"\u03B2\"],[[977,977],\"mapped\",\"\u03B8\"],[[978,978],\"mapped\",\"\u03C5\"],[[979,979],\"mapped\",\"\u03CD\"],[[980,980],\"mapped\",\"\u03CB\"],[[981,981],\"mapped\",\"\u03C6\"],[[982,982],\"mapped\",\"\u03C0\"],[[983,983],\"valid\"],[[984,984],\"mapped\",\"\u03D9\"],[[985,985],\"valid\"],[[986,986],\"mapped\",\"\u03DB\"],[[987,987],\"valid\"],[[988,988],\"mapped\",\"\u03DD\"],[[989,989],\"valid\"],[[990,990],\"mapped\",\"\u03DF\"],[[991,991],\"valid\"],[[992,992],\"mapped\",\"\u03E1\"],[[993,993],\"valid\"],[[994,994],\"mapped\",\"\u03E3\"],[[995,995],\"valid\"],[[996,996],\"mapped\",\"\u03E5\"],[[997,997],\"valid\"],[[998,998],\"mapped\",\"\u03E7\"],[[999,999],\"valid\"],[[1000,1000],\"mapped\",\"\u03E9\"],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",\"\u03EB\"],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",\"\u03ED\"],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",\"\u03EF\"],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",\"\u03BA\"],[[1009,1009],\"mapped\",\"\u03C1\"],[[1010,1010],\"mapped\",\"\u03C3\"],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",\"\u03B8\"],[[1013,1013],\"mapped\",\"\u03B5\"],[[1014,1014],\"valid\",\"\",\"NV8\"],[[1015,1015],\"mapped\",\"\u03F8\"],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",\"\u03C3\"],[[1018,1018],\"mapped\",\"\u03FB\"],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",\"\u037B\"],[[1022,1022],\"mapped\",\"\u037C\"],[[1023,1023],\"mapped\",\"\u037D\"],[[1024,1024],\"mapped\",\"\u0450\"],[[1025,1025],\"mapped\",\"\u0451\"],[[1026,1026],\"mapped\",\"\u0452\"],[[1027,1027],\"mapped\",\"\u0453\"],[[1028,1028],\"mapped\",\"\u0454\"],[[1029,1029],\"mapped\",\"\u0455\"],[[1030,1030],\"mapped\",\"\u0456\"],[[1031,1031],\"mapped\",\"\u0457\"],[[1032,1032],\"mapped\",\"\u0458\"],[[1033,1033],\"mapped\",\"\u0459\"],[[1034,1034],\"mapped\",\"\u045A\"],[[1035,1035],\"mapped\",\"\u045B\"],[[1036,1036],\"mapped\",\"\u045C\"],[[1037,1037],\"mapped\",\"\u045D\"],[[1038,1038],\"mapped\",\"\u045E\"],[[1039,1039],\"mapped\",\"\u045F\"],[[1040,1040],\"mapped\",\"\u0430\"],[[1041,1041],\"mapped\",\"\u0431\"],[[1042,1042],\"mapped\",\"\u0432\"],[[1043,1043],\"mapped\",\"\u0433\"],[[1044,1044],\"mapped\",\"\u0434\"],[[1045,1045],\"mapped\",\"\u0435\"],[[1046,1046],\"mapped\",\"\u0436\"],[[1047,1047],\"mapped\",\"\u0437\"],[[1048,1048],\"mapped\",\"\u0438\"],[[1049,1049],\"mapped\",\"\u0439\"],[[1050,1050],\"mapped\",\"\u043A\"],[[1051,1051],\"mapped\",\"\u043B\"],[[1052,1052],\"mapped\",\"\u043C\"],[[1053,1053],\"mapped\",\"\u043D\"],[[1054,1054],\"mapped\",\"\u043E\"],[[1055,1055],\"mapped\",\"\u043F\"],[[1056,1056],\"mapped\",\"\u0440\"],[[1057,1057],\"mapped\",\"\u0441\"],[[1058,1058],\"mapped\",\"\u0442\"],[[1059,1059],\"mapped\",\"\u0443\"],[[1060,1060],\"mapped\",\"\u0444\"],[[1061,1061],\"mapped\",\"\u0445\"],[[1062,1062],\"mapped\",\"\u0446\"],[[1063,1063],\"mapped\",\"\u0447\"],[[1064,1064],\"mapped\",\"\u0448\"],[[1065,1065],\"mapped\",\"\u0449\"],[[1066,1066],\"mapped\",\"\u044A\"],[[1067,1067],\"mapped\",\"\u044B\"],[[1068,1068],\"mapped\",\"\u044C\"],[[1069,1069],\"mapped\",\"\u044D\"],[[1070,1070],\"mapped\",\"\u044E\"],[[1071,1071],\"mapped\",\"\u044F\"],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",\"\u0461\"],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",\"\u0463\"],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",\"\u0465\"],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",\"\u0467\"],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",\"\u0469\"],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",\"\u046B\"],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",\"\u046D\"],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",\"\u046F\"],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",\"\u0471\"],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",\"\u0473\"],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",\"\u0475\"],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",\"\u0477\"],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",\"\u0479\"],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",\"\u047B\"],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",\"\u047D\"],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",\"\u047F\"],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",\"\u0481\"],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",\"\",\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",\"\",\"NV8\"],[[1162,1162],\"mapped\",\"\u048B\"],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",\"\u048D\"],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",\"\u048F\"],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",\"\u0491\"],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",\"\u0493\"],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",\"\u0495\"],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",\"\u0497\"],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",\"\u0499\"],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",\"\u049B\"],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",\"\u049D\"],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",\"\u049F\"],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",\"\u04A1\"],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",\"\u04A3\"],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",\"\u04A5\"],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",\"\u04A7\"],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",\"\u04A9\"],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",\"\u04AB\"],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",\"\u04AD\"],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",\"\u04AF\"],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",\"\u04B1\"],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",\"\u04B3\"],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",\"\u04B5\"],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",\"\u04B7\"],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",\"\u04B9\"],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",\"\u04BB\"],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",\"\u04BD\"],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",\"\u04BF\"],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",\"\u04C2\"],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",\"\u04C4\"],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",\"\u04C6\"],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",\"\u04C8\"],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",\"\u04CA\"],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",\"\u04CC\"],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",\"\u04CE\"],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",\"\u04D1\"],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",\"\u04D3\"],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",\"\u04D5\"],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",\"\u04D7\"],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",\"\u04D9\"],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",\"\u04DB\"],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",\"\u04DD\"],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",\"\u04DF\"],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",\"\u04E1\"],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",\"\u04E3\"],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",\"\u04E5\"],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",\"\u04E7\"],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",\"\u04E9\"],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",\"\u04EB\"],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",\"\u04ED\"],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",\"\u04EF\"],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",\"\u04F1\"],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",\"\u04F3\"],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",\"\u04F5\"],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",\"\u04F7\"],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",\"\u04F9\"],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",\"\u04FB\"],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",\"\u04FD\"],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",\"\u04FF\"],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",\"\u0501\"],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",\"\u0503\"],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",\"\u0505\"],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",\"\u0507\"],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",\"\u0509\"],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",\"\u050B\"],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",\"\u050D\"],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",\"\u050F\"],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",\"\u0511\"],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",\"\u0513\"],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",\"\u0515\"],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",\"\u0517\"],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",\"\u0519\"],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",\"\u051B\"],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",\"\u051D\"],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",\"\u051F\"],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",\"\u0521\"],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",\"\u0523\"],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",\"\u0525\"],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",\"\u0527\"],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",\"\u0529\"],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",\"\u052B\"],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",\"\u052D\"],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",\"\u052F\"],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",\"\u0561\"],[[1330,1330],\"mapped\",\"\u0562\"],[[1331,1331],\"mapped\",\"\u0563\"],[[1332,1332],\"mapped\",\"\u0564\"],[[1333,1333],\"mapped\",\"\u0565\"],[[1334,1334],\"mapped\",\"\u0566\"],[[1335,1335],\"mapped\",\"\u0567\"],[[1336,1336],\"mapped\",\"\u0568\"],[[1337,1337],\"mapped\",\"\u0569\"],[[1338,1338],\"mapped\",\"\u056A\"],[[1339,1339],\"mapped\",\"\u056B\"],[[1340,1340],\"mapped\",\"\u056C\"],[[1341,1341],\"mapped\",\"\u056D\"],[[1342,1342],\"mapped\",\"\u056E\"],[[1343,1343],\"mapped\",\"\u056F\"],[[1344,1344],\"mapped\",\"\u0570\"],[[1345,1345],\"mapped\",\"\u0571\"],[[1346,1346],\"mapped\",\"\u0572\"],[[1347,1347],\"mapped\",\"\u0573\"],[[1348,1348],\"mapped\",\"\u0574\"],[[1349,1349],\"mapped\",\"\u0575\"],[[1350,1350],\"mapped\",\"\u0576\"],[[1351,1351],\"mapped\",\"\u0577\"],[[1352,1352],\"mapped\",\"\u0578\"],[[1353,1353],\"mapped\",\"\u0579\"],[[1354,1354],\"mapped\",\"\u057A\"],[[1355,1355],\"mapped\",\"\u057B\"],[[1356,1356],\"mapped\",\"\u057C\"],[[1357,1357],\"mapped\",\"\u057D\"],[[1358,1358],\"mapped\",\"\u057E\"],[[1359,1359],\"mapped\",\"\u057F\"],[[1360,1360],\"mapped\",\"\u0580\"],[[1361,1361],\"mapped\",\"\u0581\"],[[1362,1362],\"mapped\",\"\u0582\"],[[1363,1363],\"mapped\",\"\u0583\"],[[1364,1364],\"mapped\",\"\u0584\"],[[1365,1365],\"mapped\",\"\u0585\"],[[1366,1366],\"mapped\",\"\u0586\"],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",\"\",\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",\"\u0565\u0582\"],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",\"\",\"NV8\"],[[1418,1418],\"valid\",\"\",\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",\"\",\"NV8\"],[[1423,1423],\"valid\",\"\",\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",\"\",\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",\"\",\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",\"\",\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",\"\",\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",\"\",\"NV8\"],[[1547,1547],\"valid\",\"\",\"NV8\"],[[1548,1548],\"valid\",\"\",\"NV8\"],[[1549,1551],\"valid\",\"\",\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",\"\",\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",\"\",\"NV8\"],[[1567,1567],\"valid\",\"\",\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",\"\",\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",\"\",\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",\"\u0627\u0674\"],[[1654,1654],\"mapped\",\"\u0648\u0674\"],[[1655,1655],\"mapped\",\"\u06C7\u0674\"],[[1656,1656],\"mapped\",\"\u064A\u0674\"],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",\"\",\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",\"\",\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",\"\",\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",\"\",\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",\"\",\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",\"\",\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",\"\",\"NV8\"],[[2143,2143],\"disallowed\"],[[2144,2154],\"valid\"],[[2155,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2229],\"disallowed\"],[[2230,2237],\"valid\"],[[2238,2259],\"disallowed\"],[[2260,2273],\"valid\"],[[2274,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",\"\u0915\u093C\"],[[2393,2393],\"mapped\",\"\u0916\u093C\"],[[2394,2394],\"mapped\",\"\u0917\u093C\"],[[2395,2395],\"mapped\",\"\u091C\u093C\"],[[2396,2396],\"mapped\",\"\u0921\u093C\"],[[2397,2397],\"mapped\",\"\u0922\u093C\"],[[2398,2398],\"mapped\",\"\u092B\u093C\"],[[2399,2399],\"mapped\",\"\u092F\u093C\"],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",\"\",\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",\"\",\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",\"\u09A1\u09BC\"],[[2525,2525],\"mapped\",\"\u09A2\u09BC\"],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",\"\u09AF\u09BC\"],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",\"\",\"NV8\"],[[2555,2555],\"valid\",\"\",\"NV8\"],[[2556,2556],\"valid\"],[[2557,2557],\"valid\",\"\",\"NV8\"],[[2558,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",\"\u0A32\u0A3C\"],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",\"\u0A38\u0A3C\"],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",\"\u0A16\u0A3C\"],[[2650,2650],\"mapped\",\"\u0A17\u0A3C\"],[[2651,2651],\"mapped\",\"\u0A1C\u0A3C\"],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",\"\u0A2B\u0A3C\"],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",\"\",\"NV8\"],[[2801,2801],\"valid\",\"\",\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2815],\"valid\"],[[2816,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",\"\u0B21\u0B3C\"],[[2909,2909],\"mapped\",\"\u0B22\u0B3C\"],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",\"\",\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",\"\",\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",\"\",\"NV8\"],[[3059,3066],\"valid\",\"\",\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",\"\",\"NV8\"],[[3200,3200],\"valid\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3327],\"disallowed\"],[[3328,3328],\"valid\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"valid\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3407],\"valid\",\"\",\"NV8\"],[[3408,3411],\"disallowed\"],[[3412,3414],\"valid\"],[[3415,3415],\"valid\"],[[3416,3422],\"valid\",\"\",\"NV8\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",\"\",\"NV8\"],[[3446,3448],\"valid\",\"\",\"NV8\"],[[3449,3449],\"valid\",\"\",\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",\"\",\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",\"\u0E4D\u0E32\"],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",\"\",\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",\"\",\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",\"\",\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",\"\u0ECD\u0EB2\"],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",\"\u0EAB\u0E99\"],[[3805,3805],\"mapped\",\"\u0EAB\u0EA1\"],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",\"\",\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",\"\u0F0B\"],[[3853,3863],\"valid\",\"\",\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",\"\",\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",\"\",\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",\"\",\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",\"\",\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",\"\",\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",\"\u0F42\u0FB7\"],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",\"\u0F4C\u0FB7\"],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",\"\u0F51\u0FB7\"],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",\"\u0F56\u0FB7\"],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",\"\u0F5B\u0FB7\"],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",\"\u0F40\u0FB5\"],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",\"\u0F71\u0F72\"],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",\"\u0F71\u0F74\"],[[3958,3958],\"mapped\",\"\u0FB2\u0F80\"],[[3959,3959],\"mapped\",\"\u0FB2\u0F71\u0F80\"],[[3960,3960],\"mapped\",\"\u0FB3\u0F80\"],[[3961,3961],\"mapped\",\"\u0FB3\u0F71\u0F80\"],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",\"\u0F71\u0F80\"],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",\"\",\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",\"\u0F92\u0FB7\"],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",\"\u0F9C\u0FB7\"],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",\"\u0FA1\u0FB7\"],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",\"\u0FA6\u0FB7\"],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",\"\u0FAB\u0FB7\"],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",\"\u0F90\u0FB5\"],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",\"\",\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",\"\",\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",\"\",\"NV8\"],[[4047,4047],\"valid\",\"\",\"NV8\"],[[4048,4049],\"valid\",\"\",\"NV8\"],[[4050,4052],\"valid\",\"\",\"NV8\"],[[4053,4056],\"valid\",\"\",\"NV8\"],[[4057,4058],\"valid\",\"\",\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",\"\",\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",\"\",\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",\"\u2D27\"],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",\"\u2D2D\"],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",\"\",\"NV8\"],[[4348,4348],\"mapped\",\"\u10DC\"],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",\"\",\"NV8\"],[[4442,4446],\"valid\",\"\",\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",\"\",\"NV8\"],[[4515,4519],\"valid\",\"\",\"NV8\"],[[4520,4601],\"valid\",\"\",\"NV8\"],[[4602,4607],\"valid\",\"\",\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",\"\",\"NV8\"],[[4961,4988],\"valid\",\"\",\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",\"\",\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",\"\u13F0\"],[[5113,5113],\"mapped\",\"\u13F1\"],[[5114,5114],\"mapped\",\"\u13F2\"],[[5115,5115],\"mapped\",\"\u13F3\"],[[5116,5116],\"mapped\",\"\u13F4\"],[[5117,5117],\"mapped\",\"\u13F5\"],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",\"\",\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",\"\",\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",\"\",\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",\"\",\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",\"\",\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",\"\",\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",\"\",\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",\"\",\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",\"\",\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",\"\",\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",\"\",\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",\"\",\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",\"\",\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",\"\",\"NV8\"],[[6624,6655],\"valid\",\"\",\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",\"\",\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",\"\",\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",\"\",\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",\"\",\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",\"\",\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",\"\",\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",\"\",\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",\"\",\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",\"\",\"NV8\"],[[7296,7296],\"mapped\",\"\u0432\"],[[7297,7297],\"mapped\",\"\u0434\"],[[7298,7298],\"mapped\",\"\u043E\"],[[7299,7299],\"mapped\",\"\u0441\"],[[7300,7301],\"mapped\",\"\u0442\"],[[7302,7302],\"mapped\",\"\u044A\"],[[7303,7303],\"mapped\",\"\u0463\"],[[7304,7304],\"mapped\",\"\uA64B\"],[[7305,7359],\"disallowed\"],[[7360,7367],\"valid\",\"\",\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",\"\",\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"valid\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",\"a\"],[[7469,7469],\"mapped\",\"\u00E6\"],[[7470,7470],\"mapped\",\"b\"],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",\"d\"],[[7473,7473],\"mapped\",\"e\"],[[7474,7474],\"mapped\",\"\u01DD\"],[[7475,7475],\"mapped\",\"g\"],[[7476,7476],\"mapped\",\"h\"],[[7477,7477],\"mapped\",\"i\"],[[7478,7478],\"mapped\",\"j\"],[[7479,7479],\"mapped\",\"k\"],[[7480,7480],\"mapped\",\"l\"],[[7481,7481],\"mapped\",\"m\"],[[7482,7482],\"mapped\",\"n\"],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",\"o\"],[[7485,7485],\"mapped\",\"\u0223\"],[[7486,7486],\"mapped\",\"p\"],[[7487,7487],\"mapped\",\"r\"],[[7488,7488],\"mapped\",\"t\"],[[7489,7489],\"mapped\",\"u\"],[[7490,7490],\"mapped\",\"w\"],[[7491,7491],\"mapped\",\"a\"],[[7492,7492],\"mapped\",\"\u0250\"],[[7493,7493],\"mapped\",\"\u0251\"],[[7494,7494],\"mapped\",\"\u1D02\"],[[7495,7495],\"mapped\",\"b\"],[[7496,7496],\"mapped\",\"d\"],[[7497,7497],\"mapped\",\"e\"],[[7498,7498],\"mapped\",\"\u0259\"],[[7499,7499],\"mapped\",\"\u025B\"],[[7500,7500],\"mapped\",\"\u025C\"],[[7501,7501],\"mapped\",\"g\"],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",\"k\"],[[7504,7504],\"mapped\",\"m\"],[[7505,7505],\"mapped\",\"\u014B\"],[[7506,7506],\"mapped\",\"o\"],[[7507,7507],\"mapped\",\"\u0254\"],[[7508,7508],\"mapped\",\"\u1D16\"],[[7509,7509],\"mapped\",\"\u1D17\"],[[7510,7510],\"mapped\",\"p\"],[[7511,7511],\"mapped\",\"t\"],[[7512,7512],\"mapped\",\"u\"],[[7513,7513],\"mapped\",\"\u1D1D\"],[[7514,7514],\"mapped\",\"\u026F\"],[[7515,7515],\"mapped\",\"v\"],[[7516,7516],\"mapped\",\"\u1D25\"],[[7517,7517],\"mapped\",\"\u03B2\"],[[7518,7518],\"mapped\",\"\u03B3\"],[[7519,7519],\"mapped\",\"\u03B4\"],[[7520,7520],\"mapped\",\"\u03C6\"],[[7521,7521],\"mapped\",\"\u03C7\"],[[7522,7522],\"mapped\",\"i\"],[[7523,7523],\"mapped\",\"r\"],[[7524,7524],\"mapped\",\"u\"],[[7525,7525],\"mapped\",\"v\"],[[7526,7526],\"mapped\",\"\u03B2\"],[[7527,7527],\"mapped\",\"\u03B3\"],[[7528,7528],\"mapped\",\"\u03C1\"],[[7529,7529],\"mapped\",\"\u03C6\"],[[7530,7530],\"mapped\",\"\u03C7\"],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",\"\u043D\"],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",\"\u0252\"],[[7580,7580],\"mapped\",\"c\"],[[7581,7581],\"mapped\",\"\u0255\"],[[7582,7582],\"mapped\",\"\u00F0\"],[[7583,7583],\"mapped\",\"\u025C\"],[[7584,7584],\"mapped\",\"f\"],[[7585,7585],\"mapped\",\"\u025F\"],[[7586,7586],\"mapped\",\"\u0261\"],[[7587,7587],\"mapped\",\"\u0265\"],[[7588,7588],\"mapped\",\"\u0268\"],[[7589,7589],\"mapped\",\"\u0269\"],[[7590,7590],\"mapped\",\"\u026A\"],[[7591,7591],\"mapped\",\"\u1D7B\"],[[7592,7592],\"mapped\",\"\u029D\"],[[7593,7593],\"mapped\",\"\u026D\"],[[7594,7594],\"mapped\",\"\u1D85\"],[[7595,7595],\"mapped\",\"\u029F\"],[[7596,7596],\"mapped\",\"\u0271\"],[[7597,7597],\"mapped\",\"\u0270\"],[[7598,7598],\"mapped\",\"\u0272\"],[[7599,7599],\"mapped\",\"\u0273\"],[[7600,7600],\"mapped\",\"\u0274\"],[[7601,7601],\"mapped\",\"\u0275\"],[[7602,7602],\"mapped\",\"\u0278\"],[[7603,7603],\"mapped\",\"\u0282\"],[[7604,7604],\"mapped\",\"\u0283\"],[[7605,7605],\"mapped\",\"\u01AB\"],[[7606,7606],\"mapped\",\"\u0289\"],[[7607,7607],\"mapped\",\"\u028A\"],[[7608,7608],\"mapped\",\"\u1D1C\"],[[7609,7609],\"mapped\",\"\u028B\"],[[7610,7610],\"mapped\",\"\u028C\"],[[7611,7611],\"mapped\",\"z\"],[[7612,7612],\"mapped\",\"\u0290\"],[[7613,7613],\"mapped\",\"\u0291\"],[[7614,7614],\"mapped\",\"\u0292\"],[[7615,7615],\"mapped\",\"\u03B8\"],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7673],\"valid\"],[[7674,7674],\"disallowed\"],[[7675,7675],\"valid\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",\"\u1E01\"],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",\"\u1E03\"],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",\"\u1E05\"],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",\"\u1E07\"],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",\"\u1E09\"],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",\"\u1E0B\"],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",\"\u1E0D\"],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",\"\u1E0F\"],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",\"\u1E11\"],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",\"\u1E13\"],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",\"\u1E15\"],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",\"\u1E17\"],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",\"\u1E19\"],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",\"\u1E1B\"],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",\"\u1E1D\"],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",\"\u1E1F\"],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",\"\u1E21\"],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",\"\u1E23\"],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",\"\u1E25\"],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",\"\u1E27\"],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",\"\u1E29\"],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",\"\u1E2B\"],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",\"\u1E2D\"],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",\"\u1E2F\"],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",\"\u1E31\"],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",\"\u1E33\"],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",\"\u1E35\"],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",\"\u1E37\"],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",\"\u1E39\"],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",\"\u1E3B\"],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",\"\u1E3D\"],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",\"\u1E3F\"],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",\"\u1E41\"],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",\"\u1E43\"],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",\"\u1E45\"],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",\"\u1E47\"],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",\"\u1E49\"],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",\"\u1E4B\"],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",\"\u1E4D\"],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",\"\u1E4F\"],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",\"\u1E51\"],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",\"\u1E53\"],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",\"\u1E55\"],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",\"\u1E57\"],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",\"\u1E59\"],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",\"\u1E5B\"],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",\"\u1E5D\"],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",\"\u1E5F\"],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",\"\u1E61\"],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",\"\u1E63\"],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",\"\u1E65\"],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",\"\u1E67\"],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",\"\u1E69\"],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",\"\u1E6B\"],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",\"\u1E6D\"],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",\"\u1E6F\"],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",\"\u1E71\"],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",\"\u1E73\"],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",\"\u1E75\"],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",\"\u1E77\"],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",\"\u1E79\"],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",\"\u1E7B\"],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",\"\u1E7D\"],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",\"\u1E7F\"],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",\"\u1E81\"],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",\"\u1E83\"],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",\"\u1E85\"],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",\"\u1E87\"],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",\"\u1E89\"],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",\"\u1E8B\"],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",\"\u1E8D\"],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",\"\u1E8F\"],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",\"\u1E91\"],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",\"\u1E93\"],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",\"\u1E95\"],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",\"a\u02BE\"],[[7835,7835],\"mapped\",\"\u1E61\"],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",\"ss\"],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",\"\u1EA1\"],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",\"\u1EA3\"],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",\"\u1EA5\"],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",\"\u1EA7\"],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",\"\u1EA9\"],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",\"\u1EAB\"],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",\"\u1EAD\"],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",\"\u1EAF\"],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",\"\u1EB1\"],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",\"\u1EB3\"],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",\"\u1EB5\"],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",\"\u1EB7\"],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",\"\u1EB9\"],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",\"\u1EBB\"],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",\"\u1EBD\"],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",\"\u1EBF\"],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",\"\u1EC1\"],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",\"\u1EC3\"],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",\"\u1EC5\"],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",\"\u1EC7\"],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",\"\u1EC9\"],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",\"\u1ECB\"],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",\"\u1ECD\"],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",\"\u1ECF\"],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",\"\u1ED1\"],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",\"\u1ED3\"],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",\"\u1ED5\"],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",\"\u1ED7\"],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",\"\u1ED9\"],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",\"\u1EDB\"],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",\"\u1EDD\"],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",\"\u1EDF\"],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",\"\u1EE1\"],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",\"\u1EE3\"],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",\"\u1EE5\"],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",\"\u1EE7\"],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",\"\u1EE9\"],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",\"\u1EEB\"],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",\"\u1EED\"],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",\"\u1EEF\"],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",\"\u1EF1\"],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",\"\u1EF3\"],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",\"\u1EF5\"],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",\"\u1EF7\"],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",\"\u1EF9\"],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",\"\u1EFB\"],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",\"\u1EFD\"],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",\"\u1EFF\"],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",\"\u1F00\"],[[7945,7945],\"mapped\",\"\u1F01\"],[[7946,7946],\"mapped\",\"\u1F02\"],[[7947,7947],\"mapped\",\"\u1F03\"],[[7948,7948],\"mapped\",\"\u1F04\"],[[7949,7949],\"mapped\",\"\u1F05\"],[[7950,7950],\"mapped\",\"\u1F06\"],[[7951,7951],\"mapped\",\"\u1F07\"],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",\"\u1F10\"],[[7961,7961],\"mapped\",\"\u1F11\"],[[7962,7962],\"mapped\",\"\u1F12\"],[[7963,7963],\"mapped\",\"\u1F13\"],[[7964,7964],\"mapped\",\"\u1F14\"],[[7965,7965],\"mapped\",\"\u1F15\"],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",\"\u1F20\"],[[7977,7977],\"mapped\",\"\u1F21\"],[[7978,7978],\"mapped\",\"\u1F22\"],[[7979,7979],\"mapped\",\"\u1F23\"],[[7980,7980],\"mapped\",\"\u1F24\"],[[7981,7981],\"mapped\",\"\u1F25\"],[[7982,7982],\"mapped\",\"\u1F26\"],[[7983,7983],\"mapped\",\"\u1F27\"],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",\"\u1F30\"],[[7993,7993],\"mapped\",\"\u1F31\"],[[7994,7994],\"mapped\",\"\u1F32\"],[[7995,7995],\"mapped\",\"\u1F33\"],[[7996,7996],\"mapped\",\"\u1F34\"],[[7997,7997],\"mapped\",\"\u1F35\"],[[7998,7998],\"mapped\",\"\u1F36\"],[[7999,7999],\"mapped\",\"\u1F37\"],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",\"\u1F40\"],[[8009,8009],\"mapped\",\"\u1F41\"],[[8010,8010],\"mapped\",\"\u1F42\"],[[8011,8011],\"mapped\",\"\u1F43\"],[[8012,8012],\"mapped\",\"\u1F44\"],[[8013,8013],\"mapped\",\"\u1F45\"],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",\"\u1F51\"],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",\"\u1F53\"],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",\"\u1F55\"],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",\"\u1F57\"],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",\"\u1F60\"],[[8041,8041],\"mapped\",\"\u1F61\"],[[8042,8042],\"mapped\",\"\u1F62\"],[[8043,8043],\"mapped\",\"\u1F63\"],[[8044,8044],\"mapped\",\"\u1F64\"],[[8045,8045],\"mapped\",\"\u1F65\"],[[8046,8046],\"mapped\",\"\u1F66\"],[[8047,8047],\"mapped\",\"\u1F67\"],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",\"\u03AC\"],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",\"\u03AD\"],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",\"\u03AE\"],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",\"\u03AF\"],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",\"\u03CC\"],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",\"\u03CD\"],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",\"\u03CE\"],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",\"\u1F00\u03B9\"],[[8065,8065],\"mapped\",\"\u1F01\u03B9\"],[[8066,8066],\"mapped\",\"\u1F02\u03B9\"],[[8067,8067],\"mapped\",\"\u1F03\u03B9\"],[[8068,8068],\"mapped\",\"\u1F04\u03B9\"],[[8069,8069],\"mapped\",\"\u1F05\u03B9\"],[[8070,8070],\"mapped\",\"\u1F06\u03B9\"],[[8071,8071],\"mapped\",\"\u1F07\u03B9\"],[[8072,8072],\"mapped\",\"\u1F00\u03B9\"],[[8073,8073],\"mapped\",\"\u1F01\u03B9\"],[[8074,8074],\"mapped\",\"\u1F02\u03B9\"],[[8075,8075],\"mapped\",\"\u1F03\u03B9\"],[[8076,8076],\"mapped\",\"\u1F04\u03B9\"],[[8077,8077],\"mapped\",\"\u1F05\u03B9\"],[[8078,8078],\"mapped\",\"\u1F06\u03B9\"],[[8079,8079],\"mapped\",\"\u1F07\u03B9\"],[[8080,8080],\"mapped\",\"\u1F20\u03B9\"],[[8081,8081],\"mapped\",\"\u1F21\u03B9\"],[[8082,8082],\"mapped\",\"\u1F22\u03B9\"],[[8083,8083],\"mapped\",\"\u1F23\u03B9\"],[[8084,8084],\"mapped\",\"\u1F24\u03B9\"],[[8085,8085],\"mapped\",\"\u1F25\u03B9\"],[[8086,8086],\"mapped\",\"\u1F26\u03B9\"],[[8087,8087],\"mapped\",\"\u1F27\u03B9\"],[[8088,8088],\"mapped\",\"\u1F20\u03B9\"],[[8089,8089],\"mapped\",\"\u1F21\u03B9\"],[[8090,8090],\"mapped\",\"\u1F22\u03B9\"],[[8091,8091],\"mapped\",\"\u1F23\u03B9\"],[[8092,8092],\"mapped\",\"\u1F24\u03B9\"],[[8093,8093],\"mapped\",\"\u1F25\u03B9\"],[[8094,8094],\"mapped\",\"\u1F26\u03B9\"],[[8095,8095],\"mapped\",\"\u1F27\u03B9\"],[[8096,8096],\"mapped\",\"\u1F60\u03B9\"],[[8097,8097],\"mapped\",\"\u1F61\u03B9\"],[[8098,8098],\"mapped\",\"\u1F62\u03B9\"],[[8099,8099],\"mapped\",\"\u1F63\u03B9\"],[[8100,8100],\"mapped\",\"\u1F64\u03B9\"],[[8101,8101],\"mapped\",\"\u1F65\u03B9\"],[[8102,8102],\"mapped\",\"\u1F66\u03B9\"],[[8103,8103],\"mapped\",\"\u1F67\u03B9\"],[[8104,8104],\"mapped\",\"\u1F60\u03B9\"],[[8105,8105],\"mapped\",\"\u1F61\u03B9\"],[[8106,8106],\"mapped\",\"\u1F62\u03B9\"],[[8107,8107],\"mapped\",\"\u1F63\u03B9\"],[[8108,8108],\"mapped\",\"\u1F64\u03B9\"],[[8109,8109],\"mapped\",\"\u1F65\u03B9\"],[[8110,8110],\"mapped\",\"\u1F66\u03B9\"],[[8111,8111],\"mapped\",\"\u1F67\u03B9\"],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",\"\u1F70\u03B9\"],[[8115,8115],\"mapped\",\"\u03B1\u03B9\"],[[8116,8116],\"mapped\",\"\u03AC\u03B9\"],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",\"\u1FB6\u03B9\"],[[8120,8120],\"mapped\",\"\u1FB0\"],[[8121,8121],\"mapped\",\"\u1FB1\"],[[8122,8122],\"mapped\",\"\u1F70\"],[[8123,8123],\"mapped\",\"\u03AC\"],[[8124,8124],\"mapped\",\"\u03B1\u03B9\"],[[8125,8125],\"disallowed_STD3_mapped\",\" \u0313\"],[[8126,8126],\"mapped\",\"\u03B9\"],[[8127,8127],\"disallowed_STD3_mapped\",\" \u0313\"],[[8128,8128],\"disallowed_STD3_mapped\",\" \u0342\"],[[8129,8129],\"disallowed_STD3_mapped\",\" \u0308\u0342\"],[[8130,8130],\"mapped\",\"\u1F74\u03B9\"],[[8131,8131],\"mapped\",\"\u03B7\u03B9\"],[[8132,8132],\"mapped\",\"\u03AE\u03B9\"],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",\"\u1FC6\u03B9\"],[[8136,8136],\"mapped\",\"\u1F72\"],[[8137,8137],\"mapped\",\"\u03AD\"],[[8138,8138],\"mapped\",\"\u1F74\"],[[8139,8139],\"mapped\",\"\u03AE\"],[[8140,8140],\"mapped\",\"\u03B7\u03B9\"],[[8141,8141],\"disallowed_STD3_mapped\",\" \u0313\u0300\"],[[8142,8142],\"disallowed_STD3_mapped\",\" \u0313\u0301\"],[[8143,8143],\"disallowed_STD3_mapped\",\" \u0313\u0342\"],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",\"\u0390\"],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",\"\u1FD0\"],[[8153,8153],\"mapped\",\"\u1FD1\"],[[8154,8154],\"mapped\",\"\u1F76\"],[[8155,8155],\"mapped\",\"\u03AF\"],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",\" \u0314\u0300\"],[[8158,8158],\"disallowed_STD3_mapped\",\" \u0314\u0301\"],[[8159,8159],\"disallowed_STD3_mapped\",\" \u0314\u0342\"],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",\"\u03B0\"],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",\"\u1FE0\"],[[8169,8169],\"mapped\",\"\u1FE1\"],[[8170,8170],\"mapped\",\"\u1F7A\"],[[8171,8171],\"mapped\",\"\u03CD\"],[[8172,8172],\"mapped\",\"\u1FE5\"],[[8173,8173],\"disallowed_STD3_mapped\",\" \u0308\u0300\"],[[8174,8174],\"disallowed_STD3_mapped\",\" \u0308\u0301\"],[[8175,8175],\"disallowed_STD3_mapped\",\"`\"],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",\"\u1F7C\u03B9\"],[[8179,8179],\"mapped\",\"\u03C9\u03B9\"],[[8180,8180],\"mapped\",\"\u03CE\u03B9\"],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",\"\u1FF6\u03B9\"],[[8184,8184],\"mapped\",\"\u1F78\"],[[8185,8185],\"mapped\",\"\u03CC\"],[[8186,8186],\"mapped\",\"\u1F7C\"],[[8187,8187],\"mapped\",\"\u03CE\"],[[8188,8188],\"mapped\",\"\u03C9\u03B9\"],[[8189,8189],\"disallowed_STD3_mapped\",\" \u0301\"],[[8190,8190],\"disallowed_STD3_mapped\",\" \u0314\"],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",\" \"],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",\"\"],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",\"\",\"NV8\"],[[8209,8209],\"mapped\",\"\u2010\"],[[8210,8214],\"valid\",\"\",\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",\" \u0333\"],[[8216,8227],\"valid\",\"\",\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",\"\",\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",\" \"],[[8240,8242],\"valid\",\"\",\"NV8\"],[[8243,8243],\"mapped\",\"\u2032\u2032\"],[[8244,8244],\"mapped\",\"\u2032\u2032\u2032\"],[[8245,8245],\"valid\",\"\",\"NV8\"],[[8246,8246],\"mapped\",\"\u2035\u2035\"],[[8247,8247],\"mapped\",\"\u2035\u2035\u2035\"],[[8248,8251],\"valid\",\"\",\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",\"!!\"],[[8253,8253],\"valid\",\"\",\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",\" \u0305\"],[[8255,8262],\"valid\",\"\",\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",\"??\"],[[8264,8264],\"disallowed_STD3_mapped\",\"?!\"],[[8265,8265],\"disallowed_STD3_mapped\",\"!?\"],[[8266,8269],\"valid\",\"\",\"NV8\"],[[8270,8274],\"valid\",\"\",\"NV8\"],[[8275,8276],\"valid\",\"\",\"NV8\"],[[8277,8278],\"valid\",\"\",\"NV8\"],[[8279,8279],\"mapped\",\"\u2032\u2032\u2032\u2032\"],[[8280,8286],\"valid\",\"\",\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",\" \"],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",\"0\"],[[8305,8305],\"mapped\",\"i\"],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",\"4\"],[[8309,8309],\"mapped\",\"5\"],[[8310,8310],\"mapped\",\"6\"],[[8311,8311],\"mapped\",\"7\"],[[8312,8312],\"mapped\",\"8\"],[[8313,8313],\"mapped\",\"9\"],[[8314,8314],\"disallowed_STD3_mapped\",\"+\"],[[8315,8315],\"mapped\",\"\u2212\"],[[8316,8316],\"disallowed_STD3_mapped\",\"=\"],[[8317,8317],\"disallowed_STD3_mapped\",\"(\"],[[8318,8318],\"disallowed_STD3_mapped\",\")\"],[[8319,8319],\"mapped\",\"n\"],[[8320,8320],\"mapped\",\"0\"],[[8321,8321],\"mapped\",\"1\"],[[8322,8322],\"mapped\",\"2\"],[[8323,8323],\"mapped\",\"3\"],[[8324,8324],\"mapped\",\"4\"],[[8325,8325],\"mapped\",\"5\"],[[8326,8326],\"mapped\",\"6\"],[[8327,8327],\"mapped\",\"7\"],[[8328,8328],\"mapped\",\"8\"],[[8329,8329],\"mapped\",\"9\"],[[8330,8330],\"disallowed_STD3_mapped\",\"+\"],[[8331,8331],\"mapped\",\"\u2212\"],[[8332,8332],\"disallowed_STD3_mapped\",\"=\"],[[8333,8333],\"disallowed_STD3_mapped\",\"(\"],[[8334,8334],\"disallowed_STD3_mapped\",\")\"],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",\"a\"],[[8337,8337],\"mapped\",\"e\"],[[8338,8338],\"mapped\",\"o\"],[[8339,8339],\"mapped\",\"x\"],[[8340,8340],\"mapped\",\"\u0259\"],[[8341,8341],\"mapped\",\"h\"],[[8342,8342],\"mapped\",\"k\"],[[8343,8343],\"mapped\",\"l\"],[[8344,8344],\"mapped\",\"m\"],[[8345,8345],\"mapped\",\"n\"],[[8346,8346],\"mapped\",\"p\"],[[8347,8347],\"mapped\",\"s\"],[[8348,8348],\"mapped\",\"t\"],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",\"\",\"NV8\"],[[8360,8360],\"mapped\",\"rs\"],[[8361,8362],\"valid\",\"\",\"NV8\"],[[8363,8363],\"valid\",\"\",\"NV8\"],[[8364,8364],\"valid\",\"\",\"NV8\"],[[8365,8367],\"valid\",\"\",\"NV8\"],[[8368,8369],\"valid\",\"\",\"NV8\"],[[8370,8373],\"valid\",\"\",\"NV8\"],[[8374,8376],\"valid\",\"\",\"NV8\"],[[8377,8377],\"valid\",\"\",\"NV8\"],[[8378,8378],\"valid\",\"\",\"NV8\"],[[8379,8381],\"valid\",\"\",\"NV8\"],[[8382,8382],\"valid\",\"\",\"NV8\"],[[8383,8383],\"valid\",\"\",\"NV8\"],[[8384,8399],\"disallowed\"],[[8400,8417],\"valid\",\"\",\"NV8\"],[[8418,8419],\"valid\",\"\",\"NV8\"],[[8420,8426],\"valid\",\"\",\"NV8\"],[[8427,8427],\"valid\",\"\",\"NV8\"],[[8428,8431],\"valid\",\"\",\"NV8\"],[[8432,8432],\"valid\",\"\",\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",\"a/c\"],[[8449,8449],\"disallowed_STD3_mapped\",\"a/s\"],[[8450,8450],\"mapped\",\"c\"],[[8451,8451],\"mapped\",\"\u00B0c\"],[[8452,8452],\"valid\",\"\",\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",\"c/o\"],[[8454,8454],\"disallowed_STD3_mapped\",\"c/u\"],[[8455,8455],\"mapped\",\"\u025B\"],[[8456,8456],\"valid\",\"\",\"NV8\"],[[8457,8457],\"mapped\",\"\u00B0f\"],[[8458,8458],\"mapped\",\"g\"],[[8459,8462],\"mapped\",\"h\"],[[8463,8463],\"mapped\",\"\u0127\"],[[8464,8465],\"mapped\",\"i\"],[[8466,8467],\"mapped\",\"l\"],[[8468,8468],\"valid\",\"\",\"NV8\"],[[8469,8469],\"mapped\",\"n\"],[[8470,8470],\"mapped\",\"no\"],[[8471,8472],\"valid\",\"\",\"NV8\"],[[8473,8473],\"mapped\",\"p\"],[[8474,8474],\"mapped\",\"q\"],[[8475,8477],\"mapped\",\"r\"],[[8478,8479],\"valid\",\"\",\"NV8\"],[[8480,8480],\"mapped\",\"sm\"],[[8481,8481],\"mapped\",\"tel\"],[[8482,8482],\"mapped\",\"tm\"],[[8483,8483],\"valid\",\"\",\"NV8\"],[[8484,8484],\"mapped\",\"z\"],[[8485,8485],\"valid\",\"\",\"NV8\"],[[8486,8486],\"mapped\",\"\u03C9\"],[[8487,8487],\"valid\",\"\",\"NV8\"],[[8488,8488],\"mapped\",\"z\"],[[8489,8489],\"valid\",\"\",\"NV8\"],[[8490,8490],\"mapped\",\"k\"],[[8491,8491],\"mapped\",\"\u00E5\"],[[8492,8492],\"mapped\",\"b\"],[[8493,8493],\"mapped\",\"c\"],[[8494,8494],\"valid\",\"\",\"NV8\"],[[8495,8496],\"mapped\",\"e\"],[[8497,8497],\"mapped\",\"f\"],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",\"m\"],[[8500,8500],\"mapped\",\"o\"],[[8501,8501],\"mapped\",\"\u05D0\"],[[8502,8502],\"mapped\",\"\u05D1\"],[[8503,8503],\"mapped\",\"\u05D2\"],[[8504,8504],\"mapped\",\"\u05D3\"],[[8505,8505],\"mapped\",\"i\"],[[8506,8506],\"valid\",\"\",\"NV8\"],[[8507,8507],\"mapped\",\"fax\"],[[8508,8508],\"mapped\",\"\u03C0\"],[[8509,8510],\"mapped\",\"\u03B3\"],[[8511,8511],\"mapped\",\"\u03C0\"],[[8512,8512],\"mapped\",\"\u2211\"],[[8513,8516],\"valid\",\"\",\"NV8\"],[[8517,8518],\"mapped\",\"d\"],[[8519,8519],\"mapped\",\"e\"],[[8520,8520],\"mapped\",\"i\"],[[8521,8521],\"mapped\",\"j\"],[[8522,8523],\"valid\",\"\",\"NV8\"],[[8524,8524],\"valid\",\"\",\"NV8\"],[[8525,8525],\"valid\",\"\",\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",\"\",\"NV8\"],[[8528,8528],\"mapped\",\"1\u20447\"],[[8529,8529],\"mapped\",\"1\u20449\"],[[8530,8530],\"mapped\",\"1\u204410\"],[[8531,8531],\"mapped\",\"1\u20443\"],[[8532,8532],\"mapped\",\"2\u20443\"],[[8533,8533],\"mapped\",\"1\u20445\"],[[8534,8534],\"mapped\",\"2\u20445\"],[[8535,8535],\"mapped\",\"3\u20445\"],[[8536,8536],\"mapped\",\"4\u20445\"],[[8537,8537],\"mapped\",\"1\u20446\"],[[8538,8538],\"mapped\",\"5\u20446\"],[[8539,8539],\"mapped\",\"1\u20448\"],[[8540,8540],\"mapped\",\"3\u20448\"],[[8541,8541],\"mapped\",\"5\u20448\"],[[8542,8542],\"mapped\",\"7\u20448\"],[[8543,8543],\"mapped\",\"1\u2044\"],[[8544,8544],\"mapped\",\"i\"],[[8545,8545],\"mapped\",\"ii\"],[[8546,8546],\"mapped\",\"iii\"],[[8547,8547],\"mapped\",\"iv\"],[[8548,8548],\"mapped\",\"v\"],[[8549,8549],\"mapped\",\"vi\"],[[8550,8550],\"mapped\",\"vii\"],[[8551,8551],\"mapped\",\"viii\"],[[8552,8552],\"mapped\",\"ix\"],[[8553,8553],\"mapped\",\"x\"],[[8554,8554],\"mapped\",\"xi\"],[[8555,8555],\"mapped\",\"xii\"],[[8556,8556],\"mapped\",\"l\"],[[8557,8557],\"mapped\",\"c\"],[[8558,8558],\"mapped\",\"d\"],[[8559,8559],\"mapped\",\"m\"],[[8560,8560],\"mapped\",\"i\"],[[8561,8561],\"mapped\",\"ii\"],[[8562,8562],\"mapped\",\"iii\"],[[8563,8563],\"mapped\",\"iv\"],[[8564,8564],\"mapped\",\"v\"],[[8565,8565],\"mapped\",\"vi\"],[[8566,8566],\"mapped\",\"vii\"],[[8567,8567],\"mapped\",\"viii\"],[[8568,8568],\"mapped\",\"ix\"],[[8569,8569],\"mapped\",\"x\"],[[8570,8570],\"mapped\",\"xi\"],[[8571,8571],\"mapped\",\"xii\"],[[8572,8572],\"mapped\",\"l\"],[[8573,8573],\"mapped\",\"c\"],[[8574,8574],\"mapped\",\"d\"],[[8575,8575],\"mapped\",\"m\"],[[8576,8578],\"valid\",\"\",\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",\"\",\"NV8\"],[[8585,8585],\"mapped\",\"0\u20443\"],[[8586,8587],\"valid\",\"\",\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",\"\",\"NV8\"],[[8683,8691],\"valid\",\"\",\"NV8\"],[[8692,8703],\"valid\",\"\",\"NV8\"],[[8704,8747],\"valid\",\"\",\"NV8\"],[[8748,8748],\"mapped\",\"\u222B\u222B\"],[[8749,8749],\"mapped\",\"\u222B\u222B\u222B\"],[[8750,8750],\"valid\",\"\",\"NV8\"],[[8751,8751],\"mapped\",\"\u222E\u222E\"],[[8752,8752],\"mapped\",\"\u222E\u222E\u222E\"],[[8753,8799],\"valid\",\"\",\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",\"\",\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",\"\",\"NV8\"],[[8946,8959],\"valid\",\"\",\"NV8\"],[[8960,8960],\"valid\",\"\",\"NV8\"],[[8961,8961],\"valid\",\"\",\"NV8\"],[[8962,9000],\"valid\",\"\",\"NV8\"],[[9001,9001],\"mapped\",\"\u3008\"],[[9002,9002],\"mapped\",\"\u3009\"],[[9003,9082],\"valid\",\"\",\"NV8\"],[[9083,9083],\"valid\",\"\",\"NV8\"],[[9084,9084],\"valid\",\"\",\"NV8\"],[[9085,9114],\"valid\",\"\",\"NV8\"],[[9115,9166],\"valid\",\"\",\"NV8\"],[[9167,9168],\"valid\",\"\",\"NV8\"],[[9169,9179],\"valid\",\"\",\"NV8\"],[[9180,9191],\"valid\",\"\",\"NV8\"],[[9192,9192],\"valid\",\"\",\"NV8\"],[[9193,9203],\"valid\",\"\",\"NV8\"],[[9204,9210],\"valid\",\"\",\"NV8\"],[[9211,9214],\"valid\",\"\",\"NV8\"],[[9215,9215],\"valid\",\"\",\"NV8\"],[[9216,9252],\"valid\",\"\",\"NV8\"],[[9253,9254],\"valid\",\"\",\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",\"\",\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",\"1\"],[[9313,9313],\"mapped\",\"2\"],[[9314,9314],\"mapped\",\"3\"],[[9315,9315],\"mapped\",\"4\"],[[9316,9316],\"mapped\",\"5\"],[[9317,9317],\"mapped\",\"6\"],[[9318,9318],\"mapped\",\"7\"],[[9319,9319],\"mapped\",\"8\"],[[9320,9320],\"mapped\",\"9\"],[[9321,9321],\"mapped\",\"10\"],[[9322,9322],\"mapped\",\"11\"],[[9323,9323],\"mapped\",\"12\"],[[9324,9324],\"mapped\",\"13\"],[[9325,9325],\"mapped\",\"14\"],[[9326,9326],\"mapped\",\"15\"],[[9327,9327],\"mapped\",\"16\"],[[9328,9328],\"mapped\",\"17\"],[[9329,9329],\"mapped\",\"18\"],[[9330,9330],\"mapped\",\"19\"],[[9331,9331],\"mapped\",\"20\"],[[9332,9332],\"disallowed_STD3_mapped\",\"(1)\"],[[9333,9333],\"disallowed_STD3_mapped\",\"(2)\"],[[9334,9334],\"disallowed_STD3_mapped\",\"(3)\"],[[9335,9335],\"disallowed_STD3_mapped\",\"(4)\"],[[9336,9336],\"disallowed_STD3_mapped\",\"(5)\"],[[9337,9337],\"disallowed_STD3_mapped\",\"(6)\"],[[9338,9338],\"disallowed_STD3_mapped\",\"(7)\"],[[9339,9339],\"disallowed_STD3_mapped\",\"(8)\"],[[9340,9340],\"disallowed_STD3_mapped\",\"(9)\"],[[9341,9341],\"disallowed_STD3_mapped\",\"(10)\"],[[9342,9342],\"disallowed_STD3_mapped\",\"(11)\"],[[9343,9343],\"disallowed_STD3_mapped\",\"(12)\"],[[9344,9344],\"disallowed_STD3_mapped\",\"(13)\"],[[9345,9345],\"disallowed_STD3_mapped\",\"(14)\"],[[9346,9346],\"disallowed_STD3_mapped\",\"(15)\"],[[9347,9347],\"disallowed_STD3_mapped\",\"(16)\"],[[9348,9348],\"disallowed_STD3_mapped\",\"(17)\"],[[9349,9349],\"disallowed_STD3_mapped\",\"(18)\"],[[9350,9350],\"disallowed_STD3_mapped\",\"(19)\"],[[9351,9351],\"disallowed_STD3_mapped\",\"(20)\"],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",\"(a)\"],[[9373,9373],\"disallowed_STD3_mapped\",\"(b)\"],[[9374,9374],\"disallowed_STD3_mapped\",\"(c)\"],[[9375,9375],\"disallowed_STD3_mapped\",\"(d)\"],[[9376,9376],\"disallowed_STD3_mapped\",\"(e)\"],[[9377,9377],\"disallowed_STD3_mapped\",\"(f)\"],[[9378,9378],\"disallowed_STD3_mapped\",\"(g)\"],[[9379,9379],\"disallowed_STD3_mapped\",\"(h)\"],[[9380,9380],\"disallowed_STD3_mapped\",\"(i)\"],[[9381,9381],\"disallowed_STD3_mapped\",\"(j)\"],[[9382,9382],\"disallowed_STD3_mapped\",\"(k)\"],[[9383,9383],\"disallowed_STD3_mapped\",\"(l)\"],[[9384,9384],\"disallowed_STD3_mapped\",\"(m)\"],[[9385,9385],\"disallowed_STD3_mapped\",\"(n)\"],[[9386,9386],\"disallowed_STD3_mapped\",\"(o)\"],[[9387,9387],\"disallowed_STD3_mapped\",\"(p)\"],[[9388,9388],\"disallowed_STD3_mapped\",\"(q)\"],[[9389,9389],\"disallowed_STD3_mapped\",\"(r)\"],[[9390,9390],\"disallowed_STD3_mapped\",\"(s)\"],[[9391,9391],\"disallowed_STD3_mapped\",\"(t)\"],[[9392,9392],\"disallowed_STD3_mapped\",\"(u)\"],[[9393,9393],\"disallowed_STD3_mapped\",\"(v)\"],[[9394,9394],\"disallowed_STD3_mapped\",\"(w)\"],[[9395,9395],\"disallowed_STD3_mapped\",\"(x)\"],[[9396,9396],\"disallowed_STD3_mapped\",\"(y)\"],[[9397,9397],\"disallowed_STD3_mapped\",\"(z)\"],[[9398,9398],\"mapped\",\"a\"],[[9399,9399],\"mapped\",\"b\"],[[9400,9400],\"mapped\",\"c\"],[[9401,9401],\"mapped\",\"d\"],[[9402,9402],\"mapped\",\"e\"],[[9403,9403],\"mapped\",\"f\"],[[9404,9404],\"mapped\",\"g\"],[[9405,9405],\"mapped\",\"h\"],[[9406,9406],\"mapped\",\"i\"],[[9407,9407],\"mapped\",\"j\"],[[9408,9408],\"mapped\",\"k\"],[[9409,9409],\"mapped\",\"l\"],[[9410,9410],\"mapped\",\"m\"],[[9411,9411],\"mapped\",\"n\"],[[9412,9412],\"mapped\",\"o\"],[[9413,9413],\"mapped\",\"p\"],[[9414,9414],\"mapped\",\"q\"],[[9415,9415],\"mapped\",\"r\"],[[9416,9416],\"mapped\",\"s\"],[[9417,9417],\"mapped\",\"t\"],[[9418,9418],\"mapped\",\"u\"],[[9419,9419],\"mapped\",\"v\"],[[9420,9420],\"mapped\",\"w\"],[[9421,9421],\"mapped\",\"x\"],[[9422,9422],\"mapped\",\"y\"],[[9423,9423],\"mapped\",\"z\"],[[9424,9424],\"mapped\",\"a\"],[[9425,9425],\"mapped\",\"b\"],[[9426,9426],\"mapped\",\"c\"],[[9427,9427],\"mapped\",\"d\"],[[9428,9428],\"mapped\",\"e\"],[[9429,9429],\"mapped\",\"f\"],[[9430,9430],\"mapped\",\"g\"],[[9431,9431],\"mapped\",\"h\"],[[9432,9432],\"mapped\",\"i\"],[[9433,9433],\"mapped\",\"j\"],[[9434,9434],\"mapped\",\"k\"],[[9435,9435],\"mapped\",\"l\"],[[9436,9436],\"mapped\",\"m\"],[[9437,9437],\"mapped\",\"n\"],[[9438,9438],\"mapped\",\"o\"],[[9439,9439],\"mapped\",\"p\"],[[9440,9440],\"mapped\",\"q\"],[[9441,9441],\"mapped\",\"r\"],[[9442,9442],\"mapped\",\"s\"],[[9443,9443],\"mapped\",\"t\"],[[9444,9444],\"mapped\",\"u\"],[[9445,9445],\"mapped\",\"v\"],[[9446,9446],\"mapped\",\"w\"],[[9447,9447],\"mapped\",\"x\"],[[9448,9448],\"mapped\",\"y\"],[[9449,9449],\"mapped\",\"z\"],[[9450,9450],\"mapped\",\"0\"],[[9451,9470],\"valid\",\"\",\"NV8\"],[[9471,9471],\"valid\",\"\",\"NV8\"],[[9472,9621],\"valid\",\"\",\"NV8\"],[[9622,9631],\"valid\",\"\",\"NV8\"],[[9632,9711],\"valid\",\"\",\"NV8\"],[[9712,9719],\"valid\",\"\",\"NV8\"],[[9720,9727],\"valid\",\"\",\"NV8\"],[[9728,9747],\"valid\",\"\",\"NV8\"],[[9748,9749],\"valid\",\"\",\"NV8\"],[[9750,9751],\"valid\",\"\",\"NV8\"],[[9752,9752],\"valid\",\"\",\"NV8\"],[[9753,9753],\"valid\",\"\",\"NV8\"],[[9754,9839],\"valid\",\"\",\"NV8\"],[[9840,9841],\"valid\",\"\",\"NV8\"],[[9842,9853],\"valid\",\"\",\"NV8\"],[[9854,9855],\"valid\",\"\",\"NV8\"],[[9856,9865],\"valid\",\"\",\"NV8\"],[[9866,9873],\"valid\",\"\",\"NV8\"],[[9874,9884],\"valid\",\"\",\"NV8\"],[[9885,9885],\"valid\",\"\",\"NV8\"],[[9886,9887],\"valid\",\"\",\"NV8\"],[[9888,9889],\"valid\",\"\",\"NV8\"],[[9890,9905],\"valid\",\"\",\"NV8\"],[[9906,9906],\"valid\",\"\",\"NV8\"],[[9907,9916],\"valid\",\"\",\"NV8\"],[[9917,9919],\"valid\",\"\",\"NV8\"],[[9920,9923],\"valid\",\"\",\"NV8\"],[[9924,9933],\"valid\",\"\",\"NV8\"],[[9934,9934],\"valid\",\"\",\"NV8\"],[[9935,9953],\"valid\",\"\",\"NV8\"],[[9954,9954],\"valid\",\"\",\"NV8\"],[[9955,9955],\"valid\",\"\",\"NV8\"],[[9956,9959],\"valid\",\"\",\"NV8\"],[[9960,9983],\"valid\",\"\",\"NV8\"],[[9984,9984],\"valid\",\"\",\"NV8\"],[[9985,9988],\"valid\",\"\",\"NV8\"],[[9989,9989],\"valid\",\"\",\"NV8\"],[[9990,9993],\"valid\",\"\",\"NV8\"],[[9994,9995],\"valid\",\"\",\"NV8\"],[[9996,10023],\"valid\",\"\",\"NV8\"],[[10024,10024],\"valid\",\"\",\"NV8\"],[[10025,10059],\"valid\",\"\",\"NV8\"],[[10060,10060],\"valid\",\"\",\"NV8\"],[[10061,10061],\"valid\",\"\",\"NV8\"],[[10062,10062],\"valid\",\"\",\"NV8\"],[[10063,10066],\"valid\",\"\",\"NV8\"],[[10067,10069],\"valid\",\"\",\"NV8\"],[[10070,10070],\"valid\",\"\",\"NV8\"],[[10071,10071],\"valid\",\"\",\"NV8\"],[[10072,10078],\"valid\",\"\",\"NV8\"],[[10079,10080],\"valid\",\"\",\"NV8\"],[[10081,10087],\"valid\",\"\",\"NV8\"],[[10088,10101],\"valid\",\"\",\"NV8\"],[[10102,10132],\"valid\",\"\",\"NV8\"],[[10133,10135],\"valid\",\"\",\"NV8\"],[[10136,10159],\"valid\",\"\",\"NV8\"],[[10160,10160],\"valid\",\"\",\"NV8\"],[[10161,10174],\"valid\",\"\",\"NV8\"],[[10175,10175],\"valid\",\"\",\"NV8\"],[[10176,10182],\"valid\",\"\",\"NV8\"],[[10183,10186],\"valid\",\"\",\"NV8\"],[[10187,10187],\"valid\",\"\",\"NV8\"],[[10188,10188],\"valid\",\"\",\"NV8\"],[[10189,10189],\"valid\",\"\",\"NV8\"],[[10190,10191],\"valid\",\"\",\"NV8\"],[[10192,10219],\"valid\",\"\",\"NV8\"],[[10220,10223],\"valid\",\"\",\"NV8\"],[[10224,10239],\"valid\",\"\",\"NV8\"],[[10240,10495],\"valid\",\"\",\"NV8\"],[[10496,10763],\"valid\",\"\",\"NV8\"],[[10764,10764],\"mapped\",\"\u222B\u222B\u222B\u222B\"],[[10765,10867],\"valid\",\"\",\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",\"::=\"],[[10869,10869],\"disallowed_STD3_mapped\",\"==\"],[[10870,10870],\"disallowed_STD3_mapped\",\"===\"],[[10871,10971],\"valid\",\"\",\"NV8\"],[[10972,10972],\"mapped\",\"\u2ADD\u0338\"],[[10973,11007],\"valid\",\"\",\"NV8\"],[[11008,11021],\"valid\",\"\",\"NV8\"],[[11022,11027],\"valid\",\"\",\"NV8\"],[[11028,11034],\"valid\",\"\",\"NV8\"],[[11035,11039],\"valid\",\"\",\"NV8\"],[[11040,11043],\"valid\",\"\",\"NV8\"],[[11044,11084],\"valid\",\"\",\"NV8\"],[[11085,11087],\"valid\",\"\",\"NV8\"],[[11088,11092],\"valid\",\"\",\"NV8\"],[[11093,11097],\"valid\",\"\",\"NV8\"],[[11098,11123],\"valid\",\"\",\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",\"\",\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",\"\",\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",\"\",\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",\"\",\"NV8\"],[[11218,11218],\"valid\",\"\",\"NV8\"],[[11219,11243],\"disallowed\"],[[11244,11247],\"valid\",\"\",\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",\"\u2C30\"],[[11265,11265],\"mapped\",\"\u2C31\"],[[11266,11266],\"mapped\",\"\u2C32\"],[[11267,11267],\"mapped\",\"\u2C33\"],[[11268,11268],\"mapped\",\"\u2C34\"],[[11269,11269],\"mapped\",\"\u2C35\"],[[11270,11270],\"mapped\",\"\u2C36\"],[[11271,11271],\"mapped\",\"\u2C37\"],[[11272,11272],\"mapped\",\"\u2C38\"],[[11273,11273],\"mapped\",\"\u2C39\"],[[11274,11274],\"mapped\",\"\u2C3A\"],[[11275,11275],\"mapped\",\"\u2C3B\"],[[11276,11276],\"mapped\",\"\u2C3C\"],[[11277,11277],\"mapped\",\"\u2C3D\"],[[11278,11278],\"mapped\",\"\u2C3E\"],[[11279,11279],\"mapped\",\"\u2C3F\"],[[11280,11280],\"mapped\",\"\u2C40\"],[[11281,11281],\"mapped\",\"\u2C41\"],[[11282,11282],\"mapped\",\"\u2C42\"],[[11283,11283],\"mapped\",\"\u2C43\"],[[11284,11284],\"mapped\",\"\u2C44\"],[[11285,11285],\"mapped\",\"\u2C45\"],[[11286,11286],\"mapped\",\"\u2C46\"],[[11287,11287],\"mapped\",\"\u2C47\"],[[11288,11288],\"mapped\",\"\u2C48\"],[[11289,11289],\"mapped\",\"\u2C49\"],[[11290,11290],\"mapped\",\"\u2C4A\"],[[11291,11291],\"mapped\",\"\u2C4B\"],[[11292,11292],\"mapped\",\"\u2C4C\"],[[11293,11293],\"mapped\",\"\u2C4D\"],[[11294,11294],\"mapped\",\"\u2C4E\"],[[11295,11295],\"mapped\",\"\u2C4F\"],[[11296,11296],\"mapped\",\"\u2C50\"],[[11297,11297],\"mapped\",\"\u2C51\"],[[11298,11298],\"mapped\",\"\u2C52\"],[[11299,11299],\"mapped\",\"\u2C53\"],[[11300,11300],\"mapped\",\"\u2C54\"],[[11301,11301],\"mapped\",\"\u2C55\"],[[11302,11302],\"mapped\",\"\u2C56\"],[[11303,11303],\"mapped\",\"\u2C57\"],[[11304,11304],\"mapped\",\"\u2C58\"],[[11305,11305],\"mapped\",\"\u2C59\"],[[11306,11306],\"mapped\",\"\u2C5A\"],[[11307,11307],\"mapped\",\"\u2C5B\"],[[11308,11308],\"mapped\",\"\u2C5C\"],[[11309,11309],\"mapped\",\"\u2C5D\"],[[11310,11310],\"mapped\",\"\u2C5E\"],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",\"\u2C61\"],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",\"\u026B\"],[[11363,11363],\"mapped\",\"\u1D7D\"],[[11364,11364],\"mapped\",\"\u027D\"],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",\"\u2C68\"],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",\"\u2C6A\"],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",\"\u2C6C\"],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",\"\u0251\"],[[11374,11374],\"mapped\",\"\u0271\"],[[11375,11375],\"mapped\",\"\u0250\"],[[11376,11376],\"mapped\",\"\u0252\"],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",\"\u2C73\"],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",\"\u2C76\"],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",\"j\"],[[11389,11389],\"mapped\",\"v\"],[[11390,11390],\"mapped\",\"\u023F\"],[[11391,11391],\"mapped\",\"\u0240\"],[[11392,11392],\"mapped\",\"\u2C81\"],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",\"\u2C83\"],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",\"\u2C85\"],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",\"\u2C87\"],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",\"\u2C89\"],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",\"\u2C8B\"],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",\"\u2C8D\"],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",\"\u2C8F\"],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",\"\u2C91\"],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",\"\u2C93\"],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",\"\u2C95\"],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",\"\u2C97\"],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",\"\u2C99\"],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",\"\u2C9B\"],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",\"\u2C9D\"],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",\"\u2C9F\"],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",\"\u2CA1\"],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",\"\u2CA3\"],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",\"\u2CA5\"],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",\"\u2CA7\"],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",\"\u2CA9\"],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",\"\u2CAB\"],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",\"\u2CAD\"],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",\"\u2CAF\"],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",\"\u2CB1\"],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",\"\u2CB3\"],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",\"\u2CB5\"],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",\"\u2CB7\"],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",\"\u2CB9\"],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",\"\u2CBB\"],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",\"\u2CBD\"],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",\"\u2CBF\"],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",\"\u2CC1\"],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",\"\u2CC3\"],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",\"\u2CC5\"],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",\"\u2CC7\"],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",\"\u2CC9\"],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",\"\u2CCB\"],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",\"\u2CCD\"],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",\"\u2CCF\"],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",\"\u2CD1\"],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",\"\u2CD3\"],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",\"\u2CD5\"],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",\"\u2CD7\"],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",\"\u2CD9\"],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",\"\u2CDB\"],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",\"\u2CDD\"],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",\"\u2CDF\"],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",\"\u2CE1\"],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",\"\u2CE3\"],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",\"\",\"NV8\"],[[11499,11499],\"mapped\",\"\u2CEC\"],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",\"\u2CEE\"],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",\"\u2CF3\"],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",\"\",\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",\"\u2D61\"],[[11632,11632],\"valid\",\"\",\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",\"\",\"NV8\"],[[11800,11803],\"valid\",\"\",\"NV8\"],[[11804,11805],\"valid\",\"\",\"NV8\"],[[11806,11822],\"valid\",\"\",\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",\"\",\"NV8\"],[[11825,11825],\"valid\",\"\",\"NV8\"],[[11826,11835],\"valid\",\"\",\"NV8\"],[[11836,11842],\"valid\",\"\",\"NV8\"],[[11843,11844],\"valid\",\"\",\"NV8\"],[[11845,11849],\"valid\",\"\",\"NV8\"],[[11850,11903],\"disallowed\"],[[11904,11929],\"valid\",\"\",\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",\"\",\"NV8\"],[[11935,11935],\"mapped\",\"\u6BCD\"],[[11936,12018],\"valid\",\"\",\"NV8\"],[[12019,12019],\"mapped\",\"\u9F9F\"],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",\"\u4E00\"],[[12033,12033],\"mapped\",\"\u4E28\"],[[12034,12034],\"mapped\",\"\u4E36\"],[[12035,12035],\"mapped\",\"\u4E3F\"],[[12036,12036],\"mapped\",\"\u4E59\"],[[12037,12037],\"mapped\",\"\u4E85\"],[[12038,12038],\"mapped\",\"\u4E8C\"],[[12039,12039],\"mapped\",\"\u4EA0\"],[[12040,12040],\"mapped\",\"\u4EBA\"],[[12041,12041],\"mapped\",\"\u513F\"],[[12042,12042],\"mapped\",\"\u5165\"],[[12043,12043],\"mapped\",\"\u516B\"],[[12044,12044],\"mapped\",\"\u5182\"],[[12045,12045],\"mapped\",\"\u5196\"],[[12046,12046],\"mapped\",\"\u51AB\"],[[12047,12047],\"mapped\",\"\u51E0\"],[[12048,12048],\"mapped\",\"\u51F5\"],[[12049,12049],\"mapped\",\"\u5200\"],[[12050,12050],\"mapped\",\"\u529B\"],[[12051,12051],\"mapped\",\"\u52F9\"],[[12052,12052],\"mapped\",\"\u5315\"],[[12053,12053],\"mapped\",\"\u531A\"],[[12054,12054],\"mapped\",\"\u5338\"],[[12055,12055],\"mapped\",\"\u5341\"],[[12056,12056],\"mapped\",\"\u535C\"],[[12057,12057],\"mapped\",\"\u5369\"],[[12058,12058],\"mapped\",\"\u5382\"],[[12059,12059],\"mapped\",\"\u53B6\"],[[12060,12060],\"mapped\",\"\u53C8\"],[[12061,12061],\"mapped\",\"\u53E3\"],[[12062,12062],\"mapped\",\"\u56D7\"],[[12063,12063],\"mapped\",\"\u571F\"],[[12064,12064],\"mapped\",\"\u58EB\"],[[12065,12065],\"mapped\",\"\u5902\"],[[12066,12066],\"mapped\",\"\u590A\"],[[12067,12067],\"mapped\",\"\u5915\"],[[12068,12068],\"mapped\",\"\u5927\"],[[12069,12069],\"mapped\",\"\u5973\"],[[12070,12070],\"mapped\",\"\u5B50\"],[[12071,12071],\"mapped\",\"\u5B80\"],[[12072,12072],\"mapped\",\"\u5BF8\"],[[12073,12073],\"mapped\",\"\u5C0F\"],[[12074,12074],\"mapped\",\"\u5C22\"],[[12075,12075],\"mapped\",\"\u5C38\"],[[12076,12076],\"mapped\",\"\u5C6E\"],[[12077,12077],\"mapped\",\"\u5C71\"],[[12078,12078],\"mapped\",\"\u5DDB\"],[[12079,12079],\"mapped\",\"\u5DE5\"],[[12080,12080],\"mapped\",\"\u5DF1\"],[[12081,12081],\"mapped\",\"\u5DFE\"],[[12082,12082],\"mapped\",\"\u5E72\"],[[12083,12083],\"mapped\",\"\u5E7A\"],[[12084,12084],\"mapped\",\"\u5E7F\"],[[12085,12085],\"mapped\",\"\u5EF4\"],[[12086,12086],\"mapped\",\"\u5EFE\"],[[12087,12087],\"mapped\",\"\u5F0B\"],[[12088,12088],\"mapped\",\"\u5F13\"],[[12089,12089],\"mapped\",\"\u5F50\"],[[12090,12090],\"mapped\",\"\u5F61\"],[[12091,12091],\"mapped\",\"\u5F73\"],[[12092,12092],\"mapped\",\"\u5FC3\"],[[12093,12093],\"mapped\",\"\u6208\"],[[12094,12094],\"mapped\",\"\u6236\"],[[12095,12095],\"mapped\",\"\u624B\"],[[12096,12096],\"mapped\",\"\u652F\"],[[12097,12097],\"mapped\",\"\u6534\"],[[12098,12098],\"mapped\",\"\u6587\"],[[12099,12099],\"mapped\",\"\u6597\"],[[12100,12100],\"mapped\",\"\u65A4\"],[[12101,12101],\"mapped\",\"\u65B9\"],[[12102,12102],\"mapped\",\"\u65E0\"],[[12103,12103],\"mapped\",\"\u65E5\"],[[12104,12104],\"mapped\",\"\u66F0\"],[[12105,12105],\"mapped\",\"\u6708\"],[[12106,12106],\"mapped\",\"\u6728\"],[[12107,12107],\"mapped\",\"\u6B20\"],[[12108,12108],\"mapped\",\"\u6B62\"],[[12109,12109],\"mapped\",\"\u6B79\"],[[12110,12110],\"mapped\",\"\u6BB3\"],[[12111,12111],\"mapped\",\"\u6BCB\"],[[12112,12112],\"mapped\",\"\u6BD4\"],[[12113,12113],\"mapped\",\"\u6BDB\"],[[12114,12114],\"mapped\",\"\u6C0F\"],[[12115,12115],\"mapped\",\"\u6C14\"],[[12116,12116],\"mapped\",\"\u6C34\"],[[12117,12117],\"mapped\",\"\u706B\"],[[12118,12118],\"mapped\",\"\u722A\"],[[12119,12119],\"mapped\",\"\u7236\"],[[12120,12120],\"mapped\",\"\u723B\"],[[12121,12121],\"mapped\",\"\u723F\"],[[12122,12122],\"mapped\",\"\u7247\"],[[12123,12123],\"mapped\",\"\u7259\"],[[12124,12124],\"mapped\",\"\u725B\"],[[12125,12125],\"mapped\",\"\u72AC\"],[[12126,12126],\"mapped\",\"\u7384\"],[[12127,12127],\"mapped\",\"\u7389\"],[[12128,12128],\"mapped\",\"\u74DC\"],[[12129,12129],\"mapped\",\"\u74E6\"],[[12130,12130],\"mapped\",\"\u7518\"],[[12131,12131],\"mapped\",\"\u751F\"],[[12132,12132],\"mapped\",\"\u7528\"],[[12133,12133],\"mapped\",\"\u7530\"],[[12134,12134],\"mapped\",\"\u758B\"],[[12135,12135],\"mapped\",\"\u7592\"],[[12136,12136],\"mapped\",\"\u7676\"],[[12137,12137],\"mapped\",\"\u767D\"],[[12138,12138],\"mapped\",\"\u76AE\"],[[12139,12139],\"mapped\",\"\u76BF\"],[[12140,12140],\"mapped\",\"\u76EE\"],[[12141,12141],\"mapped\",\"\u77DB\"],[[12142,12142],\"mapped\",\"\u77E2\"],[[12143,12143],\"mapped\",\"\u77F3\"],[[12144,12144],\"mapped\",\"\u793A\"],[[12145,12145],\"mapped\",\"\u79B8\"],[[12146,12146],\"mapped\",\"\u79BE\"],[[12147,12147],\"mapped\",\"\u7A74\"],[[12148,12148],\"mapped\",\"\u7ACB\"],[[12149,12149],\"mapped\",\"\u7AF9\"],[[12150,12150],\"mapped\",\"\u7C73\"],[[12151,12151],\"mapped\",\"\u7CF8\"],[[12152,12152],\"mapped\",\"\u7F36\"],[[12153,12153],\"mapped\",\"\u7F51\"],[[12154,12154],\"mapped\",\"\u7F8A\"],[[12155,12155],\"mapped\",\"\u7FBD\"],[[12156,12156],\"mapped\",\"\u8001\"],[[12157,12157],\"mapped\",\"\u800C\"],[[12158,12158],\"mapped\",\"\u8012\"],[[12159,12159],\"mapped\",\"\u8033\"],[[12160,12160],\"mapped\",\"\u807F\"],[[12161,12161],\"mapped\",\"\u8089\"],[[12162,12162],\"mapped\",\"\u81E3\"],[[12163,12163],\"mapped\",\"\u81EA\"],[[12164,12164],\"mapped\",\"\u81F3\"],[[12165,12165],\"mapped\",\"\u81FC\"],[[12166,12166],\"mapped\",\"\u820C\"],[[12167,12167],\"mapped\",\"\u821B\"],[[12168,12168],\"mapped\",\"\u821F\"],[[12169,12169],\"mapped\",\"\u826E\"],[[12170,12170],\"mapped\",\"\u8272\"],[[12171,12171],\"mapped\",\"\u8278\"],[[12172,12172],\"mapped\",\"\u864D\"],[[12173,12173],\"mapped\",\"\u866B\"],[[12174,12174],\"mapped\",\"\u8840\"],[[12175,12175],\"mapped\",\"\u884C\"],[[12176,12176],\"mapped\",\"\u8863\"],[[12177,12177],\"mapped\",\"\u897E\"],[[12178,12178],\"mapped\",\"\u898B\"],[[12179,12179],\"mapped\",\"\u89D2\"],[[12180,12180],\"mapped\",\"\u8A00\"],[[12181,12181],\"mapped\",\"\u8C37\"],[[12182,12182],\"mapped\",\"\u8C46\"],[[12183,12183],\"mapped\",\"\u8C55\"],[[12184,12184],\"mapped\",\"\u8C78\"],[[12185,12185],\"mapped\",\"\u8C9D\"],[[12186,12186],\"mapped\",\"\u8D64\"],[[12187,12187],\"mapped\",\"\u8D70\"],[[12188,12188],\"mapped\",\"\u8DB3\"],[[12189,12189],\"mapped\",\"\u8EAB\"],[[12190,12190],\"mapped\",\"\u8ECA\"],[[12191,12191],\"mapped\",\"\u8F9B\"],[[12192,12192],\"mapped\",\"\u8FB0\"],[[12193,12193],\"mapped\",\"\u8FB5\"],[[12194,12194],\"mapped\",\"\u9091\"],[[12195,12195],\"mapped\",\"\u9149\"],[[12196,12196],\"mapped\",\"\u91C6\"],[[12197,12197],\"mapped\",\"\u91CC\"],[[12198,12198],\"mapped\",\"\u91D1\"],[[12199,12199],\"mapped\",\"\u9577\"],[[12200,12200],\"mapped\",\"\u9580\"],[[12201,12201],\"mapped\",\"\u961C\"],[[12202,12202],\"mapped\",\"\u96B6\"],[[12203,12203],\"mapped\",\"\u96B9\"],[[12204,12204],\"mapped\",\"\u96E8\"],[[12205,12205],\"mapped\",\"\u9751\"],[[12206,12206],\"mapped\",\"\u975E\"],[[12207,12207],\"mapped\",\"\u9762\"],[[12208,12208],\"mapped\",\"\u9769\"],[[12209,12209],\"mapped\",\"\u97CB\"],[[12210,12210],\"mapped\",\"\u97ED\"],[[12211,12211],\"mapped\",\"\u97F3\"],[[12212,12212],\"mapped\",\"\u9801\"],[[12213,12213],\"mapped\",\"\u98A8\"],[[12214,12214],\"mapped\",\"\u98DB\"],[[12215,12215],\"mapped\",\"\u98DF\"],[[12216,12216],\"mapped\",\"\u9996\"],[[12217,12217],\"mapped\",\"\u9999\"],[[12218,12218],\"mapped\",\"\u99AC\"],[[12219,12219],\"mapped\",\"\u9AA8\"],[[12220,12220],\"mapped\",\"\u9AD8\"],[[12221,12221],\"mapped\",\"\u9ADF\"],[[12222,12222],\"mapped\",\"\u9B25\"],[[12223,12223],\"mapped\",\"\u9B2F\"],[[12224,12224],\"mapped\",\"\u9B32\"],[[12225,12225],\"mapped\",\"\u9B3C\"],[[12226,12226],\"mapped\",\"\u9B5A\"],[[12227,12227],\"mapped\",\"\u9CE5\"],[[12228,12228],\"mapped\",\"\u9E75\"],[[12229,12229],\"mapped\",\"\u9E7F\"],[[12230,12230],\"mapped\",\"\u9EA5\"],[[12231,12231],\"mapped\",\"\u9EBB\"],[[12232,12232],\"mapped\",\"\u9EC3\"],[[12233,12233],\"mapped\",\"\u9ECD\"],[[12234,12234],\"mapped\",\"\u9ED1\"],[[12235,12235],\"mapped\",\"\u9EF9\"],[[12236,12236],\"mapped\",\"\u9EFD\"],[[12237,12237],\"mapped\",\"\u9F0E\"],[[12238,12238],\"mapped\",\"\u9F13\"],[[12239,12239],\"mapped\",\"\u9F20\"],[[12240,12240],\"mapped\",\"\u9F3B\"],[[12241,12241],\"mapped\",\"\u9F4A\"],[[12242,12242],\"mapped\",\"\u9F52\"],[[12243,12243],\"mapped\",\"\u9F8D\"],[[12244,12244],\"mapped\",\"\u9F9C\"],[[12245,12245],\"mapped\",\"\u9FA0\"],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",\" \"],[[12289,12289],\"valid\",\"\",\"NV8\"],[[12290,12290],\"mapped\",\".\"],[[12291,12292],\"valid\",\"\",\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",\"\",\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",\"\",\"NV8\"],[[12342,12342],\"mapped\",\"\u3012\"],[[12343,12343],\"valid\",\"\",\"NV8\"],[[12344,12344],\"mapped\",\"\u5341\"],[[12345,12345],\"mapped\",\"\u5344\"],[[12346,12346],\"mapped\",\"\u5345\"],[[12347,12347],\"valid\",\"\",\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",\"\",\"NV8\"],[[12350,12350],\"valid\",\"\",\"NV8\"],[[12351,12351],\"valid\",\"\",\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",\" \u3099\"],[[12444,12444],\"disallowed_STD3_mapped\",\" \u309A\"],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",\"\u3088\u308A\"],[[12448,12448],\"valid\",\"\",\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",\"\u30B3\u30C8\"],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12590],\"valid\"],[[12591,12592],\"disallowed\"],[[12593,12593],\"mapped\",\"\u1100\"],[[12594,12594],\"mapped\",\"\u1101\"],[[12595,12595],\"mapped\",\"\u11AA\"],[[12596,12596],\"mapped\",\"\u1102\"],[[12597,12597],\"mapped\",\"\u11AC\"],[[12598,12598],\"mapped\",\"\u11AD\"],[[12599,12599],\"mapped\",\"\u1103\"],[[12600,12600],\"mapped\",\"\u1104\"],[[12601,12601],\"mapped\",\"\u1105\"],[[12602,12602],\"mapped\",\"\u11B0\"],[[12603,12603],\"mapped\",\"\u11B1\"],[[12604,12604],\"mapped\",\"\u11B2\"],[[12605,12605],\"mapped\",\"\u11B3\"],[[12606,12606],\"mapped\",\"\u11B4\"],[[12607,12607],\"mapped\",\"\u11B5\"],[[12608,12608],\"mapped\",\"\u111A\"],[[12609,12609],\"mapped\",\"\u1106\"],[[12610,12610],\"mapped\",\"\u1107\"],[[12611,12611],\"mapped\",\"\u1108\"],[[12612,12612],\"mapped\",\"\u1121\"],[[12613,12613],\"mapped\",\"\u1109\"],[[12614,12614],\"mapped\",\"\u110A\"],[[12615,12615],\"mapped\",\"\u110B\"],[[12616,12616],\"mapped\",\"\u110C\"],[[12617,12617],\"mapped\",\"\u110D\"],[[12618,12618],\"mapped\",\"\u110E\"],[[12619,12619],\"mapped\",\"\u110F\"],[[12620,12620],\"mapped\",\"\u1110\"],[[12621,12621],\"mapped\",\"\u1111\"],[[12622,12622],\"mapped\",\"\u1112\"],[[12623,12623],\"mapped\",\"\u1161\"],[[12624,12624],\"mapped\",\"\u1162\"],[[12625,12625],\"mapped\",\"\u1163\"],[[12626,12626],\"mapped\",\"\u1164\"],[[12627,12627],\"mapped\",\"\u1165\"],[[12628,12628],\"mapped\",\"\u1166\"],[[12629,12629],\"mapped\",\"\u1167\"],[[12630,12630],\"mapped\",\"\u1168\"],[[12631,12631],\"mapped\",\"\u1169\"],[[12632,12632],\"mapped\",\"\u116A\"],[[12633,12633],\"mapped\",\"\u116B\"],[[12634,12634],\"mapped\",\"\u116C\"],[[12635,12635],\"mapped\",\"\u116D\"],[[12636,12636],\"mapped\",\"\u116E\"],[[12637,12637],\"mapped\",\"\u116F\"],[[12638,12638],\"mapped\",\"\u1170\"],[[12639,12639],\"mapped\",\"\u1171\"],[[12640,12640],\"mapped\",\"\u1172\"],[[12641,12641],\"mapped\",\"\u1173\"],[[12642,12642],\"mapped\",\"\u1174\"],[[12643,12643],\"mapped\",\"\u1175\"],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",\"\u1114\"],[[12646,12646],\"mapped\",\"\u1115\"],[[12647,12647],\"mapped\",\"\u11C7\"],[[12648,12648],\"mapped\",\"\u11C8\"],[[12649,12649],\"mapped\",\"\u11CC\"],[[12650,12650],\"mapped\",\"\u11CE\"],[[12651,12651],\"mapped\",\"\u11D3\"],[[12652,12652],\"mapped\",\"\u11D7\"],[[12653,12653],\"mapped\",\"\u11D9\"],[[12654,12654],\"mapped\",\"\u111C\"],[[12655,12655],\"mapped\",\"\u11DD\"],[[12656,12656],\"mapped\",\"\u11DF\"],[[12657,12657],\"mapped\",\"\u111D\"],[[12658,12658],\"mapped\",\"\u111E\"],[[12659,12659],\"mapped\",\"\u1120\"],[[12660,12660],\"mapped\",\"\u1122\"],[[12661,12661],\"mapped\",\"\u1123\"],[[12662,12662],\"mapped\",\"\u1127\"],[[12663,12663],\"mapped\",\"\u1129\"],[[12664,12664],\"mapped\",\"\u112B\"],[[12665,12665],\"mapped\",\"\u112C\"],[[12666,12666],\"mapped\",\"\u112D\"],[[12667,12667],\"mapped\",\"\u112E\"],[[12668,12668],\"mapped\",\"\u112F\"],[[12669,12669],\"mapped\",\"\u1132\"],[[12670,12670],\"mapped\",\"\u1136\"],[[12671,12671],\"mapped\",\"\u1140\"],[[12672,12672],\"mapped\",\"\u1147\"],[[12673,12673],\"mapped\",\"\u114C\"],[[12674,12674],\"mapped\",\"\u11F1\"],[[12675,12675],\"mapped\",\"\u11F2\"],[[12676,12676],\"mapped\",\"\u1157\"],[[12677,12677],\"mapped\",\"\u1158\"],[[12678,12678],\"mapped\",\"\u1159\"],[[12679,12679],\"mapped\",\"\u1184\"],[[12680,12680],\"mapped\",\"\u1185\"],[[12681,12681],\"mapped\",\"\u1188\"],[[12682,12682],\"mapped\",\"\u1191\"],[[12683,12683],\"mapped\",\"\u1192\"],[[12684,12684],\"mapped\",\"\u1194\"],[[12685,12685],\"mapped\",\"\u119E\"],[[12686,12686],\"mapped\",\"\u11A1\"],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",\"\",\"NV8\"],[[12690,12690],\"mapped\",\"\u4E00\"],[[12691,12691],\"mapped\",\"\u4E8C\"],[[12692,12692],\"mapped\",\"\u4E09\"],[[12693,12693],\"mapped\",\"\u56DB\"],[[12694,12694],\"mapped\",\"\u4E0A\"],[[12695,12695],\"mapped\",\"\u4E2D\"],[[12696,12696],\"mapped\",\"\u4E0B\"],[[12697,12697],\"mapped\",\"\u7532\"],[[12698,12698],\"mapped\",\"\u4E59\"],[[12699,12699],\"mapped\",\"\u4E19\"],[[12700,12700],\"mapped\",\"\u4E01\"],[[12701,12701],\"mapped\",\"\u5929\"],[[12702,12702],\"mapped\",\"\u5730\"],[[12703,12703],\"mapped\",\"\u4EBA\"],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",\"\",\"NV8\"],[[12752,12771],\"valid\",\"\",\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",\"(\u1100)\"],[[12801,12801],\"disallowed_STD3_mapped\",\"(\u1102)\"],[[12802,12802],\"disallowed_STD3_mapped\",\"(\u1103)\"],[[12803,12803],\"disallowed_STD3_mapped\",\"(\u1105)\"],[[12804,12804],\"disallowed_STD3_mapped\",\"(\u1106)\"],[[12805,12805],\"disallowed_STD3_mapped\",\"(\u1107)\"],[[12806,12806],\"disallowed_STD3_mapped\",\"(\u1109)\"],[[12807,12807],\"disallowed_STD3_mapped\",\"(\u110B)\"],[[12808,12808],\"disallowed_STD3_mapped\",\"(\u110C)\"],[[12809,12809],\"disallowed_STD3_mapped\",\"(\u110E)\"],[[12810,12810],\"disallowed_STD3_mapped\",\"(\u110F)\"],[[12811,12811],\"disallowed_STD3_mapped\",\"(\u1110)\"],[[12812,12812],\"disallowed_STD3_mapped\",\"(\u1111)\"],[[12813,12813],\"disallowed_STD3_mapped\",\"(\u1112)\"],[[12814,12814],\"disallowed_STD3_mapped\",\"(\uAC00)\"],[[12815,12815],\"disallowed_STD3_mapped\",\"(\uB098)\"],[[12816,12816],\"disallowed_STD3_mapped\",\"(\uB2E4)\"],[[12817,12817],\"disallowed_STD3_mapped\",\"(\uB77C)\"],[[12818,12818],\"disallowed_STD3_mapped\",\"(\uB9C8)\"],[[12819,12819],\"disallowed_STD3_mapped\",\"(\uBC14)\"],[[12820,12820],\"disallowed_STD3_mapped\",\"(\uC0AC)\"],[[12821,12821],\"disallowed_STD3_mapped\",\"(\uC544)\"],[[12822,12822],\"disallowed_STD3_mapped\",\"(\uC790)\"],[[12823,12823],\"disallowed_STD3_mapped\",\"(\uCC28)\"],[[12824,12824],\"disallowed_STD3_mapped\",\"(\uCE74)\"],[[12825,12825],\"disallowed_STD3_mapped\",\"(\uD0C0)\"],[[12826,12826],\"disallowed_STD3_mapped\",\"(\uD30C)\"],[[12827,12827],\"disallowed_STD3_mapped\",\"(\uD558)\"],[[12828,12828],\"disallowed_STD3_mapped\",\"(\uC8FC)\"],[[12829,12829],\"disallowed_STD3_mapped\",\"(\uC624\uC804)\"],[[12830,12830],\"disallowed_STD3_mapped\",\"(\uC624\uD6C4)\"],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",\"(\u4E00)\"],[[12833,12833],\"disallowed_STD3_mapped\",\"(\u4E8C)\"],[[12834,12834],\"disallowed_STD3_mapped\",\"(\u4E09)\"],[[12835,12835],\"disallowed_STD3_mapped\",\"(\u56DB)\"],[[12836,12836],\"disallowed_STD3_mapped\",\"(\u4E94)\"],[[12837,12837],\"disallowed_STD3_mapped\",\"(\u516D)\"],[[12838,12838],\"disallowed_STD3_mapped\",\"(\u4E03)\"],[[12839,12839],\"disallowed_STD3_mapped\",\"(\u516B)\"],[[12840,12840],\"disallowed_STD3_mapped\",\"(\u4E5D)\"],[[12841,12841],\"disallowed_STD3_mapped\",\"(\u5341)\"],[[12842,12842],\"disallowed_STD3_mapped\",\"(\u6708)\"],[[12843,12843],\"disallowed_STD3_mapped\",\"(\u706B)\"],[[12844,12844],\"disallowed_STD3_mapped\",\"(\u6C34)\"],[[12845,12845],\"disallowed_STD3_mapped\",\"(\u6728)\"],[[12846,12846],\"disallowed_STD3_mapped\",\"(\u91D1)\"],[[12847,12847],\"disallowed_STD3_mapped\",\"(\u571F)\"],[[12848,12848],\"disallowed_STD3_mapped\",\"(\u65E5)\"],[[12849,12849],\"disallowed_STD3_mapped\",\"(\u682A)\"],[[12850,12850],\"disallowed_STD3_mapped\",\"(\u6709)\"],[[12851,12851],\"disallowed_STD3_mapped\",\"(\u793E)\"],[[12852,12852],\"disallowed_STD3_mapped\",\"(\u540D)\"],[[12853,12853],\"disallowed_STD3_mapped\",\"(\u7279)\"],[[12854,12854],\"disallowed_STD3_mapped\",\"(\u8CA1)\"],[[12855,12855],\"disallowed_STD3_mapped\",\"(\u795D)\"],[[12856,12856],\"disallowed_STD3_mapped\",\"(\u52B4)\"],[[12857,12857],\"disallowed_STD3_mapped\",\"(\u4EE3)\"],[[12858,12858],\"disallowed_STD3_mapped\",\"(\u547C)\"],[[12859,12859],\"disallowed_STD3_mapped\",\"(\u5B66)\"],[[12860,12860],\"disallowed_STD3_mapped\",\"(\u76E3)\"],[[12861,12861],\"disallowed_STD3_mapped\",\"(\u4F01)\"],[[12862,12862],\"disallowed_STD3_mapped\",\"(\u8CC7)\"],[[12863,12863],\"disallowed_STD3_mapped\",\"(\u5354)\"],[[12864,12864],\"disallowed_STD3_mapped\",\"(\u796D)\"],[[12865,12865],\"disallowed_STD3_mapped\",\"(\u4F11)\"],[[12866,12866],\"disallowed_STD3_mapped\",\"(\u81EA)\"],[[12867,12867],\"disallowed_STD3_mapped\",\"(\u81F3)\"],[[12868,12868],\"mapped\",\"\u554F\"],[[12869,12869],\"mapped\",\"\u5E7C\"],[[12870,12870],\"mapped\",\"\u6587\"],[[12871,12871],\"mapped\",\"\u7B8F\"],[[12872,12879],\"valid\",\"\",\"NV8\"],[[12880,12880],\"mapped\",\"pte\"],[[12881,12881],\"mapped\",\"21\"],[[12882,12882],\"mapped\",\"22\"],[[12883,12883],\"mapped\",\"23\"],[[12884,12884],\"mapped\",\"24\"],[[12885,12885],\"mapped\",\"25\"],[[12886,12886],\"mapped\",\"26\"],[[12887,12887],\"mapped\",\"27\"],[[12888,12888],\"mapped\",\"28\"],[[12889,12889],\"mapped\",\"29\"],[[12890,12890],\"mapped\",\"30\"],[[12891,12891],\"mapped\",\"31\"],[[12892,12892],\"mapped\",\"32\"],[[12893,12893],\"mapped\",\"33\"],[[12894,12894],\"mapped\",\"34\"],[[12895,12895],\"mapped\",\"35\"],[[12896,12896],\"mapped\",\"\u1100\"],[[12897,12897],\"mapped\",\"\u1102\"],[[12898,12898],\"mapped\",\"\u1103\"],[[12899,12899],\"mapped\",\"\u1105\"],[[12900,12900],\"mapped\",\"\u1106\"],[[12901,12901],\"mapped\",\"\u1107\"],[[12902,12902],\"mapped\",\"\u1109\"],[[12903,12903],\"mapped\",\"\u110B\"],[[12904,12904],\"mapped\",\"\u110C\"],[[12905,12905],\"mapped\",\"\u110E\"],[[12906,12906],\"mapped\",\"\u110F\"],[[12907,12907],\"mapped\",\"\u1110\"],[[12908,12908],\"mapped\",\"\u1111\"],[[12909,12909],\"mapped\",\"\u1112\"],[[12910,12910],\"mapped\",\"\uAC00\"],[[12911,12911],\"mapped\",\"\uB098\"],[[12912,12912],\"mapped\",\"\uB2E4\"],[[12913,12913],\"mapped\",\"\uB77C\"],[[12914,12914],\"mapped\",\"\uB9C8\"],[[12915,12915],\"mapped\",\"\uBC14\"],[[12916,12916],\"mapped\",\"\uC0AC\"],[[12917,12917],\"mapped\",\"\uC544\"],[[12918,12918],\"mapped\",\"\uC790\"],[[12919,12919],\"mapped\",\"\uCC28\"],[[12920,12920],\"mapped\",\"\uCE74\"],[[12921,12921],\"mapped\",\"\uD0C0\"],[[12922,12922],\"mapped\",\"\uD30C\"],[[12923,12923],\"mapped\",\"\uD558\"],[[12924,12924],\"mapped\",\"\uCC38\uACE0\"],[[12925,12925],\"mapped\",\"\uC8FC\uC758\"],[[12926,12926],\"mapped\",\"\uC6B0\"],[[12927,12927],\"valid\",\"\",\"NV8\"],[[12928,12928],\"mapped\",\"\u4E00\"],[[12929,12929],\"mapped\",\"\u4E8C\"],[[12930,12930],\"mapped\",\"\u4E09\"],[[12931,12931],\"mapped\",\"\u56DB\"],[[12932,12932],\"mapped\",\"\u4E94\"],[[12933,12933],\"mapped\",\"\u516D\"],[[12934,12934],\"mapped\",\"\u4E03\"],[[12935,12935],\"mapped\",\"\u516B\"],[[12936,12936],\"mapped\",\"\u4E5D\"],[[12937,12937],\"mapped\",\"\u5341\"],[[12938,12938],\"mapped\",\"\u6708\"],[[12939,12939],\"mapped\",\"\u706B\"],[[12940,12940],\"mapped\",\"\u6C34\"],[[12941,12941],\"mapped\",\"\u6728\"],[[12942,12942],\"mapped\",\"\u91D1\"],[[12943,12943],\"mapped\",\"\u571F\"],[[12944,12944],\"mapped\",\"\u65E5\"],[[12945,12945],\"mapped\",\"\u682A\"],[[12946,12946],\"mapped\",\"\u6709\"],[[12947,12947],\"mapped\",\"\u793E\"],[[12948,12948],\"mapped\",\"\u540D\"],[[12949,12949],\"mapped\",\"\u7279\"],[[12950,12950],\"mapped\",\"\u8CA1\"],[[12951,12951],\"mapped\",\"\u795D\"],[[12952,12952],\"mapped\",\"\u52B4\"],[[12953,12953],\"mapped\",\"\u79D8\"],[[12954,12954],\"mapped\",\"\u7537\"],[[12955,12955],\"mapped\",\"\u5973\"],[[12956,12956],\"mapped\",\"\u9069\"],[[12957,12957],\"mapped\",\"\u512A\"],[[12958,12958],\"mapped\",\"\u5370\"],[[12959,12959],\"mapped\",\"\u6CE8\"],[[12960,12960],\"mapped\",\"\u9805\"],[[12961,12961],\"mapped\",\"\u4F11\"],[[12962,12962],\"mapped\",\"\u5199\"],[[12963,12963],\"mapped\",\"\u6B63\"],[[12964,12964],\"mapped\",\"\u4E0A\"],[[12965,12965],\"mapped\",\"\u4E2D\"],[[12966,12966],\"mapped\",\"\u4E0B\"],[[12967,12967],\"mapped\",\"\u5DE6\"],[[12968,12968],\"mapped\",\"\u53F3\"],[[12969,12969],\"mapped\",\"\u533B\"],[[12970,12970],\"mapped\",\"\u5B97\"],[[12971,12971],\"mapped\",\"\u5B66\"],[[12972,12972],\"mapped\",\"\u76E3\"],[[12973,12973],\"mapped\",\"\u4F01\"],[[12974,12974],\"mapped\",\"\u8CC7\"],[[12975,12975],\"mapped\",\"\u5354\"],[[12976,12976],\"mapped\",\"\u591C\"],[[12977,12977],\"mapped\",\"36\"],[[12978,12978],\"mapped\",\"37\"],[[12979,12979],\"mapped\",\"38\"],[[12980,12980],\"mapped\",\"39\"],[[12981,12981],\"mapped\",\"40\"],[[12982,12982],\"mapped\",\"41\"],[[12983,12983],\"mapped\",\"42\"],[[12984,12984],\"mapped\",\"43\"],[[12985,12985],\"mapped\",\"44\"],[[12986,12986],\"mapped\",\"45\"],[[12987,12987],\"mapped\",\"46\"],[[12988,12988],\"mapped\",\"47\"],[[12989,12989],\"mapped\",\"48\"],[[12990,12990],\"mapped\",\"49\"],[[12991,12991],\"mapped\",\"50\"],[[12992,12992],\"mapped\",\"1\u6708\"],[[12993,12993],\"mapped\",\"2\u6708\"],[[12994,12994],\"mapped\",\"3\u6708\"],[[12995,12995],\"mapped\",\"4\u6708\"],[[12996,12996],\"mapped\",\"5\u6708\"],[[12997,12997],\"mapped\",\"6\u6708\"],[[12998,12998],\"mapped\",\"7\u6708\"],[[12999,12999],\"mapped\",\"8\u6708\"],[[13000,13000],\"mapped\",\"9\u6708\"],[[13001,13001],\"mapped\",\"10\u6708\"],[[13002,13002],\"mapped\",\"11\u6708\"],[[13003,13003],\"mapped\",\"12\u6708\"],[[13004,13004],\"mapped\",\"hg\"],[[13005,13005],\"mapped\",\"erg\"],[[13006,13006],\"mapped\",\"ev\"],[[13007,13007],\"mapped\",\"ltd\"],[[13008,13008],\"mapped\",\"\u30A2\"],[[13009,13009],\"mapped\",\"\u30A4\"],[[13010,13010],\"mapped\",\"\u30A6\"],[[13011,13011],\"mapped\",\"\u30A8\"],[[13012,13012],\"mapped\",\"\u30AA\"],[[13013,13013],\"mapped\",\"\u30AB\"],[[13014,13014],\"mapped\",\"\u30AD\"],[[13015,13015],\"mapped\",\"\u30AF\"],[[13016,13016],\"mapped\",\"\u30B1\"],[[13017,13017],\"mapped\",\"\u30B3\"],[[13018,13018],\"mapped\",\"\u30B5\"],[[13019,13019],\"mapped\",\"\u30B7\"],[[13020,13020],\"mapped\",\"\u30B9\"],[[13021,13021],\"mapped\",\"\u30BB\"],[[13022,13022],\"mapped\",\"\u30BD\"],[[13023,13023],\"mapped\",\"\u30BF\"],[[13024,13024],\"mapped\",\"\u30C1\"],[[13025,13025],\"mapped\",\"\u30C4\"],[[13026,13026],\"mapped\",\"\u30C6\"],[[13027,13027],\"mapped\",\"\u30C8\"],[[13028,13028],\"mapped\",\"\u30CA\"],[[13029,13029],\"mapped\",\"\u30CB\"],[[13030,13030],\"mapped\",\"\u30CC\"],[[13031,13031],\"mapped\",\"\u30CD\"],[[13032,13032],\"mapped\",\"\u30CE\"],[[13033,13033],\"mapped\",\"\u30CF\"],[[13034,13034],\"mapped\",\"\u30D2\"],[[13035,13035],\"mapped\",\"\u30D5\"],[[13036,13036],\"mapped\",\"\u30D8\"],[[13037,13037],\"mapped\",\"\u30DB\"],[[13038,13038],\"mapped\",\"\u30DE\"],[[13039,13039],\"mapped\",\"\u30DF\"],[[13040,13040],\"mapped\",\"\u30E0\"],[[13041,13041],\"mapped\",\"\u30E1\"],[[13042,13042],\"mapped\",\"\u30E2\"],[[13043,13043],\"mapped\",\"\u30E4\"],[[13044,13044],\"mapped\",\"\u30E6\"],[[13045,13045],\"mapped\",\"\u30E8\"],[[13046,13046],\"mapped\",\"\u30E9\"],[[13047,13047],\"mapped\",\"\u30EA\"],[[13048,13048],\"mapped\",\"\u30EB\"],[[13049,13049],\"mapped\",\"\u30EC\"],[[13050,13050],\"mapped\",\"\u30ED\"],[[13051,13051],\"mapped\",\"\u30EF\"],[[13052,13052],\"mapped\",\"\u30F0\"],[[13053,13053],\"mapped\",\"\u30F1\"],[[13054,13054],\"mapped\",\"\u30F2\"],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",\"\u30A2\u30D1\u30FC\u30C8\"],[[13057,13057],\"mapped\",\"\u30A2\u30EB\u30D5\u30A1\"],[[13058,13058],\"mapped\",\"\u30A2\u30F3\u30DA\u30A2\"],[[13059,13059],\"mapped\",\"\u30A2\u30FC\u30EB\"],[[13060,13060],\"mapped\",\"\u30A4\u30CB\u30F3\u30B0\"],[[13061,13061],\"mapped\",\"\u30A4\u30F3\u30C1\"],[[13062,13062],\"mapped\",\"\u30A6\u30A9\u30F3\"],[[13063,13063],\"mapped\",\"\u30A8\u30B9\u30AF\u30FC\u30C9\"],[[13064,13064],\"mapped\",\"\u30A8\u30FC\u30AB\u30FC\"],[[13065,13065],\"mapped\",\"\u30AA\u30F3\u30B9\"],[[13066,13066],\"mapped\",\"\u30AA\u30FC\u30E0\"],[[13067,13067],\"mapped\",\"\u30AB\u30A4\u30EA\"],[[13068,13068],\"mapped\",\"\u30AB\u30E9\u30C3\u30C8\"],[[13069,13069],\"mapped\",\"\u30AB\u30ED\u30EA\u30FC\"],[[13070,13070],\"mapped\",\"\u30AC\u30ED\u30F3\"],[[13071,13071],\"mapped\",\"\u30AC\u30F3\u30DE\"],[[13072,13072],\"mapped\",\"\u30AE\u30AC\"],[[13073,13073],\"mapped\",\"\u30AE\u30CB\u30FC\"],[[13074,13074],\"mapped\",\"\u30AD\u30E5\u30EA\u30FC\"],[[13075,13075],\"mapped\",\"\u30AE\u30EB\u30C0\u30FC\"],[[13076,13076],\"mapped\",\"\u30AD\u30ED\"],[[13077,13077],\"mapped\",\"\u30AD\u30ED\u30B0\u30E9\u30E0\"],[[13078,13078],\"mapped\",\"\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB\"],[[13079,13079],\"mapped\",\"\u30AD\u30ED\u30EF\u30C3\u30C8\"],[[13080,13080],\"mapped\",\"\u30B0\u30E9\u30E0\"],[[13081,13081],\"mapped\",\"\u30B0\u30E9\u30E0\u30C8\u30F3\"],[[13082,13082],\"mapped\",\"\u30AF\u30EB\u30BC\u30A4\u30ED\"],[[13083,13083],\"mapped\",\"\u30AF\u30ED\u30FC\u30CD\"],[[13084,13084],\"mapped\",\"\u30B1\u30FC\u30B9\"],[[13085,13085],\"mapped\",\"\u30B3\u30EB\u30CA\"],[[13086,13086],\"mapped\",\"\u30B3\u30FC\u30DD\"],[[13087,13087],\"mapped\",\"\u30B5\u30A4\u30AF\u30EB\"],[[13088,13088],\"mapped\",\"\u30B5\u30F3\u30C1\u30FC\u30E0\"],[[13089,13089],\"mapped\",\"\u30B7\u30EA\u30F3\u30B0\"],[[13090,13090],\"mapped\",\"\u30BB\u30F3\u30C1\"],[[13091,13091],\"mapped\",\"\u30BB\u30F3\u30C8\"],[[13092,13092],\"mapped\",\"\u30C0\u30FC\u30B9\"],[[13093,13093],\"mapped\",\"\u30C7\u30B7\"],[[13094,13094],\"mapped\",\"\u30C9\u30EB\"],[[13095,13095],\"mapped\",\"\u30C8\u30F3\"],[[13096,13096],\"mapped\",\"\u30CA\u30CE\"],[[13097,13097],\"mapped\",\"\u30CE\u30C3\u30C8\"],[[13098,13098],\"mapped\",\"\u30CF\u30A4\u30C4\"],[[13099,13099],\"mapped\",\"\u30D1\u30FC\u30BB\u30F3\u30C8\"],[[13100,13100],\"mapped\",\"\u30D1\u30FC\u30C4\"],[[13101,13101],\"mapped\",\"\u30D0\u30FC\u30EC\u30EB\"],[[13102,13102],\"mapped\",\"\u30D4\u30A2\u30B9\u30C8\u30EB\"],[[13103,13103],\"mapped\",\"\u30D4\u30AF\u30EB\"],[[13104,13104],\"mapped\",\"\u30D4\u30B3\"],[[13105,13105],\"mapped\",\"\u30D3\u30EB\"],[[13106,13106],\"mapped\",\"\u30D5\u30A1\u30E9\u30C3\u30C9\"],[[13107,13107],\"mapped\",\"\u30D5\u30A3\u30FC\u30C8\"],[[13108,13108],\"mapped\",\"\u30D6\u30C3\u30B7\u30A7\u30EB\"],[[13109,13109],\"mapped\",\"\u30D5\u30E9\u30F3\"],[[13110,13110],\"mapped\",\"\u30D8\u30AF\u30BF\u30FC\u30EB\"],[[13111,13111],\"mapped\",\"\u30DA\u30BD\"],[[13112,13112],\"mapped\",\"\u30DA\u30CB\u30D2\"],[[13113,13113],\"mapped\",\"\u30D8\u30EB\u30C4\"],[[13114,13114],\"mapped\",\"\u30DA\u30F3\u30B9\"],[[13115,13115],\"mapped\",\"\u30DA\u30FC\u30B8\"],[[13116,13116],\"mapped\",\"\u30D9\u30FC\u30BF\"],[[13117,13117],\"mapped\",\"\u30DD\u30A4\u30F3\u30C8\"],[[13118,13118],\"mapped\",\"\u30DC\u30EB\u30C8\"],[[13119,13119],\"mapped\",\"\u30DB\u30F3\"],[[13120,13120],\"mapped\",\"\u30DD\u30F3\u30C9\"],[[13121,13121],\"mapped\",\"\u30DB\u30FC\u30EB\"],[[13122,13122],\"mapped\",\"\u30DB\u30FC\u30F3\"],[[13123,13123],\"mapped\",\"\u30DE\u30A4\u30AF\u30ED\"],[[13124,13124],\"mapped\",\"\u30DE\u30A4\u30EB\"],[[13125,13125],\"mapped\",\"\u30DE\u30C3\u30CF\"],[[13126,13126],\"mapped\",\"\u30DE\u30EB\u30AF\"],[[13127,13127],\"mapped\",\"\u30DE\u30F3\u30B7\u30E7\u30F3\"],[[13128,13128],\"mapped\",\"\u30DF\u30AF\u30ED\u30F3\"],[[13129,13129],\"mapped\",\"\u30DF\u30EA\"],[[13130,13130],\"mapped\",\"\u30DF\u30EA\u30D0\u30FC\u30EB\"],[[13131,13131],\"mapped\",\"\u30E1\u30AC\"],[[13132,13132],\"mapped\",\"\u30E1\u30AC\u30C8\u30F3\"],[[13133,13133],\"mapped\",\"\u30E1\u30FC\u30C8\u30EB\"],[[13134,13134],\"mapped\",\"\u30E4\u30FC\u30C9\"],[[13135,13135],\"mapped\",\"\u30E4\u30FC\u30EB\"],[[13136,13136],\"mapped\",\"\u30E6\u30A2\u30F3\"],[[13137,13137],\"mapped\",\"\u30EA\u30C3\u30C8\u30EB\"],[[13138,13138],\"mapped\",\"\u30EA\u30E9\"],[[13139,13139],\"mapped\",\"\u30EB\u30D4\u30FC\"],[[13140,13140],\"mapped\",\"\u30EB\u30FC\u30D6\u30EB\"],[[13141,13141],\"mapped\",\"\u30EC\u30E0\"],[[13142,13142],\"mapped\",\"\u30EC\u30F3\u30C8\u30B2\u30F3\"],[[13143,13143],\"mapped\",\"\u30EF\u30C3\u30C8\"],[[13144,13144],\"mapped\",\"0\u70B9\"],[[13145,13145],\"mapped\",\"1\u70B9\"],[[13146,13146],\"mapped\",\"2\u70B9\"],[[13147,13147],\"mapped\",\"3\u70B9\"],[[13148,13148],\"mapped\",\"4\u70B9\"],[[13149,13149],\"mapped\",\"5\u70B9\"],[[13150,13150],\"mapped\",\"6\u70B9\"],[[13151,13151],\"mapped\",\"7\u70B9\"],[[13152,13152],\"mapped\",\"8\u70B9\"],[[13153,13153],\"mapped\",\"9\u70B9\"],[[13154,13154],\"mapped\",\"10\u70B9\"],[[13155,13155],\"mapped\",\"11\u70B9\"],[[13156,13156],\"mapped\",\"12\u70B9\"],[[13157,13157],\"mapped\",\"13\u70B9\"],[[13158,13158],\"mapped\",\"14\u70B9\"],[[13159,13159],\"mapped\",\"15\u70B9\"],[[13160,13160],\"mapped\",\"16\u70B9\"],[[13161,13161],\"mapped\",\"17\u70B9\"],[[13162,13162],\"mapped\",\"18\u70B9\"],[[13163,13163],\"mapped\",\"19\u70B9\"],[[13164,13164],\"mapped\",\"20\u70B9\"],[[13165,13165],\"mapped\",\"21\u70B9\"],[[13166,13166],\"mapped\",\"22\u70B9\"],[[13167,13167],\"mapped\",\"23\u70B9\"],[[13168,13168],\"mapped\",\"24\u70B9\"],[[13169,13169],\"mapped\",\"hpa\"],[[13170,13170],\"mapped\",\"da\"],[[13171,13171],\"mapped\",\"au\"],[[13172,13172],\"mapped\",\"bar\"],[[13173,13173],\"mapped\",\"ov\"],[[13174,13174],\"mapped\",\"pc\"],[[13175,13175],\"mapped\",\"dm\"],[[13176,13176],\"mapped\",\"dm2\"],[[13177,13177],\"mapped\",\"dm3\"],[[13178,13178],\"mapped\",\"iu\"],[[13179,13179],\"mapped\",\"\u5E73\u6210\"],[[13180,13180],\"mapped\",\"\u662D\u548C\"],[[13181,13181],\"mapped\",\"\u5927\u6B63\"],[[13182,13182],\"mapped\",\"\u660E\u6CBB\"],[[13183,13183],\"mapped\",\"\u682A\u5F0F\u4F1A\u793E\"],[[13184,13184],\"mapped\",\"pa\"],[[13185,13185],\"mapped\",\"na\"],[[13186,13186],\"mapped\",\"\u03BCa\"],[[13187,13187],\"mapped\",\"ma\"],[[13188,13188],\"mapped\",\"ka\"],[[13189,13189],\"mapped\",\"kb\"],[[13190,13190],\"mapped\",\"mb\"],[[13191,13191],\"mapped\",\"gb\"],[[13192,13192],\"mapped\",\"cal\"],[[13193,13193],\"mapped\",\"kcal\"],[[13194,13194],\"mapped\",\"pf\"],[[13195,13195],\"mapped\",\"nf\"],[[13196,13196],\"mapped\",\"\u03BCf\"],[[13197,13197],\"mapped\",\"\u03BCg\"],[[13198,13198],\"mapped\",\"mg\"],[[13199,13199],\"mapped\",\"kg\"],[[13200,13200],\"mapped\",\"hz\"],[[13201,13201],\"mapped\",\"khz\"],[[13202,13202],\"mapped\",\"mhz\"],[[13203,13203],\"mapped\",\"ghz\"],[[13204,13204],\"mapped\",\"thz\"],[[13205,13205],\"mapped\",\"\u03BCl\"],[[13206,13206],\"mapped\",\"ml\"],[[13207,13207],\"mapped\",\"dl\"],[[13208,13208],\"mapped\",\"kl\"],[[13209,13209],\"mapped\",\"fm\"],[[13210,13210],\"mapped\",\"nm\"],[[13211,13211],\"mapped\",\"\u03BCm\"],[[13212,13212],\"mapped\",\"mm\"],[[13213,13213],\"mapped\",\"cm\"],[[13214,13214],\"mapped\",\"km\"],[[13215,13215],\"mapped\",\"mm2\"],[[13216,13216],\"mapped\",\"cm2\"],[[13217,13217],\"mapped\",\"m2\"],[[13218,13218],\"mapped\",\"km2\"],[[13219,13219],\"mapped\",\"mm3\"],[[13220,13220],\"mapped\",\"cm3\"],[[13221,13221],\"mapped\",\"m3\"],[[13222,13222],\"mapped\",\"km3\"],[[13223,13223],\"mapped\",\"m\u2215s\"],[[13224,13224],\"mapped\",\"m\u2215s2\"],[[13225,13225],\"mapped\",\"pa\"],[[13226,13226],\"mapped\",\"kpa\"],[[13227,13227],\"mapped\",\"mpa\"],[[13228,13228],\"mapped\",\"gpa\"],[[13229,13229],\"mapped\",\"rad\"],[[13230,13230],\"mapped\",\"rad\u2215s\"],[[13231,13231],\"mapped\",\"rad\u2215s2\"],[[13232,13232],\"mapped\",\"ps\"],[[13233,13233],\"mapped\",\"ns\"],[[13234,13234],\"mapped\",\"\u03BCs\"],[[13235,13235],\"mapped\",\"ms\"],[[13236,13236],\"mapped\",\"pv\"],[[13237,13237],\"mapped\",\"nv\"],[[13238,13238],\"mapped\",\"\u03BCv\"],[[13239,13239],\"mapped\",\"mv\"],[[13240,13240],\"mapped\",\"kv\"],[[13241,13241],\"mapped\",\"mv\"],[[13242,13242],\"mapped\",\"pw\"],[[13243,13243],\"mapped\",\"nw\"],[[13244,13244],\"mapped\",\"\u03BCw\"],[[13245,13245],\"mapped\",\"mw\"],[[13246,13246],\"mapped\",\"kw\"],[[13247,13247],\"mapped\",\"mw\"],[[13248,13248],\"mapped\",\"k\u03C9\"],[[13249,13249],\"mapped\",\"m\u03C9\"],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",\"bq\"],[[13252,13252],\"mapped\",\"cc\"],[[13253,13253],\"mapped\",\"cd\"],[[13254,13254],\"mapped\",\"c\u2215kg\"],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",\"db\"],[[13257,13257],\"mapped\",\"gy\"],[[13258,13258],\"mapped\",\"ha\"],[[13259,13259],\"mapped\",\"hp\"],[[13260,13260],\"mapped\",\"in\"],[[13261,13261],\"mapped\",\"kk\"],[[13262,13262],\"mapped\",\"km\"],[[13263,13263],\"mapped\",\"kt\"],[[13264,13264],\"mapped\",\"lm\"],[[13265,13265],\"mapped\",\"ln\"],[[13266,13266],\"mapped\",\"log\"],[[13267,13267],\"mapped\",\"lx\"],[[13268,13268],\"mapped\",\"mb\"],[[13269,13269],\"mapped\",\"mil\"],[[13270,13270],\"mapped\",\"mol\"],[[13271,13271],\"mapped\",\"ph\"],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",\"ppm\"],[[13274,13274],\"mapped\",\"pr\"],[[13275,13275],\"mapped\",\"sr\"],[[13276,13276],\"mapped\",\"sv\"],[[13277,13277],\"mapped\",\"wb\"],[[13278,13278],\"mapped\",\"v\u2215m\"],[[13279,13279],\"mapped\",\"a\u2215m\"],[[13280,13280],\"mapped\",\"1\u65E5\"],[[13281,13281],\"mapped\",\"2\u65E5\"],[[13282,13282],\"mapped\",\"3\u65E5\"],[[13283,13283],\"mapped\",\"4\u65E5\"],[[13284,13284],\"mapped\",\"5\u65E5\"],[[13285,13285],\"mapped\",\"6\u65E5\"],[[13286,13286],\"mapped\",\"7\u65E5\"],[[13287,13287],\"mapped\",\"8\u65E5\"],[[13288,13288],\"mapped\",\"9\u65E5\"],[[13289,13289],\"mapped\",\"10\u65E5\"],[[13290,13290],\"mapped\",\"11\u65E5\"],[[13291,13291],\"mapped\",\"12\u65E5\"],[[13292,13292],\"mapped\",\"13\u65E5\"],[[13293,13293],\"mapped\",\"14\u65E5\"],[[13294,13294],\"mapped\",\"15\u65E5\"],[[13295,13295],\"mapped\",\"16\u65E5\"],[[13296,13296],\"mapped\",\"17\u65E5\"],[[13297,13297],\"mapped\",\"18\u65E5\"],[[13298,13298],\"mapped\",\"19\u65E5\"],[[13299,13299],\"mapped\",\"20\u65E5\"],[[13300,13300],\"mapped\",\"21\u65E5\"],[[13301,13301],\"mapped\",\"22\u65E5\"],[[13302,13302],\"mapped\",\"23\u65E5\"],[[13303,13303],\"mapped\",\"24\u65E5\"],[[13304,13304],\"mapped\",\"25\u65E5\"],[[13305,13305],\"mapped\",\"26\u65E5\"],[[13306,13306],\"mapped\",\"27\u65E5\"],[[13307,13307],\"mapped\",\"28\u65E5\"],[[13308,13308],\"mapped\",\"29\u65E5\"],[[13309,13309],\"mapped\",\"30\u65E5\"],[[13310,13310],\"mapped\",\"31\u65E5\"],[[13311,13311],\"mapped\",\"gal\"],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",\"\",\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40938],\"valid\"],[[40939,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",\"\",\"NV8\"],[[42146,42147],\"valid\",\"\",\"NV8\"],[[42148,42163],\"valid\",\"\",\"NV8\"],[[42164,42164],\"valid\",\"\",\"NV8\"],[[42165,42176],\"valid\",\"\",\"NV8\"],[[42177,42177],\"valid\",\"\",\"NV8\"],[[42178,42180],\"valid\",\"\",\"NV8\"],[[42181,42181],\"valid\",\"\",\"NV8\"],[[42182,42182],\"valid\",\"\",\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",\"\",\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",\"\",\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",\"\uA641\"],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",\"\uA643\"],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",\"\uA645\"],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",\"\uA647\"],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",\"\uA649\"],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",\"\uA64B\"],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",\"\uA64D\"],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",\"\uA64F\"],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",\"\uA651\"],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",\"\uA653\"],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",\"\uA655\"],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",\"\uA657\"],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",\"\uA659\"],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",\"\uA65B\"],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",\"\uA65D\"],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",\"\uA65F\"],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",\"\uA661\"],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",\"\uA663\"],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",\"\uA665\"],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",\"\uA667\"],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",\"\uA669\"],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",\"\uA66B\"],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",\"\uA66D\"],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",\"\",\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",\"\",\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",\"\uA681\"],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",\"\uA683\"],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",\"\uA685\"],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",\"\uA687\"],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",\"\uA689\"],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",\"\uA68B\"],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",\"\uA68D\"],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",\"\uA68F\"],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",\"\uA691\"],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",\"\uA693\"],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",\"\uA695\"],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",\"\uA697\"],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",\"\uA699\"],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",\"\uA69B\"],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",\"\u044A\"],[[42653,42653],\"mapped\",\"\u044C\"],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",\"\",\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",\"\",\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",\"\",\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",\"\",\"NV8\"],[[42786,42786],\"mapped\",\"\uA723\"],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",\"\uA725\"],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",\"\uA727\"],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",\"\uA729\"],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",\"\uA72B\"],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",\"\uA72D\"],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",\"\uA72F\"],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",\"\uA733\"],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",\"\uA735\"],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",\"\uA737\"],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",\"\uA739\"],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",\"\uA73B\"],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",\"\uA73D\"],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",\"\uA73F\"],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",\"\uA741\"],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",\"\uA743\"],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",\"\uA745\"],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",\"\uA747\"],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",\"\uA749\"],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",\"\uA74B\"],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",\"\uA74D\"],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",\"\uA74F\"],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",\"\uA751\"],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",\"\uA753\"],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",\"\uA755\"],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",\"\uA757\"],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",\"\uA759\"],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",\"\uA75B\"],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",\"\uA75D\"],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",\"\uA75F\"],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",\"\uA761\"],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",\"\uA763\"],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",\"\uA765\"],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",\"\uA767\"],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",\"\uA769\"],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",\"\uA76B\"],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",\"\uA76D\"],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",\"\uA76F\"],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",\"\uA76F\"],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",\"\uA77A\"],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",\"\uA77C\"],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",\"\u1D79\"],[[42878,42878],\"mapped\",\"\uA77F\"],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",\"\uA781\"],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",\"\uA783\"],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",\"\uA785\"],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",\"\uA787\"],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",\"\",\"NV8\"],[[42891,42891],\"mapped\",\"\uA78C\"],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",\"\u0265\"],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",\"\uA791\"],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",\"\uA793\"],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",\"\uA797\"],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",\"\uA799\"],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",\"\uA79B\"],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",\"\uA79D\"],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",\"\uA79F\"],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",\"\uA7A1\"],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",\"\uA7A3\"],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",\"\uA7A5\"],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",\"\uA7A7\"],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",\"\uA7A9\"],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",\"\u0266\"],[[42923,42923],\"mapped\",\"\u025C\"],[[42924,42924],\"mapped\",\"\u0261\"],[[42925,42925],\"mapped\",\"\u026C\"],[[42926,42926],\"mapped\",\"\u026A\"],[[42927,42927],\"disallowed\"],[[42928,42928],\"mapped\",\"\u029E\"],[[42929,42929],\"mapped\",\"\u0287\"],[[42930,42930],\"mapped\",\"\u029D\"],[[42931,42931],\"mapped\",\"\uAB53\"],[[42932,42932],\"mapped\",\"\uA7B5\"],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",\"\uA7B7\"],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",\"\u0127\"],[[43001,43001],\"mapped\",\"\u0153\"],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",\"\",\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",\"\",\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",\"\",\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43205],\"valid\"],[[43206,43213],\"disallowed\"],[[43214,43215],\"valid\",\"\",\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",\"\",\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",\"\",\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",\"\",\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",\"\",\"NV8\"],[[43360,43388],\"valid\",\"\",\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",\"\",\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",\"\",\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",\"\",\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",\"\",\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",\"\",\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",\"\",\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",\"\",\"NV8\"],[[43868,43868],\"mapped\",\"\uA727\"],[[43869,43869],\"mapped\",\"\uAB37\"],[[43870,43870],\"mapped\",\"\u026B\"],[[43871,43871],\"mapped\",\"\uAB52\"],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",\"\u13A0\"],[[43889,43889],\"mapped\",\"\u13A1\"],[[43890,43890],\"mapped\",\"\u13A2\"],[[43891,43891],\"mapped\",\"\u13A3\"],[[43892,43892],\"mapped\",\"\u13A4\"],[[43893,43893],\"mapped\",\"\u13A5\"],[[43894,43894],\"mapped\",\"\u13A6\"],[[43895,43895],\"mapped\",\"\u13A7\"],[[43896,43896],\"mapped\",\"\u13A8\"],[[43897,43897],\"mapped\",\"\u13A9\"],[[43898,43898],\"mapped\",\"\u13AA\"],[[43899,43899],\"mapped\",\"\u13AB\"],[[43900,43900],\"mapped\",\"\u13AC\"],[[43901,43901],\"mapped\",\"\u13AD\"],[[43902,43902],\"mapped\",\"\u13AE\"],[[43903,43903],\"mapped\",\"\u13AF\"],[[43904,43904],\"mapped\",\"\u13B0\"],[[43905,43905],\"mapped\",\"\u13B1\"],[[43906,43906],\"mapped\",\"\u13B2\"],[[43907,43907],\"mapped\",\"\u13B3\"],[[43908,43908],\"mapped\",\"\u13B4\"],[[43909,43909],\"mapped\",\"\u13B5\"],[[43910,43910],\"mapped\",\"\u13B6\"],[[43911,43911],\"mapped\",\"\u13B7\"],[[43912,43912],\"mapped\",\"\u13B8\"],[[43913,43913],\"mapped\",\"\u13B9\"],[[43914,43914],\"mapped\",\"\u13BA\"],[[43915,43915],\"mapped\",\"\u13BB\"],[[43916,43916],\"mapped\",\"\u13BC\"],[[43917,43917],\"mapped\",\"\u13BD\"],[[43918,43918],\"mapped\",\"\u13BE\"],[[43919,43919],\"mapped\",\"\u13BF\"],[[43920,43920],\"mapped\",\"\u13C0\"],[[43921,43921],\"mapped\",\"\u13C1\"],[[43922,43922],\"mapped\",\"\u13C2\"],[[43923,43923],\"mapped\",\"\u13C3\"],[[43924,43924],\"mapped\",\"\u13C4\"],[[43925,43925],\"mapped\",\"\u13C5\"],[[43926,43926],\"mapped\",\"\u13C6\"],[[43927,43927],\"mapped\",\"\u13C7\"],[[43928,43928],\"mapped\",\"\u13C8\"],[[43929,43929],\"mapped\",\"\u13C9\"],[[43930,43930],\"mapped\",\"\u13CA\"],[[43931,43931],\"mapped\",\"\u13CB\"],[[43932,43932],\"mapped\",\"\u13CC\"],[[43933,43933],\"mapped\",\"\u13CD\"],[[43934,43934],\"mapped\",\"\u13CE\"],[[43935,43935],\"mapped\",\"\u13CF\"],[[43936,43936],\"mapped\",\"\u13D0\"],[[43937,43937],\"mapped\",\"\u13D1\"],[[43938,43938],\"mapped\",\"\u13D2\"],[[43939,43939],\"mapped\",\"\u13D3\"],[[43940,43940],\"mapped\",\"\u13D4\"],[[43941,43941],\"mapped\",\"\u13D5\"],[[43942,43942],\"mapped\",\"\u13D6\"],[[43943,43943],\"mapped\",\"\u13D7\"],[[43944,43944],\"mapped\",\"\u13D8\"],[[43945,43945],\"mapped\",\"\u13D9\"],[[43946,43946],\"mapped\",\"\u13DA\"],[[43947,43947],\"mapped\",\"\u13DB\"],[[43948,43948],\"mapped\",\"\u13DC\"],[[43949,43949],\"mapped\",\"\u13DD\"],[[43950,43950],\"mapped\",\"\u13DE\"],[[43951,43951],\"mapped\",\"\u13DF\"],[[43952,43952],\"mapped\",\"\u13E0\"],[[43953,43953],\"mapped\",\"\u13E1\"],[[43954,43954],\"mapped\",\"\u13E2\"],[[43955,43955],\"mapped\",\"\u13E3\"],[[43956,43956],\"mapped\",\"\u13E4\"],[[43957,43957],\"mapped\",\"\u13E5\"],[[43958,43958],\"mapped\",\"\u13E6\"],[[43959,43959],\"mapped\",\"\u13E7\"],[[43960,43960],\"mapped\",\"\u13E8\"],[[43961,43961],\"mapped\",\"\u13E9\"],[[43962,43962],\"mapped\",\"\u13EA\"],[[43963,43963],\"mapped\",\"\u13EB\"],[[43964,43964],\"mapped\",\"\u13EC\"],[[43965,43965],\"mapped\",\"\u13ED\"],[[43966,43966],\"mapped\",\"\u13EE\"],[[43967,43967],\"mapped\",\"\u13EF\"],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",\"\",\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",\"\",\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",\"\",\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",\"\u8C48\"],[[63745,63745],\"mapped\",\"\u66F4\"],[[63746,63746],\"mapped\",\"\u8ECA\"],[[63747,63747],\"mapped\",\"\u8CC8\"],[[63748,63748],\"mapped\",\"\u6ED1\"],[[63749,63749],\"mapped\",\"\u4E32\"],[[63750,63750],\"mapped\",\"\u53E5\"],[[63751,63752],\"mapped\",\"\u9F9C\"],[[63753,63753],\"mapped\",\"\u5951\"],[[63754,63754],\"mapped\",\"\u91D1\"],[[63755,63755],\"mapped\",\"\u5587\"],[[63756,63756],\"mapped\",\"\u5948\"],[[63757,63757],\"mapped\",\"\u61F6\"],[[63758,63758],\"mapped\",\"\u7669\"],[[63759,63759],\"mapped\",\"\u7F85\"],[[63760,63760],\"mapped\",\"\u863F\"],[[63761,63761],\"mapped\",\"\u87BA\"],[[63762,63762],\"mapped\",\"\u88F8\"],[[63763,63763],\"mapped\",\"\u908F\"],[[63764,63764],\"mapped\",\"\u6A02\"],[[63765,63765],\"mapped\",\"\u6D1B\"],[[63766,63766],\"mapped\",\"\u70D9\"],[[63767,63767],\"mapped\",\"\u73DE\"],[[63768,63768],\"mapped\",\"\u843D\"],[[63769,63769],\"mapped\",\"\u916A\"],[[63770,63770],\"mapped\",\"\u99F1\"],[[63771,63771],\"mapped\",\"\u4E82\"],[[63772,63772],\"mapped\",\"\u5375\"],[[63773,63773],\"mapped\",\"\u6B04\"],[[63774,63774],\"mapped\",\"\u721B\"],[[63775,63775],\"mapped\",\"\u862D\"],[[63776,63776],\"mapped\",\"\u9E1E\"],[[63777,63777],\"mapped\",\"\u5D50\"],[[63778,63778],\"mapped\",\"\u6FEB\"],[[63779,63779],\"mapped\",\"\u85CD\"],[[63780,63780],\"mapped\",\"\u8964\"],[[63781,63781],\"mapped\",\"\u62C9\"],[[63782,63782],\"mapped\",\"\u81D8\"],[[63783,63783],\"mapped\",\"\u881F\"],[[63784,63784],\"mapped\",\"\u5ECA\"],[[63785,63785],\"mapped\",\"\u6717\"],[[63786,63786],\"mapped\",\"\u6D6A\"],[[63787,63787],\"mapped\",\"\u72FC\"],[[63788,63788],\"mapped\",\"\u90CE\"],[[63789,63789],\"mapped\",\"\u4F86\"],[[63790,63790],\"mapped\",\"\u51B7\"],[[63791,63791],\"mapped\",\"\u52DE\"],[[63792,63792],\"mapped\",\"\u64C4\"],[[63793,63793],\"mapped\",\"\u6AD3\"],[[63794,63794],\"mapped\",\"\u7210\"],[[63795,63795],\"mapped\",\"\u76E7\"],[[63796,63796],\"mapped\",\"\u8001\"],[[63797,63797],\"mapped\",\"\u8606\"],[[63798,63798],\"mapped\",\"\u865C\"],[[63799,63799],\"mapped\",\"\u8DEF\"],[[63800,63800],\"mapped\",\"\u9732\"],[[63801,63801],\"mapped\",\"\u9B6F\"],[[63802,63802],\"mapped\",\"\u9DFA\"],[[63803,63803],\"mapped\",\"\u788C\"],[[63804,63804],\"mapped\",\"\u797F\"],[[63805,63805],\"mapped\",\"\u7DA0\"],[[63806,63806],\"mapped\",\"\u83C9\"],[[63807,63807],\"mapped\",\"\u9304\"],[[63808,63808],\"mapped\",\"\u9E7F\"],[[63809,63809],\"mapped\",\"\u8AD6\"],[[63810,63810],\"mapped\",\"\u58DF\"],[[63811,63811],\"mapped\",\"\u5F04\"],[[63812,63812],\"mapped\",\"\u7C60\"],[[63813,63813],\"mapped\",\"\u807E\"],[[63814,63814],\"mapped\",\"\u7262\"],[[63815,63815],\"mapped\",\"\u78CA\"],[[63816,63816],\"mapped\",\"\u8CC2\"],[[63817,63817],\"mapped\",\"\u96F7\"],[[63818,63818],\"mapped\",\"\u58D8\"],[[63819,63819],\"mapped\",\"\u5C62\"],[[63820,63820],\"mapped\",\"\u6A13\"],[[63821,63821],\"mapped\",\"\u6DDA\"],[[63822,63822],\"mapped\",\"\u6F0F\"],[[63823,63823],\"mapped\",\"\u7D2F\"],[[63824,63824],\"mapped\",\"\u7E37\"],[[63825,63825],\"mapped\",\"\u964B\"],[[63826,63826],\"mapped\",\"\u52D2\"],[[63827,63827],\"mapped\",\"\u808B\"],[[63828,63828],\"mapped\",\"\u51DC\"],[[63829,63829],\"mapped\",\"\u51CC\"],[[63830,63830],\"mapped\",\"\u7A1C\"],[[63831,63831],\"mapped\",\"\u7DBE\"],[[63832,63832],\"mapped\",\"\u83F1\"],[[63833,63833],\"mapped\",\"\u9675\"],[[63834,63834],\"mapped\",\"\u8B80\"],[[63835,63835],\"mapped\",\"\u62CF\"],[[63836,63836],\"mapped\",\"\u6A02\"],[[63837,63837],\"mapped\",\"\u8AFE\"],[[63838,63838],\"mapped\",\"\u4E39\"],[[63839,63839],\"mapped\",\"\u5BE7\"],[[63840,63840],\"mapped\",\"\u6012\"],[[63841,63841],\"mapped\",\"\u7387\"],[[63842,63842],\"mapped\",\"\u7570\"],[[63843,63843],\"mapped\",\"\u5317\"],[[63844,63844],\"mapped\",\"\u78FB\"],[[63845,63845],\"mapped\",\"\u4FBF\"],[[63846,63846],\"mapped\",\"\u5FA9\"],[[63847,63847],\"mapped\",\"\u4E0D\"],[[63848,63848],\"mapped\",\"\u6CCC\"],[[63849,63849],\"mapped\",\"\u6578\"],[[63850,63850],\"mapped\",\"\u7D22\"],[[63851,63851],\"mapped\",\"\u53C3\"],[[63852,63852],\"mapped\",\"\u585E\"],[[63853,63853],\"mapped\",\"\u7701\"],[[63854,63854],\"mapped\",\"\u8449\"],[[63855,63855],\"mapped\",\"\u8AAA\"],[[63856,63856],\"mapped\",\"\u6BBA\"],[[63857,63857],\"mapped\",\"\u8FB0\"],[[63858,63858],\"mapped\",\"\u6C88\"],[[63859,63859],\"mapped\",\"\u62FE\"],[[63860,63860],\"mapped\",\"\u82E5\"],[[63861,63861],\"mapped\",\"\u63A0\"],[[63862,63862],\"mapped\",\"\u7565\"],[[63863,63863],\"mapped\",\"\u4EAE\"],[[63864,63864],\"mapped\",\"\u5169\"],[[63865,63865],\"mapped\",\"\u51C9\"],[[63866,63866],\"mapped\",\"\u6881\"],[[63867,63867],\"mapped\",\"\u7CE7\"],[[63868,63868],\"mapped\",\"\u826F\"],[[63869,63869],\"mapped\",\"\u8AD2\"],[[63870,63870],\"mapped\",\"\u91CF\"],[[63871,63871],\"mapped\",\"\u52F5\"],[[63872,63872],\"mapped\",\"\u5442\"],[[63873,63873],\"mapped\",\"\u5973\"],[[63874,63874],\"mapped\",\"\u5EEC\"],[[63875,63875],\"mapped\",\"\u65C5\"],[[63876,63876],\"mapped\",\"\u6FFE\"],[[63877,63877],\"mapped\",\"\u792A\"],[[63878,63878],\"mapped\",\"\u95AD\"],[[63879,63879],\"mapped\",\"\u9A6A\"],[[63880,63880],\"mapped\",\"\u9E97\"],[[63881,63881],\"mapped\",\"\u9ECE\"],[[63882,63882],\"mapped\",\"\u529B\"],[[63883,63883],\"mapped\",\"\u66C6\"],[[63884,63884],\"mapped\",\"\u6B77\"],[[63885,63885],\"mapped\",\"\u8F62\"],[[63886,63886],\"mapped\",\"\u5E74\"],[[63887,63887],\"mapped\",\"\u6190\"],[[63888,63888],\"mapped\",\"\u6200\"],[[63889,63889],\"mapped\",\"\u649A\"],[[63890,63890],\"mapped\",\"\u6F23\"],[[63891,63891],\"mapped\",\"\u7149\"],[[63892,63892],\"mapped\",\"\u7489\"],[[63893,63893],\"mapped\",\"\u79CA\"],[[63894,63894],\"mapped\",\"\u7DF4\"],[[63895,63895],\"mapped\",\"\u806F\"],[[63896,63896],\"mapped\",\"\u8F26\"],[[63897,63897],\"mapped\",\"\u84EE\"],[[63898,63898],\"mapped\",\"\u9023\"],[[63899,63899],\"mapped\",\"\u934A\"],[[63900,63900],\"mapped\",\"\u5217\"],[[63901,63901],\"mapped\",\"\u52A3\"],[[63902,63902],\"mapped\",\"\u54BD\"],[[63903,63903],\"mapped\",\"\u70C8\"],[[63904,63904],\"mapped\",\"\u88C2\"],[[63905,63905],\"mapped\",\"\u8AAA\"],[[63906,63906],\"mapped\",\"\u5EC9\"],[[63907,63907],\"mapped\",\"\u5FF5\"],[[63908,63908],\"mapped\",\"\u637B\"],[[63909,63909],\"mapped\",\"\u6BAE\"],[[63910,63910],\"mapped\",\"\u7C3E\"],[[63911,63911],\"mapped\",\"\u7375\"],[[63912,63912],\"mapped\",\"\u4EE4\"],[[63913,63913],\"mapped\",\"\u56F9\"],[[63914,63914],\"mapped\",\"\u5BE7\"],[[63915,63915],\"mapped\",\"\u5DBA\"],[[63916,63916],\"mapped\",\"\u601C\"],[[63917,63917],\"mapped\",\"\u73B2\"],[[63918,63918],\"mapped\",\"\u7469\"],[[63919,63919],\"mapped\",\"\u7F9A\"],[[63920,63920],\"mapped\",\"\u8046\"],[[63921,63921],\"mapped\",\"\u9234\"],[[63922,63922],\"mapped\",\"\u96F6\"],[[63923,63923],\"mapped\",\"\u9748\"],[[63924,63924],\"mapped\",\"\u9818\"],[[63925,63925],\"mapped\",\"\u4F8B\"],[[63926,63926],\"mapped\",\"\u79AE\"],[[63927,63927],\"mapped\",\"\u91B4\"],[[63928,63928],\"mapped\",\"\u96B8\"],[[63929,63929],\"mapped\",\"\u60E1\"],[[63930,63930],\"mapped\",\"\u4E86\"],[[63931,63931],\"mapped\",\"\u50DA\"],[[63932,63932],\"mapped\",\"\u5BEE\"],[[63933,63933],\"mapped\",\"\u5C3F\"],[[63934,63934],\"mapped\",\"\u6599\"],[[63935,63935],\"mapped\",\"\u6A02\"],[[63936,63936],\"mapped\",\"\u71CE\"],[[63937,63937],\"mapped\",\"\u7642\"],[[63938,63938],\"mapped\",\"\u84FC\"],[[63939,63939],\"mapped\",\"\u907C\"],[[63940,63940],\"mapped\",\"\u9F8D\"],[[63941,63941],\"mapped\",\"\u6688\"],[[63942,63942],\"mapped\",\"\u962E\"],[[63943,63943],\"mapped\",\"\u5289\"],[[63944,63944],\"mapped\",\"\u677B\"],[[63945,63945],\"mapped\",\"\u67F3\"],[[63946,63946],\"mapped\",\"\u6D41\"],[[63947,63947],\"mapped\",\"\u6E9C\"],[[63948,63948],\"mapped\",\"\u7409\"],[[63949,63949],\"mapped\",\"\u7559\"],[[63950,63950],\"mapped\",\"\u786B\"],[[63951,63951],\"mapped\",\"\u7D10\"],[[63952,63952],\"mapped\",\"\u985E\"],[[63953,63953],\"mapped\",\"\u516D\"],[[63954,63954],\"mapped\",\"\u622E\"],[[63955,63955],\"mapped\",\"\u9678\"],[[63956,63956],\"mapped\",\"\u502B\"],[[63957,63957],\"mapped\",\"\u5D19\"],[[63958,63958],\"mapped\",\"\u6DEA\"],[[63959,63959],\"mapped\",\"\u8F2A\"],[[63960,63960],\"mapped\",\"\u5F8B\"],[[63961,63961],\"mapped\",\"\u6144\"],[[63962,63962],\"mapped\",\"\u6817\"],[[63963,63963],\"mapped\",\"\u7387\"],[[63964,63964],\"mapped\",\"\u9686\"],[[63965,63965],\"mapped\",\"\u5229\"],[[63966,63966],\"mapped\",\"\u540F\"],[[63967,63967],\"mapped\",\"\u5C65\"],[[63968,63968],\"mapped\",\"\u6613\"],[[63969,63969],\"mapped\",\"\u674E\"],[[63970,63970],\"mapped\",\"\u68A8\"],[[63971,63971],\"mapped\",\"\u6CE5\"],[[63972,63972],\"mapped\",\"\u7406\"],[[63973,63973],\"mapped\",\"\u75E2\"],[[63974,63974],\"mapped\",\"\u7F79\"],[[63975,63975],\"mapped\",\"\u88CF\"],[[63976,63976],\"mapped\",\"\u88E1\"],[[63977,63977],\"mapped\",\"\u91CC\"],[[63978,63978],\"mapped\",\"\u96E2\"],[[63979,63979],\"mapped\",\"\u533F\"],[[63980,63980],\"mapped\",\"\u6EBA\"],[[63981,63981],\"mapped\",\"\u541D\"],[[63982,63982],\"mapped\",\"\u71D0\"],[[63983,63983],\"mapped\",\"\u7498\"],[[63984,63984],\"mapped\",\"\u85FA\"],[[63985,63985],\"mapped\",\"\u96A3\"],[[63986,63986],\"mapped\",\"\u9C57\"],[[63987,63987],\"mapped\",\"\u9E9F\"],[[63988,63988],\"mapped\",\"\u6797\"],[[63989,63989],\"mapped\",\"\u6DCB\"],[[63990,63990],\"mapped\",\"\u81E8\"],[[63991,63991],\"mapped\",\"\u7ACB\"],[[63992,63992],\"mapped\",\"\u7B20\"],[[63993,63993],\"mapped\",\"\u7C92\"],[[63994,63994],\"mapped\",\"\u72C0\"],[[63995,63995],\"mapped\",\"\u7099\"],[[63996,63996],\"mapped\",\"\u8B58\"],[[63997,63997],\"mapped\",\"\u4EC0\"],[[63998,63998],\"mapped\",\"\u8336\"],[[63999,63999],\"mapped\",\"\u523A\"],[[64000,64000],\"mapped\",\"\u5207\"],[[64001,64001],\"mapped\",\"\u5EA6\"],[[64002,64002],\"mapped\",\"\u62D3\"],[[64003,64003],\"mapped\",\"\u7CD6\"],[[64004,64004],\"mapped\",\"\u5B85\"],[[64005,64005],\"mapped\",\"\u6D1E\"],[[64006,64006],\"mapped\",\"\u66B4\"],[[64007,64007],\"mapped\",\"\u8F3B\"],[[64008,64008],\"mapped\",\"\u884C\"],[[64009,64009],\"mapped\",\"\u964D\"],[[64010,64010],\"mapped\",\"\u898B\"],[[64011,64011],\"mapped\",\"\u5ED3\"],[[64012,64012],\"mapped\",\"\u5140\"],[[64013,64013],\"mapped\",\"\u55C0\"],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",\"\u585A\"],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",\"\u6674\"],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",\"\u51DE\"],[[64022,64022],\"mapped\",\"\u732A\"],[[64023,64023],\"mapped\",\"\u76CA\"],[[64024,64024],\"mapped\",\"\u793C\"],[[64025,64025],\"mapped\",\"\u795E\"],[[64026,64026],\"mapped\",\"\u7965\"],[[64027,64027],\"mapped\",\"\u798F\"],[[64028,64028],\"mapped\",\"\u9756\"],[[64029,64029],\"mapped\",\"\u7CBE\"],[[64030,64030],\"mapped\",\"\u7FBD\"],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",\"\u8612\"],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",\"\u8AF8\"],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",\"\u9038\"],[[64038,64038],\"mapped\",\"\u90FD\"],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",\"\u98EF\"],[[64043,64043],\"mapped\",\"\u98FC\"],[[64044,64044],\"mapped\",\"\u9928\"],[[64045,64045],\"mapped\",\"\u9DB4\"],[[64046,64046],\"mapped\",\"\u90DE\"],[[64047,64047],\"mapped\",\"\u96B7\"],[[64048,64048],\"mapped\",\"\u4FAE\"],[[64049,64049],\"mapped\",\"\u50E7\"],[[64050,64050],\"mapped\",\"\u514D\"],[[64051,64051],\"mapped\",\"\u52C9\"],[[64052,64052],\"mapped\",\"\u52E4\"],[[64053,64053],\"mapped\",\"\u5351\"],[[64054,64054],\"mapped\",\"\u559D\"],[[64055,64055],\"mapped\",\"\u5606\"],[[64056,64056],\"mapped\",\"\u5668\"],[[64057,64057],\"mapped\",\"\u5840\"],[[64058,64058],\"mapped\",\"\u58A8\"],[[64059,64059],\"mapped\",\"\u5C64\"],[[64060,64060],\"mapped\",\"\u5C6E\"],[[64061,64061],\"mapped\",\"\u6094\"],[[64062,64062],\"mapped\",\"\u6168\"],[[64063,64063],\"mapped\",\"\u618E\"],[[64064,64064],\"mapped\",\"\u61F2\"],[[64065,64065],\"mapped\",\"\u654F\"],[[64066,64066],\"mapped\",\"\u65E2\"],[[64067,64067],\"mapped\",\"\u6691\"],[[64068,64068],\"mapped\",\"\u6885\"],[[64069,64069],\"mapped\",\"\u6D77\"],[[64070,64070],\"mapped\",\"\u6E1A\"],[[64071,64071],\"mapped\",\"\u6F22\"],[[64072,64072],\"mapped\",\"\u716E\"],[[64073,64073],\"mapped\",\"\u722B\"],[[64074,64074],\"mapped\",\"\u7422\"],[[64075,64075],\"mapped\",\"\u7891\"],[[64076,64076],\"mapped\",\"\u793E\"],[[64077,64077],\"mapped\",\"\u7949\"],[[64078,64078],\"mapped\",\"\u7948\"],[[64079,64079],\"mapped\",\"\u7950\"],[[64080,64080],\"mapped\",\"\u7956\"],[[64081,64081],\"mapped\",\"\u795D\"],[[64082,64082],\"mapped\",\"\u798D\"],[[64083,64083],\"mapped\",\"\u798E\"],[[64084,64084],\"mapped\",\"\u7A40\"],[[64085,64085],\"mapped\",\"\u7A81\"],[[64086,64086],\"mapped\",\"\u7BC0\"],[[64087,64087],\"mapped\",\"\u7DF4\"],[[64088,64088],\"mapped\",\"\u7E09\"],[[64089,64089],\"mapped\",\"\u7E41\"],[[64090,64090],\"mapped\",\"\u7F72\"],[[64091,64091],\"mapped\",\"\u8005\"],[[64092,64092],\"mapped\",\"\u81ED\"],[[64093,64094],\"mapped\",\"\u8279\"],[[64095,64095],\"mapped\",\"\u8457\"],[[64096,64096],\"mapped\",\"\u8910\"],[[64097,64097],\"mapped\",\"\u8996\"],[[64098,64098],\"mapped\",\"\u8B01\"],[[64099,64099],\"mapped\",\"\u8B39\"],[[64100,64100],\"mapped\",\"\u8CD3\"],[[64101,64101],\"mapped\",\"\u8D08\"],[[64102,64102],\"mapped\",\"\u8FB6\"],[[64103,64103],\"mapped\",\"\u9038\"],[[64104,64104],\"mapped\",\"\u96E3\"],[[64105,64105],\"mapped\",\"\u97FF\"],[[64106,64106],\"mapped\",\"\u983B\"],[[64107,64107],\"mapped\",\"\u6075\"],[[64108,64108],\"mapped\",\"\uD850\uDEEE\"],[[64109,64109],\"mapped\",\"\u8218\"],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",\"\u4E26\"],[[64113,64113],\"mapped\",\"\u51B5\"],[[64114,64114],\"mapped\",\"\u5168\"],[[64115,64115],\"mapped\",\"\u4F80\"],[[64116,64116],\"mapped\",\"\u5145\"],[[64117,64117],\"mapped\",\"\u5180\"],[[64118,64118],\"mapped\",\"\u52C7\"],[[64119,64119],\"mapped\",\"\u52FA\"],[[64120,64120],\"mapped\",\"\u559D\"],[[64121,64121],\"mapped\",\"\u5555\"],[[64122,64122],\"mapped\",\"\u5599\"],[[64123,64123],\"mapped\",\"\u55E2\"],[[64124,64124],\"mapped\",\"\u585A\"],[[64125,64125],\"mapped\",\"\u58B3\"],[[64126,64126],\"mapped\",\"\u5944\"],[[64127,64127],\"mapped\",\"\u5954\"],[[64128,64128],\"mapped\",\"\u5A62\"],[[64129,64129],\"mapped\",\"\u5B28\"],[[64130,64130],\"mapped\",\"\u5ED2\"],[[64131,64131],\"mapped\",\"\u5ED9\"],[[64132,64132],\"mapped\",\"\u5F69\"],[[64133,64133],\"mapped\",\"\u5FAD\"],[[64134,64134],\"mapped\",\"\u60D8\"],[[64135,64135],\"mapped\",\"\u614E\"],[[64136,64136],\"mapped\",\"\u6108\"],[[64137,64137],\"mapped\",\"\u618E\"],[[64138,64138],\"mapped\",\"\u6160\"],[[64139,64139],\"mapped\",\"\u61F2\"],[[64140,64140],\"mapped\",\"\u6234\"],[[64141,64141],\"mapped\",\"\u63C4\"],[[64142,64142],\"mapped\",\"\u641C\"],[[64143,64143],\"mapped\",\"\u6452\"],[[64144,64144],\"mapped\",\"\u6556\"],[[64145,64145],\"mapped\",\"\u6674\"],[[64146,64146],\"mapped\",\"\u6717\"],[[64147,64147],\"mapped\",\"\u671B\"],[[64148,64148],\"mapped\",\"\u6756\"],[[64149,64149],\"mapped\",\"\u6B79\"],[[64150,64150],\"mapped\",\"\u6BBA\"],[[64151,64151],\"mapped\",\"\u6D41\"],[[64152,64152],\"mapped\",\"\u6EDB\"],[[64153,64153],\"mapped\",\"\u6ECB\"],[[64154,64154],\"mapped\",\"\u6F22\"],[[64155,64155],\"mapped\",\"\u701E\"],[[64156,64156],\"mapped\",\"\u716E\"],[[64157,64157],\"mapped\",\"\u77A7\"],[[64158,64158],\"mapped\",\"\u7235\"],[[64159,64159],\"mapped\",\"\u72AF\"],[[64160,64160],\"mapped\",\"\u732A\"],[[64161,64161],\"mapped\",\"\u7471\"],[[64162,64162],\"mapped\",\"\u7506\"],[[64163,64163],\"mapped\",\"\u753B\"],[[64164,64164],\"mapped\",\"\u761D\"],[[64165,64165],\"mapped\",\"\u761F\"],[[64166,64166],\"mapped\",\"\u76CA\"],[[64167,64167],\"mapped\",\"\u76DB\"],[[64168,64168],\"mapped\",\"\u76F4\"],[[64169,64169],\"mapped\",\"\u774A\"],[[64170,64170],\"mapped\",\"\u7740\"],[[64171,64171],\"mapped\",\"\u78CC\"],[[64172,64172],\"mapped\",\"\u7AB1\"],[[64173,64173],\"mapped\",\"\u7BC0\"],[[64174,64174],\"mapped\",\"\u7C7B\"],[[64175,64175],\"mapped\",\"\u7D5B\"],[[64176,64176],\"mapped\",\"\u7DF4\"],[[64177,64177],\"mapped\",\"\u7F3E\"],[[64178,64178],\"mapped\",\"\u8005\"],[[64179,64179],\"mapped\",\"\u8352\"],[[64180,64180],\"mapped\",\"\u83EF\"],[[64181,64181],\"mapped\",\"\u8779\"],[[64182,64182],\"mapped\",\"\u8941\"],[[64183,64183],\"mapped\",\"\u8986\"],[[64184,64184],\"mapped\",\"\u8996\"],[[64185,64185],\"mapped\",\"\u8ABF\"],[[64186,64186],\"mapped\",\"\u8AF8\"],[[64187,64187],\"mapped\",\"\u8ACB\"],[[64188,64188],\"mapped\",\"\u8B01\"],[[64189,64189],\"mapped\",\"\u8AFE\"],[[64190,64190],\"mapped\",\"\u8AED\"],[[64191,64191],\"mapped\",\"\u8B39\"],[[64192,64192],\"mapped\",\"\u8B8A\"],[[64193,64193],\"mapped\",\"\u8D08\"],[[64194,64194],\"mapped\",\"\u8F38\"],[[64195,64195],\"mapped\",\"\u9072\"],[[64196,64196],\"mapped\",\"\u9199\"],[[64197,64197],\"mapped\",\"\u9276\"],[[64198,64198],\"mapped\",\"\u967C\"],[[64199,64199],\"mapped\",\"\u96E3\"],[[64200,64200],\"mapped\",\"\u9756\"],[[64201,64201],\"mapped\",\"\u97DB\"],[[64202,64202],\"mapped\",\"\u97FF\"],[[64203,64203],\"mapped\",\"\u980B\"],[[64204,64204],\"mapped\",\"\u983B\"],[[64205,64205],\"mapped\",\"\u9B12\"],[[64206,64206],\"mapped\",\"\u9F9C\"],[[64207,64207],\"mapped\",\"\uD84A\uDC4A\"],[[64208,64208],\"mapped\",\"\uD84A\uDC44\"],[[64209,64209],\"mapped\",\"\uD84C\uDFD5\"],[[64210,64210],\"mapped\",\"\u3B9D\"],[[64211,64211],\"mapped\",\"\u4018\"],[[64212,64212],\"mapped\",\"\u4039\"],[[64213,64213],\"mapped\",\"\uD854\uDE49\"],[[64214,64214],\"mapped\",\"\uD857\uDCD0\"],[[64215,64215],\"mapped\",\"\uD85F\uDED3\"],[[64216,64216],\"mapped\",\"\u9F43\"],[[64217,64217],\"mapped\",\"\u9F8E\"],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",\"ff\"],[[64257,64257],\"mapped\",\"fi\"],[[64258,64258],\"mapped\",\"fl\"],[[64259,64259],\"mapped\",\"ffi\"],[[64260,64260],\"mapped\",\"ffl\"],[[64261,64262],\"mapped\",\"st\"],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",\"\u0574\u0576\"],[[64276,64276],\"mapped\",\"\u0574\u0565\"],[[64277,64277],\"mapped\",\"\u0574\u056B\"],[[64278,64278],\"mapped\",\"\u057E\u0576\"],[[64279,64279],\"mapped\",\"\u0574\u056D\"],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",\"\u05D9\u05B4\"],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",\"\u05F2\u05B7\"],[[64288,64288],\"mapped\",\"\u05E2\"],[[64289,64289],\"mapped\",\"\u05D0\"],[[64290,64290],\"mapped\",\"\u05D3\"],[[64291,64291],\"mapped\",\"\u05D4\"],[[64292,64292],\"mapped\",\"\u05DB\"],[[64293,64293],\"mapped\",\"\u05DC\"],[[64294,64294],\"mapped\",\"\u05DD\"],[[64295,64295],\"mapped\",\"\u05E8\"],[[64296,64296],\"mapped\",\"\u05EA\"],[[64297,64297],\"disallowed_STD3_mapped\",\"+\"],[[64298,64298],\"mapped\",\"\u05E9\u05C1\"],[[64299,64299],\"mapped\",\"\u05E9\u05C2\"],[[64300,64300],\"mapped\",\"\u05E9\u05BC\u05C1\"],[[64301,64301],\"mapped\",\"\u05E9\u05BC\u05C2\"],[[64302,64302],\"mapped\",\"\u05D0\u05B7\"],[[64303,64303],\"mapped\",\"\u05D0\u05B8\"],[[64304,64304],\"mapped\",\"\u05D0\u05BC\"],[[64305,64305],\"mapped\",\"\u05D1\u05BC\"],[[64306,64306],\"mapped\",\"\u05D2\u05BC\"],[[64307,64307],\"mapped\",\"\u05D3\u05BC\"],[[64308,64308],\"mapped\",\"\u05D4\u05BC\"],[[64309,64309],\"mapped\",\"\u05D5\u05BC\"],[[64310,64310],\"mapped\",\"\u05D6\u05BC\"],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",\"\u05D8\u05BC\"],[[64313,64313],\"mapped\",\"\u05D9\u05BC\"],[[64314,64314],\"mapped\",\"\u05DA\u05BC\"],[[64315,64315],\"mapped\",\"\u05DB\u05BC\"],[[64316,64316],\"mapped\",\"\u05DC\u05BC\"],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",\"\u05DE\u05BC\"],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",\"\u05E0\u05BC\"],[[64321,64321],\"mapped\",\"\u05E1\u05BC\"],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",\"\u05E3\u05BC\"],[[64324,64324],\"mapped\",\"\u05E4\u05BC\"],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",\"\u05E6\u05BC\"],[[64327,64327],\"mapped\",\"\u05E7\u05BC\"],[[64328,64328],\"mapped\",\"\u05E8\u05BC\"],[[64329,64329],\"mapped\",\"\u05E9\u05BC\"],[[64330,64330],\"mapped\",\"\u05EA\u05BC\"],[[64331,64331],\"mapped\",\"\u05D5\u05B9\"],[[64332,64332],\"mapped\",\"\u05D1\u05BF\"],[[64333,64333],\"mapped\",\"\u05DB\u05BF\"],[[64334,64334],\"mapped\",\"\u05E4\u05BF\"],[[64335,64335],\"mapped\",\"\u05D0\u05DC\"],[[64336,64337],\"mapped\",\"\u0671\"],[[64338,64341],\"mapped\",\"\u067B\"],[[64342,64345],\"mapped\",\"\u067E\"],[[64346,64349],\"mapped\",\"\u0680\"],[[64350,64353],\"mapped\",\"\u067A\"],[[64354,64357],\"mapped\",\"\u067F\"],[[64358,64361],\"mapped\",\"\u0679\"],[[64362,64365],\"mapped\",\"\u06A4\"],[[64366,64369],\"mapped\",\"\u06A6\"],[[64370,64373],\"mapped\",\"\u0684\"],[[64374,64377],\"mapped\",\"\u0683\"],[[64378,64381],\"mapped\",\"\u0686\"],[[64382,64385],\"mapped\",\"\u0687\"],[[64386,64387],\"mapped\",\"\u068D\"],[[64388,64389],\"mapped\",\"\u068C\"],[[64390,64391],\"mapped\",\"\u068E\"],[[64392,64393],\"mapped\",\"\u0688\"],[[64394,64395],\"mapped\",\"\u0698\"],[[64396,64397],\"mapped\",\"\u0691\"],[[64398,64401],\"mapped\",\"\u06A9\"],[[64402,64405],\"mapped\",\"\u06AF\"],[[64406,64409],\"mapped\",\"\u06B3\"],[[64410,64413],\"mapped\",\"\u06B1\"],[[64414,64415],\"mapped\",\"\u06BA\"],[[64416,64419],\"mapped\",\"\u06BB\"],[[64420,64421],\"mapped\",\"\u06C0\"],[[64422,64425],\"mapped\",\"\u06C1\"],[[64426,64429],\"mapped\",\"\u06BE\"],[[64430,64431],\"mapped\",\"\u06D2\"],[[64432,64433],\"mapped\",\"\u06D3\"],[[64434,64449],\"valid\",\"\",\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",\"\u06AD\"],[[64471,64472],\"mapped\",\"\u06C7\"],[[64473,64474],\"mapped\",\"\u06C6\"],[[64475,64476],\"mapped\",\"\u06C8\"],[[64477,64477],\"mapped\",\"\u06C7\u0674\"],[[64478,64479],\"mapped\",\"\u06CB\"],[[64480,64481],\"mapped\",\"\u06C5\"],[[64482,64483],\"mapped\",\"\u06C9\"],[[64484,64487],\"mapped\",\"\u06D0\"],[[64488,64489],\"mapped\",\"\u0649\"],[[64490,64491],\"mapped\",\"\u0626\u0627\"],[[64492,64493],\"mapped\",\"\u0626\u06D5\"],[[64494,64495],\"mapped\",\"\u0626\u0648\"],[[64496,64497],\"mapped\",\"\u0626\u06C7\"],[[64498,64499],\"mapped\",\"\u0626\u06C6\"],[[64500,64501],\"mapped\",\"\u0626\u06C8\"],[[64502,64504],\"mapped\",\"\u0626\u06D0\"],[[64505,64507],\"mapped\",\"\u0626\u0649\"],[[64508,64511],\"mapped\",\"\u06CC\"],[[64512,64512],\"mapped\",\"\u0626\u062C\"],[[64513,64513],\"mapped\",\"\u0626\u062D\"],[[64514,64514],\"mapped\",\"\u0626\u0645\"],[[64515,64515],\"mapped\",\"\u0626\u0649\"],[[64516,64516],\"mapped\",\"\u0626\u064A\"],[[64517,64517],\"mapped\",\"\u0628\u062C\"],[[64518,64518],\"mapped\",\"\u0628\u062D\"],[[64519,64519],\"mapped\",\"\u0628\u062E\"],[[64520,64520],\"mapped\",\"\u0628\u0645\"],[[64521,64521],\"mapped\",\"\u0628\u0649\"],[[64522,64522],\"mapped\",\"\u0628\u064A\"],[[64523,64523],\"mapped\",\"\u062A\u062C\"],[[64524,64524],\"mapped\",\"\u062A\u062D\"],[[64525,64525],\"mapped\",\"\u062A\u062E\"],[[64526,64526],\"mapped\",\"\u062A\u0645\"],[[64527,64527],\"mapped\",\"\u062A\u0649\"],[[64528,64528],\"mapped\",\"\u062A\u064A\"],[[64529,64529],\"mapped\",\"\u062B\u062C\"],[[64530,64530],\"mapped\",\"\u062B\u0645\"],[[64531,64531],\"mapped\",\"\u062B\u0649\"],[[64532,64532],\"mapped\",\"\u062B\u064A\"],[[64533,64533],\"mapped\",\"\u062C\u062D\"],[[64534,64534],\"mapped\",\"\u062C\u0645\"],[[64535,64535],\"mapped\",\"\u062D\u062C\"],[[64536,64536],\"mapped\",\"\u062D\u0645\"],[[64537,64537],\"mapped\",\"\u062E\u062C\"],[[64538,64538],\"mapped\",\"\u062E\u062D\"],[[64539,64539],\"mapped\",\"\u062E\u0645\"],[[64540,64540],\"mapped\",\"\u0633\u062C\"],[[64541,64541],\"mapped\",\"\u0633\u062D\"],[[64542,64542],\"mapped\",\"\u0633\u062E\"],[[64543,64543],\"mapped\",\"\u0633\u0645\"],[[64544,64544],\"mapped\",\"\u0635\u062D\"],[[64545,64545],\"mapped\",\"\u0635\u0645\"],[[64546,64546],\"mapped\",\"\u0636\u062C\"],[[64547,64547],\"mapped\",\"\u0636\u062D\"],[[64548,64548],\"mapped\",\"\u0636\u062E\"],[[64549,64549],\"mapped\",\"\u0636\u0645\"],[[64550,64550],\"mapped\",\"\u0637\u062D\"],[[64551,64551],\"mapped\",\"\u0637\u0645\"],[[64552,64552],\"mapped\",\"\u0638\u0645\"],[[64553,64553],\"mapped\",\"\u0639\u062C\"],[[64554,64554],\"mapped\",\"\u0639\u0645\"],[[64555,64555],\"mapped\",\"\u063A\u062C\"],[[64556,64556],\"mapped\",\"\u063A\u0645\"],[[64557,64557],\"mapped\",\"\u0641\u062C\"],[[64558,64558],\"mapped\",\"\u0641\u062D\"],[[64559,64559],\"mapped\",\"\u0641\u062E\"],[[64560,64560],\"mapped\",\"\u0641\u0645\"],[[64561,64561],\"mapped\",\"\u0641\u0649\"],[[64562,64562],\"mapped\",\"\u0641\u064A\"],[[64563,64563],\"mapped\",\"\u0642\u062D\"],[[64564,64564],\"mapped\",\"\u0642\u0645\"],[[64565,64565],\"mapped\",\"\u0642\u0649\"],[[64566,64566],\"mapped\",\"\u0642\u064A\"],[[64567,64567],\"mapped\",\"\u0643\u0627\"],[[64568,64568],\"mapped\",\"\u0643\u062C\"],[[64569,64569],\"mapped\",\"\u0643\u062D\"],[[64570,64570],\"mapped\",\"\u0643\u062E\"],[[64571,64571],\"mapped\",\"\u0643\u0644\"],[[64572,64572],\"mapped\",\"\u0643\u0645\"],[[64573,64573],\"mapped\",\"\u0643\u0649\"],[[64574,64574],\"mapped\",\"\u0643\u064A\"],[[64575,64575],\"mapped\",\"\u0644\u062C\"],[[64576,64576],\"mapped\",\"\u0644\u062D\"],[[64577,64577],\"mapped\",\"\u0644\u062E\"],[[64578,64578],\"mapped\",\"\u0644\u0645\"],[[64579,64579],\"mapped\",\"\u0644\u0649\"],[[64580,64580],\"mapped\",\"\u0644\u064A\"],[[64581,64581],\"mapped\",\"\u0645\u062C\"],[[64582,64582],\"mapped\",\"\u0645\u062D\"],[[64583,64583],\"mapped\",\"\u0645\u062E\"],[[64584,64584],\"mapped\",\"\u0645\u0645\"],[[64585,64585],\"mapped\",\"\u0645\u0649\"],[[64586,64586],\"mapped\",\"\u0645\u064A\"],[[64587,64587],\"mapped\",\"\u0646\u062C\"],[[64588,64588],\"mapped\",\"\u0646\u062D\"],[[64589,64589],\"mapped\",\"\u0646\u062E\"],[[64590,64590],\"mapped\",\"\u0646\u0645\"],[[64591,64591],\"mapped\",\"\u0646\u0649\"],[[64592,64592],\"mapped\",\"\u0646\u064A\"],[[64593,64593],\"mapped\",\"\u0647\u062C\"],[[64594,64594],\"mapped\",\"\u0647\u0645\"],[[64595,64595],\"mapped\",\"\u0647\u0649\"],[[64596,64596],\"mapped\",\"\u0647\u064A\"],[[64597,64597],\"mapped\",\"\u064A\u062C\"],[[64598,64598],\"mapped\",\"\u064A\u062D\"],[[64599,64599],\"mapped\",\"\u064A\u062E\"],[[64600,64600],\"mapped\",\"\u064A\u0645\"],[[64601,64601],\"mapped\",\"\u064A\u0649\"],[[64602,64602],\"mapped\",\"\u064A\u064A\"],[[64603,64603],\"mapped\",\"\u0630\u0670\"],[[64604,64604],\"mapped\",\"\u0631\u0670\"],[[64605,64605],\"mapped\",\"\u0649\u0670\"],[[64606,64606],\"disallowed_STD3_mapped\",\" \u064C\u0651\"],[[64607,64607],\"disallowed_STD3_mapped\",\" \u064D\u0651\"],[[64608,64608],\"disallowed_STD3_mapped\",\" \u064E\u0651\"],[[64609,64609],\"disallowed_STD3_mapped\",\" \u064F\u0651\"],[[64610,64610],\"disallowed_STD3_mapped\",\" \u0650\u0651\"],[[64611,64611],\"disallowed_STD3_mapped\",\" \u0651\u0670\"],[[64612,64612],\"mapped\",\"\u0626\u0631\"],[[64613,64613],\"mapped\",\"\u0626\u0632\"],[[64614,64614],\"mapped\",\"\u0626\u0645\"],[[64615,64615],\"mapped\",\"\u0626\u0646\"],[[64616,64616],\"mapped\",\"\u0626\u0649\"],[[64617,64617],\"mapped\",\"\u0626\u064A\"],[[64618,64618],\"mapped\",\"\u0628\u0631\"],[[64619,64619],\"mapped\",\"\u0628\u0632\"],[[64620,64620],\"mapped\",\"\u0628\u0645\"],[[64621,64621],\"mapped\",\"\u0628\u0646\"],[[64622,64622],\"mapped\",\"\u0628\u0649\"],[[64623,64623],\"mapped\",\"\u0628\u064A\"],[[64624,64624],\"mapped\",\"\u062A\u0631\"],[[64625,64625],\"mapped\",\"\u062A\u0632\"],[[64626,64626],\"mapped\",\"\u062A\u0645\"],[[64627,64627],\"mapped\",\"\u062A\u0646\"],[[64628,64628],\"mapped\",\"\u062A\u0649\"],[[64629,64629],\"mapped\",\"\u062A\u064A\"],[[64630,64630],\"mapped\",\"\u062B\u0631\"],[[64631,64631],\"mapped\",\"\u062B\u0632\"],[[64632,64632],\"mapped\",\"\u062B\u0645\"],[[64633,64633],\"mapped\",\"\u062B\u0646\"],[[64634,64634],\"mapped\",\"\u062B\u0649\"],[[64635,64635],\"mapped\",\"\u062B\u064A\"],[[64636,64636],\"mapped\",\"\u0641\u0649\"],[[64637,64637],\"mapped\",\"\u0641\u064A\"],[[64638,64638],\"mapped\",\"\u0642\u0649\"],[[64639,64639],\"mapped\",\"\u0642\u064A\"],[[64640,64640],\"mapped\",\"\u0643\u0627\"],[[64641,64641],\"mapped\",\"\u0643\u0644\"],[[64642,64642],\"mapped\",\"\u0643\u0645\"],[[64643,64643],\"mapped\",\"\u0643\u0649\"],[[64644,64644],\"mapped\",\"\u0643\u064A\"],[[64645,64645],\"mapped\",\"\u0644\u0645\"],[[64646,64646],\"mapped\",\"\u0644\u0649\"],[[64647,64647],\"mapped\",\"\u0644\u064A\"],[[64648,64648],\"mapped\",\"\u0645\u0627\"],[[64649,64649],\"mapped\",\"\u0645\u0645\"],[[64650,64650],\"mapped\",\"\u0646\u0631\"],[[64651,64651],\"mapped\",\"\u0646\u0632\"],[[64652,64652],\"mapped\",\"\u0646\u0645\"],[[64653,64653],\"mapped\",\"\u0646\u0646\"],[[64654,64654],\"mapped\",\"\u0646\u0649\"],[[64655,64655],\"mapped\",\"\u0646\u064A\"],[[64656,64656],\"mapped\",\"\u0649\u0670\"],[[64657,64657],\"mapped\",\"\u064A\u0631\"],[[64658,64658],\"mapped\",\"\u064A\u0632\"],[[64659,64659],\"mapped\",\"\u064A\u0645\"],[[64660,64660],\"mapped\",\"\u064A\u0646\"],[[64661,64661],\"mapped\",\"\u064A\u0649\"],[[64662,64662],\"mapped\",\"\u064A\u064A\"],[[64663,64663],\"mapped\",\"\u0626\u062C\"],[[64664,64664],\"mapped\",\"\u0626\u062D\"],[[64665,64665],\"mapped\",\"\u0626\u062E\"],[[64666,64666],\"mapped\",\"\u0626\u0645\"],[[64667,64667],\"mapped\",\"\u0626\u0647\"],[[64668,64668],\"mapped\",\"\u0628\u062C\"],[[64669,64669],\"mapped\",\"\u0628\u062D\"],[[64670,64670],\"mapped\",\"\u0628\u062E\"],[[64671,64671],\"mapped\",\"\u0628\u0645\"],[[64672,64672],\"mapped\",\"\u0628\u0647\"],[[64673,64673],\"mapped\",\"\u062A\u062C\"],[[64674,64674],\"mapped\",\"\u062A\u062D\"],[[64675,64675],\"mapped\",\"\u062A\u062E\"],[[64676,64676],\"mapped\",\"\u062A\u0645\"],[[64677,64677],\"mapped\",\"\u062A\u0647\"],[[64678,64678],\"mapped\",\"\u062B\u0645\"],[[64679,64679],\"mapped\",\"\u062C\u062D\"],[[64680,64680],\"mapped\",\"\u062C\u0645\"],[[64681,64681],\"mapped\",\"\u062D\u062C\"],[[64682,64682],\"mapped\",\"\u062D\u0645\"],[[64683,64683],\"mapped\",\"\u062E\u062C\"],[[64684,64684],\"mapped\",\"\u062E\u0645\"],[[64685,64685],\"mapped\",\"\u0633\u062C\"],[[64686,64686],\"mapped\",\"\u0633\u062D\"],[[64687,64687],\"mapped\",\"\u0633\u062E\"],[[64688,64688],\"mapped\",\"\u0633\u0645\"],[[64689,64689],\"mapped\",\"\u0635\u062D\"],[[64690,64690],\"mapped\",\"\u0635\u062E\"],[[64691,64691],\"mapped\",\"\u0635\u0645\"],[[64692,64692],\"mapped\",\"\u0636\u062C\"],[[64693,64693],\"mapped\",\"\u0636\u062D\"],[[64694,64694],\"mapped\",\"\u0636\u062E\"],[[64695,64695],\"mapped\",\"\u0636\u0645\"],[[64696,64696],\"mapped\",\"\u0637\u062D\"],[[64697,64697],\"mapped\",\"\u0638\u0645\"],[[64698,64698],\"mapped\",\"\u0639\u062C\"],[[64699,64699],\"mapped\",\"\u0639\u0645\"],[[64700,64700],\"mapped\",\"\u063A\u062C\"],[[64701,64701],\"mapped\",\"\u063A\u0645\"],[[64702,64702],\"mapped\",\"\u0641\u062C\"],[[64703,64703],\"mapped\",\"\u0641\u062D\"],[[64704,64704],\"mapped\",\"\u0641\u062E\"],[[64705,64705],\"mapped\",\"\u0641\u0645\"],[[64706,64706],\"mapped\",\"\u0642\u062D\"],[[64707,64707],\"mapped\",\"\u0642\u0645\"],[[64708,64708],\"mapped\",\"\u0643\u062C\"],[[64709,64709],\"mapped\",\"\u0643\u062D\"],[[64710,64710],\"mapped\",\"\u0643\u062E\"],[[64711,64711],\"mapped\",\"\u0643\u0644\"],[[64712,64712],\"mapped\",\"\u0643\u0645\"],[[64713,64713],\"mapped\",\"\u0644\u062C\"],[[64714,64714],\"mapped\",\"\u0644\u062D\"],[[64715,64715],\"mapped\",\"\u0644\u062E\"],[[64716,64716],\"mapped\",\"\u0644\u0645\"],[[64717,64717],\"mapped\",\"\u0644\u0647\"],[[64718,64718],\"mapped\",\"\u0645\u062C\"],[[64719,64719],\"mapped\",\"\u0645\u062D\"],[[64720,64720],\"mapped\",\"\u0645\u062E\"],[[64721,64721],\"mapped\",\"\u0645\u0645\"],[[64722,64722],\"mapped\",\"\u0646\u062C\"],[[64723,64723],\"mapped\",\"\u0646\u062D\"],[[64724,64724],\"mapped\",\"\u0646\u062E\"],[[64725,64725],\"mapped\",\"\u0646\u0645\"],[[64726,64726],\"mapped\",\"\u0646\u0647\"],[[64727,64727],\"mapped\",\"\u0647\u062C\"],[[64728,64728],\"mapped\",\"\u0647\u0645\"],[[64729,64729],\"mapped\",\"\u0647\u0670\"],[[64730,64730],\"mapped\",\"\u064A\u062C\"],[[64731,64731],\"mapped\",\"\u064A\u062D\"],[[64732,64732],\"mapped\",\"\u064A\u062E\"],[[64733,64733],\"mapped\",\"\u064A\u0645\"],[[64734,64734],\"mapped\",\"\u064A\u0647\"],[[64735,64735],\"mapped\",\"\u0626\u0645\"],[[64736,64736],\"mapped\",\"\u0626\u0647\"],[[64737,64737],\"mapped\",\"\u0628\u0645\"],[[64738,64738],\"mapped\",\"\u0628\u0647\"],[[64739,64739],\"mapped\",\"\u062A\u0645\"],[[64740,64740],\"mapped\",\"\u062A\u0647\"],[[64741,64741],\"mapped\",\"\u062B\u0645\"],[[64742,64742],\"mapped\",\"\u062B\u0647\"],[[64743,64743],\"mapped\",\"\u0633\u0645\"],[[64744,64744],\"mapped\",\"\u0633\u0647\"],[[64745,64745],\"mapped\",\"\u0634\u0645\"],[[64746,64746],\"mapped\",\"\u0634\u0647\"],[[64747,64747],\"mapped\",\"\u0643\u0644\"],[[64748,64748],\"mapped\",\"\u0643\u0645\"],[[64749,64749],\"mapped\",\"\u0644\u0645\"],[[64750,64750],\"mapped\",\"\u0646\u0645\"],[[64751,64751],\"mapped\",\"\u0646\u0647\"],[[64752,64752],\"mapped\",\"\u064A\u0645\"],[[64753,64753],\"mapped\",\"\u064A\u0647\"],[[64754,64754],\"mapped\",\"\u0640\u064E\u0651\"],[[64755,64755],\"mapped\",\"\u0640\u064F\u0651\"],[[64756,64756],\"mapped\",\"\u0640\u0650\u0651\"],[[64757,64757],\"mapped\",\"\u0637\u0649\"],[[64758,64758],\"mapped\",\"\u0637\u064A\"],[[64759,64759],\"mapped\",\"\u0639\u0649\"],[[64760,64760],\"mapped\",\"\u0639\u064A\"],[[64761,64761],\"mapped\",\"\u063A\u0649\"],[[64762,64762],\"mapped\",\"\u063A\u064A\"],[[64763,64763],\"mapped\",\"\u0633\u0649\"],[[64764,64764],\"mapped\",\"\u0633\u064A\"],[[64765,64765],\"mapped\",\"\u0634\u0649\"],[[64766,64766],\"mapped\",\"\u0634\u064A\"],[[64767,64767],\"mapped\",\"\u062D\u0649\"],[[64768,64768],\"mapped\",\"\u062D\u064A\"],[[64769,64769],\"mapped\",\"\u062C\u0649\"],[[64770,64770],\"mapped\",\"\u062C\u064A\"],[[64771,64771],\"mapped\",\"\u062E\u0649\"],[[64772,64772],\"mapped\",\"\u062E\u064A\"],[[64773,64773],\"mapped\",\"\u0635\u0649\"],[[64774,64774],\"mapped\",\"\u0635\u064A\"],[[64775,64775],\"mapped\",\"\u0636\u0649\"],[[64776,64776],\"mapped\",\"\u0636\u064A\"],[[64777,64777],\"mapped\",\"\u0634\u062C\"],[[64778,64778],\"mapped\",\"\u0634\u062D\"],[[64779,64779],\"mapped\",\"\u0634\u062E\"],[[64780,64780],\"mapped\",\"\u0634\u0645\"],[[64781,64781],\"mapped\",\"\u0634\u0631\"],[[64782,64782],\"mapped\",\"\u0633\u0631\"],[[64783,64783],\"mapped\",\"\u0635\u0631\"],[[64784,64784],\"mapped\",\"\u0636\u0631\"],[[64785,64785],\"mapped\",\"\u0637\u0649\"],[[64786,64786],\"mapped\",\"\u0637\u064A\"],[[64787,64787],\"mapped\",\"\u0639\u0649\"],[[64788,64788],\"mapped\",\"\u0639\u064A\"],[[64789,64789],\"mapped\",\"\u063A\u0649\"],[[64790,64790],\"mapped\",\"\u063A\u064A\"],[[64791,64791],\"mapped\",\"\u0633\u0649\"],[[64792,64792],\"mapped\",\"\u0633\u064A\"],[[64793,64793],\"mapped\",\"\u0634\u0649\"],[[64794,64794],\"mapped\",\"\u0634\u064A\"],[[64795,64795],\"mapped\",\"\u062D\u0649\"],[[64796,64796],\"mapped\",\"\u062D\u064A\"],[[64797,64797],\"mapped\",\"\u062C\u0649\"],[[64798,64798],\"mapped\",\"\u062C\u064A\"],[[64799,64799],\"mapped\",\"\u062E\u0649\"],[[64800,64800],\"mapped\",\"\u062E\u064A\"],[[64801,64801],\"mapped\",\"\u0635\u0649\"],[[64802,64802],\"mapped\",\"\u0635\u064A\"],[[64803,64803],\"mapped\",\"\u0636\u0649\"],[[64804,64804],\"mapped\",\"\u0636\u064A\"],[[64805,64805],\"mapped\",\"\u0634\u062C\"],[[64806,64806],\"mapped\",\"\u0634\u062D\"],[[64807,64807],\"mapped\",\"\u0634\u062E\"],[[64808,64808],\"mapped\",\"\u0634\u0645\"],[[64809,64809],\"mapped\",\"\u0634\u0631\"],[[64810,64810],\"mapped\",\"\u0633\u0631\"],[[64811,64811],\"mapped\",\"\u0635\u0631\"],[[64812,64812],\"mapped\",\"\u0636\u0631\"],[[64813,64813],\"mapped\",\"\u0634\u062C\"],[[64814,64814],\"mapped\",\"\u0634\u062D\"],[[64815,64815],\"mapped\",\"\u0634\u062E\"],[[64816,64816],\"mapped\",\"\u0634\u0645\"],[[64817,64817],\"mapped\",\"\u0633\u0647\"],[[64818,64818],\"mapped\",\"\u0634\u0647\"],[[64819,64819],\"mapped\",\"\u0637\u0645\"],[[64820,64820],\"mapped\",\"\u0633\u062C\"],[[64821,64821],\"mapped\",\"\u0633\u062D\"],[[64822,64822],\"mapped\",\"\u0633\u062E\"],[[64823,64823],\"mapped\",\"\u0634\u062C\"],[[64824,64824],\"mapped\",\"\u0634\u062D\"],[[64825,64825],\"mapped\",\"\u0634\u062E\"],[[64826,64826],\"mapped\",\"\u0637\u0645\"],[[64827,64827],\"mapped\",\"\u0638\u0645\"],[[64828,64829],\"mapped\",\"\u0627\u064B\"],[[64830,64831],\"valid\",\"\",\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",\"\u062A\u062C\u0645\"],[[64849,64850],\"mapped\",\"\u062A\u062D\u062C\"],[[64851,64851],\"mapped\",\"\u062A\u062D\u0645\"],[[64852,64852],\"mapped\",\"\u062A\u062E\u0645\"],[[64853,64853],\"mapped\",\"\u062A\u0645\u062C\"],[[64854,64854],\"mapped\",\"\u062A\u0645\u062D\"],[[64855,64855],\"mapped\",\"\u062A\u0645\u062E\"],[[64856,64857],\"mapped\",\"\u062C\u0645\u062D\"],[[64858,64858],\"mapped\",\"\u062D\u0645\u064A\"],[[64859,64859],\"mapped\",\"\u062D\u0645\u0649\"],[[64860,64860],\"mapped\",\"\u0633\u062D\u062C\"],[[64861,64861],\"mapped\",\"\u0633\u062C\u062D\"],[[64862,64862],\"mapped\",\"\u0633\u062C\u0649\"],[[64863,64864],\"mapped\",\"\u0633\u0645\u062D\"],[[64865,64865],\"mapped\",\"\u0633\u0645\u062C\"],[[64866,64867],\"mapped\",\"\u0633\u0645\u0645\"],[[64868,64869],\"mapped\",\"\u0635\u062D\u062D\"],[[64870,64870],\"mapped\",\"\u0635\u0645\u0645\"],[[64871,64872],\"mapped\",\"\u0634\u062D\u0645\"],[[64873,64873],\"mapped\",\"\u0634\u062C\u064A\"],[[64874,64875],\"mapped\",\"\u0634\u0645\u062E\"],[[64876,64877],\"mapped\",\"\u0634\u0645\u0645\"],[[64878,64878],\"mapped\",\"\u0636\u062D\u0649\"],[[64879,64880],\"mapped\",\"\u0636\u062E\u0645\"],[[64881,64882],\"mapped\",\"\u0637\u0645\u062D\"],[[64883,64883],\"mapped\",\"\u0637\u0645\u0645\"],[[64884,64884],\"mapped\",\"\u0637\u0645\u064A\"],[[64885,64885],\"mapped\",\"\u0639\u062C\u0645\"],[[64886,64887],\"mapped\",\"\u0639\u0645\u0645\"],[[64888,64888],\"mapped\",\"\u0639\u0645\u0649\"],[[64889,64889],\"mapped\",\"\u063A\u0645\u0645\"],[[64890,64890],\"mapped\",\"\u063A\u0645\u064A\"],[[64891,64891],\"mapped\",\"\u063A\u0645\u0649\"],[[64892,64893],\"mapped\",\"\u0641\u062E\u0645\"],[[64894,64894],\"mapped\",\"\u0642\u0645\u062D\"],[[64895,64895],\"mapped\",\"\u0642\u0645\u0645\"],[[64896,64896],\"mapped\",\"\u0644\u062D\u0645\"],[[64897,64897],\"mapped\",\"\u0644\u062D\u064A\"],[[64898,64898],\"mapped\",\"\u0644\u062D\u0649\"],[[64899,64900],\"mapped\",\"\u0644\u062C\u062C\"],[[64901,64902],\"mapped\",\"\u0644\u062E\u0645\"],[[64903,64904],\"mapped\",\"\u0644\u0645\u062D\"],[[64905,64905],\"mapped\",\"\u0645\u062D\u062C\"],[[64906,64906],\"mapped\",\"\u0645\u062D\u0645\"],[[64907,64907],\"mapped\",\"\u0645\u062D\u064A\"],[[64908,64908],\"mapped\",\"\u0645\u062C\u062D\"],[[64909,64909],\"mapped\",\"\u0645\u062C\u0645\"],[[64910,64910],\"mapped\",\"\u0645\u062E\u062C\"],[[64911,64911],\"mapped\",\"\u0645\u062E\u0645\"],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",\"\u0645\u062C\u062E\"],[[64915,64915],\"mapped\",\"\u0647\u0645\u062C\"],[[64916,64916],\"mapped\",\"\u0647\u0645\u0645\"],[[64917,64917],\"mapped\",\"\u0646\u062D\u0645\"],[[64918,64918],\"mapped\",\"\u0646\u062D\u0649\"],[[64919,64920],\"mapped\",\"\u0646\u062C\u0645\"],[[64921,64921],\"mapped\",\"\u0646\u062C\u0649\"],[[64922,64922],\"mapped\",\"\u0646\u0645\u064A\"],[[64923,64923],\"mapped\",\"\u0646\u0645\u0649\"],[[64924,64925],\"mapped\",\"\u064A\u0645\u0645\"],[[64926,64926],\"mapped\",\"\u0628\u062E\u064A\"],[[64927,64927],\"mapped\",\"\u062A\u062C\u064A\"],[[64928,64928],\"mapped\",\"\u062A\u062C\u0649\"],[[64929,64929],\"mapped\",\"\u062A\u062E\u064A\"],[[64930,64930],\"mapped\",\"\u062A\u062E\u0649\"],[[64931,64931],\"mapped\",\"\u062A\u0645\u064A\"],[[64932,64932],\"mapped\",\"\u062A\u0645\u0649\"],[[64933,64933],\"mapped\",\"\u062C\u0645\u064A\"],[[64934,64934],\"mapped\",\"\u062C\u062D\u0649\"],[[64935,64935],\"mapped\",\"\u062C\u0645\u0649\"],[[64936,64936],\"mapped\",\"\u0633\u062E\u0649\"],[[64937,64937],\"mapped\",\"\u0635\u062D\u064A\"],[[64938,64938],\"mapped\",\"\u0634\u062D\u064A\"],[[64939,64939],\"mapped\",\"\u0636\u062D\u064A\"],[[64940,64940],\"mapped\",\"\u0644\u062C\u064A\"],[[64941,64941],\"mapped\",\"\u0644\u0645\u064A\"],[[64942,64942],\"mapped\",\"\u064A\u062D\u064A\"],[[64943,64943],\"mapped\",\"\u064A\u062C\u064A\"],[[64944,64944],\"mapped\",\"\u064A\u0645\u064A\"],[[64945,64945],\"mapped\",\"\u0645\u0645\u064A\"],[[64946,64946],\"mapped\",\"\u0642\u0645\u064A\"],[[64947,64947],\"mapped\",\"\u0646\u062D\u064A\"],[[64948,64948],\"mapped\",\"\u0642\u0645\u062D\"],[[64949,64949],\"mapped\",\"\u0644\u062D\u0645\"],[[64950,64950],\"mapped\",\"\u0639\u0645\u064A\"],[[64951,64951],\"mapped\",\"\u0643\u0645\u064A\"],[[64952,64952],\"mapped\",\"\u0646\u062C\u062D\"],[[64953,64953],\"mapped\",\"\u0645\u062E\u064A\"],[[64954,64954],\"mapped\",\"\u0644\u062C\u0645\"],[[64955,64955],\"mapped\",\"\u0643\u0645\u0645\"],[[64956,64956],\"mapped\",\"\u0644\u062C\u0645\"],[[64957,64957],\"mapped\",\"\u0646\u062C\u062D\"],[[64958,64958],\"mapped\",\"\u062C\u062D\u064A\"],[[64959,64959],\"mapped\",\"\u062D\u062C\u064A\"],[[64960,64960],\"mapped\",\"\u0645\u062C\u064A\"],[[64961,64961],\"mapped\",\"\u0641\u0645\u064A\"],[[64962,64962],\"mapped\",\"\u0628\u062D\u064A\"],[[64963,64963],\"mapped\",\"\u0643\u0645\u0645\"],[[64964,64964],\"mapped\",\"\u0639\u062C\u0645\"],[[64965,64965],\"mapped\",\"\u0635\u0645\u0645\"],[[64966,64966],\"mapped\",\"\u0633\u062E\u064A\"],[[64967,64967],\"mapped\",\"\u0646\u062C\u064A\"],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",\"\u0635\u0644\u06D2\"],[[65009,65009],\"mapped\",\"\u0642\u0644\u06D2\"],[[65010,65010],\"mapped\",\"\u0627\u0644\u0644\u0647\"],[[65011,65011],\"mapped\",\"\u0627\u0643\u0628\u0631\"],[[65012,65012],\"mapped\",\"\u0645\u062D\u0645\u062F\"],[[65013,65013],\"mapped\",\"\u0635\u0644\u0639\u0645\"],[[65014,65014],\"mapped\",\"\u0631\u0633\u0648\u0644\"],[[65015,65015],\"mapped\",\"\u0639\u0644\u064A\u0647\"],[[65016,65016],\"mapped\",\"\u0648\u0633\u0644\u0645\"],[[65017,65017],\"mapped\",\"\u0635\u0644\u0649\"],[[65018,65018],\"disallowed_STD3_mapped\",\"\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064A\u0647 \u0648\u0633\u0644\u0645\"],[[65019,65019],\"disallowed_STD3_mapped\",\"\u062C\u0644 \u062C\u0644\u0627\u0644\u0647\"],[[65020,65020],\"mapped\",\"\u0631\u06CC\u0627\u0644\"],[[65021,65021],\"valid\",\"\",\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",\",\"],[[65041,65041],\"mapped\",\"\u3001\"],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",\":\"],[[65044,65044],\"disallowed_STD3_mapped\",\";\"],[[65045,65045],\"disallowed_STD3_mapped\",\"!\"],[[65046,65046],\"disallowed_STD3_mapped\",\"?\"],[[65047,65047],\"mapped\",\"\u3016\"],[[65048,65048],\"mapped\",\"\u3017\"],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",\"\u2014\"],[[65074,65074],\"mapped\",\"\u2013\"],[[65075,65076],\"disallowed_STD3_mapped\",\"_\"],[[65077,65077],\"disallowed_STD3_mapped\",\"(\"],[[65078,65078],\"disallowed_STD3_mapped\",\")\"],[[65079,65079],\"disallowed_STD3_mapped\",\"{\"],[[65080,65080],\"disallowed_STD3_mapped\",\"}\"],[[65081,65081],\"mapped\",\"\u3014\"],[[65082,65082],\"mapped\",\"\u3015\"],[[65083,65083],\"mapped\",\"\u3010\"],[[65084,65084],\"mapped\",\"\u3011\"],[[65085,65085],\"mapped\",\"\u300A\"],[[65086,65086],\"mapped\",\"\u300B\"],[[65087,65087],\"mapped\",\"\u3008\"],[[65088,65088],\"mapped\",\"\u3009\"],[[65089,65089],\"mapped\",\"\u300C\"],[[65090,65090],\"mapped\",\"\u300D\"],[[65091,65091],\"mapped\",\"\u300E\"],[[65092,65092],\"mapped\",\"\u300F\"],[[65093,65094],\"valid\",\"\",\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",\"[\"],[[65096,65096],\"disallowed_STD3_mapped\",\"]\"],[[65097,65100],\"disallowed_STD3_mapped\",\" \u0305\"],[[65101,65103],\"disallowed_STD3_mapped\",\"_\"],[[65104,65104],\"disallowed_STD3_mapped\",\",\"],[[65105,65105],\"mapped\",\"\u3001\"],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",\";\"],[[65109,65109],\"disallowed_STD3_mapped\",\":\"],[[65110,65110],\"disallowed_STD3_mapped\",\"?\"],[[65111,65111],\"disallowed_STD3_mapped\",\"!\"],[[65112,65112],\"mapped\",\"\u2014\"],[[65113,65113],\"disallowed_STD3_mapped\",\"(\"],[[65114,65114],\"disallowed_STD3_mapped\",\")\"],[[65115,65115],\"disallowed_STD3_mapped\",\"{\"],[[65116,65116],\"disallowed_STD3_mapped\",\"}\"],[[65117,65117],\"mapped\",\"\u3014\"],[[65118,65118],\"mapped\",\"\u3015\"],[[65119,65119],\"disallowed_STD3_mapped\",\"#\"],[[65120,65120],\"disallowed_STD3_mapped\",\"&\"],[[65121,65121],\"disallowed_STD3_mapped\",\"*\"],[[65122,65122],\"disallowed_STD3_mapped\",\"+\"],[[65123,65123],\"mapped\",\"-\"],[[65124,65124],\"disallowed_STD3_mapped\",\"<\"],[[65125,65125],\"disallowed_STD3_mapped\",\">\"],[[65126,65126],\"disallowed_STD3_mapped\",\"=\"],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",\"\\\\\"],[[65129,65129],\"disallowed_STD3_mapped\",\"$\"],[[65130,65130],\"disallowed_STD3_mapped\",\"%\"],[[65131,65131],\"disallowed_STD3_mapped\",\"@\"],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",\" \u064B\"],[[65137,65137],\"mapped\",\"\u0640\u064B\"],[[65138,65138],\"disallowed_STD3_mapped\",\" \u064C\"],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",\" \u064D\"],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",\" \u064E\"],[[65143,65143],\"mapped\",\"\u0640\u064E\"],[[65144,65144],\"disallowed_STD3_mapped\",\" \u064F\"],[[65145,65145],\"mapped\",\"\u0640\u064F\"],[[65146,65146],\"disallowed_STD3_mapped\",\" \u0650\"],[[65147,65147],\"mapped\",\"\u0640\u0650\"],[[65148,65148],\"disallowed_STD3_mapped\",\" \u0651\"],[[65149,65149],\"mapped\",\"\u0640\u0651\"],[[65150,65150],\"disallowed_STD3_mapped\",\" \u0652\"],[[65151,65151],\"mapped\",\"\u0640\u0652\"],[[65152,65152],\"mapped\",\"\u0621\"],[[65153,65154],\"mapped\",\"\u0622\"],[[65155,65156],\"mapped\",\"\u0623\"],[[65157,65158],\"mapped\",\"\u0624\"],[[65159,65160],\"mapped\",\"\u0625\"],[[65161,65164],\"mapped\",\"\u0626\"],[[65165,65166],\"mapped\",\"\u0627\"],[[65167,65170],\"mapped\",\"\u0628\"],[[65171,65172],\"mapped\",\"\u0629\"],[[65173,65176],\"mapped\",\"\u062A\"],[[65177,65180],\"mapped\",\"\u062B\"],[[65181,65184],\"mapped\",\"\u062C\"],[[65185,65188],\"mapped\",\"\u062D\"],[[65189,65192],\"mapped\",\"\u062E\"],[[65193,65194],\"mapped\",\"\u062F\"],[[65195,65196],\"mapped\",\"\u0630\"],[[65197,65198],\"mapped\",\"\u0631\"],[[65199,65200],\"mapped\",\"\u0632\"],[[65201,65204],\"mapped\",\"\u0633\"],[[65205,65208],\"mapped\",\"\u0634\"],[[65209,65212],\"mapped\",\"\u0635\"],[[65213,65216],\"mapped\",\"\u0636\"],[[65217,65220],\"mapped\",\"\u0637\"],[[65221,65224],\"mapped\",\"\u0638\"],[[65225,65228],\"mapped\",\"\u0639\"],[[65229,65232],\"mapped\",\"\u063A\"],[[65233,65236],\"mapped\",\"\u0641\"],[[65237,65240],\"mapped\",\"\u0642\"],[[65241,65244],\"mapped\",\"\u0643\"],[[65245,65248],\"mapped\",\"\u0644\"],[[65249,65252],\"mapped\",\"\u0645\"],[[65253,65256],\"mapped\",\"\u0646\"],[[65257,65260],\"mapped\",\"\u0647\"],[[65261,65262],\"mapped\",\"\u0648\"],[[65263,65264],\"mapped\",\"\u0649\"],[[65265,65268],\"mapped\",\"\u064A\"],[[65269,65270],\"mapped\",\"\u0644\u0622\"],[[65271,65272],\"mapped\",\"\u0644\u0623\"],[[65273,65274],\"mapped\",\"\u0644\u0625\"],[[65275,65276],\"mapped\",\"\u0644\u0627\"],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",\"!\"],[[65282,65282],\"disallowed_STD3_mapped\",\"\\\"\"],[[65283,65283],\"disallowed_STD3_mapped\",\"#\"],[[65284,65284],\"disallowed_STD3_mapped\",\"$\"],[[65285,65285],\"disallowed_STD3_mapped\",\"%\"],[[65286,65286],\"disallowed_STD3_mapped\",\"&\"],[[65287,65287],\"disallowed_STD3_mapped\",\"'\"],[[65288,65288],\"disallowed_STD3_mapped\",\"(\"],[[65289,65289],\"disallowed_STD3_mapped\",\")\"],[[65290,65290],\"disallowed_STD3_mapped\",\"*\"],[[65291,65291],\"disallowed_STD3_mapped\",\"+\"],[[65292,65292],\"disallowed_STD3_mapped\",\",\"],[[65293,65293],\"mapped\",\"-\"],[[65294,65294],\"mapped\",\".\"],[[65295,65295],\"disallowed_STD3_mapped\",\"/\"],[[65296,65296],\"mapped\",\"0\"],[[65297,65297],\"mapped\",\"1\"],[[65298,65298],\"mapped\",\"2\"],[[65299,65299],\"mapped\",\"3\"],[[65300,65300],\"mapped\",\"4\"],[[65301,65301],\"mapped\",\"5\"],[[65302,65302],\"mapped\",\"6\"],[[65303,65303],\"mapped\",\"7\"],[[65304,65304],\"mapped\",\"8\"],[[65305,65305],\"mapped\",\"9\"],[[65306,65306],\"disallowed_STD3_mapped\",\":\"],[[65307,65307],\"disallowed_STD3_mapped\",\";\"],[[65308,65308],\"disallowed_STD3_mapped\",\"<\"],[[65309,65309],\"disallowed_STD3_mapped\",\"=\"],[[65310,65310],\"disallowed_STD3_mapped\",\">\"],[[65311,65311],\"disallowed_STD3_mapped\",\"?\"],[[65312,65312],\"disallowed_STD3_mapped\",\"@\"],[[65313,65313],\"mapped\",\"a\"],[[65314,65314],\"mapped\",\"b\"],[[65315,65315],\"mapped\",\"c\"],[[65316,65316],\"mapped\",\"d\"],[[65317,65317],\"mapped\",\"e\"],[[65318,65318],\"mapped\",\"f\"],[[65319,65319],\"mapped\",\"g\"],[[65320,65320],\"mapped\",\"h\"],[[65321,65321],\"mapped\",\"i\"],[[65322,65322],\"mapped\",\"j\"],[[65323,65323],\"mapped\",\"k\"],[[65324,65324],\"mapped\",\"l\"],[[65325,65325],\"mapped\",\"m\"],[[65326,65326],\"mapped\",\"n\"],[[65327,65327],\"mapped\",\"o\"],[[65328,65328],\"mapped\",\"p\"],[[65329,65329],\"mapped\",\"q\"],[[65330,65330],\"mapped\",\"r\"],[[65331,65331],\"mapped\",\"s\"],[[65332,65332],\"mapped\",\"t\"],[[65333,65333],\"mapped\",\"u\"],[[65334,65334],\"mapped\",\"v\"],[[65335,65335],\"mapped\",\"w\"],[[65336,65336],\"mapped\",\"x\"],[[65337,65337],\"mapped\",\"y\"],[[65338,65338],\"mapped\",\"z\"],[[65339,65339],\"disallowed_STD3_mapped\",\"[\"],[[65340,65340],\"disallowed_STD3_mapped\",\"\\\\\"],[[65341,65341],\"disallowed_STD3_mapped\",\"]\"],[[65342,65342],\"disallowed_STD3_mapped\",\"^\"],[[65343,65343],\"disallowed_STD3_mapped\",\"_\"],[[65344,65344],\"disallowed_STD3_mapped\",\"`\"],[[65345,65345],\"mapped\",\"a\"],[[65346,65346],\"mapped\",\"b\"],[[65347,65347],\"mapped\",\"c\"],[[65348,65348],\"mapped\",\"d\"],[[65349,65349],\"mapped\",\"e\"],[[65350,65350],\"mapped\",\"f\"],[[65351,65351],\"mapped\",\"g\"],[[65352,65352],\"mapped\",\"h\"],[[65353,65353],\"mapped\",\"i\"],[[65354,65354],\"mapped\",\"j\"],[[65355,65355],\"mapped\",\"k\"],[[65356,65356],\"mapped\",\"l\"],[[65357,65357],\"mapped\",\"m\"],[[65358,65358],\"mapped\",\"n\"],[[65359,65359],\"mapped\",\"o\"],[[65360,65360],\"mapped\",\"p\"],[[65361,65361],\"mapped\",\"q\"],[[65362,65362],\"mapped\",\"r\"],[[65363,65363],\"mapped\",\"s\"],[[65364,65364],\"mapped\",\"t\"],[[65365,65365],\"mapped\",\"u\"],[[65366,65366],\"mapped\",\"v\"],[[65367,65367],\"mapped\",\"w\"],[[65368,65368],\"mapped\",\"x\"],[[65369,65369],\"mapped\",\"y\"],[[65370,65370],\"mapped\",\"z\"],[[65371,65371],\"disallowed_STD3_mapped\",\"{\"],[[65372,65372],\"disallowed_STD3_mapped\",\"|\"],[[65373,65373],\"disallowed_STD3_mapped\",\"}\"],[[65374,65374],\"disallowed_STD3_mapped\",\"~\"],[[65375,65375],\"mapped\",\"\u2985\"],[[65376,65376],\"mapped\",\"\u2986\"],[[65377,65377],\"mapped\",\".\"],[[65378,65378],\"mapped\",\"\u300C\"],[[65379,65379],\"mapped\",\"\u300D\"],[[65380,65380],\"mapped\",\"\u3001\"],[[65381,65381],\"mapped\",\"\u30FB\"],[[65382,65382],\"mapped\",\"\u30F2\"],[[65383,65383],\"mapped\",\"\u30A1\"],[[65384,65384],\"mapped\",\"\u30A3\"],[[65385,65385],\"mapped\",\"\u30A5\"],[[65386,65386],\"mapped\",\"\u30A7\"],[[65387,65387],\"mapped\",\"\u30A9\"],[[65388,65388],\"mapped\",\"\u30E3\"],[[65389,65389],\"mapped\",\"\u30E5\"],[[65390,65390],\"mapped\",\"\u30E7\"],[[65391,65391],\"mapped\",\"\u30C3\"],[[65392,65392],\"mapped\",\"\u30FC\"],[[65393,65393],\"mapped\",\"\u30A2\"],[[65394,65394],\"mapped\",\"\u30A4\"],[[65395,65395],\"mapped\",\"\u30A6\"],[[65396,65396],\"mapped\",\"\u30A8\"],[[65397,65397],\"mapped\",\"\u30AA\"],[[65398,65398],\"mapped\",\"\u30AB\"],[[65399,65399],\"mapped\",\"\u30AD\"],[[65400,65400],\"mapped\",\"\u30AF\"],[[65401,65401],\"mapped\",\"\u30B1\"],[[65402,65402],\"mapped\",\"\u30B3\"],[[65403,65403],\"mapped\",\"\u30B5\"],[[65404,65404],\"mapped\",\"\u30B7\"],[[65405,65405],\"mapped\",\"\u30B9\"],[[65406,65406],\"mapped\",\"\u30BB\"],[[65407,65407],\"mapped\",\"\u30BD\"],[[65408,65408],\"mapped\",\"\u30BF\"],[[65409,65409],\"mapped\",\"\u30C1\"],[[65410,65410],\"mapped\",\"\u30C4\"],[[65411,65411],\"mapped\",\"\u30C6\"],[[65412,65412],\"mapped\",\"\u30C8\"],[[65413,65413],\"mapped\",\"\u30CA\"],[[65414,65414],\"mapped\",\"\u30CB\"],[[65415,65415],\"mapped\",\"\u30CC\"],[[65416,65416],\"mapped\",\"\u30CD\"],[[65417,65417],\"mapped\",\"\u30CE\"],[[65418,65418],\"mapped\",\"\u30CF\"],[[65419,65419],\"mapped\",\"\u30D2\"],[[65420,65420],\"mapped\",\"\u30D5\"],[[65421,65421],\"mapped\",\"\u30D8\"],[[65422,65422],\"mapped\",\"\u30DB\"],[[65423,65423],\"mapped\",\"\u30DE\"],[[65424,65424],\"mapped\",\"\u30DF\"],[[65425,65425],\"mapped\",\"\u30E0\"],[[65426,65426],\"mapped\",\"\u30E1\"],[[65427,65427],\"mapped\",\"\u30E2\"],[[65428,65428],\"mapped\",\"\u30E4\"],[[65429,65429],\"mapped\",\"\u30E6\"],[[65430,65430],\"mapped\",\"\u30E8\"],[[65431,65431],\"mapped\",\"\u30E9\"],[[65432,65432],\"mapped\",\"\u30EA\"],[[65433,65433],\"mapped\",\"\u30EB\"],[[65434,65434],\"mapped\",\"\u30EC\"],[[65435,65435],\"mapped\",\"\u30ED\"],[[65436,65436],\"mapped\",\"\u30EF\"],[[65437,65437],\"mapped\",\"\u30F3\"],[[65438,65438],\"mapped\",\"\u3099\"],[[65439,65439],\"mapped\",\"\u309A\"],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",\"\u1100\"],[[65442,65442],\"mapped\",\"\u1101\"],[[65443,65443],\"mapped\",\"\u11AA\"],[[65444,65444],\"mapped\",\"\u1102\"],[[65445,65445],\"mapped\",\"\u11AC\"],[[65446,65446],\"mapped\",\"\u11AD\"],[[65447,65447],\"mapped\",\"\u1103\"],[[65448,65448],\"mapped\",\"\u1104\"],[[65449,65449],\"mapped\",\"\u1105\"],[[65450,65450],\"mapped\",\"\u11B0\"],[[65451,65451],\"mapped\",\"\u11B1\"],[[65452,65452],\"mapped\",\"\u11B2\"],[[65453,65453],\"mapped\",\"\u11B3\"],[[65454,65454],\"mapped\",\"\u11B4\"],[[65455,65455],\"mapped\",\"\u11B5\"],[[65456,65456],\"mapped\",\"\u111A\"],[[65457,65457],\"mapped\",\"\u1106\"],[[65458,65458],\"mapped\",\"\u1107\"],[[65459,65459],\"mapped\",\"\u1108\"],[[65460,65460],\"mapped\",\"\u1121\"],[[65461,65461],\"mapped\",\"\u1109\"],[[65462,65462],\"mapped\",\"\u110A\"],[[65463,65463],\"mapped\",\"\u110B\"],[[65464,65464],\"mapped\",\"\u110C\"],[[65465,65465],\"mapped\",\"\u110D\"],[[65466,65466],\"mapped\",\"\u110E\"],[[65467,65467],\"mapped\",\"\u110F\"],[[65468,65468],\"mapped\",\"\u1110\"],[[65469,65469],\"mapped\",\"\u1111\"],[[65470,65470],\"mapped\",\"\u1112\"],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",\"\u1161\"],[[65475,65475],\"mapped\",\"\u1162\"],[[65476,65476],\"mapped\",\"\u1163\"],[[65477,65477],\"mapped\",\"\u1164\"],[[65478,65478],\"mapped\",\"\u1165\"],[[65479,65479],\"mapped\",\"\u1166\"],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",\"\u1167\"],[[65483,65483],\"mapped\",\"\u1168\"],[[65484,65484],\"mapped\",\"\u1169\"],[[65485,65485],\"mapped\",\"\u116A\"],[[65486,65486],\"mapped\",\"\u116B\"],[[65487,65487],\"mapped\",\"\u116C\"],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",\"\u116D\"],[[65491,65491],\"mapped\",\"\u116E\"],[[65492,65492],\"mapped\",\"\u116F\"],[[65493,65493],\"mapped\",\"\u1170\"],[[65494,65494],\"mapped\",\"\u1171\"],[[65495,65495],\"mapped\",\"\u1172\"],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",\"\u1173\"],[[65499,65499],\"mapped\",\"\u1174\"],[[65500,65500],\"mapped\",\"\u1175\"],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",\"\u00A2\"],[[65505,65505],\"mapped\",\"\u00A3\"],[[65506,65506],\"mapped\",\"\u00AC\"],[[65507,65507],\"disallowed_STD3_mapped\",\" \u0304\"],[[65508,65508],\"mapped\",\"\u00A6\"],[[65509,65509],\"mapped\",\"\u00A5\"],[[65510,65510],\"mapped\",\"\u20A9\"],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",\"\u2502\"],[[65513,65513],\"mapped\",\"\u2190\"],[[65514,65514],\"mapped\",\"\u2191\"],[[65515,65515],\"mapped\",\"\u2192\"],[[65516,65516],\"mapped\",\"\u2193\"],[[65517,65517],\"mapped\",\"\u25A0\"],[[65518,65518],\"mapped\",\"\u25CB\"],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",\"\",\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",\"\",\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",\"\",\"NV8\"],[[65856,65930],\"valid\",\"\",\"NV8\"],[[65931,65932],\"valid\",\"\",\"NV8\"],[[65933,65934],\"valid\",\"\",\"NV8\"],[[65935,65935],\"disallowed\"],[[65936,65947],\"valid\",\"\",\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",\"\",\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",\"\",\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",\"\",\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",\"\",\"NV8\"],[[66340,66348],\"disallowed\"],[[66349,66351],\"valid\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",\"\",\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",\"\",\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",\"\",\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",\"\",\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",\"\uD801\uDC28\"],[[66561,66561],\"mapped\",\"\uD801\uDC29\"],[[66562,66562],\"mapped\",\"\uD801\uDC2A\"],[[66563,66563],\"mapped\",\"\uD801\uDC2B\"],[[66564,66564],\"mapped\",\"\uD801\uDC2C\"],[[66565,66565],\"mapped\",\"\uD801\uDC2D\"],[[66566,66566],\"mapped\",\"\uD801\uDC2E\"],[[66567,66567],\"mapped\",\"\uD801\uDC2F\"],[[66568,66568],\"mapped\",\"\uD801\uDC30\"],[[66569,66569],\"mapped\",\"\uD801\uDC31\"],[[66570,66570],\"mapped\",\"\uD801\uDC32\"],[[66571,66571],\"mapped\",\"\uD801\uDC33\"],[[66572,66572],\"mapped\",\"\uD801\uDC34\"],[[66573,66573],\"mapped\",\"\uD801\uDC35\"],[[66574,66574],\"mapped\",\"\uD801\uDC36\"],[[66575,66575],\"mapped\",\"\uD801\uDC37\"],[[66576,66576],\"mapped\",\"\uD801\uDC38\"],[[66577,66577],\"mapped\",\"\uD801\uDC39\"],[[66578,66578],\"mapped\",\"\uD801\uDC3A\"],[[66579,66579],\"mapped\",\"\uD801\uDC3B\"],[[66580,66580],\"mapped\",\"\uD801\uDC3C\"],[[66581,66581],\"mapped\",\"\uD801\uDC3D\"],[[66582,66582],\"mapped\",\"\uD801\uDC3E\"],[[66583,66583],\"mapped\",\"\uD801\uDC3F\"],[[66584,66584],\"mapped\",\"\uD801\uDC40\"],[[66585,66585],\"mapped\",\"\uD801\uDC41\"],[[66586,66586],\"mapped\",\"\uD801\uDC42\"],[[66587,66587],\"mapped\",\"\uD801\uDC43\"],[[66588,66588],\"mapped\",\"\uD801\uDC44\"],[[66589,66589],\"mapped\",\"\uD801\uDC45\"],[[66590,66590],\"mapped\",\"\uD801\uDC46\"],[[66591,66591],\"mapped\",\"\uD801\uDC47\"],[[66592,66592],\"mapped\",\"\uD801\uDC48\"],[[66593,66593],\"mapped\",\"\uD801\uDC49\"],[[66594,66594],\"mapped\",\"\uD801\uDC4A\"],[[66595,66595],\"mapped\",\"\uD801\uDC4B\"],[[66596,66596],\"mapped\",\"\uD801\uDC4C\"],[[66597,66597],\"mapped\",\"\uD801\uDC4D\"],[[66598,66598],\"mapped\",\"\uD801\uDC4E\"],[[66599,66599],\"mapped\",\"\uD801\uDC4F\"],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66735],\"disallowed\"],[[66736,66736],\"mapped\",\"\uD801\uDCD8\"],[[66737,66737],\"mapped\",\"\uD801\uDCD9\"],[[66738,66738],\"mapped\",\"\uD801\uDCDA\"],[[66739,66739],\"mapped\",\"\uD801\uDCDB\"],[[66740,66740],\"mapped\",\"\uD801\uDCDC\"],[[66741,66741],\"mapped\",\"\uD801\uDCDD\"],[[66742,66742],\"mapped\",\"\uD801\uDCDE\"],[[66743,66743],\"mapped\",\"\uD801\uDCDF\"],[[66744,66744],\"mapped\",\"\uD801\uDCE0\"],[[66745,66745],\"mapped\",\"\uD801\uDCE1\"],[[66746,66746],\"mapped\",\"\uD801\uDCE2\"],[[66747,66747],\"mapped\",\"\uD801\uDCE3\"],[[66748,66748],\"mapped\",\"\uD801\uDCE4\"],[[66749,66749],\"mapped\",\"\uD801\uDCE5\"],[[66750,66750],\"mapped\",\"\uD801\uDCE6\"],[[66751,66751],\"mapped\",\"\uD801\uDCE7\"],[[66752,66752],\"mapped\",\"\uD801\uDCE8\"],[[66753,66753],\"mapped\",\"\uD801\uDCE9\"],[[66754,66754],\"mapped\",\"\uD801\uDCEA\"],[[66755,66755],\"mapped\",\"\uD801\uDCEB\"],[[66756,66756],\"mapped\",\"\uD801\uDCEC\"],[[66757,66757],\"mapped\",\"\uD801\uDCED\"],[[66758,66758],\"mapped\",\"\uD801\uDCEE\"],[[66759,66759],\"mapped\",\"\uD801\uDCEF\"],[[66760,66760],\"mapped\",\"\uD801\uDCF0\"],[[66761,66761],\"mapped\",\"\uD801\uDCF1\"],[[66762,66762],\"mapped\",\"\uD801\uDCF2\"],[[66763,66763],\"mapped\",\"\uD801\uDCF3\"],[[66764,66764],\"mapped\",\"\uD801\uDCF4\"],[[66765,66765],\"mapped\",\"\uD801\uDCF5\"],[[66766,66766],\"mapped\",\"\uD801\uDCF6\"],[[66767,66767],\"mapped\",\"\uD801\uDCF7\"],[[66768,66768],\"mapped\",\"\uD801\uDCF8\"],[[66769,66769],\"mapped\",\"\uD801\uDCF9\"],[[66770,66770],\"mapped\",\"\uD801\uDCFA\"],[[66771,66771],\"mapped\",\"\uD801\uDCFB\"],[[66772,66775],\"disallowed\"],[[66776,66811],\"valid\"],[[66812,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",\"\",\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",\"\",\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",\"\",\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",\"\",\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",\"\",\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",\"\",\"NV8\"],[[67866,67867],\"valid\",\"\",\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",\"\",\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",\"\",\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",\"\",\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",\"\",\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",\"\",\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",\"\",\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",\"\",\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",\"\",\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",\"\",\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",\"\",\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",\"\",\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",\"\",\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",\"\",\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",\"\",\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",\"\",\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",\"\",\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",\"\uD803\uDCC0\"],[[68737,68737],\"mapped\",\"\uD803\uDCC1\"],[[68738,68738],\"mapped\",\"\uD803\uDCC2\"],[[68739,68739],\"mapped\",\"\uD803\uDCC3\"],[[68740,68740],\"mapped\",\"\uD803\uDCC4\"],[[68741,68741],\"mapped\",\"\uD803\uDCC5\"],[[68742,68742],\"mapped\",\"\uD803\uDCC6\"],[[68743,68743],\"mapped\",\"\uD803\uDCC7\"],[[68744,68744],\"mapped\",\"\uD803\uDCC8\"],[[68745,68745],\"mapped\",\"\uD803\uDCC9\"],[[68746,68746],\"mapped\",\"\uD803\uDCCA\"],[[68747,68747],\"mapped\",\"\uD803\uDCCB\"],[[68748,68748],\"mapped\",\"\uD803\uDCCC\"],[[68749,68749],\"mapped\",\"\uD803\uDCCD\"],[[68750,68750],\"mapped\",\"\uD803\uDCCE\"],[[68751,68751],\"mapped\",\"\uD803\uDCCF\"],[[68752,68752],\"mapped\",\"\uD803\uDCD0\"],[[68753,68753],\"mapped\",\"\uD803\uDCD1\"],[[68754,68754],\"mapped\",\"\uD803\uDCD2\"],[[68755,68755],\"mapped\",\"\uD803\uDCD3\"],[[68756,68756],\"mapped\",\"\uD803\uDCD4\"],[[68757,68757],\"mapped\",\"\uD803\uDCD5\"],[[68758,68758],\"mapped\",\"\uD803\uDCD6\"],[[68759,68759],\"mapped\",\"\uD803\uDCD7\"],[[68760,68760],\"mapped\",\"\uD803\uDCD8\"],[[68761,68761],\"mapped\",\"\uD803\uDCD9\"],[[68762,68762],\"mapped\",\"\uD803\uDCDA\"],[[68763,68763],\"mapped\",\"\uD803\uDCDB\"],[[68764,68764],\"mapped\",\"\uD803\uDCDC\"],[[68765,68765],\"mapped\",\"\uD803\uDCDD\"],[[68766,68766],\"mapped\",\"\uD803\uDCDE\"],[[68767,68767],\"mapped\",\"\uD803\uDCDF\"],[[68768,68768],\"mapped\",\"\uD803\uDCE0\"],[[68769,68769],\"mapped\",\"\uD803\uDCE1\"],[[68770,68770],\"mapped\",\"\uD803\uDCE2\"],[[68771,68771],\"mapped\",\"\uD803\uDCE3\"],[[68772,68772],\"mapped\",\"\uD803\uDCE4\"],[[68773,68773],\"mapped\",\"\uD803\uDCE5\"],[[68774,68774],\"mapped\",\"\uD803\uDCE6\"],[[68775,68775],\"mapped\",\"\uD803\uDCE7\"],[[68776,68776],\"mapped\",\"\uD803\uDCE8\"],[[68777,68777],\"mapped\",\"\uD803\uDCE9\"],[[68778,68778],\"mapped\",\"\uD803\uDCEA\"],[[68779,68779],\"mapped\",\"\uD803\uDCEB\"],[[68780,68780],\"mapped\",\"\uD803\uDCEC\"],[[68781,68781],\"mapped\",\"\uD803\uDCED\"],[[68782,68782],\"mapped\",\"\uD803\uDCEE\"],[[68783,68783],\"mapped\",\"\uD803\uDCEF\"],[[68784,68784],\"mapped\",\"\uD803\uDCF0\"],[[68785,68785],\"mapped\",\"\uD803\uDCF1\"],[[68786,68786],\"mapped\",\"\uD803\uDCF2\"],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",\"\",\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",\"\",\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",\"\",\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",\"\",\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",\"\",\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",\"\",\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",\"\",\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",\"\",\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",\"\",\"NV8\"],[[70089,70089],\"valid\",\"\",\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",\"\",\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",\"\",\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",\"\",\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",\"\",\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",\"\",\"NV8\"],[[70206,70206],\"valid\"],[[70207,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",\"\",\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70655],\"disallowed\"],[[70656,70730],\"valid\"],[[70731,70735],\"valid\",\"\",\"NV8\"],[[70736,70745],\"valid\"],[[70746,70746],\"disallowed\"],[[70747,70747],\"valid\",\"\",\"NV8\"],[[70748,70748],\"disallowed\"],[[70749,70749],\"valid\",\"\",\"NV8\"],[[70750,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",\"\",\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",\"\",\"NV8\"],[[71114,71127],\"valid\",\"\",\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",\"\",\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71263],\"disallowed\"],[[71264,71276],\"valid\",\"\",\"NV8\"],[[71277,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",\"\",\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",\"\uD806\uDCC0\"],[[71841,71841],\"mapped\",\"\uD806\uDCC1\"],[[71842,71842],\"mapped\",\"\uD806\uDCC2\"],[[71843,71843],\"mapped\",\"\uD806\uDCC3\"],[[71844,71844],\"mapped\",\"\uD806\uDCC4\"],[[71845,71845],\"mapped\",\"\uD806\uDCC5\"],[[71846,71846],\"mapped\",\"\uD806\uDCC6\"],[[71847,71847],\"mapped\",\"\uD806\uDCC7\"],[[71848,71848],\"mapped\",\"\uD806\uDCC8\"],[[71849,71849],\"mapped\",\"\uD806\uDCC9\"],[[71850,71850],\"mapped\",\"\uD806\uDCCA\"],[[71851,71851],\"mapped\",\"\uD806\uDCCB\"],[[71852,71852],\"mapped\",\"\uD806\uDCCC\"],[[71853,71853],\"mapped\",\"\uD806\uDCCD\"],[[71854,71854],\"mapped\",\"\uD806\uDCCE\"],[[71855,71855],\"mapped\",\"\uD806\uDCCF\"],[[71856,71856],\"mapped\",\"\uD806\uDCD0\"],[[71857,71857],\"mapped\",\"\uD806\uDCD1\"],[[71858,71858],\"mapped\",\"\uD806\uDCD2\"],[[71859,71859],\"mapped\",\"\uD806\uDCD3\"],[[71860,71860],\"mapped\",\"\uD806\uDCD4\"],[[71861,71861],\"mapped\",\"\uD806\uDCD5\"],[[71862,71862],\"mapped\",\"\uD806\uDCD6\"],[[71863,71863],\"mapped\",\"\uD806\uDCD7\"],[[71864,71864],\"mapped\",\"\uD806\uDCD8\"],[[71865,71865],\"mapped\",\"\uD806\uDCD9\"],[[71866,71866],\"mapped\",\"\uD806\uDCDA\"],[[71867,71867],\"mapped\",\"\uD806\uDCDB\"],[[71868,71868],\"mapped\",\"\uD806\uDCDC\"],[[71869,71869],\"mapped\",\"\uD806\uDCDD\"],[[71870,71870],\"mapped\",\"\uD806\uDCDE\"],[[71871,71871],\"mapped\",\"\uD806\uDCDF\"],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",\"\",\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72191],\"disallowed\"],[[72192,72254],\"valid\"],[[72255,72262],\"valid\",\"\",\"NV8\"],[[72263,72263],\"valid\"],[[72264,72271],\"disallowed\"],[[72272,72323],\"valid\"],[[72324,72325],\"disallowed\"],[[72326,72345],\"valid\"],[[72346,72348],\"valid\",\"\",\"NV8\"],[[72349,72349],\"disallowed\"],[[72350,72354],\"valid\",\"\",\"NV8\"],[[72355,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,72703],\"disallowed\"],[[72704,72712],\"valid\"],[[72713,72713],\"disallowed\"],[[72714,72758],\"valid\"],[[72759,72759],\"disallowed\"],[[72760,72768],\"valid\"],[[72769,72773],\"valid\",\"\",\"NV8\"],[[72774,72783],\"disallowed\"],[[72784,72793],\"valid\"],[[72794,72812],\"valid\",\"\",\"NV8\"],[[72813,72815],\"disallowed\"],[[72816,72817],\"valid\",\"\",\"NV8\"],[[72818,72847],\"valid\"],[[72848,72849],\"disallowed\"],[[72850,72871],\"valid\"],[[72872,72872],\"disallowed\"],[[72873,72886],\"valid\"],[[72887,72959],\"disallowed\"],[[72960,72966],\"valid\"],[[72967,72967],\"disallowed\"],[[72968,72969],\"valid\"],[[72970,72970],\"disallowed\"],[[72971,73014],\"valid\"],[[73015,73017],\"disallowed\"],[[73018,73018],\"valid\"],[[73019,73019],\"disallowed\"],[[73020,73021],\"valid\"],[[73022,73022],\"disallowed\"],[[73023,73031],\"valid\"],[[73032,73039],\"disallowed\"],[[73040,73049],\"valid\"],[[73050,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",\"\",\"NV8\"],[[74851,74862],\"valid\",\"\",\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",\"\",\"NV8\"],[[74868,74868],\"valid\",\"\",\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",\"\",\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",\"\",\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",\"\",\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",\"\",\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",\"\",\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,94175],\"disallowed\"],[[94176,94176],\"valid\"],[[94177,94177],\"valid\"],[[94178,94207],\"disallowed\"],[[94208,100332],\"valid\"],[[100333,100351],\"disallowed\"],[[100352,101106],\"valid\"],[[101107,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,110878],\"valid\"],[[110879,110959],\"disallowed\"],[[110960,111355],\"valid\"],[[111356,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",\"\",\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",\"\",\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",\"\",\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",\"\",\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",\"\",\"NV8\"],[[119082,119133],\"valid\",\"\",\"NV8\"],[[119134,119134],\"mapped\",\"\uD834\uDD57\uD834\uDD65\"],[[119135,119135],\"mapped\",\"\uD834\uDD58\uD834\uDD65\"],[[119136,119136],\"mapped\",\"\uD834\uDD58\uD834\uDD65\uD834\uDD6E\"],[[119137,119137],\"mapped\",\"\uD834\uDD58\uD834\uDD65\uD834\uDD6F\"],[[119138,119138],\"mapped\",\"\uD834\uDD58\uD834\uDD65\uD834\uDD70\"],[[119139,119139],\"mapped\",\"\uD834\uDD58\uD834\uDD65\uD834\uDD71\"],[[119140,119140],\"mapped\",\"\uD834\uDD58\uD834\uDD65\uD834\uDD72\"],[[119141,119154],\"valid\",\"\",\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",\"\",\"NV8\"],[[119227,119227],\"mapped\",\"\uD834\uDDB9\uD834\uDD65\"],[[119228,119228],\"mapped\",\"\uD834\uDDBA\uD834\uDD65\"],[[119229,119229],\"mapped\",\"\uD834\uDDB9\uD834\uDD65\uD834\uDD6E\"],[[119230,119230],\"mapped\",\"\uD834\uDDBA\uD834\uDD65\uD834\uDD6E\"],[[119231,119231],\"mapped\",\"\uD834\uDDB9\uD834\uDD65\uD834\uDD6F\"],[[119232,119232],\"mapped\",\"\uD834\uDDBA\uD834\uDD65\uD834\uDD6F\"],[[119233,119261],\"valid\",\"\",\"NV8\"],[[119262,119272],\"valid\",\"\",\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",\"\",\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",\"\",\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",\"\",\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",\"a\"],[[119809,119809],\"mapped\",\"b\"],[[119810,119810],\"mapped\",\"c\"],[[119811,119811],\"mapped\",\"d\"],[[119812,119812],\"mapped\",\"e\"],[[119813,119813],\"mapped\",\"f\"],[[119814,119814],\"mapped\",\"g\"],[[119815,119815],\"mapped\",\"h\"],[[119816,119816],\"mapped\",\"i\"],[[119817,119817],\"mapped\",\"j\"],[[119818,119818],\"mapped\",\"k\"],[[119819,119819],\"mapped\",\"l\"],[[119820,119820],\"mapped\",\"m\"],[[119821,119821],\"mapped\",\"n\"],[[119822,119822],\"mapped\",\"o\"],[[119823,119823],\"mapped\",\"p\"],[[119824,119824],\"mapped\",\"q\"],[[119825,119825],\"mapped\",\"r\"],[[119826,119826],\"mapped\",\"s\"],[[119827,119827],\"mapped\",\"t\"],[[119828,119828],\"mapped\",\"u\"],[[119829,119829],\"mapped\",\"v\"],[[119830,119830],\"mapped\",\"w\"],[[119831,119831],\"mapped\",\"x\"],[[119832,119832],\"mapped\",\"y\"],[[119833,119833],\"mapped\",\"z\"],[[119834,119834],\"mapped\",\"a\"],[[119835,119835],\"mapped\",\"b\"],[[119836,119836],\"mapped\",\"c\"],[[119837,119837],\"mapped\",\"d\"],[[119838,119838],\"mapped\",\"e\"],[[119839,119839],\"mapped\",\"f\"],[[119840,119840],\"mapped\",\"g\"],[[119841,119841],\"mapped\",\"h\"],[[119842,119842],\"mapped\",\"i\"],[[119843,119843],\"mapped\",\"j\"],[[119844,119844],\"mapped\",\"k\"],[[119845,119845],\"mapped\",\"l\"],[[119846,119846],\"mapped\",\"m\"],[[119847,119847],\"mapped\",\"n\"],[[119848,119848],\"mapped\",\"o\"],[[119849,119849],\"mapped\",\"p\"],[[119850,119850],\"mapped\",\"q\"],[[119851,119851],\"mapped\",\"r\"],[[119852,119852],\"mapped\",\"s\"],[[119853,119853],\"mapped\",\"t\"],[[119854,119854],\"mapped\",\"u\"],[[119855,119855],\"mapped\",\"v\"],[[119856,119856],\"mapped\",\"w\"],[[119857,119857],\"mapped\",\"x\"],[[119858,119858],\"mapped\",\"y\"],[[119859,119859],\"mapped\",\"z\"],[[119860,119860],\"mapped\",\"a\"],[[119861,119861],\"mapped\",\"b\"],[[119862,119862],\"mapped\",\"c\"],[[119863,119863],\"mapped\",\"d\"],[[119864,119864],\"mapped\",\"e\"],[[119865,119865],\"mapped\",\"f\"],[[119866,119866],\"mapped\",\"g\"],[[119867,119867],\"mapped\",\"h\"],[[119868,119868],\"mapped\",\"i\"],[[119869,119869],\"mapped\",\"j\"],[[119870,119870],\"mapped\",\"k\"],[[119871,119871],\"mapped\",\"l\"],[[119872,119872],\"mapped\",\"m\"],[[119873,119873],\"mapped\",\"n\"],[[119874,119874],\"mapped\",\"o\"],[[119875,119875],\"mapped\",\"p\"],[[119876,119876],\"mapped\",\"q\"],[[119877,119877],\"mapped\",\"r\"],[[119878,119878],\"mapped\",\"s\"],[[119879,119879],\"mapped\",\"t\"],[[119880,119880],\"mapped\",\"u\"],[[119881,119881],\"mapped\",\"v\"],[[119882,119882],\"mapped\",\"w\"],[[119883,119883],\"mapped\",\"x\"],[[119884,119884],\"mapped\",\"y\"],[[119885,119885],\"mapped\",\"z\"],[[119886,119886],\"mapped\",\"a\"],[[119887,119887],\"mapped\",\"b\"],[[119888,119888],\"mapped\",\"c\"],[[119889,119889],\"mapped\",\"d\"],[[119890,119890],\"mapped\",\"e\"],[[119891,119891],\"mapped\",\"f\"],[[119892,119892],\"mapped\",\"g\"],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",\"i\"],[[119895,119895],\"mapped\",\"j\"],[[119896,119896],\"mapped\",\"k\"],[[119897,119897],\"mapped\",\"l\"],[[119898,119898],\"mapped\",\"m\"],[[119899,119899],\"mapped\",\"n\"],[[119900,119900],\"mapped\",\"o\"],[[119901,119901],\"mapped\",\"p\"],[[119902,119902],\"mapped\",\"q\"],[[119903,119903],\"mapped\",\"r\"],[[119904,119904],\"mapped\",\"s\"],[[119905,119905],\"mapped\",\"t\"],[[119906,119906],\"mapped\",\"u\"],[[119907,119907],\"mapped\",\"v\"],[[119908,119908],\"mapped\",\"w\"],[[119909,119909],\"mapped\",\"x\"],[[119910,119910],\"mapped\",\"y\"],[[119911,119911],\"mapped\",\"z\"],[[119912,119912],\"mapped\",\"a\"],[[119913,119913],\"mapped\",\"b\"],[[119914,119914],\"mapped\",\"c\"],[[119915,119915],\"mapped\",\"d\"],[[119916,119916],\"mapped\",\"e\"],[[119917,119917],\"mapped\",\"f\"],[[119918,119918],\"mapped\",\"g\"],[[119919,119919],\"mapped\",\"h\"],[[119920,119920],\"mapped\",\"i\"],[[119921,119921],\"mapped\",\"j\"],[[119922,119922],\"mapped\",\"k\"],[[119923,119923],\"mapped\",\"l\"],[[119924,119924],\"mapped\",\"m\"],[[119925,119925],\"mapped\",\"n\"],[[119926,119926],\"mapped\",\"o\"],[[119927,119927],\"mapped\",\"p\"],[[119928,119928],\"mapped\",\"q\"],[[119929,119929],\"mapped\",\"r\"],[[119930,119930],\"mapped\",\"s\"],[[119931,119931],\"mapped\",\"t\"],[[119932,119932],\"mapped\",\"u\"],[[119933,119933],\"mapped\",\"v\"],[[119934,119934],\"mapped\",\"w\"],[[119935,119935],\"mapped\",\"x\"],[[119936,119936],\"mapped\",\"y\"],[[119937,119937],\"mapped\",\"z\"],[[119938,119938],\"mapped\",\"a\"],[[119939,119939],\"mapped\",\"b\"],[[119940,119940],\"mapped\",\"c\"],[[119941,119941],\"mapped\",\"d\"],[[119942,119942],\"mapped\",\"e\"],[[119943,119943],\"mapped\",\"f\"],[[119944,119944],\"mapped\",\"g\"],[[119945,119945],\"mapped\",\"h\"],[[119946,119946],\"mapped\",\"i\"],[[119947,119947],\"mapped\",\"j\"],[[119948,119948],\"mapped\",\"k\"],[[119949,119949],\"mapped\",\"l\"],[[119950,119950],\"mapped\",\"m\"],[[119951,119951],\"mapped\",\"n\"],[[119952,119952],\"mapped\",\"o\"],[[119953,119953],\"mapped\",\"p\"],[[119954,119954],\"mapped\",\"q\"],[[119955,119955],\"mapped\",\"r\"],[[119956,119956],\"mapped\",\"s\"],[[119957,119957],\"mapped\",\"t\"],[[119958,119958],\"mapped\",\"u\"],[[119959,119959],\"mapped\",\"v\"],[[119960,119960],\"mapped\",\"w\"],[[119961,119961],\"mapped\",\"x\"],[[119962,119962],\"mapped\",\"y\"],[[119963,119963],\"mapped\",\"z\"],[[119964,119964],\"mapped\",\"a\"],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",\"c\"],[[119967,119967],\"mapped\",\"d\"],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",\"g\"],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",\"j\"],[[119974,119974],\"mapped\",\"k\"],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",\"n\"],[[119978,119978],\"mapped\",\"o\"],[[119979,119979],\"mapped\",\"p\"],[[119980,119980],\"mapped\",\"q\"],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",\"s\"],[[119983,119983],\"mapped\",\"t\"],[[119984,119984],\"mapped\",\"u\"],[[119985,119985],\"mapped\",\"v\"],[[119986,119986],\"mapped\",\"w\"],[[119987,119987],\"mapped\",\"x\"],[[119988,119988],\"mapped\",\"y\"],[[119989,119989],\"mapped\",\"z\"],[[119990,119990],\"mapped\",\"a\"],[[119991,119991],\"mapped\",\"b\"],[[119992,119992],\"mapped\",\"c\"],[[119993,119993],\"mapped\",\"d\"],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",\"f\"],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",\"h\"],[[119998,119998],\"mapped\",\"i\"],[[119999,119999],\"mapped\",\"j\"],[[120000,120000],\"mapped\",\"k\"],[[120001,120001],\"mapped\",\"l\"],[[120002,120002],\"mapped\",\"m\"],[[120003,120003],\"mapped\",\"n\"],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",\"p\"],[[120006,120006],\"mapped\",\"q\"],[[120007,120007],\"mapped\",\"r\"],[[120008,120008],\"mapped\",\"s\"],[[120009,120009],\"mapped\",\"t\"],[[120010,120010],\"mapped\",\"u\"],[[120011,120011],\"mapped\",\"v\"],[[120012,120012],\"mapped\",\"w\"],[[120013,120013],\"mapped\",\"x\"],[[120014,120014],\"mapped\",\"y\"],[[120015,120015],\"mapped\",\"z\"],[[120016,120016],\"mapped\",\"a\"],[[120017,120017],\"mapped\",\"b\"],[[120018,120018],\"mapped\",\"c\"],[[120019,120019],\"mapped\",\"d\"],[[120020,120020],\"mapped\",\"e\"],[[120021,120021],\"mapped\",\"f\"],[[120022,120022],\"mapped\",\"g\"],[[120023,120023],\"mapped\",\"h\"],[[120024,120024],\"mapped\",\"i\"],[[120025,120025],\"mapped\",\"j\"],[[120026,120026],\"mapped\",\"k\"],[[120027,120027],\"mapped\",\"l\"],[[120028,120028],\"mapped\",\"m\"],[[120029,120029],\"mapped\",\"n\"],[[120030,120030],\"mapped\",\"o\"],[[120031,120031],\"mapped\",\"p\"],[[120032,120032],\"mapped\",\"q\"],[[120033,120033],\"mapped\",\"r\"],[[120034,120034],\"mapped\",\"s\"],[[120035,120035],\"mapped\",\"t\"],[[120036,120036],\"mapped\",\"u\"],[[120037,120037],\"mapped\",\"v\"],[[120038,120038],\"mapped\",\"w\"],[[120039,120039],\"mapped\",\"x\"],[[120040,120040],\"mapped\",\"y\"],[[120041,120041],\"mapped\",\"z\"],[[120042,120042],\"mapped\",\"a\"],[[120043,120043],\"mapped\",\"b\"],[[120044,120044],\"mapped\",\"c\"],[[120045,120045],\"mapped\",\"d\"],[[120046,120046],\"mapped\",\"e\"],[[120047,120047],\"mapped\",\"f\"],[[120048,120048],\"mapped\",\"g\"],[[120049,120049],\"mapped\",\"h\"],[[120050,120050],\"mapped\",\"i\"],[[120051,120051],\"mapped\",\"j\"],[[120052,120052],\"mapped\",\"k\"],[[120053,120053],\"mapped\",\"l\"],[[120054,120054],\"mapped\",\"m\"],[[120055,120055],\"mapped\",\"n\"],[[120056,120056],\"mapped\",\"o\"],[[120057,120057],\"mapped\",\"p\"],[[120058,120058],\"mapped\",\"q\"],[[120059,120059],\"mapped\",\"r\"],[[120060,120060],\"mapped\",\"s\"],[[120061,120061],\"mapped\",\"t\"],[[120062,120062],\"mapped\",\"u\"],[[120063,120063],\"mapped\",\"v\"],[[120064,120064],\"mapped\",\"w\"],[[120065,120065],\"mapped\",\"x\"],[[120066,120066],\"mapped\",\"y\"],[[120067,120067],\"mapped\",\"z\"],[[120068,120068],\"mapped\",\"a\"],[[120069,120069],\"mapped\",\"b\"],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",\"d\"],[[120072,120072],\"mapped\",\"e\"],[[120073,120073],\"mapped\",\"f\"],[[120074,120074],\"mapped\",\"g\"],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",\"j\"],[[120078,120078],\"mapped\",\"k\"],[[120079,120079],\"mapped\",\"l\"],[[120080,120080],\"mapped\",\"m\"],[[120081,120081],\"mapped\",\"n\"],[[120082,120082],\"mapped\",\"o\"],[[120083,120083],\"mapped\",\"p\"],[[120084,120084],\"mapped\",\"q\"],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",\"s\"],[[120087,120087],\"mapped\",\"t\"],[[120088,120088],\"mapped\",\"u\"],[[120089,120089],\"mapped\",\"v\"],[[120090,120090],\"mapped\",\"w\"],[[120091,120091],\"mapped\",\"x\"],[[120092,120092],\"mapped\",\"y\"],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",\"a\"],[[120095,120095],\"mapped\",\"b\"],[[120096,120096],\"mapped\",\"c\"],[[120097,120097],\"mapped\",\"d\"],[[120098,120098],\"mapped\",\"e\"],[[120099,120099],\"mapped\",\"f\"],[[120100,120100],\"mapped\",\"g\"],[[120101,120101],\"mapped\",\"h\"],[[120102,120102],\"mapped\",\"i\"],[[120103,120103],\"mapped\",\"j\"],[[120104,120104],\"mapped\",\"k\"],[[120105,120105],\"mapped\",\"l\"],[[120106,120106],\"mapped\",\"m\"],[[120107,120107],\"mapped\",\"n\"],[[120108,120108],\"mapped\",\"o\"],[[120109,120109],\"mapped\",\"p\"],[[120110,120110],\"mapped\",\"q\"],[[120111,120111],\"mapped\",\"r\"],[[120112,120112],\"mapped\",\"s\"],[[120113,120113],\"mapped\",\"t\"],[[120114,120114],\"mapped\",\"u\"],[[120115,120115],\"mapped\",\"v\"],[[120116,120116],\"mapped\",\"w\"],[[120117,120117],\"mapped\",\"x\"],[[120118,120118],\"mapped\",\"y\"],[[120119,120119],\"mapped\",\"z\"],[[120120,120120],\"mapped\",\"a\"],[[120121,120121],\"mapped\",\"b\"],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",\"d\"],[[120124,120124],\"mapped\",\"e\"],[[120125,120125],\"mapped\",\"f\"],[[120126,120126],\"mapped\",\"g\"],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",\"i\"],[[120129,120129],\"mapped\",\"j\"],[[120130,120130],\"mapped\",\"k\"],[[120131,120131],\"mapped\",\"l\"],[[120132,120132],\"mapped\",\"m\"],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",\"o\"],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",\"s\"],[[120139,120139],\"mapped\",\"t\"],[[120140,120140],\"mapped\",\"u\"],[[120141,120141],\"mapped\",\"v\"],[[120142,120142],\"mapped\",\"w\"],[[120143,120143],\"mapped\",\"x\"],[[120144,120144],\"mapped\",\"y\"],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",\"a\"],[[120147,120147],\"mapped\",\"b\"],[[120148,120148],\"mapped\",\"c\"],[[120149,120149],\"mapped\",\"d\"],[[120150,120150],\"mapped\",\"e\"],[[120151,120151],\"mapped\",\"f\"],[[120152,120152],\"mapped\",\"g\"],[[120153,120153],\"mapped\",\"h\"],[[120154,120154],\"mapped\",\"i\"],[[120155,120155],\"mapped\",\"j\"],[[120156,120156],\"mapped\",\"k\"],[[120157,120157],\"mapped\",\"l\"],[[120158,120158],\"mapped\",\"m\"],[[120159,120159],\"mapped\",\"n\"],[[120160,120160],\"mapped\",\"o\"],[[120161,120161],\"mapped\",\"p\"],[[120162,120162],\"mapped\",\"q\"],[[120163,120163],\"mapped\",\"r\"],[[120164,120164],\"mapped\",\"s\"],[[120165,120165],\"mapped\",\"t\"],[[120166,120166],\"mapped\",\"u\"],[[120167,120167],\"mapped\",\"v\"],[[120168,120168],\"mapped\",\"w\"],[[120169,120169],\"mapped\",\"x\"],[[120170,120170],\"mapped\",\"y\"],[[120171,120171],\"mapped\",\"z\"],[[120172,120172],\"mapped\",\"a\"],[[120173,120173],\"mapped\",\"b\"],[[120174,120174],\"mapped\",\"c\"],[[120175,120175],\"mapped\",\"d\"],[[120176,120176],\"mapped\",\"e\"],[[120177,120177],\"mapped\",\"f\"],[[120178,120178],\"mapped\",\"g\"],[[120179,120179],\"mapped\",\"h\"],[[120180,120180],\"mapped\",\"i\"],[[120181,120181],\"mapped\",\"j\"],[[120182,120182],\"mapped\",\"k\"],[[120183,120183],\"mapped\",\"l\"],[[120184,120184],\"mapped\",\"m\"],[[120185,120185],\"mapped\",\"n\"],[[120186,120186],\"mapped\",\"o\"],[[120187,120187],\"mapped\",\"p\"],[[120188,120188],\"mapped\",\"q\"],[[120189,120189],\"mapped\",\"r\"],[[120190,120190],\"mapped\",\"s\"],[[120191,120191],\"mapped\",\"t\"],[[120192,120192],\"mapped\",\"u\"],[[120193,120193],\"mapped\",\"v\"],[[120194,120194],\"mapped\",\"w\"],[[120195,120195],\"mapped\",\"x\"],[[120196,120196],\"mapped\",\"y\"],[[120197,120197],\"mapped\",\"z\"],[[120198,120198],\"mapped\",\"a\"],[[120199,120199],\"mapped\",\"b\"],[[120200,120200],\"mapped\",\"c\"],[[120201,120201],\"mapped\",\"d\"],[[120202,120202],\"mapped\",\"e\"],[[120203,120203],\"mapped\",\"f\"],[[120204,120204],\"mapped\",\"g\"],[[120205,120205],\"mapped\",\"h\"],[[120206,120206],\"mapped\",\"i\"],[[120207,120207],\"mapped\",\"j\"],[[120208,120208],\"mapped\",\"k\"],[[120209,120209],\"mapped\",\"l\"],[[120210,120210],\"mapped\",\"m\"],[[120211,120211],\"mapped\",\"n\"],[[120212,120212],\"mapped\",\"o\"],[[120213,120213],\"mapped\",\"p\"],[[120214,120214],\"mapped\",\"q\"],[[120215,120215],\"mapped\",\"r\"],[[120216,120216],\"mapped\",\"s\"],[[120217,120217],\"mapped\",\"t\"],[[120218,120218],\"mapped\",\"u\"],[[120219,120219],\"mapped\",\"v\"],[[120220,120220],\"mapped\",\"w\"],[[120221,120221],\"mapped\",\"x\"],[[120222,120222],\"mapped\",\"y\"],[[120223,120223],\"mapped\",\"z\"],[[120224,120224],\"mapped\",\"a\"],[[120225,120225],\"mapped\",\"b\"],[[120226,120226],\"mapped\",\"c\"],[[120227,120227],\"mapped\",\"d\"],[[120228,120228],\"mapped\",\"e\"],[[120229,120229],\"mapped\",\"f\"],[[120230,120230],\"mapped\",\"g\"],[[120231,120231],\"mapped\",\"h\"],[[120232,120232],\"mapped\",\"i\"],[[120233,120233],\"mapped\",\"j\"],[[120234,120234],\"mapped\",\"k\"],[[120235,120235],\"mapped\",\"l\"],[[120236,120236],\"mapped\",\"m\"],[[120237,120237],\"mapped\",\"n\"],[[120238,120238],\"mapped\",\"o\"],[[120239,120239],\"mapped\",\"p\"],[[120240,120240],\"mapped\",\"q\"],[[120241,120241],\"mapped\",\"r\"],[[120242,120242],\"mapped\",\"s\"],[[120243,120243],\"mapped\",\"t\"],[[120244,120244],\"mapped\",\"u\"],[[120245,120245],\"mapped\",\"v\"],[[120246,120246],\"mapped\",\"w\"],[[120247,120247],\"mapped\",\"x\"],[[120248,120248],\"mapped\",\"y\"],[[120249,120249],\"mapped\",\"z\"],[[120250,120250],\"mapped\",\"a\"],[[120251,120251],\"mapped\",\"b\"],[[120252,120252],\"mapped\",\"c\"],[[120253,120253],\"mapped\",\"d\"],[[120254,120254],\"mapped\",\"e\"],[[120255,120255],\"mapped\",\"f\"],[[120256,120256],\"mapped\",\"g\"],[[120257,120257],\"mapped\",\"h\"],[[120258,120258],\"mapped\",\"i\"],[[120259,120259],\"mapped\",\"j\"],[[120260,120260],\"mapped\",\"k\"],[[120261,120261],\"mapped\",\"l\"],[[120262,120262],\"mapped\",\"m\"],[[120263,120263],\"mapped\",\"n\"],[[120264,120264],\"mapped\",\"o\"],[[120265,120265],\"mapped\",\"p\"],[[120266,120266],\"mapped\",\"q\"],[[120267,120267],\"mapped\",\"r\"],[[120268,120268],\"mapped\",\"s\"],[[120269,120269],\"mapped\",\"t\"],[[120270,120270],\"mapped\",\"u\"],[[120271,120271],\"mapped\",\"v\"],[[120272,120272],\"mapped\",\"w\"],[[120273,120273],\"mapped\",\"x\"],[[120274,120274],\"mapped\",\"y\"],[[120275,120275],\"mapped\",\"z\"],[[120276,120276],\"mapped\",\"a\"],[[120277,120277],\"mapped\",\"b\"],[[120278,120278],\"mapped\",\"c\"],[[120279,120279],\"mapped\",\"d\"],[[120280,120280],\"mapped\",\"e\"],[[120281,120281],\"mapped\",\"f\"],[[120282,120282],\"mapped\",\"g\"],[[120283,120283],\"mapped\",\"h\"],[[120284,120284],\"mapped\",\"i\"],[[120285,120285],\"mapped\",\"j\"],[[120286,120286],\"mapped\",\"k\"],[[120287,120287],\"mapped\",\"l\"],[[120288,120288],\"mapped\",\"m\"],[[120289,120289],\"mapped\",\"n\"],[[120290,120290],\"mapped\",\"o\"],[[120291,120291],\"mapped\",\"p\"],[[120292,120292],\"mapped\",\"q\"],[[120293,120293],\"mapped\",\"r\"],[[120294,120294],\"mapped\",\"s\"],[[120295,120295],\"mapped\",\"t\"],[[120296,120296],\"mapped\",\"u\"],[[120297,120297],\"mapped\",\"v\"],[[120298,120298],\"mapped\",\"w\"],[[120299,120299],\"mapped\",\"x\"],[[120300,120300],\"mapped\",\"y\"],[[120301,120301],\"mapped\",\"z\"],[[120302,120302],\"mapped\",\"a\"],[[120303,120303],\"mapped\",\"b\"],[[120304,120304],\"mapped\",\"c\"],[[120305,120305],\"mapped\",\"d\"],[[120306,120306],\"mapped\",\"e\"],[[120307,120307],\"mapped\",\"f\"],[[120308,120308],\"mapped\",\"g\"],[[120309,120309],\"mapped\",\"h\"],[[120310,120310],\"mapped\",\"i\"],[[120311,120311],\"mapped\",\"j\"],[[120312,120312],\"mapped\",\"k\"],[[120313,120313],\"mapped\",\"l\"],[[120314,120314],\"mapped\",\"m\"],[[120315,120315],\"mapped\",\"n\"],[[120316,120316],\"mapped\",\"o\"],[[120317,120317],\"mapped\",\"p\"],[[120318,120318],\"mapped\",\"q\"],[[120319,120319],\"mapped\",\"r\"],[[120320,120320],\"mapped\",\"s\"],[[120321,120321],\"mapped\",\"t\"],[[120322,120322],\"mapped\",\"u\"],[[120323,120323],\"mapped\",\"v\"],[[120324,120324],\"mapped\",\"w\"],[[120325,120325],\"mapped\",\"x\"],[[120326,120326],\"mapped\",\"y\"],[[120327,120327],\"mapped\",\"z\"],[[120328,120328],\"mapped\",\"a\"],[[120329,120329],\"mapped\",\"b\"],[[120330,120330],\"mapped\",\"c\"],[[120331,120331],\"mapped\",\"d\"],[[120332,120332],\"mapped\",\"e\"],[[120333,120333],\"mapped\",\"f\"],[[120334,120334],\"mapped\",\"g\"],[[120335,120335],\"mapped\",\"h\"],[[120336,120336],\"mapped\",\"i\"],[[120337,120337],\"mapped\",\"j\"],[[120338,120338],\"mapped\",\"k\"],[[120339,120339],\"mapped\",\"l\"],[[120340,120340],\"mapped\",\"m\"],[[120341,120341],\"mapped\",\"n\"],[[120342,120342],\"mapped\",\"o\"],[[120343,120343],\"mapped\",\"p\"],[[120344,120344],\"mapped\",\"q\"],[[120345,120345],\"mapped\",\"r\"],[[120346,120346],\"mapped\",\"s\"],[[120347,120347],\"mapped\",\"t\"],[[120348,120348],\"mapped\",\"u\"],[[120349,120349],\"mapped\",\"v\"],[[120350,120350],\"mapped\",\"w\"],[[120351,120351],\"mapped\",\"x\"],[[120352,120352],\"mapped\",\"y\"],[[120353,120353],\"mapped\",\"z\"],[[120354,120354],\"mapped\",\"a\"],[[120355,120355],\"mapped\",\"b\"],[[120356,120356],\"mapped\",\"c\"],[[120357,120357],\"mapped\",\"d\"],[[120358,120358],\"mapped\",\"e\"],[[120359,120359],\"mapped\",\"f\"],[[120360,120360],\"mapped\",\"g\"],[[120361,120361],\"mapped\",\"h\"],[[120362,120362],\"mapped\",\"i\"],[[120363,120363],\"mapped\",\"j\"],[[120364,120364],\"mapped\",\"k\"],[[120365,120365],\"mapped\",\"l\"],[[120366,120366],\"mapped\",\"m\"],[[120367,120367],\"mapped\",\"n\"],[[120368,120368],\"mapped\",\"o\"],[[120369,120369],\"mapped\",\"p\"],[[120370,120370],\"mapped\",\"q\"],[[120371,120371],\"mapped\",\"r\"],[[120372,120372],\"mapped\",\"s\"],[[120373,120373],\"mapped\",\"t\"],[[120374,120374],\"mapped\",\"u\"],[[120375,120375],\"mapped\",\"v\"],[[120376,120376],\"mapped\",\"w\"],[[120377,120377],\"mapped\",\"x\"],[[120378,120378],\"mapped\",\"y\"],[[120379,120379],\"mapped\",\"z\"],[[120380,120380],\"mapped\",\"a\"],[[120381,120381],\"mapped\",\"b\"],[[120382,120382],\"mapped\",\"c\"],[[120383,120383],\"mapped\",\"d\"],[[120384,120384],\"mapped\",\"e\"],[[120385,120385],\"mapped\",\"f\"],[[120386,120386],\"mapped\",\"g\"],[[120387,120387],\"mapped\",\"h\"],[[120388,120388],\"mapped\",\"i\"],[[120389,120389],\"mapped\",\"j\"],[[120390,120390],\"mapped\",\"k\"],[[120391,120391],\"mapped\",\"l\"],[[120392,120392],\"mapped\",\"m\"],[[120393,120393],\"mapped\",\"n\"],[[120394,120394],\"mapped\",\"o\"],[[120395,120395],\"mapped\",\"p\"],[[120396,120396],\"mapped\",\"q\"],[[120397,120397],\"mapped\",\"r\"],[[120398,120398],\"mapped\",\"s\"],[[120399,120399],\"mapped\",\"t\"],[[120400,120400],\"mapped\",\"u\"],[[120401,120401],\"mapped\",\"v\"],[[120402,120402],\"mapped\",\"w\"],[[120403,120403],\"mapped\",\"x\"],[[120404,120404],\"mapped\",\"y\"],[[120405,120405],\"mapped\",\"z\"],[[120406,120406],\"mapped\",\"a\"],[[120407,120407],\"mapped\",\"b\"],[[120408,120408],\"mapped\",\"c\"],[[120409,120409],\"mapped\",\"d\"],[[120410,120410],\"mapped\",\"e\"],[[120411,120411],\"mapped\",\"f\"],[[120412,120412],\"mapped\",\"g\"],[[120413,120413],\"mapped\",\"h\"],[[120414,120414],\"mapped\",\"i\"],[[120415,120415],\"mapped\",\"j\"],[[120416,120416],\"mapped\",\"k\"],[[120417,120417],\"mapped\",\"l\"],[[120418,120418],\"mapped\",\"m\"],[[120419,120419],\"mapped\",\"n\"],[[120420,120420],\"mapped\",\"o\"],[[120421,120421],\"mapped\",\"p\"],[[120422,120422],\"mapped\",\"q\"],[[120423,120423],\"mapped\",\"r\"],[[120424,120424],\"mapped\",\"s\"],[[120425,120425],\"mapped\",\"t\"],[[120426,120426],\"mapped\",\"u\"],[[120427,120427],\"mapped\",\"v\"],[[120428,120428],\"mapped\",\"w\"],[[120429,120429],\"mapped\",\"x\"],[[120430,120430],\"mapped\",\"y\"],[[120431,120431],\"mapped\",\"z\"],[[120432,120432],\"mapped\",\"a\"],[[120433,120433],\"mapped\",\"b\"],[[120434,120434],\"mapped\",\"c\"],[[120435,120435],\"mapped\",\"d\"],[[120436,120436],\"mapped\",\"e\"],[[120437,120437],\"mapped\",\"f\"],[[120438,120438],\"mapped\",\"g\"],[[120439,120439],\"mapped\",\"h\"],[[120440,120440],\"mapped\",\"i\"],[[120441,120441],\"mapped\",\"j\"],[[120442,120442],\"mapped\",\"k\"],[[120443,120443],\"mapped\",\"l\"],[[120444,120444],\"mapped\",\"m\"],[[120445,120445],\"mapped\",\"n\"],[[120446,120446],\"mapped\",\"o\"],[[120447,120447],\"mapped\",\"p\"],[[120448,120448],\"mapped\",\"q\"],[[120449,120449],\"mapped\",\"r\"],[[120450,120450],\"mapped\",\"s\"],[[120451,120451],\"mapped\",\"t\"],[[120452,120452],\"mapped\",\"u\"],[[120453,120453],\"mapped\",\"v\"],[[120454,120454],\"mapped\",\"w\"],[[120455,120455],\"mapped\",\"x\"],[[120456,120456],\"mapped\",\"y\"],[[120457,120457],\"mapped\",\"z\"],[[120458,120458],\"mapped\",\"a\"],[[120459,120459],\"mapped\",\"b\"],[[120460,120460],\"mapped\",\"c\"],[[120461,120461],\"mapped\",\"d\"],[[120462,120462],\"mapped\",\"e\"],[[120463,120463],\"mapped\",\"f\"],[[120464,120464],\"mapped\",\"g\"],[[120465,120465],\"mapped\",\"h\"],[[120466,120466],\"mapped\",\"i\"],[[120467,120467],\"mapped\",\"j\"],[[120468,120468],\"mapped\",\"k\"],[[120469,120469],\"mapped\",\"l\"],[[120470,120470],\"mapped\",\"m\"],[[120471,120471],\"mapped\",\"n\"],[[120472,120472],\"mapped\",\"o\"],[[120473,120473],\"mapped\",\"p\"],[[120474,120474],\"mapped\",\"q\"],[[120475,120475],\"mapped\",\"r\"],[[120476,120476],\"mapped\",\"s\"],[[120477,120477],\"mapped\",\"t\"],[[120478,120478],\"mapped\",\"u\"],[[120479,120479],\"mapped\",\"v\"],[[120480,120480],\"mapped\",\"w\"],[[120481,120481],\"mapped\",\"x\"],[[120482,120482],\"mapped\",\"y\"],[[120483,120483],\"mapped\",\"z\"],[[120484,120484],\"mapped\",\"\u0131\"],[[120485,120485],\"mapped\",\"\u0237\"],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",\"\u03B1\"],[[120489,120489],\"mapped\",\"\u03B2\"],[[120490,120490],\"mapped\",\"\u03B3\"],[[120491,120491],\"mapped\",\"\u03B4\"],[[120492,120492],\"mapped\",\"\u03B5\"],[[120493,120493],\"mapped\",\"\u03B6\"],[[120494,120494],\"mapped\",\"\u03B7\"],[[120495,120495],\"mapped\",\"\u03B8\"],[[120496,120496],\"mapped\",\"\u03B9\"],[[120497,120497],\"mapped\",\"\u03BA\"],[[120498,120498],\"mapped\",\"\u03BB\"],[[120499,120499],\"mapped\",\"\u03BC\"],[[120500,120500],\"mapped\",\"\u03BD\"],[[120501,120501],\"mapped\",\"\u03BE\"],[[120502,120502],\"mapped\",\"\u03BF\"],[[120503,120503],\"mapped\",\"\u03C0\"],[[120504,120504],\"mapped\",\"\u03C1\"],[[120505,120505],\"mapped\",\"\u03B8\"],[[120506,120506],\"mapped\",\"\u03C3\"],[[120507,120507],\"mapped\",\"\u03C4\"],[[120508,120508],\"mapped\",\"\u03C5\"],[[120509,120509],\"mapped\",\"\u03C6\"],[[120510,120510],\"mapped\",\"\u03C7\"],[[120511,120511],\"mapped\",\"\u03C8\"],[[120512,120512],\"mapped\",\"\u03C9\"],[[120513,120513],\"mapped\",\"\u2207\"],[[120514,120514],\"mapped\",\"\u03B1\"],[[120515,120515],\"mapped\",\"\u03B2\"],[[120516,120516],\"mapped\",\"\u03B3\"],[[120517,120517],\"mapped\",\"\u03B4\"],[[120518,120518],\"mapped\",\"\u03B5\"],[[120519,120519],\"mapped\",\"\u03B6\"],[[120520,120520],\"mapped\",\"\u03B7\"],[[120521,120521],\"mapped\",\"\u03B8\"],[[120522,120522],\"mapped\",\"\u03B9\"],[[120523,120523],\"mapped\",\"\u03BA\"],[[120524,120524],\"mapped\",\"\u03BB\"],[[120525,120525],\"mapped\",\"\u03BC\"],[[120526,120526],\"mapped\",\"\u03BD\"],[[120527,120527],\"mapped\",\"\u03BE\"],[[120528,120528],\"mapped\",\"\u03BF\"],[[120529,120529],\"mapped\",\"\u03C0\"],[[120530,120530],\"mapped\",\"\u03C1\"],[[120531,120532],\"mapped\",\"\u03C3\"],[[120533,120533],\"mapped\",\"\u03C4\"],[[120534,120534],\"mapped\",\"\u03C5\"],[[120535,120535],\"mapped\",\"\u03C6\"],[[120536,120536],\"mapped\",\"\u03C7\"],[[120537,120537],\"mapped\",\"\u03C8\"],[[120538,120538],\"mapped\",\"\u03C9\"],[[120539,120539],\"mapped\",\"\u2202\"],[[120540,120540],\"mapped\",\"\u03B5\"],[[120541,120541],\"mapped\",\"\u03B8\"],[[120542,120542],\"mapped\",\"\u03BA\"],[[120543,120543],\"mapped\",\"\u03C6\"],[[120544,120544],\"mapped\",\"\u03C1\"],[[120545,120545],\"mapped\",\"\u03C0\"],[[120546,120546],\"mapped\",\"\u03B1\"],[[120547,120547],\"mapped\",\"\u03B2\"],[[120548,120548],\"mapped\",\"\u03B3\"],[[120549,120549],\"mapped\",\"\u03B4\"],[[120550,120550],\"mapped\",\"\u03B5\"],[[120551,120551],\"mapped\",\"\u03B6\"],[[120552,120552],\"mapped\",\"\u03B7\"],[[120553,120553],\"mapped\",\"\u03B8\"],[[120554,120554],\"mapped\",\"\u03B9\"],[[120555,120555],\"mapped\",\"\u03BA\"],[[120556,120556],\"mapped\",\"\u03BB\"],[[120557,120557],\"mapped\",\"\u03BC\"],[[120558,120558],\"mapped\",\"\u03BD\"],[[120559,120559],\"mapped\",\"\u03BE\"],[[120560,120560],\"mapped\",\"\u03BF\"],[[120561,120561],\"mapped\",\"\u03C0\"],[[120562,120562],\"mapped\",\"\u03C1\"],[[120563,120563],\"mapped\",\"\u03B8\"],[[120564,120564],\"mapped\",\"\u03C3\"],[[120565,120565],\"mapped\",\"\u03C4\"],[[120566,120566],\"mapped\",\"\u03C5\"],[[120567,120567],\"mapped\",\"\u03C6\"],[[120568,120568],\"mapped\",\"\u03C7\"],[[120569,120569],\"mapped\",\"\u03C8\"],[[120570,120570],\"mapped\",\"\u03C9\"],[[120571,120571],\"mapped\",\"\u2207\"],[[120572,120572],\"mapped\",\"\u03B1\"],[[120573,120573],\"mapped\",\"\u03B2\"],[[120574,120574],\"mapped\",\"\u03B3\"],[[120575,120575],\"mapped\",\"\u03B4\"],[[120576,120576],\"mapped\",\"\u03B5\"],[[120577,120577],\"mapped\",\"\u03B6\"],[[120578,120578],\"mapped\",\"\u03B7\"],[[120579,120579],\"mapped\",\"\u03B8\"],[[120580,120580],\"mapped\",\"\u03B9\"],[[120581,120581],\"mapped\",\"\u03BA\"],[[120582,120582],\"mapped\",\"\u03BB\"],[[120583,120583],\"mapped\",\"\u03BC\"],[[120584,120584],\"mapped\",\"\u03BD\"],[[120585,120585],\"mapped\",\"\u03BE\"],[[120586,120586],\"mapped\",\"\u03BF\"],[[120587,120587],\"mapped\",\"\u03C0\"],[[120588,120588],\"mapped\",\"\u03C1\"],[[120589,120590],\"mapped\",\"\u03C3\"],[[120591,120591],\"mapped\",\"\u03C4\"],[[120592,120592],\"mapped\",\"\u03C5\"],[[120593,120593],\"mapped\",\"\u03C6\"],[[120594,120594],\"mapped\",\"\u03C7\"],[[120595,120595],\"mapped\",\"\u03C8\"],[[120596,120596],\"mapped\",\"\u03C9\"],[[120597,120597],\"mapped\",\"\u2202\"],[[120598,120598],\"mapped\",\"\u03B5\"],[[120599,120599],\"mapped\",\"\u03B8\"],[[120600,120600],\"mapped\",\"\u03BA\"],[[120601,120601],\"mapped\",\"\u03C6\"],[[120602,120602],\"mapped\",\"\u03C1\"],[[120603,120603],\"mapped\",\"\u03C0\"],[[120604,120604],\"mapped\",\"\u03B1\"],[[120605,120605],\"mapped\",\"\u03B2\"],[[120606,120606],\"mapped\",\"\u03B3\"],[[120607,120607],\"mapped\",\"\u03B4\"],[[120608,120608],\"mapped\",\"\u03B5\"],[[120609,120609],\"mapped\",\"\u03B6\"],[[120610,120610],\"mapped\",\"\u03B7\"],[[120611,120611],\"mapped\",\"\u03B8\"],[[120612,120612],\"mapped\",\"\u03B9\"],[[120613,120613],\"mapped\",\"\u03BA\"],[[120614,120614],\"mapped\",\"\u03BB\"],[[120615,120615],\"mapped\",\"\u03BC\"],[[120616,120616],\"mapped\",\"\u03BD\"],[[120617,120617],\"mapped\",\"\u03BE\"],[[120618,120618],\"mapped\",\"\u03BF\"],[[120619,120619],\"mapped\",\"\u03C0\"],[[120620,120620],\"mapped\",\"\u03C1\"],[[120621,120621],\"mapped\",\"\u03B8\"],[[120622,120622],\"mapped\",\"\u03C3\"],[[120623,120623],\"mapped\",\"\u03C4\"],[[120624,120624],\"mapped\",\"\u03C5\"],[[120625,120625],\"mapped\",\"\u03C6\"],[[120626,120626],\"mapped\",\"\u03C7\"],[[120627,120627],\"mapped\",\"\u03C8\"],[[120628,120628],\"mapped\",\"\u03C9\"],[[120629,120629],\"mapped\",\"\u2207\"],[[120630,120630],\"mapped\",\"\u03B1\"],[[120631,120631],\"mapped\",\"\u03B2\"],[[120632,120632],\"mapped\",\"\u03B3\"],[[120633,120633],\"mapped\",\"\u03B4\"],[[120634,120634],\"mapped\",\"\u03B5\"],[[120635,120635],\"mapped\",\"\u03B6\"],[[120636,120636],\"mapped\",\"\u03B7\"],[[120637,120637],\"mapped\",\"\u03B8\"],[[120638,120638],\"mapped\",\"\u03B9\"],[[120639,120639],\"mapped\",\"\u03BA\"],[[120640,120640],\"mapped\",\"\u03BB\"],[[120641,120641],\"mapped\",\"\u03BC\"],[[120642,120642],\"mapped\",\"\u03BD\"],[[120643,120643],\"mapped\",\"\u03BE\"],[[120644,120644],\"mapped\",\"\u03BF\"],[[120645,120645],\"mapped\",\"\u03C0\"],[[120646,120646],\"mapped\",\"\u03C1\"],[[120647,120648],\"mapped\",\"\u03C3\"],[[120649,120649],\"mapped\",\"\u03C4\"],[[120650,120650],\"mapped\",\"\u03C5\"],[[120651,120651],\"mapped\",\"\u03C6\"],[[120652,120652],\"mapped\",\"\u03C7\"],[[120653,120653],\"mapped\",\"\u03C8\"],[[120654,120654],\"mapped\",\"\u03C9\"],[[120655,120655],\"mapped\",\"\u2202\"],[[120656,120656],\"mapped\",\"\u03B5\"],[[120657,120657],\"mapped\",\"\u03B8\"],[[120658,120658],\"mapped\",\"\u03BA\"],[[120659,120659],\"mapped\",\"\u03C6\"],[[120660,120660],\"mapped\",\"\u03C1\"],[[120661,120661],\"mapped\",\"\u03C0\"],[[120662,120662],\"mapped\",\"\u03B1\"],[[120663,120663],\"mapped\",\"\u03B2\"],[[120664,120664],\"mapped\",\"\u03B3\"],[[120665,120665],\"mapped\",\"\u03B4\"],[[120666,120666],\"mapped\",\"\u03B5\"],[[120667,120667],\"mapped\",\"\u03B6\"],[[120668,120668],\"mapped\",\"\u03B7\"],[[120669,120669],\"mapped\",\"\u03B8\"],[[120670,120670],\"mapped\",\"\u03B9\"],[[120671,120671],\"mapped\",\"\u03BA\"],[[120672,120672],\"mapped\",\"\u03BB\"],[[120673,120673],\"mapped\",\"\u03BC\"],[[120674,120674],\"mapped\",\"\u03BD\"],[[120675,120675],\"mapped\",\"\u03BE\"],[[120676,120676],\"mapped\",\"\u03BF\"],[[120677,120677],\"mapped\",\"\u03C0\"],[[120678,120678],\"mapped\",\"\u03C1\"],[[120679,120679],\"mapped\",\"\u03B8\"],[[120680,120680],\"mapped\",\"\u03C3\"],[[120681,120681],\"mapped\",\"\u03C4\"],[[120682,120682],\"mapped\",\"\u03C5\"],[[120683,120683],\"mapped\",\"\u03C6\"],[[120684,120684],\"mapped\",\"\u03C7\"],[[120685,120685],\"mapped\",\"\u03C8\"],[[120686,120686],\"mapped\",\"\u03C9\"],[[120687,120687],\"mapped\",\"\u2207\"],[[120688,120688],\"mapped\",\"\u03B1\"],[[120689,120689],\"mapped\",\"\u03B2\"],[[120690,120690],\"mapped\",\"\u03B3\"],[[120691,120691],\"mapped\",\"\u03B4\"],[[120692,120692],\"mapped\",\"\u03B5\"],[[120693,120693],\"mapped\",\"\u03B6\"],[[120694,120694],\"mapped\",\"\u03B7\"],[[120695,120695],\"mapped\",\"\u03B8\"],[[120696,120696],\"mapped\",\"\u03B9\"],[[120697,120697],\"mapped\",\"\u03BA\"],[[120698,120698],\"mapped\",\"\u03BB\"],[[120699,120699],\"mapped\",\"\u03BC\"],[[120700,120700],\"mapped\",\"\u03BD\"],[[120701,120701],\"mapped\",\"\u03BE\"],[[120702,120702],\"mapped\",\"\u03BF\"],[[120703,120703],\"mapped\",\"\u03C0\"],[[120704,120704],\"mapped\",\"\u03C1\"],[[120705,120706],\"mapped\",\"\u03C3\"],[[120707,120707],\"mapped\",\"\u03C4\"],[[120708,120708],\"mapped\",\"\u03C5\"],[[120709,120709],\"mapped\",\"\u03C6\"],[[120710,120710],\"mapped\",\"\u03C7\"],[[120711,120711],\"mapped\",\"\u03C8\"],[[120712,120712],\"mapped\",\"\u03C9\"],[[120713,120713],\"mapped\",\"\u2202\"],[[120714,120714],\"mapped\",\"\u03B5\"],[[120715,120715],\"mapped\",\"\u03B8\"],[[120716,120716],\"mapped\",\"\u03BA\"],[[120717,120717],\"mapped\",\"\u03C6\"],[[120718,120718],\"mapped\",\"\u03C1\"],[[120719,120719],\"mapped\",\"\u03C0\"],[[120720,120720],\"mapped\",\"\u03B1\"],[[120721,120721],\"mapped\",\"\u03B2\"],[[120722,120722],\"mapped\",\"\u03B3\"],[[120723,120723],\"mapped\",\"\u03B4\"],[[120724,120724],\"mapped\",\"\u03B5\"],[[120725,120725],\"mapped\",\"\u03B6\"],[[120726,120726],\"mapped\",\"\u03B7\"],[[120727,120727],\"mapped\",\"\u03B8\"],[[120728,120728],\"mapped\",\"\u03B9\"],[[120729,120729],\"mapped\",\"\u03BA\"],[[120730,120730],\"mapped\",\"\u03BB\"],[[120731,120731],\"mapped\",\"\u03BC\"],[[120732,120732],\"mapped\",\"\u03BD\"],[[120733,120733],\"mapped\",\"\u03BE\"],[[120734,120734],\"mapped\",\"\u03BF\"],[[120735,120735],\"mapped\",\"\u03C0\"],[[120736,120736],\"mapped\",\"\u03C1\"],[[120737,120737],\"mapped\",\"\u03B8\"],[[120738,120738],\"mapped\",\"\u03C3\"],[[120739,120739],\"mapped\",\"\u03C4\"],[[120740,120740],\"mapped\",\"\u03C5\"],[[120741,120741],\"mapped\",\"\u03C6\"],[[120742,120742],\"mapped\",\"\u03C7\"],[[120743,120743],\"mapped\",\"\u03C8\"],[[120744,120744],\"mapped\",\"\u03C9\"],[[120745,120745],\"mapped\",\"\u2207\"],[[120746,120746],\"mapped\",\"\u03B1\"],[[120747,120747],\"mapped\",\"\u03B2\"],[[120748,120748],\"mapped\",\"\u03B3\"],[[120749,120749],\"mapped\",\"\u03B4\"],[[120750,120750],\"mapped\",\"\u03B5\"],[[120751,120751],\"mapped\",\"\u03B6\"],[[120752,120752],\"mapped\",\"\u03B7\"],[[120753,120753],\"mapped\",\"\u03B8\"],[[120754,120754],\"mapped\",\"\u03B9\"],[[120755,120755],\"mapped\",\"\u03BA\"],[[120756,120756],\"mapped\",\"\u03BB\"],[[120757,120757],\"mapped\",\"\u03BC\"],[[120758,120758],\"mapped\",\"\u03BD\"],[[120759,120759],\"mapped\",\"\u03BE\"],[[120760,120760],\"mapped\",\"\u03BF\"],[[120761,120761],\"mapped\",\"\u03C0\"],[[120762,120762],\"mapped\",\"\u03C1\"],[[120763,120764],\"mapped\",\"\u03C3\"],[[120765,120765],\"mapped\",\"\u03C4\"],[[120766,120766],\"mapped\",\"\u03C5\"],[[120767,120767],\"mapped\",\"\u03C6\"],[[120768,120768],\"mapped\",\"\u03C7\"],[[120769,120769],\"mapped\",\"\u03C8\"],[[120770,120770],\"mapped\",\"\u03C9\"],[[120771,120771],\"mapped\",\"\u2202\"],[[120772,120772],\"mapped\",\"\u03B5\"],[[120773,120773],\"mapped\",\"\u03B8\"],[[120774,120774],\"mapped\",\"\u03BA\"],[[120775,120775],\"mapped\",\"\u03C6\"],[[120776,120776],\"mapped\",\"\u03C1\"],[[120777,120777],\"mapped\",\"\u03C0\"],[[120778,120779],\"mapped\",\"\u03DD\"],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",\"0\"],[[120783,120783],\"mapped\",\"1\"],[[120784,120784],\"mapped\",\"2\"],[[120785,120785],\"mapped\",\"3\"],[[120786,120786],\"mapped\",\"4\"],[[120787,120787],\"mapped\",\"5\"],[[120788,120788],\"mapped\",\"6\"],[[120789,120789],\"mapped\",\"7\"],[[120790,120790],\"mapped\",\"8\"],[[120791,120791],\"mapped\",\"9\"],[[120792,120792],\"mapped\",\"0\"],[[120793,120793],\"mapped\",\"1\"],[[120794,120794],\"mapped\",\"2\"],[[120795,120795],\"mapped\",\"3\"],[[120796,120796],\"mapped\",\"4\"],[[120797,120797],\"mapped\",\"5\"],[[120798,120798],\"mapped\",\"6\"],[[120799,120799],\"mapped\",\"7\"],[[120800,120800],\"mapped\",\"8\"],[[120801,120801],\"mapped\",\"9\"],[[120802,120802],\"mapped\",\"0\"],[[120803,120803],\"mapped\",\"1\"],[[120804,120804],\"mapped\",\"2\"],[[120805,120805],\"mapped\",\"3\"],[[120806,120806],\"mapped\",\"4\"],[[120807,120807],\"mapped\",\"5\"],[[120808,120808],\"mapped\",\"6\"],[[120809,120809],\"mapped\",\"7\"],[[120810,120810],\"mapped\",\"8\"],[[120811,120811],\"mapped\",\"9\"],[[120812,120812],\"mapped\",\"0\"],[[120813,120813],\"mapped\",\"1\"],[[120814,120814],\"mapped\",\"2\"],[[120815,120815],\"mapped\",\"3\"],[[120816,120816],\"mapped\",\"4\"],[[120817,120817],\"mapped\",\"5\"],[[120818,120818],\"mapped\",\"6\"],[[120819,120819],\"mapped\",\"7\"],[[120820,120820],\"mapped\",\"8\"],[[120821,120821],\"mapped\",\"9\"],[[120822,120822],\"mapped\",\"0\"],[[120823,120823],\"mapped\",\"1\"],[[120824,120824],\"mapped\",\"2\"],[[120825,120825],\"mapped\",\"3\"],[[120826,120826],\"mapped\",\"4\"],[[120827,120827],\"mapped\",\"5\"],[[120828,120828],\"mapped\",\"6\"],[[120829,120829],\"mapped\",\"7\"],[[120830,120830],\"mapped\",\"8\"],[[120831,120831],\"mapped\",\"9\"],[[120832,121343],\"valid\",\"\",\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",\"\",\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",\"\",\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",\"\",\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",\"\",\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,122879],\"disallowed\"],[[122880,122886],\"valid\"],[[122887,122887],\"disallowed\"],[[122888,122904],\"valid\"],[[122905,122906],\"disallowed\"],[[122907,122913],\"valid\"],[[122914,122914],\"disallowed\"],[[122915,122916],\"valid\"],[[122917,122917],\"disallowed\"],[[122918,122922],\"valid\"],[[122923,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",\"\",\"NV8\"],[[125136,125142],\"valid\"],[[125143,125183],\"disallowed\"],[[125184,125184],\"mapped\",\"\uD83A\uDD22\"],[[125185,125185],\"mapped\",\"\uD83A\uDD23\"],[[125186,125186],\"mapped\",\"\uD83A\uDD24\"],[[125187,125187],\"mapped\",\"\uD83A\uDD25\"],[[125188,125188],\"mapped\",\"\uD83A\uDD26\"],[[125189,125189],\"mapped\",\"\uD83A\uDD27\"],[[125190,125190],\"mapped\",\"\uD83A\uDD28\"],[[125191,125191],\"mapped\",\"\uD83A\uDD29\"],[[125192,125192],\"mapped\",\"\uD83A\uDD2A\"],[[125193,125193],\"mapped\",\"\uD83A\uDD2B\"],[[125194,125194],\"mapped\",\"\uD83A\uDD2C\"],[[125195,125195],\"mapped\",\"\uD83A\uDD2D\"],[[125196,125196],\"mapped\",\"\uD83A\uDD2E\"],[[125197,125197],\"mapped\",\"\uD83A\uDD2F\"],[[125198,125198],\"mapped\",\"\uD83A\uDD30\"],[[125199,125199],\"mapped\",\"\uD83A\uDD31\"],[[125200,125200],\"mapped\",\"\uD83A\uDD32\"],[[125201,125201],\"mapped\",\"\uD83A\uDD33\"],[[125202,125202],\"mapped\",\"\uD83A\uDD34\"],[[125203,125203],\"mapped\",\"\uD83A\uDD35\"],[[125204,125204],\"mapped\",\"\uD83A\uDD36\"],[[125205,125205],\"mapped\",\"\uD83A\uDD37\"],[[125206,125206],\"mapped\",\"\uD83A\uDD38\"],[[125207,125207],\"mapped\",\"\uD83A\uDD39\"],[[125208,125208],\"mapped\",\"\uD83A\uDD3A\"],[[125209,125209],\"mapped\",\"\uD83A\uDD3B\"],[[125210,125210],\"mapped\",\"\uD83A\uDD3C\"],[[125211,125211],\"mapped\",\"\uD83A\uDD3D\"],[[125212,125212],\"mapped\",\"\uD83A\uDD3E\"],[[125213,125213],\"mapped\",\"\uD83A\uDD3F\"],[[125214,125214],\"mapped\",\"\uD83A\uDD40\"],[[125215,125215],\"mapped\",\"\uD83A\uDD41\"],[[125216,125216],\"mapped\",\"\uD83A\uDD42\"],[[125217,125217],\"mapped\",\"\uD83A\uDD43\"],[[125218,125258],\"valid\"],[[125259,125263],\"disallowed\"],[[125264,125273],\"valid\"],[[125274,125277],\"disallowed\"],[[125278,125279],\"valid\",\"\",\"NV8\"],[[125280,126463],\"disallowed\"],[[126464,126464],\"mapped\",\"\u0627\"],[[126465,126465],\"mapped\",\"\u0628\"],[[126466,126466],\"mapped\",\"\u062C\"],[[126467,126467],\"mapped\",\"\u062F\"],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",\"\u0648\"],[[126470,126470],\"mapped\",\"\u0632\"],[[126471,126471],\"mapped\",\"\u062D\"],[[126472,126472],\"mapped\",\"\u0637\"],[[126473,126473],\"mapped\",\"\u064A\"],[[126474,126474],\"mapped\",\"\u0643\"],[[126475,126475],\"mapped\",\"\u0644\"],[[126476,126476],\"mapped\",\"\u0645\"],[[126477,126477],\"mapped\",\"\u0646\"],[[126478,126478],\"mapped\",\"\u0633\"],[[126479,126479],\"mapped\",\"\u0639\"],[[126480,126480],\"mapped\",\"\u0641\"],[[126481,126481],\"mapped\",\"\u0635\"],[[126482,126482],\"mapped\",\"\u0642\"],[[126483,126483],\"mapped\",\"\u0631\"],[[126484,126484],\"mapped\",\"\u0634\"],[[126485,126485],\"mapped\",\"\u062A\"],[[126486,126486],\"mapped\",\"\u062B\"],[[126487,126487],\"mapped\",\"\u062E\"],[[126488,126488],\"mapped\",\"\u0630\"],[[126489,126489],\"mapped\",\"\u0636\"],[[126490,126490],\"mapped\",\"\u0638\"],[[126491,126491],\"mapped\",\"\u063A\"],[[126492,126492],\"mapped\",\"\u066E\"],[[126493,126493],\"mapped\",\"\u06BA\"],[[126494,126494],\"mapped\",\"\u06A1\"],[[126495,126495],\"mapped\",\"\u066F\"],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",\"\u0628\"],[[126498,126498],\"mapped\",\"\u062C\"],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",\"\u0647\"],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",\"\u062D\"],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",\"\u064A\"],[[126506,126506],\"mapped\",\"\u0643\"],[[126507,126507],\"mapped\",\"\u0644\"],[[126508,126508],\"mapped\",\"\u0645\"],[[126509,126509],\"mapped\",\"\u0646\"],[[126510,126510],\"mapped\",\"\u0633\"],[[126511,126511],\"mapped\",\"\u0639\"],[[126512,126512],\"mapped\",\"\u0641\"],[[126513,126513],\"mapped\",\"\u0635\"],[[126514,126514],\"mapped\",\"\u0642\"],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",\"\u0634\"],[[126517,126517],\"mapped\",\"\u062A\"],[[126518,126518],\"mapped\",\"\u062B\"],[[126519,126519],\"mapped\",\"\u062E\"],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",\"\u0636\"],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",\"\u063A\"],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",\"\u062C\"],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",\"\u062D\"],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",\"\u064A\"],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",\"\u0644\"],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",\"\u0646\"],[[126542,126542],\"mapped\",\"\u0633\"],[[126543,126543],\"mapped\",\"\u0639\"],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",\"\u0635\"],[[126546,126546],\"mapped\",\"\u0642\"],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",\"\u0634\"],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",\"\u062E\"],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",\"\u0636\"],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",\"\u063A\"],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",\"\u06BA\"],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",\"\u066F\"],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",\"\u0628\"],[[126562,126562],\"mapped\",\"\u062C\"],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",\"\u0647\"],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",\"\u062D\"],[[126568,126568],\"mapped\",\"\u0637\"],[[126569,126569],\"mapped\",\"\u064A\"],[[126570,126570],\"mapped\",\"\u0643\"],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",\"\u0645\"],[[126573,126573],\"mapped\",\"\u0646\"],[[126574,126574],\"mapped\",\"\u0633\"],[[126575,126575],\"mapped\",\"\u0639\"],[[126576,126576],\"mapped\",\"\u0641\"],[[126577,126577],\"mapped\",\"\u0635\"],[[126578,126578],\"mapped\",\"\u0642\"],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",\"\u0634\"],[[126581,126581],\"mapped\",\"\u062A\"],[[126582,126582],\"mapped\",\"\u062B\"],[[126583,126583],\"mapped\",\"\u062E\"],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",\"\u0636\"],[[126586,126586],\"mapped\",\"\u0638\"],[[126587,126587],\"mapped\",\"\u063A\"],[[126588,126588],\"mapped\",\"\u066E\"],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",\"\u06A1\"],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",\"\u0627\"],[[126593,126593],\"mapped\",\"\u0628\"],[[126594,126594],\"mapped\",\"\u062C\"],[[126595,126595],\"mapped\",\"\u062F\"],[[126596,126596],\"mapped\",\"\u0647\"],[[126597,126597],\"mapped\",\"\u0648\"],[[126598,126598],\"mapped\",\"\u0632\"],[[126599,126599],\"mapped\",\"\u062D\"],[[126600,126600],\"mapped\",\"\u0637\"],[[126601,126601],\"mapped\",\"\u064A\"],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",\"\u0644\"],[[126604,126604],\"mapped\",\"\u0645\"],[[126605,126605],\"mapped\",\"\u0646\"],[[126606,126606],\"mapped\",\"\u0633\"],[[126607,126607],\"mapped\",\"\u0639\"],[[126608,126608],\"mapped\",\"\u0641\"],[[126609,126609],\"mapped\",\"\u0635\"],[[126610,126610],\"mapped\",\"\u0642\"],[[126611,126611],\"mapped\",\"\u0631\"],[[126612,126612],\"mapped\",\"\u0634\"],[[126613,126613],\"mapped\",\"\u062A\"],[[126614,126614],\"mapped\",\"\u062B\"],[[126615,126615],\"mapped\",\"\u062E\"],[[126616,126616],\"mapped\",\"\u0630\"],[[126617,126617],\"mapped\",\"\u0636\"],[[126618,126618],\"mapped\",\"\u0638\"],[[126619,126619],\"mapped\",\"\u063A\"],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",\"\u0628\"],[[126626,126626],\"mapped\",\"\u062C\"],[[126627,126627],\"mapped\",\"\u062F\"],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",\"\u0648\"],[[126630,126630],\"mapped\",\"\u0632\"],[[126631,126631],\"mapped\",\"\u062D\"],[[126632,126632],\"mapped\",\"\u0637\"],[[126633,126633],\"mapped\",\"\u064A\"],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",\"\u0644\"],[[126636,126636],\"mapped\",\"\u0645\"],[[126637,126637],\"mapped\",\"\u0646\"],[[126638,126638],\"mapped\",\"\u0633\"],[[126639,126639],\"mapped\",\"\u0639\"],[[126640,126640],\"mapped\",\"\u0641\"],[[126641,126641],\"mapped\",\"\u0635\"],[[126642,126642],\"mapped\",\"\u0642\"],[[126643,126643],\"mapped\",\"\u0631\"],[[126644,126644],\"mapped\",\"\u0634\"],[[126645,126645],\"mapped\",\"\u062A\"],[[126646,126646],\"mapped\",\"\u062B\"],[[126647,126647],\"mapped\",\"\u062E\"],[[126648,126648],\"mapped\",\"\u0630\"],[[126649,126649],\"mapped\",\"\u0636\"],[[126650,126650],\"mapped\",\"\u0638\"],[[126651,126651],\"mapped\",\"\u063A\"],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",\"\",\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",\"\",\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",\"\",\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",\"\",\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",\"\",\"NV8\"],[[127167,127167],\"valid\",\"\",\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",\"\",\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",\"\",\"NV8\"],[[127200,127221],\"valid\",\"\",\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",\"0,\"],[[127234,127234],\"disallowed_STD3_mapped\",\"1,\"],[[127235,127235],\"disallowed_STD3_mapped\",\"2,\"],[[127236,127236],\"disallowed_STD3_mapped\",\"3,\"],[[127237,127237],\"disallowed_STD3_mapped\",\"4,\"],[[127238,127238],\"disallowed_STD3_mapped\",\"5,\"],[[127239,127239],\"disallowed_STD3_mapped\",\"6,\"],[[127240,127240],\"disallowed_STD3_mapped\",\"7,\"],[[127241,127241],\"disallowed_STD3_mapped\",\"8,\"],[[127242,127242],\"disallowed_STD3_mapped\",\"9,\"],[[127243,127244],\"valid\",\"\",\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",\"(a)\"],[[127249,127249],\"disallowed_STD3_mapped\",\"(b)\"],[[127250,127250],\"disallowed_STD3_mapped\",\"(c)\"],[[127251,127251],\"disallowed_STD3_mapped\",\"(d)\"],[[127252,127252],\"disallowed_STD3_mapped\",\"(e)\"],[[127253,127253],\"disallowed_STD3_mapped\",\"(f)\"],[[127254,127254],\"disallowed_STD3_mapped\",\"(g)\"],[[127255,127255],\"disallowed_STD3_mapped\",\"(h)\"],[[127256,127256],\"disallowed_STD3_mapped\",\"(i)\"],[[127257,127257],\"disallowed_STD3_mapped\",\"(j)\"],[[127258,127258],\"disallowed_STD3_mapped\",\"(k)\"],[[127259,127259],\"disallowed_STD3_mapped\",\"(l)\"],[[127260,127260],\"disallowed_STD3_mapped\",\"(m)\"],[[127261,127261],\"disallowed_STD3_mapped\",\"(n)\"],[[127262,127262],\"disallowed_STD3_mapped\",\"(o)\"],[[127263,127263],\"disallowed_STD3_mapped\",\"(p)\"],[[127264,127264],\"disallowed_STD3_mapped\",\"(q)\"],[[127265,127265],\"disallowed_STD3_mapped\",\"(r)\"],[[127266,127266],\"disallowed_STD3_mapped\",\"(s)\"],[[127267,127267],\"disallowed_STD3_mapped\",\"(t)\"],[[127268,127268],\"disallowed_STD3_mapped\",\"(u)\"],[[127269,127269],\"disallowed_STD3_mapped\",\"(v)\"],[[127270,127270],\"disallowed_STD3_mapped\",\"(w)\"],[[127271,127271],\"disallowed_STD3_mapped\",\"(x)\"],[[127272,127272],\"disallowed_STD3_mapped\",\"(y)\"],[[127273,127273],\"disallowed_STD3_mapped\",\"(z)\"],[[127274,127274],\"mapped\",\"\u3014s\u3015\"],[[127275,127275],\"mapped\",\"c\"],[[127276,127276],\"mapped\",\"r\"],[[127277,127277],\"mapped\",\"cd\"],[[127278,127278],\"mapped\",\"wz\"],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",\"a\"],[[127281,127281],\"mapped\",\"b\"],[[127282,127282],\"mapped\",\"c\"],[[127283,127283],\"mapped\",\"d\"],[[127284,127284],\"mapped\",\"e\"],[[127285,127285],\"mapped\",\"f\"],[[127286,127286],\"mapped\",\"g\"],[[127287,127287],\"mapped\",\"h\"],[[127288,127288],\"mapped\",\"i\"],[[127289,127289],\"mapped\",\"j\"],[[127290,127290],\"mapped\",\"k\"],[[127291,127291],\"mapped\",\"l\"],[[127292,127292],\"mapped\",\"m\"],[[127293,127293],\"mapped\",\"n\"],[[127294,127294],\"mapped\",\"o\"],[[127295,127295],\"mapped\",\"p\"],[[127296,127296],\"mapped\",\"q\"],[[127297,127297],\"mapped\",\"r\"],[[127298,127298],\"mapped\",\"s\"],[[127299,127299],\"mapped\",\"t\"],[[127300,127300],\"mapped\",\"u\"],[[127301,127301],\"mapped\",\"v\"],[[127302,127302],\"mapped\",\"w\"],[[127303,127303],\"mapped\",\"x\"],[[127304,127304],\"mapped\",\"y\"],[[127305,127305],\"mapped\",\"z\"],[[127306,127306],\"mapped\",\"hv\"],[[127307,127307],\"mapped\",\"mv\"],[[127308,127308],\"mapped\",\"sd\"],[[127309,127309],\"mapped\",\"ss\"],[[127310,127310],\"mapped\",\"ppv\"],[[127311,127311],\"mapped\",\"wc\"],[[127312,127318],\"valid\",\"\",\"NV8\"],[[127319,127319],\"valid\",\"\",\"NV8\"],[[127320,127326],\"valid\",\"\",\"NV8\"],[[127327,127327],\"valid\",\"\",\"NV8\"],[[127328,127337],\"valid\",\"\",\"NV8\"],[[127338,127338],\"mapped\",\"mc\"],[[127339,127339],\"mapped\",\"md\"],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",\"\",\"NV8\"],[[127353,127353],\"valid\",\"\",\"NV8\"],[[127354,127354],\"valid\",\"\",\"NV8\"],[[127355,127356],\"valid\",\"\",\"NV8\"],[[127357,127358],\"valid\",\"\",\"NV8\"],[[127359,127359],\"valid\",\"\",\"NV8\"],[[127360,127369],\"valid\",\"\",\"NV8\"],[[127370,127373],\"valid\",\"\",\"NV8\"],[[127374,127375],\"valid\",\"\",\"NV8\"],[[127376,127376],\"mapped\",\"dj\"],[[127377,127386],\"valid\",\"\",\"NV8\"],[[127387,127404],\"valid\",\"\",\"NV8\"],[[127405,127461],\"disallowed\"],[[127462,127487],\"valid\",\"\",\"NV8\"],[[127488,127488],\"mapped\",\"\u307B\u304B\"],[[127489,127489],\"mapped\",\"\u30B3\u30B3\"],[[127490,127490],\"mapped\",\"\u30B5\"],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",\"\u624B\"],[[127505,127505],\"mapped\",\"\u5B57\"],[[127506,127506],\"mapped\",\"\u53CC\"],[[127507,127507],\"mapped\",\"\u30C7\"],[[127508,127508],\"mapped\",\"\u4E8C\"],[[127509,127509],\"mapped\",\"\u591A\"],[[127510,127510],\"mapped\",\"\u89E3\"],[[127511,127511],\"mapped\",\"\u5929\"],[[127512,127512],\"mapped\",\"\u4EA4\"],[[127513,127513],\"mapped\",\"\u6620\"],[[127514,127514],\"mapped\",\"\u7121\"],[[127515,127515],\"mapped\",\"\u6599\"],[[127516,127516],\"mapped\",\"\u524D\"],[[127517,127517],\"mapped\",\"\u5F8C\"],[[127518,127518],\"mapped\",\"\u518D\"],[[127519,127519],\"mapped\",\"\u65B0\"],[[127520,127520],\"mapped\",\"\u521D\"],[[127521,127521],\"mapped\",\"\u7D42\"],[[127522,127522],\"mapped\",\"\u751F\"],[[127523,127523],\"mapped\",\"\u8CA9\"],[[127524,127524],\"mapped\",\"\u58F0\"],[[127525,127525],\"mapped\",\"\u5439\"],[[127526,127526],\"mapped\",\"\u6F14\"],[[127527,127527],\"mapped\",\"\u6295\"],[[127528,127528],\"mapped\",\"\u6355\"],[[127529,127529],\"mapped\",\"\u4E00\"],[[127530,127530],\"mapped\",\"\u4E09\"],[[127531,127531],\"mapped\",\"\u904A\"],[[127532,127532],\"mapped\",\"\u5DE6\"],[[127533,127533],\"mapped\",\"\u4E2D\"],[[127534,127534],\"mapped\",\"\u53F3\"],[[127535,127535],\"mapped\",\"\u6307\"],[[127536,127536],\"mapped\",\"\u8D70\"],[[127537,127537],\"mapped\",\"\u6253\"],[[127538,127538],\"mapped\",\"\u7981\"],[[127539,127539],\"mapped\",\"\u7A7A\"],[[127540,127540],\"mapped\",\"\u5408\"],[[127541,127541],\"mapped\",\"\u6E80\"],[[127542,127542],\"mapped\",\"\u6709\"],[[127543,127543],\"mapped\",\"\u6708\"],[[127544,127544],\"mapped\",\"\u7533\"],[[127545,127545],\"mapped\",\"\u5272\"],[[127546,127546],\"mapped\",\"\u55B6\"],[[127547,127547],\"mapped\",\"\u914D\"],[[127548,127551],\"disallowed\"],[[127552,127552],\"mapped\",\"\u3014\u672C\u3015\"],[[127553,127553],\"mapped\",\"\u3014\u4E09\u3015\"],[[127554,127554],\"mapped\",\"\u3014\u4E8C\u3015\"],[[127555,127555],\"mapped\",\"\u3014\u5B89\u3015\"],[[127556,127556],\"mapped\",\"\u3014\u70B9\u3015\"],[[127557,127557],\"mapped\",\"\u3014\u6253\u3015\"],[[127558,127558],\"mapped\",\"\u3014\u76D7\u3015\"],[[127559,127559],\"mapped\",\"\u3014\u52DD\u3015\"],[[127560,127560],\"mapped\",\"\u3014\u6557\u3015\"],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",\"\u5F97\"],[[127569,127569],\"mapped\",\"\u53EF\"],[[127570,127583],\"disallowed\"],[[127584,127589],\"valid\",\"\",\"NV8\"],[[127590,127743],\"disallowed\"],[[127744,127776],\"valid\",\"\",\"NV8\"],[[127777,127788],\"valid\",\"\",\"NV8\"],[[127789,127791],\"valid\",\"\",\"NV8\"],[[127792,127797],\"valid\",\"\",\"NV8\"],[[127798,127798],\"valid\",\"\",\"NV8\"],[[127799,127868],\"valid\",\"\",\"NV8\"],[[127869,127869],\"valid\",\"\",\"NV8\"],[[127870,127871],\"valid\",\"\",\"NV8\"],[[127872,127891],\"valid\",\"\",\"NV8\"],[[127892,127903],\"valid\",\"\",\"NV8\"],[[127904,127940],\"valid\",\"\",\"NV8\"],[[127941,127941],\"valid\",\"\",\"NV8\"],[[127942,127946],\"valid\",\"\",\"NV8\"],[[127947,127950],\"valid\",\"\",\"NV8\"],[[127951,127955],\"valid\",\"\",\"NV8\"],[[127956,127967],\"valid\",\"\",\"NV8\"],[[127968,127984],\"valid\",\"\",\"NV8\"],[[127985,127991],\"valid\",\"\",\"NV8\"],[[127992,127999],\"valid\",\"\",\"NV8\"],[[128000,128062],\"valid\",\"\",\"NV8\"],[[128063,128063],\"valid\",\"\",\"NV8\"],[[128064,128064],\"valid\",\"\",\"NV8\"],[[128065,128065],\"valid\",\"\",\"NV8\"],[[128066,128247],\"valid\",\"\",\"NV8\"],[[128248,128248],\"valid\",\"\",\"NV8\"],[[128249,128252],\"valid\",\"\",\"NV8\"],[[128253,128254],\"valid\",\"\",\"NV8\"],[[128255,128255],\"valid\",\"\",\"NV8\"],[[128256,128317],\"valid\",\"\",\"NV8\"],[[128318,128319],\"valid\",\"\",\"NV8\"],[[128320,128323],\"valid\",\"\",\"NV8\"],[[128324,128330],\"valid\",\"\",\"NV8\"],[[128331,128335],\"valid\",\"\",\"NV8\"],[[128336,128359],\"valid\",\"\",\"NV8\"],[[128360,128377],\"valid\",\"\",\"NV8\"],[[128378,128378],\"valid\",\"\",\"NV8\"],[[128379,128419],\"valid\",\"\",\"NV8\"],[[128420,128420],\"valid\",\"\",\"NV8\"],[[128421,128506],\"valid\",\"\",\"NV8\"],[[128507,128511],\"valid\",\"\",\"NV8\"],[[128512,128512],\"valid\",\"\",\"NV8\"],[[128513,128528],\"valid\",\"\",\"NV8\"],[[128529,128529],\"valid\",\"\",\"NV8\"],[[128530,128532],\"valid\",\"\",\"NV8\"],[[128533,128533],\"valid\",\"\",\"NV8\"],[[128534,128534],\"valid\",\"\",\"NV8\"],[[128535,128535],\"valid\",\"\",\"NV8\"],[[128536,128536],\"valid\",\"\",\"NV8\"],[[128537,128537],\"valid\",\"\",\"NV8\"],[[128538,128538],\"valid\",\"\",\"NV8\"],[[128539,128539],\"valid\",\"\",\"NV8\"],[[128540,128542],\"valid\",\"\",\"NV8\"],[[128543,128543],\"valid\",\"\",\"NV8\"],[[128544,128549],\"valid\",\"\",\"NV8\"],[[128550,128551],\"valid\",\"\",\"NV8\"],[[128552,128555],\"valid\",\"\",\"NV8\"],[[128556,128556],\"valid\",\"\",\"NV8\"],[[128557,128557],\"valid\",\"\",\"NV8\"],[[128558,128559],\"valid\",\"\",\"NV8\"],[[128560,128563],\"valid\",\"\",\"NV8\"],[[128564,128564],\"valid\",\"\",\"NV8\"],[[128565,128576],\"valid\",\"\",\"NV8\"],[[128577,128578],\"valid\",\"\",\"NV8\"],[[128579,128580],\"valid\",\"\",\"NV8\"],[[128581,128591],\"valid\",\"\",\"NV8\"],[[128592,128639],\"valid\",\"\",\"NV8\"],[[128640,128709],\"valid\",\"\",\"NV8\"],[[128710,128719],\"valid\",\"\",\"NV8\"],[[128720,128720],\"valid\",\"\",\"NV8\"],[[128721,128722],\"valid\",\"\",\"NV8\"],[[128723,128724],\"valid\",\"\",\"NV8\"],[[128725,128735],\"disallowed\"],[[128736,128748],\"valid\",\"\",\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",\"\",\"NV8\"],[[128756,128758],\"valid\",\"\",\"NV8\"],[[128759,128760],\"valid\",\"\",\"NV8\"],[[128761,128767],\"disallowed\"],[[128768,128883],\"valid\",\"\",\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",\"\",\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",\"\",\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",\"\",\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",\"\",\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",\"\",\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",\"\",\"NV8\"],[[129198,129279],\"disallowed\"],[[129280,129291],\"valid\",\"\",\"NV8\"],[[129292,129295],\"disallowed\"],[[129296,129304],\"valid\",\"\",\"NV8\"],[[129305,129310],\"valid\",\"\",\"NV8\"],[[129311,129311],\"valid\",\"\",\"NV8\"],[[129312,129319],\"valid\",\"\",\"NV8\"],[[129320,129327],\"valid\",\"\",\"NV8\"],[[129328,129328],\"valid\",\"\",\"NV8\"],[[129329,129330],\"valid\",\"\",\"NV8\"],[[129331,129342],\"valid\",\"\",\"NV8\"],[[129343,129343],\"disallowed\"],[[129344,129355],\"valid\",\"\",\"NV8\"],[[129356,129356],\"valid\",\"\",\"NV8\"],[[129357,129359],\"disallowed\"],[[129360,129374],\"valid\",\"\",\"NV8\"],[[129375,129387],\"valid\",\"\",\"NV8\"],[[129388,129407],\"disallowed\"],[[129408,129412],\"valid\",\"\",\"NV8\"],[[129413,129425],\"valid\",\"\",\"NV8\"],[[129426,129431],\"valid\",\"\",\"NV8\"],[[129432,129471],\"disallowed\"],[[129472,129472],\"valid\",\"\",\"NV8\"],[[129473,129487],\"disallowed\"],[[129488,129510],\"valid\",\"\",\"NV8\"],[[129511,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,183983],\"disallowed\"],[[183984,191456],\"valid\"],[[191457,194559],\"disallowed\"],[[194560,194560],\"mapped\",\"\u4E3D\"],[[194561,194561],\"mapped\",\"\u4E38\"],[[194562,194562],\"mapped\",\"\u4E41\"],[[194563,194563],\"mapped\",\"\uD840\uDD22\"],[[194564,194564],\"mapped\",\"\u4F60\"],[[194565,194565],\"mapped\",\"\u4FAE\"],[[194566,194566],\"mapped\",\"\u4FBB\"],[[194567,194567],\"mapped\",\"\u5002\"],[[194568,194568],\"mapped\",\"\u507A\"],[[194569,194569],\"mapped\",\"\u5099\"],[[194570,194570],\"mapped\",\"\u50E7\"],[[194571,194571],\"mapped\",\"\u50CF\"],[[194572,194572],\"mapped\",\"\u349E\"],[[194573,194573],\"mapped\",\"\uD841\uDE3A\"],[[194574,194574],\"mapped\",\"\u514D\"],[[194575,194575],\"mapped\",\"\u5154\"],[[194576,194576],\"mapped\",\"\u5164\"],[[194577,194577],\"mapped\",\"\u5177\"],[[194578,194578],\"mapped\",\"\uD841\uDD1C\"],[[194579,194579],\"mapped\",\"\u34B9\"],[[194580,194580],\"mapped\",\"\u5167\"],[[194581,194581],\"mapped\",\"\u518D\"],[[194582,194582],\"mapped\",\"\uD841\uDD4B\"],[[194583,194583],\"mapped\",\"\u5197\"],[[194584,194584],\"mapped\",\"\u51A4\"],[[194585,194585],\"mapped\",\"\u4ECC\"],[[194586,194586],\"mapped\",\"\u51AC\"],[[194587,194587],\"mapped\",\"\u51B5\"],[[194588,194588],\"mapped\",\"\uD864\uDDDF\"],[[194589,194589],\"mapped\",\"\u51F5\"],[[194590,194590],\"mapped\",\"\u5203\"],[[194591,194591],\"mapped\",\"\u34DF\"],[[194592,194592],\"mapped\",\"\u523B\"],[[194593,194593],\"mapped\",\"\u5246\"],[[194594,194594],\"mapped\",\"\u5272\"],[[194595,194595],\"mapped\",\"\u5277\"],[[194596,194596],\"mapped\",\"\u3515\"],[[194597,194597],\"mapped\",\"\u52C7\"],[[194598,194598],\"mapped\",\"\u52C9\"],[[194599,194599],\"mapped\",\"\u52E4\"],[[194600,194600],\"mapped\",\"\u52FA\"],[[194601,194601],\"mapped\",\"\u5305\"],[[194602,194602],\"mapped\",\"\u5306\"],[[194603,194603],\"mapped\",\"\u5317\"],[[194604,194604],\"mapped\",\"\u5349\"],[[194605,194605],\"mapped\",\"\u5351\"],[[194606,194606],\"mapped\",\"\u535A\"],[[194607,194607],\"mapped\",\"\u5373\"],[[194608,194608],\"mapped\",\"\u537D\"],[[194609,194611],\"mapped\",\"\u537F\"],[[194612,194612],\"mapped\",\"\uD842\uDE2C\"],[[194613,194613],\"mapped\",\"\u7070\"],[[194614,194614],\"mapped\",\"\u53CA\"],[[194615,194615],\"mapped\",\"\u53DF\"],[[194616,194616],\"mapped\",\"\uD842\uDF63\"],[[194617,194617],\"mapped\",\"\u53EB\"],[[194618,194618],\"mapped\",\"\u53F1\"],[[194619,194619],\"mapped\",\"\u5406\"],[[194620,194620],\"mapped\",\"\u549E\"],[[194621,194621],\"mapped\",\"\u5438\"],[[194622,194622],\"mapped\",\"\u5448\"],[[194623,194623],\"mapped\",\"\u5468\"],[[194624,194624],\"mapped\",\"\u54A2\"],[[194625,194625],\"mapped\",\"\u54F6\"],[[194626,194626],\"mapped\",\"\u5510\"],[[194627,194627],\"mapped\",\"\u5553\"],[[194628,194628],\"mapped\",\"\u5563\"],[[194629,194630],\"mapped\",\"\u5584\"],[[194631,194631],\"mapped\",\"\u5599\"],[[194632,194632],\"mapped\",\"\u55AB\"],[[194633,194633],\"mapped\",\"\u55B3\"],[[194634,194634],\"mapped\",\"\u55C2\"],[[194635,194635],\"mapped\",\"\u5716\"],[[194636,194636],\"mapped\",\"\u5606\"],[[194637,194637],\"mapped\",\"\u5717\"],[[194638,194638],\"mapped\",\"\u5651\"],[[194639,194639],\"mapped\",\"\u5674\"],[[194640,194640],\"mapped\",\"\u5207\"],[[194641,194641],\"mapped\",\"\u58EE\"],[[194642,194642],\"mapped\",\"\u57CE\"],[[194643,194643],\"mapped\",\"\u57F4\"],[[194644,194644],\"mapped\",\"\u580D\"],[[194645,194645],\"mapped\",\"\u578B\"],[[194646,194646],\"mapped\",\"\u5832\"],[[194647,194647],\"mapped\",\"\u5831\"],[[194648,194648],\"mapped\",\"\u58AC\"],[[194649,194649],\"mapped\",\"\uD845\uDCE4\"],[[194650,194650],\"mapped\",\"\u58F2\"],[[194651,194651],\"mapped\",\"\u58F7\"],[[194652,194652],\"mapped\",\"\u5906\"],[[194653,194653],\"mapped\",\"\u591A\"],[[194654,194654],\"mapped\",\"\u5922\"],[[194655,194655],\"mapped\",\"\u5962\"],[[194656,194656],\"mapped\",\"\uD845\uDEA8\"],[[194657,194657],\"mapped\",\"\uD845\uDEEA\"],[[194658,194658],\"mapped\",\"\u59EC\"],[[194659,194659],\"mapped\",\"\u5A1B\"],[[194660,194660],\"mapped\",\"\u5A27\"],[[194661,194661],\"mapped\",\"\u59D8\"],[[194662,194662],\"mapped\",\"\u5A66\"],[[194663,194663],\"mapped\",\"\u36EE\"],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",\"\u5B08\"],[[194666,194667],\"mapped\",\"\u5B3E\"],[[194668,194668],\"mapped\",\"\uD846\uDDC8\"],[[194669,194669],\"mapped\",\"\u5BC3\"],[[194670,194670],\"mapped\",\"\u5BD8\"],[[194671,194671],\"mapped\",\"\u5BE7\"],[[194672,194672],\"mapped\",\"\u5BF3\"],[[194673,194673],\"mapped\",\"\uD846\uDF18\"],[[194674,194674],\"mapped\",\"\u5BFF\"],[[194675,194675],\"mapped\",\"\u5C06\"],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",\"\u5C22\"],[[194678,194678],\"mapped\",\"\u3781\"],[[194679,194679],\"mapped\",\"\u5C60\"],[[194680,194680],\"mapped\",\"\u5C6E\"],[[194681,194681],\"mapped\",\"\u5CC0\"],[[194682,194682],\"mapped\",\"\u5C8D\"],[[194683,194683],\"mapped\",\"\uD847\uDDE4\"],[[194684,194684],\"mapped\",\"\u5D43\"],[[194685,194685],\"mapped\",\"\uD847\uDDE6\"],[[194686,194686],\"mapped\",\"\u5D6E\"],[[194687,194687],\"mapped\",\"\u5D6B\"],[[194688,194688],\"mapped\",\"\u5D7C\"],[[194689,194689],\"mapped\",\"\u5DE1\"],[[194690,194690],\"mapped\",\"\u5DE2\"],[[194691,194691],\"mapped\",\"\u382F\"],[[194692,194692],\"mapped\",\"\u5DFD\"],[[194693,194693],\"mapped\",\"\u5E28\"],[[194694,194694],\"mapped\",\"\u5E3D\"],[[194695,194695],\"mapped\",\"\u5E69\"],[[194696,194696],\"mapped\",\"\u3862\"],[[194697,194697],\"mapped\",\"\uD848\uDD83\"],[[194698,194698],\"mapped\",\"\u387C\"],[[194699,194699],\"mapped\",\"\u5EB0\"],[[194700,194700],\"mapped\",\"\u5EB3\"],[[194701,194701],\"mapped\",\"\u5EB6\"],[[194702,194702],\"mapped\",\"\u5ECA\"],[[194703,194703],\"mapped\",\"\uD868\uDF92\"],[[194704,194704],\"mapped\",\"\u5EFE\"],[[194705,194706],\"mapped\",\"\uD848\uDF31\"],[[194707,194707],\"mapped\",\"\u8201\"],[[194708,194709],\"mapped\",\"\u5F22\"],[[194710,194710],\"mapped\",\"\u38C7\"],[[194711,194711],\"mapped\",\"\uD84C\uDEB8\"],[[194712,194712],\"mapped\",\"\uD858\uDDDA\"],[[194713,194713],\"mapped\",\"\u5F62\"],[[194714,194714],\"mapped\",\"\u5F6B\"],[[194715,194715],\"mapped\",\"\u38E3\"],[[194716,194716],\"mapped\",\"\u5F9A\"],[[194717,194717],\"mapped\",\"\u5FCD\"],[[194718,194718],\"mapped\",\"\u5FD7\"],[[194719,194719],\"mapped\",\"\u5FF9\"],[[194720,194720],\"mapped\",\"\u6081\"],[[194721,194721],\"mapped\",\"\u393A\"],[[194722,194722],\"mapped\",\"\u391C\"],[[194723,194723],\"mapped\",\"\u6094\"],[[194724,194724],\"mapped\",\"\uD849\uDED4\"],[[194725,194725],\"mapped\",\"\u60C7\"],[[194726,194726],\"mapped\",\"\u6148\"],[[194727,194727],\"mapped\",\"\u614C\"],[[194728,194728],\"mapped\",\"\u614E\"],[[194729,194729],\"mapped\",\"\u614C\"],[[194730,194730],\"mapped\",\"\u617A\"],[[194731,194731],\"mapped\",\"\u618E\"],[[194732,194732],\"mapped\",\"\u61B2\"],[[194733,194733],\"mapped\",\"\u61A4\"],[[194734,194734],\"mapped\",\"\u61AF\"],[[194735,194735],\"mapped\",\"\u61DE\"],[[194736,194736],\"mapped\",\"\u61F2\"],[[194737,194737],\"mapped\",\"\u61F6\"],[[194738,194738],\"mapped\",\"\u6210\"],[[194739,194739],\"mapped\",\"\u621B\"],[[194740,194740],\"mapped\",\"\u625D\"],[[194741,194741],\"mapped\",\"\u62B1\"],[[194742,194742],\"mapped\",\"\u62D4\"],[[194743,194743],\"mapped\",\"\u6350\"],[[194744,194744],\"mapped\",\"\uD84A\uDF0C\"],[[194745,194745],\"mapped\",\"\u633D\"],[[194746,194746],\"mapped\",\"\u62FC\"],[[194747,194747],\"mapped\",\"\u6368\"],[[194748,194748],\"mapped\",\"\u6383\"],[[194749,194749],\"mapped\",\"\u63E4\"],[[194750,194750],\"mapped\",\"\uD84A\uDFF1\"],[[194751,194751],\"mapped\",\"\u6422\"],[[194752,194752],\"mapped\",\"\u63C5\"],[[194753,194753],\"mapped\",\"\u63A9\"],[[194754,194754],\"mapped\",\"\u3A2E\"],[[194755,194755],\"mapped\",\"\u6469\"],[[194756,194756],\"mapped\",\"\u647E\"],[[194757,194757],\"mapped\",\"\u649D\"],[[194758,194758],\"mapped\",\"\u6477\"],[[194759,194759],\"mapped\",\"\u3A6C\"],[[194760,194760],\"mapped\",\"\u654F\"],[[194761,194761],\"mapped\",\"\u656C\"],[[194762,194762],\"mapped\",\"\uD84C\uDC0A\"],[[194763,194763],\"mapped\",\"\u65E3\"],[[194764,194764],\"mapped\",\"\u66F8\"],[[194765,194765],\"mapped\",\"\u6649\"],[[194766,194766],\"mapped\",\"\u3B19\"],[[194767,194767],\"mapped\",\"\u6691\"],[[194768,194768],\"mapped\",\"\u3B08\"],[[194769,194769],\"mapped\",\"\u3AE4\"],[[194770,194770],\"mapped\",\"\u5192\"],[[194771,194771],\"mapped\",\"\u5195\"],[[194772,194772],\"mapped\",\"\u6700\"],[[194773,194773],\"mapped\",\"\u669C\"],[[194774,194774],\"mapped\",\"\u80AD\"],[[194775,194775],\"mapped\",\"\u43D9\"],[[194776,194776],\"mapped\",\"\u6717\"],[[194777,194777],\"mapped\",\"\u671B\"],[[194778,194778],\"mapped\",\"\u6721\"],[[194779,194779],\"mapped\",\"\u675E\"],[[194780,194780],\"mapped\",\"\u6753\"],[[194781,194781],\"mapped\",\"\uD84C\uDFC3\"],[[194782,194782],\"mapped\",\"\u3B49\"],[[194783,194783],\"mapped\",\"\u67FA\"],[[194784,194784],\"mapped\",\"\u6785\"],[[194785,194785],\"mapped\",\"\u6852\"],[[194786,194786],\"mapped\",\"\u6885\"],[[194787,194787],\"mapped\",\"\uD84D\uDC6D\"],[[194788,194788],\"mapped\",\"\u688E\"],[[194789,194789],\"mapped\",\"\u681F\"],[[194790,194790],\"mapped\",\"\u6914\"],[[194791,194791],\"mapped\",\"\u3B9D\"],[[194792,194792],\"mapped\",\"\u6942\"],[[194793,194793],\"mapped\",\"\u69A3\"],[[194794,194794],\"mapped\",\"\u69EA\"],[[194795,194795],\"mapped\",\"\u6AA8\"],[[194796,194796],\"mapped\",\"\uD84D\uDEA3\"],[[194797,194797],\"mapped\",\"\u6ADB\"],[[194798,194798],\"mapped\",\"\u3C18\"],[[194799,194799],\"mapped\",\"\u6B21\"],[[194800,194800],\"mapped\",\"\uD84E\uDCA7\"],[[194801,194801],\"mapped\",\"\u6B54\"],[[194802,194802],\"mapped\",\"\u3C4E\"],[[194803,194803],\"mapped\",\"\u6B72\"],[[194804,194804],\"mapped\",\"\u6B9F\"],[[194805,194805],\"mapped\",\"\u6BBA\"],[[194806,194806],\"mapped\",\"\u6BBB\"],[[194807,194807],\"mapped\",\"\uD84E\uDE8D\"],[[194808,194808],\"mapped\",\"\uD847\uDD0B\"],[[194809,194809],\"mapped\",\"\uD84E\uDEFA\"],[[194810,194810],\"mapped\",\"\u6C4E\"],[[194811,194811],\"mapped\",\"\uD84F\uDCBC\"],[[194812,194812],\"mapped\",\"\u6CBF\"],[[194813,194813],\"mapped\",\"\u6CCD\"],[[194814,194814],\"mapped\",\"\u6C67\"],[[194815,194815],\"mapped\",\"\u6D16\"],[[194816,194816],\"mapped\",\"\u6D3E\"],[[194817,194817],\"mapped\",\"\u6D77\"],[[194818,194818],\"mapped\",\"\u6D41\"],[[194819,194819],\"mapped\",\"\u6D69\"],[[194820,194820],\"mapped\",\"\u6D78\"],[[194821,194821],\"mapped\",\"\u6D85\"],[[194822,194822],\"mapped\",\"\uD84F\uDD1E\"],[[194823,194823],\"mapped\",\"\u6D34\"],[[194824,194824],\"mapped\",\"\u6E2F\"],[[194825,194825],\"mapped\",\"\u6E6E\"],[[194826,194826],\"mapped\",\"\u3D33\"],[[194827,194827],\"mapped\",\"\u6ECB\"],[[194828,194828],\"mapped\",\"\u6EC7\"],[[194829,194829],\"mapped\",\"\uD84F\uDED1\"],[[194830,194830],\"mapped\",\"\u6DF9\"],[[194831,194831],\"mapped\",\"\u6F6E\"],[[194832,194832],\"mapped\",\"\uD84F\uDF5E\"],[[194833,194833],\"mapped\",\"\uD84F\uDF8E\"],[[194834,194834],\"mapped\",\"\u6FC6\"],[[194835,194835],\"mapped\",\"\u7039\"],[[194836,194836],\"mapped\",\"\u701E\"],[[194837,194837],\"mapped\",\"\u701B\"],[[194838,194838],\"mapped\",\"\u3D96\"],[[194839,194839],\"mapped\",\"\u704A\"],[[194840,194840],\"mapped\",\"\u707D\"],[[194841,194841],\"mapped\",\"\u7077\"],[[194842,194842],\"mapped\",\"\u70AD\"],[[194843,194843],\"mapped\",\"\uD841\uDD25\"],[[194844,194844],\"mapped\",\"\u7145\"],[[194845,194845],\"mapped\",\"\uD850\uDE63\"],[[194846,194846],\"mapped\",\"\u719C\"],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",\"\u7228\"],[[194849,194849],\"mapped\",\"\u7235\"],[[194850,194850],\"mapped\",\"\u7250\"],[[194851,194851],\"mapped\",\"\uD851\uDE08\"],[[194852,194852],\"mapped\",\"\u7280\"],[[194853,194853],\"mapped\",\"\u7295\"],[[194854,194854],\"mapped\",\"\uD851\uDF35\"],[[194855,194855],\"mapped\",\"\uD852\uDC14\"],[[194856,194856],\"mapped\",\"\u737A\"],[[194857,194857],\"mapped\",\"\u738B\"],[[194858,194858],\"mapped\",\"\u3EAC\"],[[194859,194859],\"mapped\",\"\u73A5\"],[[194860,194861],\"mapped\",\"\u3EB8\"],[[194862,194862],\"mapped\",\"\u7447\"],[[194863,194863],\"mapped\",\"\u745C\"],[[194864,194864],\"mapped\",\"\u7471\"],[[194865,194865],\"mapped\",\"\u7485\"],[[194866,194866],\"mapped\",\"\u74CA\"],[[194867,194867],\"mapped\",\"\u3F1B\"],[[194868,194868],\"mapped\",\"\u7524\"],[[194869,194869],\"mapped\",\"\uD853\uDC36\"],[[194870,194870],\"mapped\",\"\u753E\"],[[194871,194871],\"mapped\",\"\uD853\uDC92\"],[[194872,194872],\"mapped\",\"\u7570\"],[[194873,194873],\"mapped\",\"\uD848\uDD9F\"],[[194874,194874],\"mapped\",\"\u7610\"],[[194875,194875],\"mapped\",\"\uD853\uDFA1\"],[[194876,194876],\"mapped\",\"\uD853\uDFB8\"],[[194877,194877],\"mapped\",\"\uD854\uDC44\"],[[194878,194878],\"mapped\",\"\u3FFC\"],[[194879,194879],\"mapped\",\"\u4008\"],[[194880,194880],\"mapped\",\"\u76F4\"],[[194881,194881],\"mapped\",\"\uD854\uDCF3\"],[[194882,194882],\"mapped\",\"\uD854\uDCF2\"],[[194883,194883],\"mapped\",\"\uD854\uDD19\"],[[194884,194884],\"mapped\",\"\uD854\uDD33\"],[[194885,194885],\"mapped\",\"\u771E\"],[[194886,194887],\"mapped\",\"\u771F\"],[[194888,194888],\"mapped\",\"\u774A\"],[[194889,194889],\"mapped\",\"\u4039\"],[[194890,194890],\"mapped\",\"\u778B\"],[[194891,194891],\"mapped\",\"\u4046\"],[[194892,194892],\"mapped\",\"\u4096\"],[[194893,194893],\"mapped\",\"\uD855\uDC1D\"],[[194894,194894],\"mapped\",\"\u784E\"],[[194895,194895],\"mapped\",\"\u788C\"],[[194896,194896],\"mapped\",\"\u78CC\"],[[194897,194897],\"mapped\",\"\u40E3\"],[[194898,194898],\"mapped\",\"\uD855\uDE26\"],[[194899,194899],\"mapped\",\"\u7956\"],[[194900,194900],\"mapped\",\"\uD855\uDE9A\"],[[194901,194901],\"mapped\",\"\uD855\uDEC5\"],[[194902,194902],\"mapped\",\"\u798F\"],[[194903,194903],\"mapped\",\"\u79EB\"],[[194904,194904],\"mapped\",\"\u412F\"],[[194905,194905],\"mapped\",\"\u7A40\"],[[194906,194906],\"mapped\",\"\u7A4A\"],[[194907,194907],\"mapped\",\"\u7A4F\"],[[194908,194908],\"mapped\",\"\uD856\uDD7C\"],[[194909,194910],\"mapped\",\"\uD856\uDEA7\"],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",\"\u4202\"],[[194913,194913],\"mapped\",\"\uD856\uDFAB\"],[[194914,194914],\"mapped\",\"\u7BC6\"],[[194915,194915],\"mapped\",\"\u7BC9\"],[[194916,194916],\"mapped\",\"\u4227\"],[[194917,194917],\"mapped\",\"\uD857\uDC80\"],[[194918,194918],\"mapped\",\"\u7CD2\"],[[194919,194919],\"mapped\",\"\u42A0\"],[[194920,194920],\"mapped\",\"\u7CE8\"],[[194921,194921],\"mapped\",\"\u7CE3\"],[[194922,194922],\"mapped\",\"\u7D00\"],[[194923,194923],\"mapped\",\"\uD857\uDF86\"],[[194924,194924],\"mapped\",\"\u7D63\"],[[194925,194925],\"mapped\",\"\u4301\"],[[194926,194926],\"mapped\",\"\u7DC7\"],[[194927,194927],\"mapped\",\"\u7E02\"],[[194928,194928],\"mapped\",\"\u7E45\"],[[194929,194929],\"mapped\",\"\u4334\"],[[194930,194930],\"mapped\",\"\uD858\uDE28\"],[[194931,194931],\"mapped\",\"\uD858\uDE47\"],[[194932,194932],\"mapped\",\"\u4359\"],[[194933,194933],\"mapped\",\"\uD858\uDED9\"],[[194934,194934],\"mapped\",\"\u7F7A\"],[[194935,194935],\"mapped\",\"\uD858\uDF3E\"],[[194936,194936],\"mapped\",\"\u7F95\"],[[194937,194937],\"mapped\",\"\u7FFA\"],[[194938,194938],\"mapped\",\"\u8005\"],[[194939,194939],\"mapped\",\"\uD859\uDCDA\"],[[194940,194940],\"mapped\",\"\uD859\uDD23\"],[[194941,194941],\"mapped\",\"\u8060\"],[[194942,194942],\"mapped\",\"\uD859\uDDA8\"],[[194943,194943],\"mapped\",\"\u8070\"],[[194944,194944],\"mapped\",\"\uD84C\uDF5F\"],[[194945,194945],\"mapped\",\"\u43D5\"],[[194946,194946],\"mapped\",\"\u80B2\"],[[194947,194947],\"mapped\",\"\u8103\"],[[194948,194948],\"mapped\",\"\u440B\"],[[194949,194949],\"mapped\",\"\u813E\"],[[194950,194950],\"mapped\",\"\u5AB5\"],[[194951,194951],\"mapped\",\"\uD859\uDFA7\"],[[194952,194952],\"mapped\",\"\uD859\uDFB5\"],[[194953,194953],\"mapped\",\"\uD84C\uDF93\"],[[194954,194954],\"mapped\",\"\uD84C\uDF9C\"],[[194955,194955],\"mapped\",\"\u8201\"],[[194956,194956],\"mapped\",\"\u8204\"],[[194957,194957],\"mapped\",\"\u8F9E\"],[[194958,194958],\"mapped\",\"\u446B\"],[[194959,194959],\"mapped\",\"\u8291\"],[[194960,194960],\"mapped\",\"\u828B\"],[[194961,194961],\"mapped\",\"\u829D\"],[[194962,194962],\"mapped\",\"\u52B3\"],[[194963,194963],\"mapped\",\"\u82B1\"],[[194964,194964],\"mapped\",\"\u82B3\"],[[194965,194965],\"mapped\",\"\u82BD\"],[[194966,194966],\"mapped\",\"\u82E6\"],[[194967,194967],\"mapped\",\"\uD85A\uDF3C\"],[[194968,194968],\"mapped\",\"\u82E5\"],[[194969,194969],\"mapped\",\"\u831D\"],[[194970,194970],\"mapped\",\"\u8363\"],[[194971,194971],\"mapped\",\"\u83AD\"],[[194972,194972],\"mapped\",\"\u8323\"],[[194973,194973],\"mapped\",\"\u83BD\"],[[194974,194974],\"mapped\",\"\u83E7\"],[[194975,194975],\"mapped\",\"\u8457\"],[[194976,194976],\"mapped\",\"\u8353\"],[[194977,194977],\"mapped\",\"\u83CA\"],[[194978,194978],\"mapped\",\"\u83CC\"],[[194979,194979],\"mapped\",\"\u83DC\"],[[194980,194980],\"mapped\",\"\uD85B\uDC36\"],[[194981,194981],\"mapped\",\"\uD85B\uDD6B\"],[[194982,194982],\"mapped\",\"\uD85B\uDCD5\"],[[194983,194983],\"mapped\",\"\u452B\"],[[194984,194984],\"mapped\",\"\u84F1\"],[[194985,194985],\"mapped\",\"\u84F3\"],[[194986,194986],\"mapped\",\"\u8516\"],[[194987,194987],\"mapped\",\"\uD85C\uDFCA\"],[[194988,194988],\"mapped\",\"\u8564\"],[[194989,194989],\"mapped\",\"\uD85B\uDF2C\"],[[194990,194990],\"mapped\",\"\u455D\"],[[194991,194991],\"mapped\",\"\u4561\"],[[194992,194992],\"mapped\",\"\uD85B\uDFB1\"],[[194993,194993],\"mapped\",\"\uD85C\uDCD2\"],[[194994,194994],\"mapped\",\"\u456B\"],[[194995,194995],\"mapped\",\"\u8650\"],[[194996,194996],\"mapped\",\"\u865C\"],[[194997,194997],\"mapped\",\"\u8667\"],[[194998,194998],\"mapped\",\"\u8669\"],[[194999,194999],\"mapped\",\"\u86A9\"],[[195000,195000],\"mapped\",\"\u8688\"],[[195001,195001],\"mapped\",\"\u870E\"],[[195002,195002],\"mapped\",\"\u86E2\"],[[195003,195003],\"mapped\",\"\u8779\"],[[195004,195004],\"mapped\",\"\u8728\"],[[195005,195005],\"mapped\",\"\u876B\"],[[195006,195006],\"mapped\",\"\u8786\"],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",\"\u87E1\"],[[195009,195009],\"mapped\",\"\u8801\"],[[195010,195010],\"mapped\",\"\u45F9\"],[[195011,195011],\"mapped\",\"\u8860\"],[[195012,195012],\"mapped\",\"\u8863\"],[[195013,195013],\"mapped\",\"\uD85D\uDE67\"],[[195014,195014],\"mapped\",\"\u88D7\"],[[195015,195015],\"mapped\",\"\u88DE\"],[[195016,195016],\"mapped\",\"\u4635\"],[[195017,195017],\"mapped\",\"\u88FA\"],[[195018,195018],\"mapped\",\"\u34BB\"],[[195019,195019],\"mapped\",\"\uD85E\uDCAE\"],[[195020,195020],\"mapped\",\"\uD85E\uDD66\"],[[195021,195021],\"mapped\",\"\u46BE\"],[[195022,195022],\"mapped\",\"\u46C7\"],[[195023,195023],\"mapped\",\"\u8AA0\"],[[195024,195024],\"mapped\",\"\u8AED\"],[[195025,195025],\"mapped\",\"\u8B8A\"],[[195026,195026],\"mapped\",\"\u8C55\"],[[195027,195027],\"mapped\",\"\uD85F\uDCA8\"],[[195028,195028],\"mapped\",\"\u8CAB\"],[[195029,195029],\"mapped\",\"\u8CC1\"],[[195030,195030],\"mapped\",\"\u8D1B\"],[[195031,195031],\"mapped\",\"\u8D77\"],[[195032,195032],\"mapped\",\"\uD85F\uDF2F\"],[[195033,195033],\"mapped\",\"\uD842\uDC04\"],[[195034,195034],\"mapped\",\"\u8DCB\"],[[195035,195035],\"mapped\",\"\u8DBC\"],[[195036,195036],\"mapped\",\"\u8DF0\"],[[195037,195037],\"mapped\",\"\uD842\uDCDE\"],[[195038,195038],\"mapped\",\"\u8ED4\"],[[195039,195039],\"mapped\",\"\u8F38\"],[[195040,195040],\"mapped\",\"\uD861\uDDD2\"],[[195041,195041],\"mapped\",\"\uD861\uDDED\"],[[195042,195042],\"mapped\",\"\u9094\"],[[195043,195043],\"mapped\",\"\u90F1\"],[[195044,195044],\"mapped\",\"\u9111\"],[[195045,195045],\"mapped\",\"\uD861\uDF2E\"],[[195046,195046],\"mapped\",\"\u911B\"],[[195047,195047],\"mapped\",\"\u9238\"],[[195048,195048],\"mapped\",\"\u92D7\"],[[195049,195049],\"mapped\",\"\u92D8\"],[[195050,195050],\"mapped\",\"\u927C\"],[[195051,195051],\"mapped\",\"\u93F9\"],[[195052,195052],\"mapped\",\"\u9415\"],[[195053,195053],\"mapped\",\"\uD862\uDFFA\"],[[195054,195054],\"mapped\",\"\u958B\"],[[195055,195055],\"mapped\",\"\u4995\"],[[195056,195056],\"mapped\",\"\u95B7\"],[[195057,195057],\"mapped\",\"\uD863\uDD77\"],[[195058,195058],\"mapped\",\"\u49E6\"],[[195059,195059],\"mapped\",\"\u96C3\"],[[195060,195060],\"mapped\",\"\u5DB2\"],[[195061,195061],\"mapped\",\"\u9723\"],[[195062,195062],\"mapped\",\"\uD864\uDD45\"],[[195063,195063],\"mapped\",\"\uD864\uDE1A\"],[[195064,195064],\"mapped\",\"\u4A6E\"],[[195065,195065],\"mapped\",\"\u4A76\"],[[195066,195066],\"mapped\",\"\u97E0\"],[[195067,195067],\"mapped\",\"\uD865\uDC0A\"],[[195068,195068],\"mapped\",\"\u4AB2\"],[[195069,195069],\"mapped\",\"\uD865\uDC96\"],[[195070,195071],\"mapped\",\"\u980B\"],[[195072,195072],\"mapped\",\"\u9829\"],[[195073,195073],\"mapped\",\"\uD865\uDDB6\"],[[195074,195074],\"mapped\",\"\u98E2\"],[[195075,195075],\"mapped\",\"\u4B33\"],[[195076,195076],\"mapped\",\"\u9929\"],[[195077,195077],\"mapped\",\"\u99A7\"],[[195078,195078],\"mapped\",\"\u99C2\"],[[195079,195079],\"mapped\",\"\u99FE\"],[[195080,195080],\"mapped\",\"\u4BCE\"],[[195081,195081],\"mapped\",\"\uD866\uDF30\"],[[195082,195082],\"mapped\",\"\u9B12\"],[[195083,195083],\"mapped\",\"\u9C40\"],[[195084,195084],\"mapped\",\"\u9CFD\"],[[195085,195085],\"mapped\",\"\u4CCE\"],[[195086,195086],\"mapped\",\"\u4CED\"],[[195087,195087],\"mapped\",\"\u9D67\"],[[195088,195088],\"mapped\",\"\uD868\uDCCE\"],[[195089,195089],\"mapped\",\"\u4CF8\"],[[195090,195090],\"mapped\",\"\uD868\uDD05\"],[[195091,195091],\"mapped\",\"\uD868\uDE0E\"],[[195092,195092],\"mapped\",\"\uD868\uDE91\"],[[195093,195093],\"mapped\",\"\u9EBB\"],[[195094,195094],\"mapped\",\"\u4D56\"],[[195095,195095],\"mapped\",\"\u9EF9\"],[[195096,195096],\"mapped\",\"\u9EFE\"],[[195097,195097],\"mapped\",\"\u9F05\"],[[195098,195098],\"mapped\",\"\u9F0F\"],[[195099,195099],\"mapped\",\"\u9F16\"],[[195100,195100],\"mapped\",\"\u9F3B\"],[[195101,195101],\"mapped\",\"\uD869\uDE00\"],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]", "\"use strict\";\n\nconst punycode = require(\"punycode\");\nconst regexes = require(\"./lib/regexes.js\");\nconst mappingTable = require(\"./lib/mappingTable.json\");\n\nfunction containsNonASCII(str) {\n return /[^\\x00-\\x7F]/.test(str);\n}\n\nfunction findStatus(val, { useSTD3ASCIIRules }) {\n let start = 0;\n let end = mappingTable.length - 1;\n\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n\n const target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n if (target[1].startsWith(\"disallowed_STD3_\")) {\n const newStatus = useSTD3ASCIIRules ? \"disallowed\" : target[1].slice(16);\n return [newStatus, ...target.slice(2)];\n }\n return target.slice(1);\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nfunction mapChars(domainName, { useSTD3ASCIIRules, processingOption }) {\n let hasError = false;\n let processed = \"\";\n\n for (const ch of domainName) {\n const [status, mapping] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });\n\n switch (status) {\n case \"disallowed\":\n hasError = true;\n processed += ch;\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += mapping;\n break;\n case \"deviation\":\n if (processingOption === \"transitional\") {\n processed += mapping;\n } else {\n processed += ch;\n }\n break;\n case \"valid\":\n processed += ch;\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nfunction validateLabel(label, { checkHyphens, checkBidi, checkJoiners, processingOption, useSTD3ASCIIRules }) {\n if (label.normalize(\"NFC\") !== label) {\n return false;\n }\n\n const codePoints = Array.from(label);\n\n if (checkHyphens) {\n if ((codePoints[2] === \"-\" && codePoints[3] === \"-\") ||\n (label.startsWith(\"-\") || label.endsWith(\"-\"))) {\n return false;\n }\n }\n\n if (label.includes(\".\") ||\n (codePoints.length > 0 && regexes.combiningMarks.test(codePoints[0]))) {\n return false;\n }\n\n for (const ch of codePoints) {\n const [status] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });\n if ((processingOption === \"transitional\" && status !== \"valid\") ||\n (processingOption === \"nontransitional\" &&\n status !== \"valid\" && status !== \"deviation\")) {\n return false;\n }\n }\n\n // https://tools.ietf.org/html/rfc5892#appendix-A\n if (checkJoiners) {\n let last = 0;\n for (const [i, ch] of codePoints.entries()) {\n if (ch === \"\\u200C\" || ch === \"\\u200D\") {\n if (i > 0) {\n if (regexes.combiningClassVirama.test(codePoints[i - 1])) {\n continue;\n }\n if (ch === \"\\u200C\") {\n // TODO: make this more efficient\n const next = codePoints.indexOf(\"\\u200C\", i + 1);\n const test = next < 0 ? codePoints.slice(last) : codePoints.slice(last, next);\n if (regexes.validZWNJ.test(test.join(\"\"))) {\n last = i + 1;\n continue;\n }\n }\n }\n return false;\n }\n }\n }\n\n // https://tools.ietf.org/html/rfc5893#section-2\n if (checkBidi) {\n let rtl;\n\n // 1\n if (regexes.bidiS1LTR.test(codePoints[0])) {\n rtl = false;\n } else if (regexes.bidiS1RTL.test(codePoints[0])) {\n rtl = true;\n } else {\n return false;\n }\n\n if (rtl) {\n // 2-4\n if (!regexes.bidiS2.test(label) ||\n !regexes.bidiS3.test(label) ||\n (regexes.bidiS4EN.test(label) && regexes.bidiS4AN.test(label))) {\n return false;\n }\n } else if (!regexes.bidiS5.test(label) ||\n !regexes.bidiS6.test(label)) { // 5-6\n return false;\n }\n }\n\n return true;\n}\n\nfunction isBidiDomain(labels) {\n const domain = labels.map(label => {\n if (label.startsWith(\"xn--\")) {\n try {\n return punycode.decode(label.substring(4));\n } catch (err) {\n return \"\";\n }\n }\n return label;\n }).join(\".\");\n return regexes.bidiDomain.test(domain);\n}\n\nfunction processing(domainName, options) {\n const { processingOption } = options;\n\n // 1. Map.\n let { string, error } = mapChars(domainName, options);\n\n // 2. Normalize.\n string = string.normalize(\"NFC\");\n\n // 3. Break.\n const labels = string.split(\".\");\n const isBidi = isBidiDomain(labels);\n\n // 4. Convert/Validate.\n for (const [i, origLabel] of labels.entries()) {\n let label = origLabel;\n let curProcessing = processingOption;\n if (label.startsWith(\"xn--\")) {\n try {\n label = punycode.decode(label.substring(4));\n labels[i] = label;\n } catch (err) {\n error = true;\n continue;\n }\n curProcessing = \"nontransitional\";\n }\n\n // No need to validate if we already know there is an error.\n if (error) {\n continue;\n }\n const validation = validateLabel(label, Object.assign({}, options, {\n processingOption: curProcessing,\n checkBidi: options.checkBidi && isBidi\n }));\n if (!validation) {\n error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error\n };\n}\n\nfunction toASCII(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n processingOption = \"nontransitional\",\n verifyDNSLength = false\n} = {}) {\n if (processingOption !== \"transitional\" && processingOption !== \"nontransitional\") {\n throw new RangeError(\"processingOption must be either transitional or nontransitional\");\n }\n\n const result = processing(domainName, {\n processingOption,\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules\n });\n let labels = result.string.split(\".\");\n labels = labels.map(l => {\n if (containsNonASCII(l)) {\n try {\n return \"xn--\" + punycode.encode(l);\n } catch (e) {\n result.error = true;\n }\n }\n return l;\n });\n\n if (verifyDNSLength) {\n const total = labels.join(\".\").length;\n if (total > 253 || total === 0) {\n result.error = true;\n }\n\n for (let i = 0; i < labels.length; ++i) {\n if (labels[i].length > 63 || labels[i].length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) {\n return null;\n }\n return labels.join(\".\");\n}\n\nfunction toUnicode(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false\n} = {}) {\n const result = processing(domainName, {\n processingOption: \"nontransitional\",\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules\n });\n\n return {\n domain: result.string,\n error: result.error\n };\n}\n\nmodule.exports = {\n toASCII,\n toUnicode\n};\n", "\"use strict\";\n\nfunction isASCIIDigit(c) {\n return c >= 0x30 && c <= 0x39;\n}\n\nfunction isASCIIAlpha(c) {\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\n}\n\nfunction isASCIIAlphanumeric(c) {\n return isASCIIAlpha(c) || isASCIIDigit(c);\n}\n\nfunction isASCIIHex(c) {\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\n}\n\nmodule.exports = {\n isASCIIDigit,\n isASCIIAlpha,\n isASCIIAlphanumeric,\n isASCIIHex\n};\n", "\"use strict\";\nconst { isASCIIHex } = require(\"./infra\");\n\nfunction strictlySplitByteSequence(buf, cp) {\n const list = [];\n let last = 0;\n let i = buf.indexOf(cp);\n while (i >= 0) {\n list.push(buf.slice(last, i));\n last = i + 1;\n i = buf.indexOf(cp, last);\n }\n if (last !== buf.length) {\n list.push(buf.slice(last));\n }\n return list;\n}\n\nfunction replaceByteInByteSequence(buf, from, to) {\n let i = buf.indexOf(from);\n while (i >= 0) {\n buf[i] = to;\n i = buf.indexOf(from, i + 1);\n }\n return buf;\n}\n\nfunction percentEncode(c) {\n let hex = c.toString(16).toUpperCase();\n if (hex.length === 1) {\n hex = \"0\" + hex;\n }\n\n return \"%\" + hex;\n}\n\nfunction percentDecode(input) {\n const output = Buffer.alloc(input.byteLength);\n let ptr = 0;\n for (let i = 0; i < input.length; ++i) {\n if (input[i] !== 37 || !isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2])) {\n output[ptr++] = input[i];\n } else {\n output[ptr++] = parseInt(input.slice(i + 1, i + 3).toString(), 16);\n i += 2;\n }\n }\n return output.slice(0, ptr);\n}\n\nfunction parseUrlencoded(input) {\n const sequences = strictlySplitByteSequence(input, 38);\n const output = [];\n for (const bytes of sequences) {\n if (bytes.length === 0) {\n continue;\n }\n\n let name;\n let value;\n const indexOfEqual = bytes.indexOf(61);\n\n if (indexOfEqual >= 0) {\n name = bytes.slice(0, indexOfEqual);\n value = bytes.slice(indexOfEqual + 1);\n } else {\n name = bytes;\n value = Buffer.alloc(0);\n }\n\n name = replaceByteInByteSequence(Buffer.from(name), 43, 32);\n value = replaceByteInByteSequence(Buffer.from(value), 43, 32);\n\n output.push([percentDecode(name).toString(), percentDecode(value).toString()]);\n }\n return output;\n}\n\nfunction serializeUrlencodedByte(input) {\n let output = \"\";\n for (const byte of input) {\n if (byte === 32) {\n output += \"+\";\n } else if (byte === 42 ||\n byte === 45 ||\n byte === 46 ||\n (byte >= 48 && byte <= 57) ||\n (byte >= 65 && byte <= 90) ||\n byte === 95 ||\n (byte >= 97 && byte <= 122)) {\n output += String.fromCodePoint(byte);\n } else {\n output += percentEncode(byte);\n }\n }\n return output;\n}\n\nfunction serializeUrlencoded(tuples, encodingOverride = undefined) {\n let encoding = \"utf-8\";\n if (encodingOverride !== undefined) {\n encoding = encodingOverride;\n }\n\n let output = \"\";\n for (const [i, tuple] of tuples.entries()) {\n // TODO: handle encoding override\n const name = serializeUrlencodedByte(Buffer.from(tuple[0]));\n let value = tuple[1];\n if (tuple.length > 2 && tuple[2] !== undefined) {\n if (tuple[2] === \"hidden\" && name === \"_charset_\") {\n value = encoding;\n } else if (tuple[2] === \"file\") {\n // value is a File object\n value = value.name;\n }\n }\n value = serializeUrlencodedByte(Buffer.from(value));\n if (i !== 0) {\n output += \"&\";\n }\n output += `${name}=${value}`;\n }\n return output;\n}\n\nmodule.exports = {\n percentEncode,\n percentDecode,\n\n // application/x-www-form-urlencoded string parser\n parseUrlencoded(input) {\n return parseUrlencoded(Buffer.from(input));\n },\n\n // application/x-www-form-urlencoded serializer\n serializeUrlencoded\n};\n", "\"use strict\";\nconst punycode = require(\"punycode\");\nconst tr46 = require(\"tr46\");\n\nconst infra = require(\"./infra\");\nconst { percentEncode, percentDecode } = require(\"./urlencoded\");\n\nconst specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nconst failure = Symbol(\"failure\");\n\nfunction countSymbols(str) {\n return punycode.ucs2.decode(str).length;\n}\n\nfunction at(input, idx) {\n const c = input[idx];\n return isNaN(c) ? undefined : String.fromCodePoint(c);\n}\n\nfunction isSingleDot(buffer) {\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\n}\n\nfunction isDoubleDot(buffer) {\n buffer = buffer.toLowerCase();\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\n}\n\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\n return infra.isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\n}\n\nfunction isWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\n}\n\nfunction isNormalizedWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\n}\n\nfunction containsForbiddenHostCodePoint(string) {\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\n}\n\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\n}\n\nfunction isSpecialScheme(scheme) {\n return specialSchemes[scheme] !== undefined;\n}\n\nfunction isSpecial(url) {\n return isSpecialScheme(url.scheme);\n}\n\nfunction isNotSpecial(url) {\n return !isSpecialScheme(url.scheme);\n}\n\nfunction defaultPort(scheme) {\n return specialSchemes[scheme];\n}\n\nfunction utf8PercentEncode(c) {\n const buf = Buffer.from(c);\n\n let str = \"\";\n\n for (let i = 0; i < buf.length; ++i) {\n str += percentEncode(buf[i]);\n }\n\n return str;\n}\n\nfunction isC0ControlPercentEncode(c) {\n return c <= 0x1F || c > 0x7E;\n}\n\nconst extraUserinfoPercentEncodeSet =\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\nfunction isUserinfoPercentEncode(c) {\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\n}\n\nconst extraFragmentPercentEncodeSet = new Set([32, 34, 60, 62, 96]);\nfunction isFragmentPercentEncode(c) {\n return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);\n}\n\nconst extraPathPercentEncodeSet = new Set([35, 63, 123, 125]);\nfunction isPathPercentEncode(c) {\n return isFragmentPercentEncode(c) || extraPathPercentEncodeSet.has(c);\n}\n\nfunction percentEncodeChar(c, encodeSetPredicate) {\n const cStr = String.fromCodePoint(c);\n\n if (encodeSetPredicate(c)) {\n return utf8PercentEncode(cStr);\n }\n\n return cStr;\n}\n\nfunction parseIPv4Number(input) {\n let R = 10;\n\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\n input = input.substring(2);\n R = 16;\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\n input = input.substring(1);\n R = 8;\n }\n\n if (input === \"\") {\n return 0;\n }\n\n let regex = /[^0-7]/;\n if (R === 10) {\n regex = /[^0-9]/;\n }\n if (R === 16) {\n regex = /[^0-9A-Fa-f]/;\n }\n\n if (regex.test(input)) {\n return failure;\n }\n\n return parseInt(input, R);\n}\n\nfunction parseIPv4(input) {\n const parts = input.split(\".\");\n if (parts[parts.length - 1] === \"\") {\n if (parts.length > 1) {\n parts.pop();\n }\n }\n\n if (parts.length > 4) {\n return input;\n }\n\n const numbers = [];\n for (const part of parts) {\n if (part === \"\") {\n return input;\n }\n const n = parseIPv4Number(part);\n if (n === failure) {\n return input;\n }\n\n numbers.push(n);\n }\n\n for (let i = 0; i < numbers.length - 1; ++i) {\n if (numbers[i] > 255) {\n return failure;\n }\n }\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\n return failure;\n }\n\n let ipv4 = numbers.pop();\n let counter = 0;\n\n for (const n of numbers) {\n ipv4 += n * Math.pow(256, 3 - counter);\n ++counter;\n }\n\n return ipv4;\n}\n\nfunction serializeIPv4(address) {\n let output = \"\";\n let n = address;\n\n for (let i = 1; i <= 4; ++i) {\n output = String(n % 256) + output;\n if (i !== 4) {\n output = \".\" + output;\n }\n n = Math.floor(n / 256);\n }\n\n return output;\n}\n\nfunction parseIPv6(input) {\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\n let pieceIndex = 0;\n let compress = null;\n let pointer = 0;\n\n input = punycode.ucs2.decode(input);\n\n if (input[pointer] === 58) {\n if (input[pointer + 1] !== 58) {\n return failure;\n }\n\n pointer += 2;\n ++pieceIndex;\n compress = pieceIndex;\n }\n\n while (pointer < input.length) {\n if (pieceIndex === 8) {\n return failure;\n }\n\n if (input[pointer] === 58) {\n if (compress !== null) {\n return failure;\n }\n ++pointer;\n ++pieceIndex;\n compress = pieceIndex;\n continue;\n }\n\n let value = 0;\n let length = 0;\n\n while (length < 4 && infra.isASCIIHex(input[pointer])) {\n value = value * 0x10 + parseInt(at(input, pointer), 16);\n ++pointer;\n ++length;\n }\n\n if (input[pointer] === 46) {\n if (length === 0) {\n return failure;\n }\n\n pointer -= length;\n\n if (pieceIndex > 6) {\n return failure;\n }\n\n let numbersSeen = 0;\n\n while (input[pointer] !== undefined) {\n let ipv4Piece = null;\n\n if (numbersSeen > 0) {\n if (input[pointer] === 46 && numbersSeen < 4) {\n ++pointer;\n } else {\n return failure;\n }\n }\n\n if (!infra.isASCIIDigit(input[pointer])) {\n return failure;\n }\n\n while (infra.isASCIIDigit(input[pointer])) {\n const number = parseInt(at(input, pointer));\n if (ipv4Piece === null) {\n ipv4Piece = number;\n } else if (ipv4Piece === 0) {\n return failure;\n } else {\n ipv4Piece = ipv4Piece * 10 + number;\n }\n if (ipv4Piece > 255) {\n return failure;\n }\n ++pointer;\n }\n\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\n\n ++numbersSeen;\n\n if (numbersSeen === 2 || numbersSeen === 4) {\n ++pieceIndex;\n }\n }\n\n if (numbersSeen !== 4) {\n return failure;\n }\n\n break;\n } else if (input[pointer] === 58) {\n ++pointer;\n if (input[pointer] === undefined) {\n return failure;\n }\n } else if (input[pointer] !== undefined) {\n return failure;\n }\n\n address[pieceIndex] = value;\n ++pieceIndex;\n }\n\n if (compress !== null) {\n let swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n const temp = address[compress + swaps - 1];\n address[compress + swaps - 1] = address[pieceIndex];\n address[pieceIndex] = temp;\n --pieceIndex;\n --swaps;\n }\n } else if (compress === null && pieceIndex !== 8) {\n return failure;\n }\n\n return address;\n}\n\nfunction serializeIPv6(address) {\n let output = \"\";\n const seqResult = findLongestZeroSequence(address);\n const compress = seqResult.idx;\n let ignore0 = false;\n\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\n if (ignore0 && address[pieceIndex] === 0) {\n continue;\n } else if (ignore0) {\n ignore0 = false;\n }\n\n if (compress === pieceIndex) {\n const separator = pieceIndex === 0 ? \"::\" : \":\";\n output += separator;\n ignore0 = true;\n continue;\n }\n\n output += address[pieceIndex].toString(16);\n\n if (pieceIndex !== 7) {\n output += \":\";\n }\n }\n\n return output;\n}\n\nfunction parseHost(input, isNotSpecialArg = false) {\n if (input[0] === \"[\") {\n if (input[input.length - 1] !== \"]\") {\n return failure;\n }\n\n return parseIPv6(input.substring(1, input.length - 1));\n }\n\n if (isNotSpecialArg) {\n return parseOpaqueHost(input);\n }\n\n const domain = percentDecode(Buffer.from(input)).toString();\n const asciiDomain = domainToASCII(domain);\n if (asciiDomain === failure) {\n return failure;\n }\n\n if (containsForbiddenHostCodePoint(asciiDomain)) {\n return failure;\n }\n\n const ipv4Host = parseIPv4(asciiDomain);\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\n return ipv4Host;\n }\n\n return asciiDomain;\n}\n\nfunction parseOpaqueHost(input) {\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\n return failure;\n }\n\n let output = \"\";\n const decoded = punycode.ucs2.decode(input);\n for (let i = 0; i < decoded.length; ++i) {\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\n }\n return output;\n}\n\nfunction findLongestZeroSequence(arr) {\n let maxIdx = null;\n let maxLen = 1; // only find elements > 1\n let currStart = null;\n let currLen = 0;\n\n for (let i = 0; i < arr.length; ++i) {\n if (arr[i] !== 0) {\n if (currLen > maxLen) {\n maxIdx = currStart;\n maxLen = currLen;\n }\n\n currStart = null;\n currLen = 0;\n } else {\n if (currStart === null) {\n currStart = i;\n }\n ++currLen;\n }\n }\n\n // if trailing zeros\n if (currLen > maxLen) {\n maxIdx = currStart;\n maxLen = currLen;\n }\n\n return {\n idx: maxIdx,\n len: maxLen\n };\n}\n\nfunction serializeHost(host) {\n if (typeof host === \"number\") {\n return serializeIPv4(host);\n }\n\n // IPv6 serializer\n if (host instanceof Array) {\n return \"[\" + serializeIPv6(host) + \"]\";\n }\n\n return host;\n}\n\nfunction domainToASCII(domain, beStrict = false) {\n const result = tr46.toASCII(domain, {\n checkBidi: true,\n checkHyphens: false,\n checkJoiners: true,\n useSTD3ASCIIRules: beStrict,\n verifyDNSLength: beStrict\n });\n if (result === null) {\n return failure;\n }\n return result;\n}\n\nfunction trimControlChars(url) {\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\n}\n\nfunction trimTabAndNewline(url) {\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\n}\n\nfunction shortenPath(url) {\n const { path } = url;\n if (path.length === 0) {\n return;\n }\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\n return;\n }\n\n path.pop();\n}\n\nfunction includesCredentials(url) {\n return url.username !== \"\" || url.password !== \"\";\n}\n\nfunction cannotHaveAUsernamePasswordPort(url) {\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\n}\n\nfunction isNormalizedWindowsDriveLetter(string) {\n return /^[A-Za-z]:$/.test(string);\n}\n\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\n this.pointer = 0;\n this.input = input;\n this.base = base || null;\n this.encodingOverride = encodingOverride || \"utf-8\";\n this.stateOverride = stateOverride;\n this.url = url;\n this.failure = false;\n this.parseError = false;\n\n if (!this.url) {\n this.url = {\n scheme: \"\",\n username: \"\",\n password: \"\",\n host: null,\n port: null,\n path: [],\n query: null,\n fragment: null,\n\n cannotBeABaseURL: false\n };\n\n const res = trimControlChars(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n }\n\n const res = trimTabAndNewline(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n\n this.state = stateOverride || \"scheme start\";\n\n this.buffer = \"\";\n this.atFlag = false;\n this.arrFlag = false;\n this.passwordTokenSeenFlag = false;\n\n this.input = punycode.ucs2.decode(this.input);\n\n for (; this.pointer <= this.input.length; ++this.pointer) {\n const c = this.input[this.pointer];\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\n\n // exec state machine\n const ret = this[\"parse \" + this.state](c, cStr);\n if (!ret) {\n break; // terminate algorithm\n } else if (ret === failure) {\n this.failure = true;\n break;\n }\n }\n}\n\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\n if (infra.isASCIIAlpha(c)) {\n this.buffer += cStr.toLowerCase();\n this.state = \"scheme\";\n } else if (!this.stateOverride) {\n this.state = \"no scheme\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\n if (infra.isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\n this.buffer += cStr.toLowerCase();\n } else if (c === 58) {\n if (this.stateOverride) {\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\n return false;\n }\n\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\n return false;\n }\n }\n this.url.scheme = this.buffer;\n if (this.stateOverride) {\n if (this.url.port === defaultPort(this.url.scheme)) {\n this.url.port = null;\n }\n return false;\n }\n this.buffer = \"\";\n if (this.url.scheme === \"file\") {\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\n this.parseError = true;\n }\n this.state = \"file\";\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\n this.state = \"special relative or authority\";\n } else if (isSpecial(this.url)) {\n this.state = \"special authority slashes\";\n } else if (this.input[this.pointer + 1] === 47) {\n this.state = \"path or authority\";\n ++this.pointer;\n } else {\n this.url.cannotBeABaseURL = true;\n this.url.path.push(\"\");\n this.state = \"cannot-be-a-base-URL path\";\n }\n } else if (!this.stateOverride) {\n this.buffer = \"\";\n this.state = \"no scheme\";\n this.pointer = -1;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\n return failure;\n } else if (this.base.cannotBeABaseURL && c === 35) {\n this.url.scheme = this.base.scheme;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.url.cannotBeABaseURL = true;\n this.state = \"fragment\";\n } else if (this.base.scheme === \"file\") {\n this.state = \"file\";\n --this.pointer;\n } else {\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\n if (c === 47 && this.input[this.pointer + 1] === 47) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\n if (c === 47) {\n this.state = \"authority\";\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\n this.url.scheme = this.base.scheme;\n if (isNaN(c)) {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n } else if (c === 47) {\n this.state = \"relative slash\";\n } else if (c === 63) {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === 35) {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (isSpecial(this.url) && c === 92) {\n this.parseError = true;\n this.state = \"relative slash\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\n\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"special authority ignore slashes\";\n } else if (c === 47) {\n this.state = \"authority\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\n if (c === 47 && this.input[this.pointer + 1] === 47) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"special authority ignore slashes\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\n if (c !== 47 && c !== 92) {\n this.state = \"authority\";\n --this.pointer;\n } else {\n this.parseError = true;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\n if (c === 64) {\n this.parseError = true;\n if (this.atFlag) {\n this.buffer = \"%40\" + this.buffer;\n }\n this.atFlag = true;\n\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\n const len = countSymbols(this.buffer);\n for (let pointer = 0; pointer < len; ++pointer) {\n const codePoint = this.buffer.codePointAt(pointer);\n\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\n this.passwordTokenSeenFlag = true;\n continue;\n }\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\n if (this.passwordTokenSeenFlag) {\n this.url.password += encodedCodePoints;\n } else {\n this.url.username += encodedCodePoints;\n }\n }\n this.buffer = \"\";\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n (isSpecial(this.url) && c === 92)) {\n if (this.atFlag && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n this.pointer -= countSymbols(this.buffer) + 1;\n this.buffer = \"\";\n this.state = \"host\";\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse hostname\"] =\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\n if (this.stateOverride && this.url.scheme === \"file\") {\n --this.pointer;\n this.state = \"file host\";\n } else if (c === 58 && !this.arrFlag) {\n if (this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"port\";\n if (this.stateOverride === \"hostname\") {\n return false;\n }\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n (isSpecial(this.url) && c === 92)) {\n --this.pointer;\n if (isSpecial(this.url) && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n } else if (this.stateOverride && this.buffer === \"\" &&\n (includesCredentials(this.url) || this.url.port !== null)) {\n this.parseError = true;\n return false;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"path start\";\n if (this.stateOverride) {\n return false;\n }\n } else {\n if (c === 91) {\n this.arrFlag = true;\n } else if (c === 93) {\n this.arrFlag = false;\n }\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\n if (infra.isASCIIDigit(c)) {\n this.buffer += cStr;\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n (isSpecial(this.url) && c === 92) ||\n this.stateOverride) {\n if (this.buffer !== \"\") {\n const port = parseInt(this.buffer);\n if (port > Math.pow(2, 16) - 1) {\n this.parseError = true;\n return failure;\n }\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\n this.buffer = \"\";\n }\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\n\nfunction startsWithWindowsDriveLetter(input, pointer) {\n const length = input.length - pointer;\n return length >= 2 &&\n isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&\n (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));\n}\n\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\n this.url.scheme = \"file\";\n\n if (c === 47 || c === 92) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"file slash\";\n } else if (this.base !== null && this.base.scheme === \"file\") {\n if (isNaN(c)) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n } else if (c === 63) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === 35) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else {\n if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n shortenPath(this.url);\n } else {\n this.parseError = true;\n }\n\n this.state = \"path\";\n --this.pointer;\n }\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\n if (c === 47 || c === 92) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"file host\";\n } else {\n if (this.base !== null && this.base.scheme === \"file\" &&\n !startsWithWindowsDriveLetter(this.input, this.pointer)) {\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\n this.url.path.push(this.base.path[0]);\n } else {\n this.url.host = this.base.host;\n }\n }\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\n --this.pointer;\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\n this.parseError = true;\n this.state = \"path\";\n } else if (this.buffer === \"\") {\n this.url.host = \"\";\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n } else {\n let host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n if (host === \"localhost\") {\n host = \"\";\n }\n this.url.host = host;\n\n if (this.stateOverride) {\n return false;\n }\n\n this.buffer = \"\";\n this.state = \"path start\";\n }\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\n if (isSpecial(this.url)) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"path\";\n\n if (c !== 47 && c !== 92) {\n --this.pointer;\n }\n } else if (!this.stateOverride && c === 63) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (!this.stateOverride && c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (c !== undefined) {\n this.state = \"path\";\n if (c !== 47) {\n --this.pointer;\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\n (!this.stateOverride && (c === 63 || c === 35))) {\n if (isSpecial(this.url) && c === 92) {\n this.parseError = true;\n }\n\n if (isDoubleDot(this.buffer)) {\n shortenPath(this.url);\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\n this.url.path.push(\"\");\n }\n } else if (isSingleDot(this.buffer) && c !== 47 &&\n !(isSpecial(this.url) && c === 92)) {\n this.url.path.push(\"\");\n } else if (!isSingleDot(this.buffer)) {\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\n if (this.url.host !== \"\" && this.url.host !== null) {\n this.parseError = true;\n this.url.host = \"\";\n }\n this.buffer = this.buffer[0] + \":\";\n }\n this.url.path.push(this.buffer);\n }\n this.buffer = \"\";\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\n this.parseError = true;\n this.url.path.shift();\n }\n }\n if (c === 63) {\n this.url.query = \"\";\n this.state = \"query\";\n }\n if (c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\n if (c === 63) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else {\n // TODO: Add: not a URL code point\n if (!isNaN(c) && c !== 37) {\n this.parseError = true;\n }\n\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n if (!isNaN(c)) {\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\n this.encodingOverride = \"utf-8\";\n }\n\n const buffer = Buffer.from(this.buffer); // TODO: Use encoding override instead\n for (let i = 0; i < buffer.length; ++i) {\n if (buffer[i] < 0x21 ||\n buffer[i] > 0x7E ||\n buffer[i] === 0x22 || buffer[i] === 0x23 || buffer[i] === 0x3C || buffer[i] === 0x3E ||\n (buffer[i] === 0x27 && isSpecial(this.url))) {\n this.url.query += percentEncode(buffer[i]);\n } else {\n this.url.query += String.fromCodePoint(buffer[i]);\n }\n }\n\n this.buffer = \"\";\n if (c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\n if (isNaN(c)) { // do nothing\n } else if (c === 0x0) {\n this.parseError = true;\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.url.fragment += percentEncodeChar(c, isFragmentPercentEncode);\n }\n\n return true;\n};\n\nfunction serializeURL(url, excludeFragment) {\n let output = url.scheme + \":\";\n if (url.host !== null) {\n output += \"//\";\n\n if (url.username !== \"\" || url.password !== \"\") {\n output += url.username;\n if (url.password !== \"\") {\n output += \":\" + url.password;\n }\n output += \"@\";\n }\n\n output += serializeHost(url.host);\n\n if (url.port !== null) {\n output += \":\" + url.port;\n }\n } else if (url.host === null && url.scheme === \"file\") {\n output += \"//\";\n }\n\n if (url.cannotBeABaseURL) {\n output += url.path[0];\n } else {\n for (const string of url.path) {\n output += \"/\" + string;\n }\n }\n\n if (url.query !== null) {\n output += \"?\" + url.query;\n }\n\n if (!excludeFragment && url.fragment !== null) {\n output += \"#\" + url.fragment;\n }\n\n return output;\n}\n\nfunction serializeOrigin(tuple) {\n let result = tuple.scheme + \"://\";\n result += serializeHost(tuple.host);\n\n if (tuple.port !== null) {\n result += \":\" + tuple.port;\n }\n\n return result;\n}\n\nmodule.exports.serializeURL = serializeURL;\n\nmodule.exports.serializeURLOrigin = function (url) {\n // https://url.spec.whatwg.org/#concept-url-origin\n switch (url.scheme) {\n case \"blob\":\n try {\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\n } catch (e) {\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n case \"ftp\":\n case \"http\":\n case \"https\":\n case \"ws\":\n case \"wss\":\n return serializeOrigin({\n scheme: url.scheme,\n host: url.host,\n port: url.port\n });\n case \"file\":\n // The spec says:\n // > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.\n // Browsers tested so far:\n // - Chrome says \"file://\", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=37586\n // - Firefox says \"null\", but treats file: URLs as same-origin sometimes based on directory stuff; see\n // https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs\n return \"null\";\n default:\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n};\n\nmodule.exports.basicURLParse = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\n if (usm.failure) {\n return null;\n }\n\n return usm.url;\n};\n\nmodule.exports.setTheUsername = function (url, username) {\n url.username = \"\";\n const decoded = punycode.ucs2.decode(username);\n for (let i = 0; i < decoded.length; ++i) {\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\n }\n};\n\nmodule.exports.setThePassword = function (url, password) {\n url.password = \"\";\n const decoded = punycode.ucs2.decode(password);\n for (let i = 0; i < decoded.length; ++i) {\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\n }\n};\n\nmodule.exports.serializeHost = serializeHost;\n\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\n\nmodule.exports.serializeInteger = function (integer) {\n return String(integer);\n};\n\nmodule.exports.parseURL = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n // We don't handle blobs, so this just delegates:\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\n};\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, function(o) { return o.user; });\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n *\n * _.sortBy(users, 'user', function(o) {\n * return Math.floor(o.age / 10);\n * });\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = sortBy;\n", "\"use strict\";\nconst stableSortBy = require(\"lodash.sortby\");\nconst urlencoded = require(\"./urlencoded\");\n\nexports.implementation = class URLSearchParamsImpl {\n constructor(constructorArgs, { doNotStripQMark = false }) {\n let init = constructorArgs[0];\n this._list = [];\n this._url = null;\n\n if (!doNotStripQMark && typeof init === \"string\" && init[0] === \"?\") {\n init = init.slice(1);\n }\n\n if (Array.isArray(init)) {\n for (const pair of init) {\n if (pair.length !== 2) {\n throw new TypeError(\"Failed to construct 'URLSearchParams': parameter 1 sequence's element does not \" +\n \"contain exactly two elements.\");\n }\n this._list.push([pair[0], pair[1]]);\n }\n } else if (typeof init === \"object\" && Object.getPrototypeOf(init) === null) {\n for (const name of Object.keys(init)) {\n const value = init[name];\n this._list.push([name, value]);\n }\n } else {\n this._list = urlencoded.parseUrlencoded(init);\n }\n }\n\n _updateSteps() {\n if (this._url !== null) {\n let query = urlencoded.serializeUrlencoded(this._list);\n if (query === \"\") {\n query = null;\n }\n this._url._url.query = query;\n }\n }\n\n append(name, value) {\n this._list.push([name, value]);\n this._updateSteps();\n }\n\n delete(name) {\n let i = 0;\n while (i < this._list.length) {\n if (this._list[i][0] === name) {\n this._list.splice(i, 1);\n } else {\n i++;\n }\n }\n this._updateSteps();\n }\n\n get(name) {\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n return tuple[1];\n }\n }\n return null;\n }\n\n getAll(name) {\n const output = [];\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n output.push(tuple[1]);\n }\n }\n return output;\n }\n\n has(name) {\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n return true;\n }\n }\n return false;\n }\n\n set(name, value) {\n let found = false;\n let i = 0;\n while (i < this._list.length) {\n if (this._list[i][0] === name) {\n if (found) {\n this._list.splice(i, 1);\n } else {\n found = true;\n this._list[i][1] = value;\n i++;\n }\n } else {\n i++;\n }\n }\n if (!found) {\n this._list.push([name, value]);\n }\n this._updateSteps();\n }\n\n sort() {\n this._list = stableSortBy(this._list, [0]);\n this._updateSteps();\n }\n\n [Symbol.iterator]() {\n return this._list[Symbol.iterator]();\n }\n\n toString() {\n return urlencoded.serializeUrlencoded(this._list);\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst impl = utils.implSymbol;\n\nconst IteratorPrototype = Object.create(utils.IteratorPrototype, {\n next: {\n value: function next() {\n const internal = this[utils.iterInternalSymbol];\n const { target, kind, index } = internal;\n const values = Array.from(target[impl]);\n const len = values.length;\n if (index >= len) {\n return { value: undefined, done: true };\n }\n\n const pair = values[index];\n internal.index = index + 1;\n const [key, value] = pair.map(utils.tryWrapperForImpl);\n\n let result;\n switch (kind) {\n case \"key\":\n result = key;\n break;\n case \"value\":\n result = value;\n break;\n case \"key+value\":\n result = [key, value];\n break;\n }\n return { value: result, done: false };\n },\n writable: true,\n enumerable: true,\n configurable: true\n },\n [Symbol.toStringTag]: {\n value: \"URLSearchParams Iterator\",\n configurable: true\n }\n});\nclass URLSearchParams {\n constructor() {\n const args = [];\n {\n let curArg = arguments[0];\n if (curArg !== undefined) {\n if (utils.isObject(curArg)) {\n if (curArg[Symbol.iterator] !== undefined) {\n if (!utils.isObject(curArg)) {\n throw new TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = curArg;\n for (let nextItem of tmp) {\n if (!utils.isObject(nextItem)) {\n throw new TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" +\n \" sequence\" +\n \"'s element\" +\n \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = nextItem;\n for (let nextItem of tmp) {\n nextItem = conversions[\"USVString\"](nextItem, {\n context:\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \"'s element\" + \"'s element\"\n });\n\n V.push(nextItem);\n }\n nextItem = V;\n }\n\n V.push(nextItem);\n }\n curArg = V;\n }\n } else {\n if (!utils.isObject(curArg)) {\n throw new TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \" is not an object.\"\n );\n } else {\n const result = Object.create(null);\n for (const key of Reflect.ownKeys(curArg)) {\n const desc = Object.getOwnPropertyDescriptor(curArg, key);\n if (desc && desc.enumerable) {\n let typedKey = key;\n let typedValue = curArg[key];\n\n typedKey = conversions[\"USVString\"](typedKey, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s key\"\n });\n\n typedValue = conversions[\"USVString\"](typedValue, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s value\"\n });\n\n result[typedKey] = typedValue;\n }\n }\n curArg = result;\n }\n }\n } else {\n curArg = conversions[\"USVString\"](curArg, { context: \"Failed to construct 'URLSearchParams': parameter 1\" });\n }\n } else {\n curArg = \"\";\n }\n args.push(curArg);\n }\n return iface.setup(Object.create(new.target.prototype), args);\n }\n\n append(name, value) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 2) {\n throw new TypeError(\n \"Failed to execute 'append' on 'URLSearchParams': 2 arguments required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 1\"\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 2\"\n });\n args.push(curArg);\n }\n return this[impl].append(...args);\n }\n\n delete(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'delete' on 'URLSearchParams': 1 argument required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 1\"\n });\n args.push(curArg);\n }\n return this[impl].delete(...args);\n }\n\n get(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'get' on 'URLSearchParams': 1 argument required, but only \" + arguments.length + \" present.\"\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'get' on 'URLSearchParams': parameter 1\"\n });\n args.push(curArg);\n }\n return this[impl].get(...args);\n }\n\n getAll(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'getAll' on 'URLSearchParams': 1 argument required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'getAll' on 'URLSearchParams': parameter 1\"\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(this[impl].getAll(...args));\n }\n\n has(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'has' on 'URLSearchParams': 1 argument required, but only \" + arguments.length + \" present.\"\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'has' on 'URLSearchParams': parameter 1\"\n });\n args.push(curArg);\n }\n return this[impl].has(...args);\n }\n\n set(name, value) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 2) {\n throw new TypeError(\n \"Failed to execute 'set' on 'URLSearchParams': 2 arguments required, but only \" + arguments.length + \" present.\"\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'set' on 'URLSearchParams': parameter 1\"\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'set' on 'URLSearchParams': parameter 2\"\n });\n args.push(curArg);\n }\n return this[impl].set(...args);\n }\n\n sort() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl].sort();\n }\n\n toString() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl].toString();\n }\n\n keys() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return module.exports.createDefaultIterator(this, \"key\");\n }\n\n values() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return module.exports.createDefaultIterator(this, \"value\");\n }\n\n entries() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return module.exports.createDefaultIterator(this, \"key+value\");\n }\n\n forEach(callback) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to execute 'forEach' on 'iterable': 1 argument required, \" + \"but only 0 present.\");\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'iterable': The callback provided \" + \"as parameter 1 is not a function.\"\n );\n }\n const thisArg = arguments[1];\n let pairs = Array.from(this[impl]);\n let i = 0;\n while (i < pairs.length) {\n const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n callback.call(thisArg, value, key, this);\n pairs = Array.from(this[impl]);\n i++;\n }\n }\n}\nObject.defineProperties(URLSearchParams.prototype, {\n append: { enumerable: true },\n delete: { enumerable: true },\n get: { enumerable: true },\n getAll: { enumerable: true },\n has: { enumerable: true },\n set: { enumerable: true },\n sort: { enumerable: true },\n toString: { enumerable: true },\n keys: { enumerable: true },\n values: { enumerable: true },\n entries: { enumerable: true },\n forEach: { enumerable: true },\n [Symbol.toStringTag]: { value: \"URLSearchParams\", configurable: true },\n [Symbol.iterator]: { value: URLSearchParams.prototype.entries, configurable: true, writable: true }\n});\nconst iface = {\n // When an interface-module that implements this interface as a mixin is loaded, it will append its own `.is()`\n // method into this array. It allows objects that directly implements *those* interfaces to be recognized as\n // implementing this mixin interface.\n _mixedIntoPredicates: [],\n is(obj) {\n if (obj) {\n if (utils.hasOwn(obj, impl) && obj[impl] instanceof Impl.implementation) {\n return true;\n }\n for (const isMixedInto of module.exports._mixedIntoPredicates) {\n if (isMixedInto(obj)) {\n return true;\n }\n }\n }\n return false;\n },\n isImpl(obj) {\n if (obj) {\n if (obj instanceof Impl.implementation) {\n return true;\n }\n\n const wrapper = utils.wrapperForImpl(obj);\n for (const isMixedInto of module.exports._mixedIntoPredicates) {\n if (isMixedInto(wrapper)) {\n return true;\n }\n }\n }\n return false;\n },\n convert(obj, { context = \"The provided value\" } = {}) {\n if (module.exports.is(obj)) {\n return utils.implForWrapper(obj);\n }\n throw new TypeError(`${context} is not of type 'URLSearchParams'.`);\n },\n\n createDefaultIterator(target, kind) {\n const iterator = Object.create(IteratorPrototype);\n Object.defineProperty(iterator, utils.iterInternalSymbol, {\n value: { target, kind, index: 0 },\n configurable: true\n });\n return iterator;\n },\n\n create(constructorArgs, privateData) {\n let obj = Object.create(URLSearchParams.prototype);\n obj = this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n createImpl(constructorArgs, privateData) {\n let obj = Object.create(URLSearchParams.prototype);\n obj = this.setup(obj, constructorArgs, privateData);\n return utils.implForWrapper(obj);\n },\n _internalSetup(obj) {},\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n\n privateData.wrapper = obj;\n\n this._internalSetup(obj);\n Object.defineProperty(obj, impl, {\n value: new Impl.implementation(constructorArgs, privateData),\n configurable: true\n });\n\n obj[impl][utils.wrapperSymbol] = obj;\n if (Impl.init) {\n Impl.init(obj[impl], privateData);\n }\n return obj;\n },\n interface: URLSearchParams,\n expose: {\n Window: { URLSearchParams },\n Worker: { URLSearchParams }\n }\n}; // iface\nmodule.exports = iface;\n\nconst Impl = require(\"./URLSearchParams-impl.js\");\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\nconst urlencoded = require(\"./urlencoded\");\nconst URLSearchParams = require(\"./URLSearchParams\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === null) {\n throw new TypeError(`Invalid base URL: ${base}`);\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === null) {\n throw new TypeError(`Invalid URL: ${url}`);\n }\n\n const query = parsedURL.query !== null ? parsedURL.query : \"\";\n\n this._url = parsedURL;\n\n // We cannot invoke the \"new URLSearchParams object\" algorithm without going through the constructor, which strips\n // question mark by default. Therefore the doNotStripQMark hack is used.\n this._query = URLSearchParams.createImpl([query], { doNotStripQMark: true });\n this._query._url = this;\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === null) {\n throw new TypeError(`Invalid URL: ${v}`);\n }\n\n this._url = parsedURL;\n\n this._query._list.splice(0);\n const { query } = parsedURL;\n if (query !== null) {\n this._query._list = urlencoded.parseUrlencoded(query);\n }\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n this._query._list = [];\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n this._query._list = urlencoded.parseUrlencoded(input);\n }\n\n get searchParams() {\n return this._query;\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst impl = utils.implSymbol;\n\nclass URL {\n constructor(url) {\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, { context: \"Failed to construct 'URL': parameter 1\" });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n if (curArg !== undefined) {\n curArg = conversions[\"USVString\"](curArg, { context: \"Failed to construct 'URL': parameter 2\" });\n }\n args.push(curArg);\n }\n return iface.setup(Object.create(new.target.prototype), args);\n }\n\n toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl].toJSON();\n }\n\n get href() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"href\"];\n }\n\n set href(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'href' property on 'URL': The provided value\" });\n\n this[impl][\"href\"] = V;\n }\n\n toString() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this[impl][\"href\"];\n }\n\n get origin() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"origin\"];\n }\n\n get protocol() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"protocol\"];\n }\n\n set protocol(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'protocol' property on 'URL': The provided value\" });\n\n this[impl][\"protocol\"] = V;\n }\n\n get username() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"username\"];\n }\n\n set username(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'username' property on 'URL': The provided value\" });\n\n this[impl][\"username\"] = V;\n }\n\n get password() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"password\"];\n }\n\n set password(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'password' property on 'URL': The provided value\" });\n\n this[impl][\"password\"] = V;\n }\n\n get host() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"host\"];\n }\n\n set host(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'host' property on 'URL': The provided value\" });\n\n this[impl][\"host\"] = V;\n }\n\n get hostname() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"hostname\"];\n }\n\n set hostname(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'hostname' property on 'URL': The provided value\" });\n\n this[impl][\"hostname\"] = V;\n }\n\n get port() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"port\"];\n }\n\n set port(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'port' property on 'URL': The provided value\" });\n\n this[impl][\"port\"] = V;\n }\n\n get pathname() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"pathname\"];\n }\n\n set pathname(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'pathname' property on 'URL': The provided value\" });\n\n this[impl][\"pathname\"] = V;\n }\n\n get search() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"search\"];\n }\n\n set search(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'search' property on 'URL': The provided value\" });\n\n this[impl][\"search\"] = V;\n }\n\n get searchParams() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return utils.getSameObject(this, \"searchParams\", () => {\n return utils.tryWrapperForImpl(this[impl][\"searchParams\"]);\n });\n }\n\n get hash() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl][\"hash\"];\n }\n\n set hash(V) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n V = conversions[\"USVString\"](V, { context: \"Failed to set the 'hash' property on 'URL': The provided value\" });\n\n this[impl][\"hash\"] = V;\n }\n}\nObject.defineProperties(URL.prototype, {\n toJSON: { enumerable: true },\n href: { enumerable: true },\n toString: { enumerable: true },\n origin: { enumerable: true },\n protocol: { enumerable: true },\n username: { enumerable: true },\n password: { enumerable: true },\n host: { enumerable: true },\n hostname: { enumerable: true },\n port: { enumerable: true },\n pathname: { enumerable: true },\n search: { enumerable: true },\n searchParams: { enumerable: true },\n hash: { enumerable: true },\n [Symbol.toStringTag]: { value: \"URL\", configurable: true }\n});\nconst iface = {\n // When an interface-module that implements this interface as a mixin is loaded, it will append its own `.is()`\n // method into this array. It allows objects that directly implements *those* interfaces to be recognized as\n // implementing this mixin interface.\n _mixedIntoPredicates: [],\n is(obj) {\n if (obj) {\n if (utils.hasOwn(obj, impl) && obj[impl] instanceof Impl.implementation) {\n return true;\n }\n for (const isMixedInto of module.exports._mixedIntoPredicates) {\n if (isMixedInto(obj)) {\n return true;\n }\n }\n }\n return false;\n },\n isImpl(obj) {\n if (obj) {\n if (obj instanceof Impl.implementation) {\n return true;\n }\n\n const wrapper = utils.wrapperForImpl(obj);\n for (const isMixedInto of module.exports._mixedIntoPredicates) {\n if (isMixedInto(wrapper)) {\n return true;\n }\n }\n }\n return false;\n },\n convert(obj, { context = \"The provided value\" } = {}) {\n if (module.exports.is(obj)) {\n return utils.implForWrapper(obj);\n }\n throw new TypeError(`${context} is not of type 'URL'.`);\n },\n\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n obj = this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n createImpl(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n obj = this.setup(obj, constructorArgs, privateData);\n return utils.implForWrapper(obj);\n },\n _internalSetup(obj) {},\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n\n privateData.wrapper = obj;\n\n this._internalSetup(obj);\n Object.defineProperty(obj, impl, {\n value: new Impl.implementation(constructorArgs, privateData),\n configurable: true\n });\n\n obj[impl][utils.wrapperSymbol] = obj;\n if (Impl.init) {\n Impl.init(obj[impl], privateData);\n }\n return obj;\n },\n interface: URL,\n expose: {\n Window: { URL },\n Worker: { URL }\n }\n}; // iface\nmodule.exports = iface;\n\nconst Impl = require(\"./URL-impl.js\");\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.URLSearchParams = require(\"./URLSearchParams\").interface;\n\nexports.parseURL = require(\"./url-state-machine\").parseURL;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.cannotHaveAUsernamePasswordPort = require(\"./url-state-machine\").cannotHaveAUsernamePasswordPort;\n\nexports.percentDecode = require(\"./urlencoded\").percentDecode;\n", "\"use strict\";\nconst output = {};\nlet g, hasNative;\n\n\n\nif (typeof window !== \"undefined\")\n{\n\tg = window;\n}\nelse if (typeof global !== \"undefined\")\n{\n\tg = global;\n}\nelse if (typeof self !== \"undefined\")\n{\n\tg = self;\n}\nelse\n{\n\tg = this;\n}\n\n\n\ntry\n{\n\tconst url = new g.URL(\"http://domain.com\");\n\tconst params = new g.URLSearchParams(\"?param=value\")\n\n\thasNative = \"searchParams\" in url && params.get(\"param\") === \"value\";\n}\ncatch (error)\n{\n\thasNative = false;\n}\n\n\n\nif (hasNative)\n{\n\toutput.URL = g.URL;\n\toutput.URLSearchParams = g.URLSearchParams;\n}\nelse\n{\n\tconst lib = require(\"whatwg-url\");\n\n\toutput.URL = lib.URL;\n\toutput.URLSearchParams = lib.URLSearchParams;\n}\n\n\n\noutput.shim = () =>\n{\n\tg.URL = output.URL;\n\tg.URLSearchParams = output.URLSearchParams;\n};\n\n\n\nmodule.exports = output;\n", "globalThis.URL = require(\"url\").URL;\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "globalThis.buffer_shim = require(\"buffer\").Buffer;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.versionInfo = exports.version = void 0;\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nconst version = '16.5.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexports.version = version;\nconst versionInfo = Object.freeze({\n major: 16,\n minor: 5,\n patch: 0,\n preReleaseTag: null,\n});\nexports.versionInfo = versionInfo;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.devAssert = devAssert;\n\nfunction devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isPromise = isPromise;\n\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nfunction isPromise(value) {\n return (\n typeof (value === null || value === void 0 ? void 0 : value.then) ===\n 'function'\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isObjectLike = isObjectLike;\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.invariant = invariant;\n\nfunction invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.getLocation = getLocation;\n\nvar _invariant = require('../jsutils/invariant.js');\n\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || (0, _invariant.invariant)(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.printLocation = printLocation;\nexports.printSourceLocation = printSourceLocation;\n\nvar _location = require('./location.js');\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n return printSourceLocation(\n location.source,\n (0, _location.getLocation)(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.GraphQLError = void 0;\nexports.formatError = formatError;\nexports.printError = printError;\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _location = require('../language/location.js');\n\nvar _printLocation = require('../language/printLocation.js');\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nclass GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => (0, _location.getLocation)(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) =>\n (0, _location.getLocation)(loc.source, loc.start),\n );\n const originalExtensions = (0, _isObjectLike.isObjectLike)(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + (0, _printLocation.printLocation)(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output +=\n '\\n\\n' +\n (0, _printLocation.printSourceLocation)(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nexports.GraphQLError = GraphQLError;\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nfunction printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nfunction formatError(error) {\n return error.toJSON();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.syntaxError = syntaxError;\n\nvar _GraphQLError = require('./GraphQLError.js');\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\nfunction syntaxError(source, position, description) {\n return new _GraphQLError.GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Token =\n exports.QueryDocumentKeys =\n exports.OperationTypeNode =\n exports.Location =\n void 0;\nexports.isNode = isNode;\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexports.Location = Location;\n\nclass Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\nexports.Token = Token;\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nlet OperationTypeNode;\nexports.OperationTypeNode = OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (exports.OperationTypeNode = OperationTypeNode = {}));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.DirectiveLocation = void 0;\n\n/**\n * The set of allowed directive location values.\n */\nlet DirectiveLocation;\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n\nexports.DirectiveLocation = DirectiveLocation;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (exports.DirectiveLocation = DirectiveLocation = {}));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nlet Kind;\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n\nexports.Kind = Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (exports.Kind = Kind = {}));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isDigit = isDigit;\nexports.isLetter = isLetter;\nexports.isNameContinue = isNameContinue;\nexports.isNameStart = isNameStart;\nexports.isWhiteSpace = isWhiteSpace;\n\n/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.dedentBlockStringLines = dedentBlockStringLines;\nexports.isPrintableAsBlockString = isPrintableAsBlockString;\nexports.printBlockString = printBlockString;\n\nvar _characterClasses = require('./characterClasses.js');\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (\n i < str.length &&\n (0, _characterClasses.isWhiteSpace)(str.charCodeAt(i))\n ) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nfunction isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every(\n (line) =>\n line.length === 0 ||\n (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0)),\n ); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine =\n isSingleLine && (0, _characterClasses.isWhiteSpace)(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.TokenKind = void 0;\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nlet TokenKind;\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n\nexports.TokenKind = TokenKind;\n\n(function (TokenKind) {\n TokenKind['SOF'] = '';\n TokenKind['EOF'] = '';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (exports.TokenKind = TokenKind = {}));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Lexer = void 0;\nexports.isPunctuatorTokenKind = isPunctuatorTokenKind;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _blockString = require('./blockString.js');\n\nvar _characterClasses = require('./characterClasses.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nclass Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new _ast.Token(\n _tokenKind.TokenKind.SOF,\n 0,\n 0,\n 0,\n 0,\n );\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== _tokenKind.TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === _tokenKind.TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexports.Lexer = Lexer;\n\nfunction isPunctuatorTokenKind(kind) {\n return (\n kind === _tokenKind.TokenKind.BANG ||\n kind === _tokenKind.TokenKind.DOLLAR ||\n kind === _tokenKind.TokenKind.AMP ||\n kind === _tokenKind.TokenKind.PAREN_L ||\n kind === _tokenKind.TokenKind.PAREN_R ||\n kind === _tokenKind.TokenKind.SPREAD ||\n kind === _tokenKind.TokenKind.COLON ||\n kind === _tokenKind.TokenKind.EQUALS ||\n kind === _tokenKind.TokenKind.AT ||\n kind === _tokenKind.TokenKind.BRACKET_L ||\n kind === _tokenKind.TokenKind.BRACKET_R ||\n kind === _tokenKind.TokenKind.BRACE_L ||\n kind === _tokenKind.TokenKind.PIPE ||\n kind === _tokenKind.TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return _tokenKind.TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new _ast.Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // \n\n case 0x0009: // \\t\n\n case 0x0020: // \n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(\n lexer,\n _tokenKind.TokenKind.BANG,\n position,\n position + 1,\n );\n\n case 0x0024:\n // $\n return createToken(\n lexer,\n _tokenKind.TokenKind.DOLLAR,\n position,\n position + 1,\n );\n\n case 0x0026:\n // &\n return createToken(\n lexer,\n _tokenKind.TokenKind.AMP,\n position,\n position + 1,\n );\n\n case 0x0028:\n // (\n return createToken(\n lexer,\n _tokenKind.TokenKind.PAREN_L,\n position,\n position + 1,\n );\n\n case 0x0029:\n // )\n return createToken(\n lexer,\n _tokenKind.TokenKind.PAREN_R,\n position,\n position + 1,\n );\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(\n lexer,\n _tokenKind.TokenKind.SPREAD,\n position,\n position + 3,\n );\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(\n lexer,\n _tokenKind.TokenKind.COLON,\n position,\n position + 1,\n );\n\n case 0x003d:\n // =\n return createToken(\n lexer,\n _tokenKind.TokenKind.EQUALS,\n position,\n position + 1,\n );\n\n case 0x0040:\n // @\n return createToken(\n lexer,\n _tokenKind.TokenKind.AT,\n position,\n position + 1,\n );\n\n case 0x005b:\n // [\n return createToken(\n lexer,\n _tokenKind.TokenKind.BRACKET_L,\n position,\n position + 1,\n );\n\n case 0x005d:\n // ]\n return createToken(\n lexer,\n _tokenKind.TokenKind.BRACKET_R,\n position,\n position + 1,\n );\n\n case 0x007b:\n // {\n return createToken(\n lexer,\n _tokenKind.TokenKind.BRACE_L,\n position,\n position + 1,\n );\n\n case 0x007c:\n // |\n return createToken(\n lexer,\n _tokenKind.TokenKind.PIPE,\n position,\n position + 1,\n );\n\n case 0x007d:\n // }\n return createToken(\n lexer,\n _tokenKind.TokenKind.BRACE_R,\n position,\n position + 1,\n );\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if ((0, _characterClasses.isDigit)(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if ((0, _characterClasses.isNameStart)(code)) {\n return readName(lexer, position);\n }\n\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, _tokenKind.TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n _tokenKind.TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if ((0, _characterClasses.isDigit)(code)) {\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || (0, _characterClasses.isNameStart)(code)) {\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!(0, _characterClasses.isDigit)(firstCode)) {\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while ((0, _characterClasses.isDigit)(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(\n lexer,\n _tokenKind.TokenKind.STRING,\n start,\n position + 1,\n value,\n );\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n 'Unterminated string.',\n );\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n _tokenKind.TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n (0, _blockString.dedentBlockStringLines)(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw (0, _syntaxError.syntaxError)(\n lexer.source,\n position,\n 'Unterminated string.',\n );\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if ((0, _characterClasses.isNameContinue)(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n _tokenKind.TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.inspect = inspect;\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.instanceOf = void 0;\n\nvar _inspect = require('./inspect.js');\n\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\nconst instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n // eslint-disable-next-line no-undef\n process.env.NODE_ENV === 'production'\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = (0, _inspect.inspect)(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\nexports.instanceOf = instanceOf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Source = void 0;\nexports.isSource = isSource;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nclass Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n (0, _devAssert.devAssert)(\n false,\n `Body must be a string. Received: ${(0, _inspect.inspect)(body)}.`,\n );\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n (0, _devAssert.devAssert)(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n (0, _devAssert.devAssert)(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexports.Source = Source;\n\nfunction isSource(source) {\n return (0, _instanceOf.instanceOf)(source, Source);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Parser = void 0;\nexports.parse = parse;\nexports.parseConstValue = parseConstValue;\nexports.parseType = parseType;\nexports.parseValue = parseValue;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _directiveLocation = require('./directiveLocation.js');\n\nvar _kinds = require('./kinds.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _source = require('./source.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nfunction parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nclass Parser {\n constructor(source, options) {\n const sourceObj = (0, _source.isSource)(source)\n ? source\n : new _source.Source(source);\n this._lexer = new _lexer.Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(_tokenKind.TokenKind.NAME);\n return this.node(token, {\n kind: _kinds.Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: _kinds.Kind.DOCUMENT,\n definitions: this.many(\n _tokenKind.TokenKind.SOF,\n this.parseDefinition,\n _tokenKind.TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw (0, _syntaxError.syntaxError)(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: _ast.OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return _ast.OperationTypeNode.QUERY;\n\n case 'mutation':\n return _ast.OperationTypeNode.MUTATION;\n\n case 'subscription':\n return _ast.OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n _tokenKind.TokenKind.PAREN_L,\n this.parseVariableDefinition,\n _tokenKind.TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: _kinds.Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type:\n (this.expectToken(_tokenKind.TokenKind.COLON),\n this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.DOLLAR);\n return this.node(start, {\n kind: _kinds.Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: _kinds.Kind.SELECTION_SET,\n selections: this.many(\n _tokenKind.TokenKind.BRACE_L,\n this.parseSelection,\n _tokenKind.TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(_tokenKind.TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: _kinds.Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(\n _tokenKind.TokenKind.PAREN_L,\n item,\n _tokenKind.TokenKind.PAREN_R,\n );\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return this.node(start, {\n kind: _kinds.Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n return this.node(start, {\n kind: _kinds.Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: _kinds.Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n var _this$_options;\n\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (\n ((_this$_options = this._options) === null || _this$_options === void 0\n ? void 0\n : _this$_options.allowLegacyFragmentVariables) === true\n ) {\n return this.node(start, {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case _tokenKind.TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case _tokenKind.TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case _tokenKind.TokenKind.INT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: _kinds.Kind.INT,\n value: token.value,\n });\n\n case _tokenKind.TokenKind.FLOAT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: _kinds.Kind.FLOAT,\n value: token.value,\n });\n\n case _tokenKind.TokenKind.STRING:\n case _tokenKind.TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case _tokenKind.TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: _kinds.Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: _kinds.Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: _kinds.Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: _kinds.Kind.ENUM,\n value: token.value,\n });\n }\n\n case _tokenKind.TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(_tokenKind.TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === _tokenKind.TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw (0, _syntaxError.syntaxError)(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n\n this._lexer.advance();\n\n return this.node(token, {\n kind: _kinds.Kind.STRING,\n value: token.value,\n block: token.kind === _tokenKind.TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: _kinds.Kind.LIST,\n values: this.any(\n _tokenKind.TokenKind.BRACKET_L,\n item,\n _tokenKind.TokenKind.BRACKET_R,\n ),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: _kinds.Kind.OBJECT,\n fields: this.any(\n _tokenKind.TokenKind.BRACE_L,\n item,\n _tokenKind.TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return this.node(start, {\n kind: _kinds.Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(_tokenKind.TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.AT);\n return this.node(start, {\n kind: _kinds.Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: _kinds.Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n return this.node(start, {\n kind: _kinds.Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: _kinds.Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return (\n this.peek(_tokenKind.TokenKind.STRING) ||\n this.peek(_tokenKind.TokenKind.BLOCK_STRING)\n );\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n _tokenKind.TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n _tokenKind.TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: _kinds.Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(_tokenKind.TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds.Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: _kinds.Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n _tokenKind.TokenKind.BRACE_L,\n this.parseFieldDefinition,\n _tokenKind.TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(_tokenKind.TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds.Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n _tokenKind.TokenKind.PAREN_L,\n this.parseInputValueDef,\n _tokenKind.TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds.Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: _kinds.Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)\n ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: _kinds.Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n _tokenKind.TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n _tokenKind.TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw (0, _syntaxError.syntaxError)(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n _tokenKind.TokenKind.BRACE_L,\n this.parseInputValueDef,\n _tokenKind.TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n _tokenKind.TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n _tokenKind.TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(_tokenKind.TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: _kinds.Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(\n _tokenKind.TokenKind.PIPE,\n this.parseDirectiveLocation,\n );\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (\n Object.prototype.hasOwnProperty.call(\n _directiveLocation.DirectiveLocation,\n name.value,\n )\n ) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n var _this$_options2;\n\n if (\n ((_this$_options2 = this._options) === null || _this$_options2 === void 0\n ? void 0\n : _this$_options2.noLocation) !== true\n ) {\n node.loc = new _ast.Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw (0, _syntaxError.syntaxError)(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw (0, _syntaxError.syntaxError)(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return (0, _syntaxError.syntaxError)(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nexports.Parser = Parser;\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return (0, _lexer.isPunctuatorTokenKind)(kind) ? `\"${kind}\"` : kind;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.didYouMean = didYouMean;\nconst MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nfunction didYouMean(firstArg, secondArg) {\n const [subMessage, suggestionsArg] = secondArg\n ? [firstArg, secondArg]\n : [undefined, firstArg];\n let message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n const lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.identityFunc = identityFunc;\n\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n return x;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.keyMap = keyMap;\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // {\n * // Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nfunction keyMap(list, keyFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = item;\n }\n\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.keyValMap = keyValMap;\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n * ```\n */\nfunction keyValMap(list, keyFn, valFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = valFn(item);\n }\n\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.mapValue = mapValue;\n\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n const result = Object.create(null);\n\n for (const key of Object.keys(map)) {\n result[key] = fn(map[key], key);\n }\n\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.naturalCompare = naturalCompare;\n\n/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nfunction naturalCompare(aStr, bStr) {\n let aIndex = 0;\n let bIndex = 0;\n\n while (aIndex < aStr.length && bIndex < bStr.length) {\n let aChar = aStr.charCodeAt(aIndex);\n let bChar = bStr.charCodeAt(bIndex);\n\n if (isDigit(aChar) && isDigit(bChar)) {\n let aNum = 0;\n\n do {\n ++aIndex;\n aNum = aNum * 10 + aChar - DIGIT_0;\n aChar = aStr.charCodeAt(aIndex);\n } while (isDigit(aChar) && aNum > 0);\n\n let bNum = 0;\n\n do {\n ++bIndex;\n bNum = bNum * 10 + bChar - DIGIT_0;\n bChar = bStr.charCodeAt(bIndex);\n } while (isDigit(bChar) && bNum > 0);\n\n if (aNum < bNum) {\n return -1;\n }\n\n if (aNum > bNum) {\n return 1;\n }\n } else {\n if (aChar < bChar) {\n return -1;\n }\n\n if (aChar > bChar) {\n return 1;\n }\n\n ++aIndex;\n ++bIndex;\n }\n }\n\n return aStr.length - bStr.length;\n}\n\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.suggestionList = suggestionList;\n\nvar _naturalCompare = require('./naturalCompare.js');\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nfunction suggestionList(input, options) {\n const optionsByDistance = Object.create(null);\n const lexicalDistance = new LexicalDistance(input);\n const threshold = Math.floor(input.length * 0.4) + 1;\n\n for (const option of options) {\n const distance = lexicalDistance.measure(option, threshold);\n\n if (distance !== undefined) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort((a, b) => {\n const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n return distanceDiff !== 0\n ? distanceDiff\n : (0, _naturalCompare.naturalCompare)(a, b);\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n constructor(input) {\n this._input = input;\n this._inputLowerCase = input.toLowerCase();\n this._inputArray = stringToArray(this._inputLowerCase);\n this._rows = [\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n ];\n }\n\n measure(option, threshold) {\n if (this._input === option) {\n return 0;\n }\n\n const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n if (this._inputLowerCase === optionLowerCase) {\n return 1;\n }\n\n let a = stringToArray(optionLowerCase);\n let b = this._inputArray;\n\n if (a.length < b.length) {\n const tmp = a;\n a = b;\n b = tmp;\n }\n\n const aLength = a.length;\n const bLength = b.length;\n\n if (aLength - bLength > threshold) {\n return undefined;\n }\n\n const rows = this._rows;\n\n for (let j = 0; j <= bLength; j++) {\n rows[0][j] = j;\n }\n\n for (let i = 1; i <= aLength; i++) {\n const upRow = rows[(i - 1) % 3];\n const currentRow = rows[i % 3];\n let smallestCell = (currentRow[0] = i);\n\n for (let j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n let currentCell = Math.min(\n upRow[j] + 1, // delete\n currentRow[j - 1] + 1, // insert\n upRow[j - 1] + cost, // substitute\n );\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n // transposition\n const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n }\n\n if (currentCell < smallestCell) {\n smallestCell = currentCell;\n }\n\n currentRow[j] = currentCell;\n } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n if (smallestCell > threshold) {\n return undefined;\n }\n }\n\n const distance = rows[aLength % 3][bLength];\n return distance <= threshold ? distance : undefined;\n }\n}\n\nfunction stringToArray(str) {\n const strLength = str.length;\n const array = new Array(strLength);\n\n for (let i = 0; i < strLength; ++i) {\n array[i] = str.charCodeAt(i);\n }\n\n return array;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.toObjMap = toObjMap;\n\nfunction toObjMap(obj) {\n if (obj == null) {\n return Object.create(null);\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n const map = Object.create(null);\n\n for (const [key, value] of Object.entries(obj)) {\n map[key] = value;\n }\n\n return map;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.printString = printString;\n\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.BREAK = void 0;\nexports.getEnterLeaveForKind = getEnterLeaveForKind;\nexports.getVisitFn = getVisitFn;\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _ast = require('./ast.js');\n\nvar _kinds = require('./kinds.js');\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(_kinds.Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n (0, _ast.isNode)(node) ||\n (0, _devAssert.devAssert)(\n false,\n `Invalid AST Node: ${(0, _inspect.inspect)(node)}.`,\n );\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if ((0, _ast.isNode)(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(_kinds.Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.print = print;\n\nvar _blockString = require('./blockString.js');\n\nvar _printString = require('./printString.js');\n\nvar _visitor = require('./visitor.js');\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n return (0, _visitor.visit)(ast, printDocASTReducer);\n}\n\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString\n ? (0, _blockString.printBlockString)(value)\n : (0, _printString.printString)(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.valueFromASTUntyped = valueFromASTUntyped;\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nfunction valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case _kinds.Kind.NULL:\n return null;\n\n case _kinds.Kind.INT:\n return parseInt(valueNode.value, 10);\n\n case _kinds.Kind.FLOAT:\n return parseFloat(valueNode.value);\n\n case _kinds.Kind.STRING:\n case _kinds.Kind.ENUM:\n case _kinds.Kind.BOOLEAN:\n return valueNode.value;\n\n case _kinds.Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n\n case _kinds.Kind.OBJECT:\n return (0, _keyValMap.keyValMap)(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n\n case _kinds.Kind.VARIABLE:\n return variables === null || variables === void 0\n ? void 0\n : variables[valueNode.name.value];\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.assertEnumValueName = assertEnumValueName;\nexports.assertName = assertName;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _characterClasses = require('../language/characterClasses.js');\n\n/**\n * Upholds the spec rules about naming.\n */\nfunction assertName(name) {\n name != null || (0, _devAssert.devAssert)(false, 'Must provide name.');\n typeof name === 'string' ||\n (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n\n if (name.length === 0) {\n throw new _GraphQLError.GraphQLError(\n 'Expected name to be a non-empty string.',\n );\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!(0, _characterClasses.isNameContinue)(name.charCodeAt(i))) {\n throw new _GraphQLError.GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!(0, _characterClasses.isNameStart)(name.charCodeAt(0))) {\n throw new _GraphQLError.GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nfunction assertEnumValueName(name) {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new _GraphQLError.GraphQLError(\n `Enum values cannot be named: ${name}`,\n );\n }\n\n return assertName(name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.GraphQLUnionType =\n exports.GraphQLScalarType =\n exports.GraphQLObjectType =\n exports.GraphQLNonNull =\n exports.GraphQLList =\n exports.GraphQLInterfaceType =\n exports.GraphQLInputObjectType =\n exports.GraphQLEnumType =\n void 0;\nexports.argsToArgsConfig = argsToArgsConfig;\nexports.assertAbstractType = assertAbstractType;\nexports.assertCompositeType = assertCompositeType;\nexports.assertEnumType = assertEnumType;\nexports.assertInputObjectType = assertInputObjectType;\nexports.assertInputType = assertInputType;\nexports.assertInterfaceType = assertInterfaceType;\nexports.assertLeafType = assertLeafType;\nexports.assertListType = assertListType;\nexports.assertNamedType = assertNamedType;\nexports.assertNonNullType = assertNonNullType;\nexports.assertNullableType = assertNullableType;\nexports.assertObjectType = assertObjectType;\nexports.assertOutputType = assertOutputType;\nexports.assertScalarType = assertScalarType;\nexports.assertType = assertType;\nexports.assertUnionType = assertUnionType;\nexports.assertWrappingType = assertWrappingType;\nexports.defineArguments = defineArguments;\nexports.getNamedType = getNamedType;\nexports.getNullableType = getNullableType;\nexports.isAbstractType = isAbstractType;\nexports.isCompositeType = isCompositeType;\nexports.isEnumType = isEnumType;\nexports.isInputObjectType = isInputObjectType;\nexports.isInputType = isInputType;\nexports.isInterfaceType = isInterfaceType;\nexports.isLeafType = isLeafType;\nexports.isListType = isListType;\nexports.isNamedType = isNamedType;\nexports.isNonNullType = isNonNullType;\nexports.isNullableType = isNullableType;\nexports.isObjectType = isObjectType;\nexports.isOutputType = isOutputType;\nexports.isRequiredArgument = isRequiredArgument;\nexports.isRequiredInputField = isRequiredInputField;\nexports.isScalarType = isScalarType;\nexports.isType = isType;\nexports.isUnionType = isUnionType;\nexports.isWrappingType = isWrappingType;\nexports.resolveObjMapThunk = resolveObjMapThunk;\nexports.resolveReadonlyArrayThunk = resolveReadonlyArrayThunk;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _didYouMean = require('../jsutils/didYouMean.js');\n\nvar _identityFunc = require('../jsutils/identityFunc.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _mapValue = require('../jsutils/mapValue.js');\n\nvar _suggestionList = require('../jsutils/suggestionList.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _valueFromASTUntyped = require('../utilities/valueFromASTUntyped.js');\n\nvar _assertName = require('./assertName.js');\n\nfunction isType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n isListType(type) ||\n isNonNullType(type)\n );\n}\n\nfunction assertType(type) {\n if (!isType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL type.`,\n );\n }\n\n return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nfunction isScalarType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLScalarType);\n}\n\nfunction assertScalarType(type) {\n if (!isScalarType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Scalar type.`,\n );\n }\n\n return type;\n}\n\nfunction isObjectType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLObjectType);\n}\n\nfunction assertObjectType(type) {\n if (!isObjectType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Object type.`,\n );\n }\n\n return type;\n}\n\nfunction isInterfaceType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLInterfaceType);\n}\n\nfunction assertInterfaceType(type) {\n if (!isInterfaceType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Interface type.`,\n );\n }\n\n return type;\n}\n\nfunction isUnionType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLUnionType);\n}\n\nfunction assertUnionType(type) {\n if (!isUnionType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Union type.`,\n );\n }\n\n return type;\n}\n\nfunction isEnumType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLEnumType);\n}\n\nfunction assertEnumType(type) {\n if (!isEnumType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Enum type.`,\n );\n }\n\n return type;\n}\n\nfunction isInputObjectType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLInputObjectType);\n}\n\nfunction assertInputObjectType(type) {\n if (!isInputObjectType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(\n type,\n )} to be a GraphQL Input Object type.`,\n );\n }\n\n return type;\n}\n\nfunction isListType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLList);\n}\n\nfunction assertListType(type) {\n if (!isListType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL List type.`,\n );\n }\n\n return type;\n}\n\nfunction isNonNullType(type) {\n return (0, _instanceOf.instanceOf)(type, GraphQLNonNull);\n}\n\nfunction assertNonNullType(type) {\n if (!isNonNullType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Non-Null type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n return (\n isScalarType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n (isWrappingType(type) && isInputType(type.ofType))\n );\n}\n\nfunction assertInputType(type) {\n if (!isInputType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL input type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n (isWrappingType(type) && isOutputType(type.ofType))\n );\n}\n\nfunction assertOutputType(type) {\n if (!isOutputType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL output type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\n\nfunction assertLeafType(type) {\n if (!isLeafType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL leaf type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\nfunction assertCompositeType(type) {\n if (!isCompositeType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL composite type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\n\nfunction assertAbstractType(type) {\n if (!isAbstractType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL abstract type.`,\n );\n }\n\n return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n * ```\n */\n\nclass GraphQLList {\n constructor(ofType) {\n isType(ofType) ||\n (0, _devAssert.devAssert)(\n false,\n `Expected ${(0, _inspect.inspect)(ofType)} to be a GraphQL type.`,\n );\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLList';\n }\n\n toString() {\n return '[' + String(this.ofType) + ']';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nexports.GraphQLList = GraphQLList;\n\nclass GraphQLNonNull {\n constructor(ofType) {\n isNullableType(ofType) ||\n (0, _devAssert.devAssert)(\n false,\n `Expected ${(0, _inspect.inspect)(\n ofType,\n )} to be a GraphQL nullable type.`,\n );\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLNonNull';\n }\n\n toString() {\n return String(this.ofType) + '!';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * These types wrap and modify other types\n */\n\nexports.GraphQLNonNull = GraphQLNonNull;\n\nfunction isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\n\nfunction assertWrappingType(type) {\n if (!isWrappingType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL wrapping type.`,\n );\n }\n\n return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\n\nfunction assertNullableType(type) {\n if (!isNullableType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL nullable type.`,\n );\n }\n\n return type;\n}\n\nfunction getNullableType(type) {\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type)\n );\n}\n\nfunction assertNamedType(type) {\n if (!isNamedType(type)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL named type.`,\n );\n }\n\n return type;\n}\n\nfunction getNamedType(type) {\n if (type) {\n let unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveReadonlyArrayThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nfunction resolveObjMapThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function returns `null` or does not return a value\n * (i.e. it returns `undefined`) then an error will be raised and a `null`\n * value will be returned in the response. It is always better to validate\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (!Number.isFinite(value)) {\n * throw new Error(\n * `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n * );\n * }\n *\n * if (value % 2 === 0) {\n * throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n * }\n * return value;\n * }\n * });\n * ```\n */\nclass GraphQLScalarType {\n constructor(config) {\n var _config$parseValue,\n _config$serialize,\n _config$parseLiteral,\n _config$extensionASTN;\n\n const parseValue =\n (_config$parseValue = config.parseValue) !== null &&\n _config$parseValue !== void 0\n ? _config$parseValue\n : _identityFunc.identityFunc;\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize =\n (_config$serialize = config.serialize) !== null &&\n _config$serialize !== void 0\n ? _config$serialize\n : _identityFunc.identityFunc;\n this.parseValue = parseValue;\n this.parseLiteral =\n (_config$parseLiteral = config.parseLiteral) !== null &&\n _config$parseLiteral !== void 0\n ? _config$parseLiteral\n : (node, variables) =>\n parseValue(\n (0, _valueFromASTUntyped.valueFromASTUntyped)(node, variables),\n );\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n config.specifiedByURL == null ||\n typeof config.specifiedByURL === 'string' ||\n (0, _devAssert.devAssert)(\n false,\n `${this.name} must provide \"specifiedByURL\" as a string, ` +\n `but got: ${(0, _inspect.inspect)(config.specifiedByURL)}.`,\n );\n config.serialize == null ||\n typeof config.serialize === 'function' ||\n (0, _devAssert.devAssert)(\n false,\n `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n );\n\n if (config.parseLiteral) {\n (typeof config.parseValue === 'function' &&\n typeof config.parseLiteral === 'function') ||\n (0, _devAssert.devAssert)(\n false,\n `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n );\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLScalarType';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLScalarType = GraphQLScalarType;\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n * ```\n */\nclass GraphQLObjectType {\n constructor(config) {\n var _config$extensionASTN2;\n\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n _config$extensionASTN2 !== void 0\n ? _config$extensionASTN2\n : [];\n\n this._fields = () => defineFieldMap(config);\n\n this._interfaces = () => defineInterfaces(config);\n\n config.isTypeOf == null ||\n typeof config.isTypeOf === 'function' ||\n (0, _devAssert.devAssert)(\n false,\n `${this.name} must provide \"isTypeOf\" as a function, ` +\n `but got: ${(0, _inspect.inspect)(config.isTypeOf)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLObjectType = GraphQLObjectType;\n\nfunction defineInterfaces(config) {\n var _config$interfaces;\n\n const interfaces = resolveReadonlyArrayThunk(\n (_config$interfaces = config.interfaces) !== null &&\n _config$interfaces !== void 0\n ? _config$interfaces\n : [],\n );\n Array.isArray(interfaces) ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name} interfaces must be an Array or a function which returns an Array.`,\n );\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n var _fieldConfig$args;\n\n isPlainObj(fieldConfig) ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name}.${fieldName} field config must be an object.`,\n );\n fieldConfig.resolve == null ||\n typeof fieldConfig.resolve === 'function' ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name}.${fieldName} field resolver must be a function if ` +\n `provided, but got: ${(0, _inspect.inspect)(fieldConfig.resolve)}.`,\n );\n const argsConfig =\n (_fieldConfig$args = fieldConfig.args) !== null &&\n _fieldConfig$args !== void 0\n ? _fieldConfig$args\n : {};\n isPlainObj(argsConfig) ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n );\n return {\n name: (0, _assertName.assertName)(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: defineArguments(argsConfig),\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nfunction defineArguments(config) {\n return Object.entries(config).map(([argName, argConfig]) => ({\n name: (0, _assertName.assertName)(argName),\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: (0, _toObjMap.toObjMap)(argConfig.extensions),\n astNode: argConfig.astNode,\n }));\n}\n\nfunction isPlainObj(obj) {\n return (0, _isObjectLike.isObjectLike)(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return (0, _mapValue.mapValue)(fields, (field) => ({\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n}\n/**\n * @internal\n */\n\nfunction argsToArgsConfig(args) {\n return (0, _keyValMap.keyValMap)(\n args,\n (arg) => arg.name,\n (arg) => ({\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n deprecationReason: arg.deprecationReason,\n extensions: arg.extensions,\n astNode: arg.astNode,\n }),\n );\n}\n\nfunction isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n * ```\n */\nclass GraphQLInterfaceType {\n constructor(config) {\n var _config$extensionASTN3;\n\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n _config$extensionASTN3 !== void 0\n ? _config$extensionASTN3\n : [];\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n (0, _devAssert.devAssert)(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${(0, _inspect.inspect)(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInterfaceType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLInterfaceType = GraphQLInterfaceType;\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n * ```\n */\nclass GraphQLUnionType {\n constructor(config) {\n var _config$extensionASTN4;\n\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n _config$extensionASTN4 !== void 0\n ? _config$extensionASTN4\n : [];\n this._types = defineTypes.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n (0, _devAssert.devAssert)(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${(0, _inspect.inspect)(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLUnionType';\n }\n\n getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLUnionType = GraphQLUnionType;\n\nfunction defineTypes(config) {\n const types = resolveReadonlyArrayThunk(config.types);\n Array.isArray(types) ||\n (0, _devAssert.devAssert)(\n false,\n `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n );\n return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nclass GraphQLEnumType {\n /* */\n constructor(config) {\n var _config$extensionASTN5;\n\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n _config$extensionASTN5 !== void 0\n ? _config$extensionASTN5\n : [];\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(\n this._values.map((enumValue) => [enumValue.value, enumValue]),\n );\n this._nameLookup = (0, _keyMap.keyMap)(this._values, (value) => value.name);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLEnumType';\n }\n\n getValues() {\n return this._values;\n }\n\n getValue(name) {\n return this._nameLookup[name];\n }\n\n serialize(outputValue) {\n const enumValue = this._valueLookup.get(outputValue);\n\n if (enumValue === undefined) {\n throw new _GraphQLError.GraphQLError(\n `Enum \"${this.name}\" cannot represent value: ${(0, _inspect.inspect)(\n outputValue,\n )}`,\n );\n }\n\n return enumValue.name;\n }\n\n parseValue(inputValue) /* T */\n {\n if (typeof inputValue !== 'string') {\n const valueStr = (0, _inspect.inspect)(inputValue);\n throw new _GraphQLError.GraphQLError(\n `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n );\n }\n\n const enumValue = this.getValue(inputValue);\n\n if (enumValue == null) {\n throw new _GraphQLError.GraphQLError(\n `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, inputValue),\n );\n }\n\n return enumValue.value;\n }\n\n parseLiteral(valueNode, _variables) /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind !== _kinds.Kind.ENUM) {\n const valueStr = (0, _printer.print)(valueNode);\n throw new _GraphQLError.GraphQLError(\n `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n const enumValue = this.getValue(valueNode.value);\n\n if (enumValue == null) {\n const valueStr = (0, _printer.print)(valueNode);\n throw new _GraphQLError.GraphQLError(\n `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n return enumValue.value;\n }\n\n toConfig() {\n const values = (0, _keyValMap.keyValMap)(\n this.getValues(),\n (value) => value.name,\n (value) => ({\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode,\n }),\n );\n return {\n name: this.name,\n description: this.description,\n values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLEnumType = GraphQLEnumType;\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n const allNames = enumType.getValues().map((value) => value.name);\n const suggestedValues = (0, _suggestionList.suggestionList)(\n unknownValueStr,\n allNames,\n );\n return (0, _didYouMean.didYouMean)('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) ||\n (0, _devAssert.devAssert)(\n false,\n `${typeName} values must be an object with value names as keys.`,\n );\n return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n isPlainObj(valueConfig) ||\n (0, _devAssert.devAssert)(\n false,\n `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n `representing an internal value but got: ${(0, _inspect.inspect)(\n valueConfig,\n )}.`,\n );\n return {\n name: (0, _assertName.assertEnumValueName)(valueName),\n description: valueConfig.description,\n value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n deprecationReason: valueConfig.deprecationReason,\n extensions: (0, _toObjMap.toObjMap)(valueConfig.extensions),\n astNode: valueConfig.astNode,\n };\n });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n * ```\n */\nclass GraphQLInputObjectType {\n constructor(config) {\n var _config$extensionASTN6;\n\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n _config$extensionASTN6 !== void 0\n ? _config$extensionASTN6\n : [];\n this._fields = defineInputFieldMap.bind(undefined, config);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInputObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n toConfig() {\n const fields = (0, _mapValue.mapValue)(this.getFields(), (field) => ({\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n return {\n name: this.name,\n description: this.description,\n fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLInputObjectType = GraphQLInputObjectType;\n\nfunction defineInputFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n !('resolve' in fieldConfig) ||\n (0, _devAssert.devAssert)(\n false,\n `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n );\n return {\n name: (0, _assertName.assertName)(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nfunction isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.doTypesOverlap = doTypesOverlap;\nexports.isEqualType = isEqualType;\nexports.isTypeSubTypeOf = isTypeSubTypeOf;\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nfunction isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n if (\n (0, _definition.isNonNullType)(typeA) &&\n (0, _definition.isNonNullType)(typeB)\n ) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n if (\n (0, _definition.isListType)(typeA) &&\n (0, _definition.isListType)(typeB)\n ) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n if ((0, _definition.isNonNullType)(superType)) {\n if ((0, _definition.isNonNullType)(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if ((0, _definition.isNonNullType)(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n if ((0, _definition.isListType)(superType)) {\n if ((0, _definition.isListType)(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if ((0, _definition.isListType)(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, check if it is super type of maybeSubType.\n // Otherwise, the child type is not a valid subtype of the parent type.\n\n return (\n (0, _definition.isAbstractType)(superType) &&\n ((0, _definition.isInterfaceType)(maybeSubType) ||\n (0, _definition.isObjectType)(maybeSubType)) &&\n schema.isSubType(superType, maybeSubType)\n );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if ((0, _definition.isAbstractType)(typeA)) {\n if ((0, _definition.isAbstractType)(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema\n .getPossibleTypes(typeA)\n .some((type) => schema.isSubType(typeB, type));\n } // Determine if the latter type is a possible concrete type of the former.\n\n return schema.isSubType(typeA, typeB);\n }\n\n if ((0, _definition.isAbstractType)(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isSubType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n return false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.GraphQLString =\n exports.GraphQLInt =\n exports.GraphQLID =\n exports.GraphQLFloat =\n exports.GraphQLBoolean =\n exports.GRAPHQL_MIN_INT =\n exports.GRAPHQL_MAX_INT =\n void 0;\nexports.isSpecifiedScalarType = isSpecifiedScalarType;\nexports.specifiedScalarTypes = void 0;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('./definition.js');\n\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\nconst GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nexports.GRAPHQL_MAX_INT = GRAPHQL_MAX_INT;\nconst GRAPHQL_MIN_INT = -2147483648;\nexports.GRAPHQL_MIN_INT = GRAPHQL_MIN_INT;\nconst GraphQLInt = new _definition.GraphQLScalarType({\n name: 'Int',\n description:\n 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isInteger(num)) {\n throw new _GraphQLError.GraphQLError(\n `Int cannot represent non-integer value: ${(0, _inspect.inspect)(\n coercedValue,\n )}`,\n );\n }\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new _GraphQLError.GraphQLError(\n 'Int cannot represent non 32-bit signed integer value: ' +\n (0, _inspect.inspect)(coercedValue),\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n throw new _GraphQLError.GraphQLError(\n `Int cannot represent non-integer value: ${(0, _inspect.inspect)(\n inputValue,\n )}`,\n );\n }\n\n if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n throw new _GraphQLError.GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _kinds.Kind.INT) {\n throw new _GraphQLError.GraphQLError(\n `Int cannot represent non-integer value: ${(0, _printer.print)(\n valueNode,\n )}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n const num = parseInt(valueNode.value, 10);\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new _GraphQLError.GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return num;\n },\n});\nexports.GraphQLInt = GraphQLInt;\nconst GraphQLFloat = new _definition.GraphQLScalarType({\n name: 'Float',\n description:\n 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isFinite(num)) {\n throw new _GraphQLError.GraphQLError(\n `Float cannot represent non numeric value: ${(0, _inspect.inspect)(\n coercedValue,\n )}`,\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n throw new _GraphQLError.GraphQLError(\n `Float cannot represent non numeric value: ${(0, _inspect.inspect)(\n inputValue,\n )}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (\n valueNode.kind !== _kinds.Kind.FLOAT &&\n valueNode.kind !== _kinds.Kind.INT\n ) {\n throw new _GraphQLError.GraphQLError(\n `Float cannot represent non numeric value: ${(0, _printer.print)(\n valueNode,\n )}`,\n valueNode,\n );\n }\n\n return parseFloat(valueNode.value);\n },\n});\nexports.GraphQLFloat = GraphQLFloat;\nconst GraphQLString = new _definition.GraphQLScalarType({\n name: 'String',\n description:\n 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 'true' : 'false';\n }\n\n if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new _GraphQLError.GraphQLError(\n `String cannot represent value: ${(0, _inspect.inspect)(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'string') {\n throw new _GraphQLError.GraphQLError(\n `String cannot represent a non string value: ${(0, _inspect.inspect)(\n inputValue,\n )}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _kinds.Kind.STRING) {\n throw new _GraphQLError.GraphQLError(\n `String cannot represent a non string value: ${(0, _printer.print)(\n valueNode,\n )}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexports.GraphQLString = GraphQLString;\nconst GraphQLBoolean = new _definition.GraphQLScalarType({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue;\n }\n\n if (Number.isFinite(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new _GraphQLError.GraphQLError(\n `Boolean cannot represent a non boolean value: ${(0, _inspect.inspect)(\n coercedValue,\n )}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'boolean') {\n throw new _GraphQLError.GraphQLError(\n `Boolean cannot represent a non boolean value: ${(0, _inspect.inspect)(\n inputValue,\n )}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _kinds.Kind.BOOLEAN) {\n throw new _GraphQLError.GraphQLError(\n `Boolean cannot represent a non boolean value: ${(0, _printer.print)(\n valueNode,\n )}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexports.GraphQLBoolean = GraphQLBoolean;\nconst GraphQLID = new _definition.GraphQLScalarType({\n name: 'ID',\n description:\n 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (Number.isInteger(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new _GraphQLError.GraphQLError(\n `ID cannot represent value: ${(0, _inspect.inspect)(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue === 'string') {\n return inputValue;\n }\n\n if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n return inputValue.toString();\n }\n\n throw new _GraphQLError.GraphQLError(\n `ID cannot represent value: ${(0, _inspect.inspect)(inputValue)}`,\n );\n },\n\n parseLiteral(valueNode) {\n if (\n valueNode.kind !== _kinds.Kind.STRING &&\n valueNode.kind !== _kinds.Kind.INT\n ) {\n throw new _GraphQLError.GraphQLError(\n 'ID cannot represent a non-string and non-integer value: ' +\n (0, _printer.print)(valueNode),\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexports.GraphQLID = GraphQLID;\nconst specifiedScalarTypes = Object.freeze([\n GraphQLString,\n GraphQLInt,\n GraphQLFloat,\n GraphQLBoolean,\n GraphQLID,\n]);\nexports.specifiedScalarTypes = specifiedScalarTypes;\n\nfunction isSpecifiedScalarType(type) {\n return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n if ((0, _isObjectLike.isObjectLike)(outputValue)) {\n if (typeof outputValue.valueOf === 'function') {\n const valueOfResult = outputValue.valueOf();\n\n if (!(0, _isObjectLike.isObjectLike)(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === 'function') {\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.GraphQLSpecifiedByDirective =\n exports.GraphQLSkipDirective =\n exports.GraphQLIncludeDirective =\n exports.GraphQLDirective =\n exports.GraphQLDeprecatedDirective =\n exports.DEFAULT_DEPRECATION_REASON =\n void 0;\nexports.assertDirective = assertDirective;\nexports.isDirective = isDirective;\nexports.isSpecifiedDirective = isSpecifiedDirective;\nexports.specifiedDirectives = void 0;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _directiveLocation = require('../language/directiveLocation.js');\n\nvar _assertName = require('./assertName.js');\n\nvar _definition = require('./definition.js');\n\nvar _scalars = require('./scalars.js');\n\n/**\n * Test if the given value is a GraphQL directive.\n */\nfunction isDirective(directive) {\n return (0, _instanceOf.instanceOf)(directive, GraphQLDirective);\n}\n\nfunction assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(directive)} to be a GraphQL directive.`,\n );\n }\n\n return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nclass GraphQLDirective {\n constructor(config) {\n var _config$isRepeatable, _config$args;\n\n this.name = (0, _assertName.assertName)(config.name);\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable =\n (_config$isRepeatable = config.isRepeatable) !== null &&\n _config$isRepeatable !== void 0\n ? _config$isRepeatable\n : false;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n Array.isArray(config.locations) ||\n (0, _devAssert.devAssert)(\n false,\n `@${config.name} locations must be an Array.`,\n );\n const args =\n (_config$args = config.args) !== null && _config$args !== void 0\n ? _config$args\n : {};\n ((0, _isObjectLike.isObjectLike)(args) && !Array.isArray(args)) ||\n (0, _devAssert.devAssert)(\n false,\n `@${config.name} args must be an object with argument names as keys.`,\n );\n this.args = (0, _definition.defineArguments)(args);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLDirective';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: (0, _definition.argsToArgsConfig)(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString() {\n return '@' + this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nexports.GraphQLDirective = GraphQLDirective;\n\n/**\n * Used to conditionally include fields or fragments.\n */\nconst GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description:\n 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [\n _directiveLocation.DirectiveLocation.FIELD,\n _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n description: 'Included when true.',\n },\n },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexports.GraphQLIncludeDirective = GraphQLIncludeDirective;\nconst GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description:\n 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [\n _directiveLocation.DirectiveLocation.FIELD,\n _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n description: 'Skipped when true.',\n },\n },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexports.GraphQLSkipDirective = GraphQLSkipDirective;\nconst DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexports.DEFAULT_DEPRECATION_REASON = DEFAULT_DEPRECATION_REASON;\nconst GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [\n _directiveLocation.DirectiveLocation.FIELD_DEFINITION,\n _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION,\n _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,\n _directiveLocation.DirectiveLocation.ENUM_VALUE,\n ],\n args: {\n reason: {\n type: _scalars.GraphQLString,\n description:\n 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON,\n },\n },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nexports.GraphQLDeprecatedDirective = GraphQLDeprecatedDirective;\nconst GraphQLSpecifiedByDirective = new GraphQLDirective({\n name: 'specifiedBy',\n description: 'Exposes a URL that specifies the behavior of this scalar.',\n locations: [_directiveLocation.DirectiveLocation.SCALAR],\n args: {\n url: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n description: 'The URL that specifies the behavior of this scalar.',\n },\n },\n});\n/**\n * The full list of specified directives.\n */\n\nexports.GraphQLSpecifiedByDirective = GraphQLSpecifiedByDirective;\nconst specifiedDirectives = Object.freeze([\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n GraphQLDeprecatedDirective,\n GraphQLSpecifiedByDirective,\n]);\nexports.specifiedDirectives = specifiedDirectives;\n\nfunction isSpecifiedDirective(directive) {\n return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isIterableObject = isIterableObject;\n\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nfunction isIterableObject(maybeIterable) {\n return (\n typeof maybeIterable === 'object' &&\n typeof (maybeIterable === null || maybeIterable === void 0\n ? void 0\n : maybeIterable[Symbol.iterator]) === 'function'\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.astFromValue = astFromValue;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _scalars = require('../type/scalars.js');\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n * astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Unknown | Enum Value |\n * | null | NullValue |\n *\n */\nfunction astFromValue(value, type) {\n if ((0, _definition.isNonNullType)(type)) {\n const astValue = astFromValue(value, type.ofType);\n\n if (\n (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n _kinds.Kind.NULL\n ) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n if (value === null) {\n return {\n kind: _kinds.Kind.NULL,\n };\n } // undefined\n\n if (value === undefined) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n if ((0, _definition.isListType)(type)) {\n const itemType = type.ofType;\n\n if ((0, _isIterableObject.isIterableObject)(value)) {\n const valuesNodes = [];\n\n for (const item of value) {\n const itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: _kinds.Kind.LIST,\n values: valuesNodes,\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n if ((0, _definition.isInputObjectType)(type)) {\n if (!(0, _isObjectLike.isObjectLike)(value)) {\n return null;\n }\n\n const fieldNodes = [];\n\n for (const field of Object.values(type.getFields())) {\n const fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: _kinds.Kind.OBJECT_FIELD,\n name: {\n kind: _kinds.Kind.NAME,\n value: field.name,\n },\n value: fieldValue,\n });\n }\n }\n\n return {\n kind: _kinds.Kind.OBJECT,\n fields: fieldNodes,\n };\n }\n\n if ((0, _definition.isLeafType)(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n const serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n if (typeof serialized === 'boolean') {\n return {\n kind: _kinds.Kind.BOOLEAN,\n value: serialized,\n };\n } // JavaScript numbers can be Int or Float values.\n\n if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n const stringNum = String(serialized);\n return integerStringRegExp.test(stringNum)\n ? {\n kind: _kinds.Kind.INT,\n value: stringNum,\n }\n : {\n kind: _kinds.Kind.FLOAT,\n value: stringNum,\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if ((0, _definition.isEnumType)(type)) {\n return {\n kind: _kinds.Kind.ENUM,\n value: serialized,\n };\n } // ID types can use Int literals.\n\n if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {\n return {\n kind: _kinds.Kind.INT,\n value: serialized,\n };\n }\n\n return {\n kind: _kinds.Kind.STRING,\n value: serialized,\n };\n }\n\n throw new TypeError(\n `Cannot convert value to AST: ${(0, _inspect.inspect)(serialized)}.`,\n );\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected input type: ' + (0, _inspect.inspect)(type),\n );\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.introspectionTypes =\n exports.__TypeKind =\n exports.__Type =\n exports.__Schema =\n exports.__InputValue =\n exports.__Field =\n exports.__EnumValue =\n exports.__DirectiveLocation =\n exports.__Directive =\n exports.TypeNameMetaFieldDef =\n exports.TypeMetaFieldDef =\n exports.TypeKind =\n exports.SchemaMetaFieldDef =\n void 0;\nexports.isIntrospectionType = isIntrospectionType;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _directiveLocation = require('../language/directiveLocation.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _astFromValue = require('../utilities/astFromValue.js');\n\nvar _definition = require('./definition.js');\n\nvar _scalars = require('./scalars.js');\n\nconst __Schema = new _definition.GraphQLObjectType({\n name: '__Schema',\n description:\n 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: () => ({\n description: {\n type: _scalars.GraphQLString,\n resolve: (schema) => schema.description,\n },\n types: {\n description: 'A list of all types supported by this server.',\n type: new _definition.GraphQLNonNull(\n new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n ),\n\n resolve(schema) {\n return Object.values(schema.getTypeMap());\n },\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: new _definition.GraphQLNonNull(__Type),\n resolve: (schema) => schema.getQueryType(),\n },\n mutationType: {\n description:\n 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getMutationType(),\n },\n subscriptionType: {\n description:\n 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getSubscriptionType(),\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: new _definition.GraphQLNonNull(\n new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__Directive),\n ),\n ),\n resolve: (schema) => schema.getDirectives(),\n },\n }),\n});\n\nexports.__Schema = __Schema;\n\nconst __Directive = new _definition.GraphQLObjectType({\n name: '__Directive',\n description:\n \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: () => ({\n name: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n resolve: (directive) => directive.name,\n },\n description: {\n type: _scalars.GraphQLString,\n resolve: (directive) => directive.description,\n },\n isRepeatable: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n resolve: (directive) => directive.isRepeatable,\n },\n locations: {\n type: new _definition.GraphQLNonNull(\n new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__DirectiveLocation),\n ),\n ),\n resolve: (directive) => directive.locations,\n },\n args: {\n type: new _definition.GraphQLNonNull(\n new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__InputValue),\n ),\n ),\n args: {\n includeDeprecated: {\n type: _scalars.GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n }),\n});\n\nexports.__Directive = __Directive;\n\nconst __DirectiveLocation = new _definition.GraphQLEnumType({\n name: '__DirectiveLocation',\n description:\n 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: _directiveLocation.DirectiveLocation.QUERY,\n description: 'Location adjacent to a query operation.',\n },\n MUTATION: {\n value: _directiveLocation.DirectiveLocation.MUTATION,\n description: 'Location adjacent to a mutation operation.',\n },\n SUBSCRIPTION: {\n value: _directiveLocation.DirectiveLocation.SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.',\n },\n FIELD: {\n value: _directiveLocation.DirectiveLocation.FIELD,\n description: 'Location adjacent to a field.',\n },\n FRAGMENT_DEFINITION: {\n value: _directiveLocation.DirectiveLocation.FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.',\n },\n FRAGMENT_SPREAD: {\n value: _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.',\n },\n INLINE_FRAGMENT: {\n value: _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.',\n },\n VARIABLE_DEFINITION: {\n value: _directiveLocation.DirectiveLocation.VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.',\n },\n SCHEMA: {\n value: _directiveLocation.DirectiveLocation.SCHEMA,\n description: 'Location adjacent to a schema definition.',\n },\n SCALAR: {\n value: _directiveLocation.DirectiveLocation.SCALAR,\n description: 'Location adjacent to a scalar definition.',\n },\n OBJECT: {\n value: _directiveLocation.DirectiveLocation.OBJECT,\n description: 'Location adjacent to an object type definition.',\n },\n FIELD_DEFINITION: {\n value: _directiveLocation.DirectiveLocation.FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.',\n },\n ARGUMENT_DEFINITION: {\n value: _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.',\n },\n INTERFACE: {\n value: _directiveLocation.DirectiveLocation.INTERFACE,\n description: 'Location adjacent to an interface definition.',\n },\n UNION: {\n value: _directiveLocation.DirectiveLocation.UNION,\n description: 'Location adjacent to a union definition.',\n },\n ENUM: {\n value: _directiveLocation.DirectiveLocation.ENUM,\n description: 'Location adjacent to an enum definition.',\n },\n ENUM_VALUE: {\n value: _directiveLocation.DirectiveLocation.ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.',\n },\n INPUT_OBJECT: {\n value: _directiveLocation.DirectiveLocation.INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.',\n },\n INPUT_FIELD_DEFINITION: {\n value: _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.',\n },\n },\n});\n\nexports.__DirectiveLocation = __DirectiveLocation;\n\nconst __Type = new _definition.GraphQLObjectType({\n name: '__Type',\n description:\n 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: () => ({\n kind: {\n type: new _definition.GraphQLNonNull(__TypeKind),\n\n resolve(type) {\n if ((0, _definition.isScalarType)(type)) {\n return TypeKind.SCALAR;\n }\n\n if ((0, _definition.isObjectType)(type)) {\n return TypeKind.OBJECT;\n }\n\n if ((0, _definition.isInterfaceType)(type)) {\n return TypeKind.INTERFACE;\n }\n\n if ((0, _definition.isUnionType)(type)) {\n return TypeKind.UNION;\n }\n\n if ((0, _definition.isEnumType)(type)) {\n return TypeKind.ENUM;\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if ((0, _definition.isListType)(type)) {\n return TypeKind.LIST;\n }\n\n if ((0, _definition.isNonNullType)(type)) {\n return TypeKind.NON_NULL;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered)\n\n false ||\n (0, _invariant.invariant)(\n false,\n `Unexpected type: \"${(0, _inspect.inspect)(type)}\".`,\n );\n },\n },\n name: {\n type: _scalars.GraphQLString,\n resolve: (type) => ('name' in type ? type.name : undefined),\n },\n description: {\n type: _scalars.GraphQLString,\n resolve: (\n type, // FIXME: add test case\n ) =>\n /* c8 ignore next */\n 'description' in type ? type.description : undefined,\n },\n specifiedByURL: {\n type: _scalars.GraphQLString,\n resolve: (obj) =>\n 'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n },\n fields: {\n type: new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__Field),\n ),\n args: {\n includeDeprecated: {\n type: _scalars.GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (\n (0, _definition.isObjectType)(type) ||\n (0, _definition.isInterfaceType)(type)\n ) {\n const fields = Object.values(type.getFields());\n return includeDeprecated\n ? fields\n : fields.filter((field) => field.deprecationReason == null);\n }\n },\n },\n interfaces: {\n type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n\n resolve(type) {\n if (\n (0, _definition.isObjectType)(type) ||\n (0, _definition.isInterfaceType)(type)\n ) {\n return type.getInterfaces();\n }\n },\n },\n possibleTypes: {\n type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n\n resolve(type, _args, _context, { schema }) {\n if ((0, _definition.isAbstractType)(type)) {\n return schema.getPossibleTypes(type);\n }\n },\n },\n enumValues: {\n type: new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__EnumValue),\n ),\n args: {\n includeDeprecated: {\n type: _scalars.GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if ((0, _definition.isEnumType)(type)) {\n const values = type.getValues();\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n inputFields: {\n type: new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__InputValue),\n ),\n args: {\n includeDeprecated: {\n type: _scalars.GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if ((0, _definition.isInputObjectType)(type)) {\n const values = Object.values(type.getFields());\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n ofType: {\n type: __Type,\n resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n },\n }),\n});\n\nexports.__Type = __Type;\n\nconst __Field = new _definition.GraphQLObjectType({\n name: '__Field',\n description:\n 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: () => ({\n name: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n resolve: (field) => field.name,\n },\n description: {\n type: _scalars.GraphQLString,\n resolve: (field) => field.description,\n },\n args: {\n type: new _definition.GraphQLNonNull(\n new _definition.GraphQLList(\n new _definition.GraphQLNonNull(__InputValue),\n ),\n ),\n args: {\n includeDeprecated: {\n type: _scalars.GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n type: {\n type: new _definition.GraphQLNonNull(__Type),\n resolve: (field) => field.type,\n },\n isDeprecated: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: _scalars.GraphQLString,\n resolve: (field) => field.deprecationReason,\n },\n }),\n});\n\nexports.__Field = __Field;\n\nconst __InputValue = new _definition.GraphQLObjectType({\n name: '__InputValue',\n description:\n 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: () => ({\n name: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n resolve: (inputValue) => inputValue.name,\n },\n description: {\n type: _scalars.GraphQLString,\n resolve: (inputValue) => inputValue.description,\n },\n type: {\n type: new _definition.GraphQLNonNull(__Type),\n resolve: (inputValue) => inputValue.type,\n },\n defaultValue: {\n type: _scalars.GraphQLString,\n description:\n 'A GraphQL-formatted string representing the default value for this input value.',\n\n resolve(inputValue) {\n const { type, defaultValue } = inputValue;\n const valueAST = (0, _astFromValue.astFromValue)(defaultValue, type);\n return valueAST ? (0, _printer.print)(valueAST) : null;\n },\n },\n isDeprecated: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: _scalars.GraphQLString,\n resolve: (obj) => obj.deprecationReason,\n },\n }),\n});\n\nexports.__InputValue = __InputValue;\n\nconst __EnumValue = new _definition.GraphQLObjectType({\n name: '__EnumValue',\n description:\n 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: () => ({\n name: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n resolve: (enumValue) => enumValue.name,\n },\n description: {\n type: _scalars.GraphQLString,\n resolve: (enumValue) => enumValue.description,\n },\n isDeprecated: {\n type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n resolve: (enumValue) => enumValue.deprecationReason != null,\n },\n deprecationReason: {\n type: _scalars.GraphQLString,\n resolve: (enumValue) => enumValue.deprecationReason,\n },\n }),\n});\n\nexports.__EnumValue = __EnumValue;\nlet TypeKind;\nexports.TypeKind = TypeKind;\n\n(function (TypeKind) {\n TypeKind['SCALAR'] = 'SCALAR';\n TypeKind['OBJECT'] = 'OBJECT';\n TypeKind['INTERFACE'] = 'INTERFACE';\n TypeKind['UNION'] = 'UNION';\n TypeKind['ENUM'] = 'ENUM';\n TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n TypeKind['LIST'] = 'LIST';\n TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (exports.TypeKind = TypeKind = {}));\n\nconst __TypeKind = new _definition.GraphQLEnumType({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.',\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description:\n 'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description:\n 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n },\n UNION: {\n value: TypeKind.UNION,\n description:\n 'Indicates this type is a union. `possibleTypes` is a valid field.',\n },\n ENUM: {\n value: TypeKind.ENUM,\n description:\n 'Indicates this type is an enum. `enumValues` is a valid field.',\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description:\n 'Indicates this type is an input object. `inputFields` is a valid field.',\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.',\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description:\n 'Indicates this type is a non-null. `ofType` is a valid field.',\n },\n },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexports.__TypeKind = __TypeKind;\nconst SchemaMetaFieldDef = {\n name: '__schema',\n type: new _definition.GraphQLNonNull(__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: (_source, _args, _context, { schema }) => schema,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexports.SchemaMetaFieldDef = SchemaMetaFieldDef;\nconst TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [\n {\n name: 'name',\n description: undefined,\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n defaultValue: undefined,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n },\n ],\n resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexports.TypeMetaFieldDef = TypeMetaFieldDef;\nconst TypeNameMetaFieldDef = {\n name: '__typename',\n type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: (_source, _args, _context, { parentType }) => parentType.name,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexports.TypeNameMetaFieldDef = TypeNameMetaFieldDef;\nconst introspectionTypes = Object.freeze([\n __Schema,\n __Directive,\n __DirectiveLocation,\n __Type,\n __Field,\n __InputValue,\n __EnumValue,\n __TypeKind,\n]);\nexports.introspectionTypes = introspectionTypes;\n\nfunction isIntrospectionType(type) {\n return introspectionTypes.some(({ name }) => type.name === name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.GraphQLSchema = void 0;\nexports.assertSchema = assertSchema;\nexports.isSchema = isSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _introspection = require('./introspection.js');\n\n/**\n * Test if the given value is a GraphQL schema.\n */\nfunction isSchema(schema) {\n return (0, _instanceOf.instanceOf)(schema, GraphQLSchema);\n}\n\nfunction assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(\n `Expected ${(0, _inspect.inspect)(schema)} to be a GraphQL schema.`,\n );\n }\n\n return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nclass GraphQLSchema {\n // Used as a cache for validateSchema().\n constructor(config) {\n var _config$extensionASTN, _config$directives;\n\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n (0, _isObjectLike.isObjectLike)(config) ||\n (0, _devAssert.devAssert)(false, 'Must provide configuration object.');\n !config.types ||\n Array.isArray(config.types) ||\n (0, _devAssert.devAssert)(\n false,\n `\"types\" must be Array if provided but got: ${(0, _inspect.inspect)(\n config.types,\n )}.`,\n );\n !config.directives ||\n Array.isArray(config.directives) ||\n (0, _devAssert.devAssert)(\n false,\n '\"directives\" must be Array if provided but got: ' +\n `${(0, _inspect.inspect)(config.directives)}.`,\n );\n this.description = config.description;\n this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives =\n (_config$directives = config.directives) !== null &&\n _config$directives !== void 0\n ? _config$directives\n : _directives.specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n const allReferencedTypes = new Set(config.types);\n\n if (config.types != null) {\n for (const type of config.types) {\n // When we ready to process this type, we remove it from \"collected\" types\n // and then add it together with all dependent types in the correct position.\n allReferencedTypes.delete(type);\n collectReferencedTypes(type, allReferencedTypes);\n }\n }\n\n if (this._queryType != null) {\n collectReferencedTypes(this._queryType, allReferencedTypes);\n }\n\n if (this._mutationType != null) {\n collectReferencedTypes(this._mutationType, allReferencedTypes);\n }\n\n if (this._subscriptionType != null) {\n collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n }\n\n for (const directive of this._directives) {\n // Directives are not validated until validateSchema() is called.\n if ((0, _directives.isDirective)(directive)) {\n for (const arg of directive.args) {\n collectReferencedTypes(arg.type, allReferencedTypes);\n }\n }\n }\n\n collectReferencedTypes(_introspection.__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n this._typeMap = Object.create(null);\n this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementationsMap = Object.create(null);\n\n for (const namedType of allReferencedTypes) {\n if (namedType == null) {\n continue;\n }\n\n const typeName = namedType.name;\n typeName ||\n (0, _devAssert.devAssert)(\n false,\n 'One of the provided types for building the Schema is missing a name.',\n );\n\n if (this._typeMap[typeName] !== undefined) {\n throw new Error(\n `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n );\n }\n\n this._typeMap[typeName] = namedType;\n\n if ((0, _definition.isInterfaceType)(namedType)) {\n // Store implementations by interface.\n for (const iface of namedType.getInterfaces()) {\n if ((0, _definition.isInterfaceType)(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.interfaces.push(namedType);\n }\n }\n } else if ((0, _definition.isObjectType)(namedType)) {\n // Store implementations by objects.\n for (const iface of namedType.getInterfaces()) {\n if ((0, _definition.isInterfaceType)(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.objects.push(namedType);\n }\n }\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLSchema';\n }\n\n getQueryType() {\n return this._queryType;\n }\n\n getMutationType() {\n return this._mutationType;\n }\n\n getSubscriptionType() {\n return this._subscriptionType;\n }\n\n getRootType(operation) {\n switch (operation) {\n case _ast.OperationTypeNode.QUERY:\n return this.getQueryType();\n\n case _ast.OperationTypeNode.MUTATION:\n return this.getMutationType();\n\n case _ast.OperationTypeNode.SUBSCRIPTION:\n return this.getSubscriptionType();\n }\n }\n\n getTypeMap() {\n return this._typeMap;\n }\n\n getType(name) {\n return this.getTypeMap()[name];\n }\n\n getPossibleTypes(abstractType) {\n return (0, _definition.isUnionType)(abstractType)\n ? abstractType.getTypes()\n : this.getImplementations(abstractType).objects;\n }\n\n getImplementations(interfaceType) {\n const implementations = this._implementationsMap[interfaceType.name];\n return implementations !== null && implementations !== void 0\n ? implementations\n : {\n objects: [],\n interfaces: [],\n };\n }\n\n isSubType(abstractType, maybeSubType) {\n let map = this._subTypeMap[abstractType.name];\n\n if (map === undefined) {\n map = Object.create(null);\n\n if ((0, _definition.isUnionType)(abstractType)) {\n for (const type of abstractType.getTypes()) {\n map[type.name] = true;\n }\n } else {\n const implementations = this.getImplementations(abstractType);\n\n for (const type of implementations.objects) {\n map[type.name] = true;\n }\n\n for (const type of implementations.interfaces) {\n map[type.name] = true;\n }\n }\n\n this._subTypeMap[abstractType.name] = map;\n }\n\n return map[maybeSubType.name] !== undefined;\n }\n\n getDirectives() {\n return this._directives;\n }\n\n getDirective(name) {\n return this.getDirectives().find((directive) => directive.name === name);\n }\n\n toConfig() {\n return {\n description: this.description,\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: Object.values(this.getTypeMap()),\n directives: this.getDirectives(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n assumeValid: this.__validationErrors !== undefined,\n };\n }\n}\n\nexports.GraphQLSchema = GraphQLSchema;\n\nfunction collectReferencedTypes(type, typeSet) {\n const namedType = (0, _definition.getNamedType)(type);\n\n if (!typeSet.has(namedType)) {\n typeSet.add(namedType);\n\n if ((0, _definition.isUnionType)(namedType)) {\n for (const memberType of namedType.getTypes()) {\n collectReferencedTypes(memberType, typeSet);\n }\n } else if (\n (0, _definition.isObjectType)(namedType) ||\n (0, _definition.isInterfaceType)(namedType)\n ) {\n for (const interfaceType of namedType.getInterfaces()) {\n collectReferencedTypes(interfaceType, typeSet);\n }\n\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n\n for (const arg of field.args) {\n collectReferencedTypes(arg.type, typeSet);\n }\n }\n } else if ((0, _definition.isInputObjectType)(namedType)) {\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n }\n }\n }\n\n return typeSet;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.assertValidSchema = assertValidSchema;\nexports.validateSchema = validateSchema;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _typeComparators = require('../utilities/typeComparators.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _introspection = require('./introspection.js');\n\nvar _schema = require('./schema.js');\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\nfunction validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n (0, _schema.assertSchema)(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n const errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n constructor(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(message, nodes) {\n const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this._errors.push(\n new _GraphQLError.GraphQLError(message, {\n nodes: _nodes,\n }),\n );\n }\n\n getErrors() {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context) {\n const schema = context.schema;\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!(0, _definition.isObjectType)(queryType)) {\n var _getOperationTypeNode;\n\n context.reportError(\n `Query root type must be Object type, it cannot be ${(0,\n _inspect.inspect)(queryType)}.`,\n (_getOperationTypeNode = getOperationTypeNode(\n schema,\n _ast.OperationTypeNode.QUERY,\n )) !== null && _getOperationTypeNode !== void 0\n ? _getOperationTypeNode\n : queryType.astNode,\n );\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && !(0, _definition.isObjectType)(mutationType)) {\n var _getOperationTypeNode2;\n\n context.reportError(\n 'Mutation root type must be Object type if provided, it cannot be ' +\n `${(0, _inspect.inspect)(mutationType)}.`,\n (_getOperationTypeNode2 = getOperationTypeNode(\n schema,\n _ast.OperationTypeNode.MUTATION,\n )) !== null && _getOperationTypeNode2 !== void 0\n ? _getOperationTypeNode2\n : mutationType.astNode,\n );\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !(0, _definition.isObjectType)(subscriptionType)) {\n var _getOperationTypeNode3;\n\n context.reportError(\n 'Subscription root type must be Object type if provided, it cannot be ' +\n `${(0, _inspect.inspect)(subscriptionType)}.`,\n (_getOperationTypeNode3 = getOperationTypeNode(\n schema,\n _ast.OperationTypeNode.SUBSCRIPTION,\n )) !== null && _getOperationTypeNode3 !== void 0\n ? _getOperationTypeNode3\n : subscriptionType.astNode,\n );\n }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n var _flatMap$find;\n\n return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n .flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (schemaNode) => {\n var _schemaNode$operation;\n\n return (\n /* c8 ignore next */\n (_schemaNode$operation =\n schemaNode === null || schemaNode === void 0\n ? void 0\n : schemaNode.operationTypes) !== null &&\n _schemaNode$operation !== void 0\n ? _schemaNode$operation\n : []\n );\n },\n )\n .find((operationNode) => operationNode.operation === operation)) === null ||\n _flatMap$find === void 0\n ? void 0\n : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!(0, _directives.isDirective)(directive)) {\n context.reportError(\n `Expected directive but got: ${(0, _inspect.inspect)(directive)}.`,\n directive === null || directive === void 0 ? void 0 : directive.astNode,\n );\n continue;\n } // Ensure they are named correctly.\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg); // Ensure the type is an input type.\n\n if (!(0, _definition.isInputType)(arg.type)) {\n context.reportError(\n `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n `but got: ${(0, _inspect.inspect)(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (\n (0, _definition.isRequiredArgument)(arg) &&\n arg.deprecationReason != null\n ) {\n var _arg$astNode;\n\n context.reportError(\n `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n ? void 0\n : _arg$astNode.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateName(context, node) {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context) {\n const validateInputObjectCircularRefs =\n createInputObjectCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!(0, _definition.isNamedType)(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${(0, _inspect.inspect)(type)}.`,\n type.astNode,\n );\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n if (!(0, _introspection.isIntrospectionType)(type)) {\n validateName(context, type);\n }\n\n if ((0, _definition.isObjectType)(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if ((0, _definition.isInterfaceType)(type)) {\n // Ensure fields are valid.\n validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if ((0, _definition.isUnionType)(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if ((0, _definition.isEnumType)(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if ((0, _definition.isInputObjectType)(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(`Type ${type.name} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!(0, _definition.isOutputType)(field.type)) {\n var _field$astNode;\n\n context.reportError(\n `The type of ${type.name}.${field.name} must be Output Type ` +\n `but got: ${(0, _inspect.inspect)(field.type)}.`,\n (_field$astNode = field.astNode) === null || _field$astNode === void 0\n ? void 0\n : _field$astNode.type,\n );\n } // Ensure the arguments are valid\n\n for (const arg of field.args) {\n const argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure the type is an input type\n\n if (!(0, _definition.isInputType)(arg.type)) {\n var _arg$astNode2;\n\n context.reportError(\n `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n `Type but got: ${(0, _inspect.inspect)(arg.type)}.`,\n (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n ? void 0\n : _arg$astNode2.type,\n );\n }\n\n if (\n (0, _definition.isRequiredArgument)(arg) &&\n arg.deprecationReason != null\n ) {\n var _arg$astNode3;\n\n context.reportError(\n `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n ? void 0\n : _arg$astNode3.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateInterfaces(context, type) {\n const ifaceTypeNames = Object.create(null);\n\n for (const iface of type.getInterfaces()) {\n if (!(0, _definition.isInterfaceType)(iface)) {\n context.reportError(\n `Type ${(0, _inspect.inspect)(\n type,\n )} must only implement Interface types, ` +\n `it cannot implement ${(0, _inspect.inspect)(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames[iface.name]) {\n context.reportError(\n `Type ${type.name} can only implement ${iface.name} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames[iface.name] = true;\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n for (const ifaceField of Object.values(iface.getFields())) {\n const fieldName = ifaceField.name;\n const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n if (!typeField) {\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n } // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n\n if (\n !(0, _typeComparators.isTypeSubTypeOf)(\n context.schema,\n typeField.type,\n ifaceField.type,\n )\n ) {\n var _ifaceField$astNode, _typeField$astNode;\n\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expects type ` +\n `${(0, _inspect.inspect)(ifaceField.type)} but ${\n type.name\n }.${fieldName} ` +\n `is type ${(0, _inspect.inspect)(typeField.type)}.`,\n [\n (_ifaceField$astNode = ifaceField.astNode) === null ||\n _ifaceField$astNode === void 0\n ? void 0\n : _ifaceField$astNode.type,\n (_typeField$astNode = typeField.astNode) === null ||\n _typeField$astNode === void 0\n ? void 0\n : _typeField$astNode.type,\n ],\n );\n } // Assert each interface field arg is implemented.\n\n for (const ifaceArg of ifaceField.args) {\n const argName = ifaceArg.name;\n const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n if (!(0, _typeComparators.isEqualType)(ifaceArg.type, typeArg.type)) {\n var _ifaceArg$astNode, _typeArg$astNode;\n\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n `expects type ${(0, _inspect.inspect)(ifaceArg.type)} but ` +\n `${type.name}.${fieldName}(${argName}:) is type ` +\n `${(0, _inspect.inspect)(typeArg.type)}.`,\n [\n (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n _ifaceArg$astNode === void 0\n ? void 0\n : _ifaceArg$astNode.type,\n (_typeArg$astNode = typeArg.astNode) === null ||\n _typeArg$astNode === void 0\n ? void 0\n : _typeArg$astNode.type,\n ],\n );\n } // TODO: validate default values?\n } // Assert additional arguments must not be required.\n\n for (const typeArg of typeField.args) {\n const argName = typeArg.name;\n const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n if (!ifaceArg && (0, _definition.isRequiredArgument)(typeArg)) {\n context.reportError(\n `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n const ifaceInterfaces = type.getInterfaces();\n\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union.name} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = Object.create(null);\n\n for (const memberType of memberTypes) {\n if (includedTypeNames[memberType.name]) {\n context.reportError(\n `Union type ${union.name} can only include type ${memberType.name} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!(0, _definition.isObjectType)(memberType)) {\n context.reportError(\n `Union type ${union.name} can only include Object types, ` +\n `it cannot include ${(0, _inspect.inspect)(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType.name} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj.name} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n } // Ensure the arguments are valid\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!(0, _definition.isInputType)(field.type)) {\n var _field$astNode2;\n\n context.reportError(\n `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n `but got: ${(0, _inspect.inspect)(field.type)}.`,\n (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n ? void 0\n : _field$astNode2.type,\n );\n }\n\n if (\n (0, _definition.isRequiredInputField)(field) &&\n field.deprecationReason != null\n ) {\n var _field$astNode3;\n\n context.reportError(\n `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(field.astNode),\n (_field$astNode3 = field.astNode) === null ||\n _field$astNode3 === void 0\n ? void 0\n : _field$astNode3.type,\n ],\n );\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n const fieldPath = []; // Position in the type path\n\n const fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n const fields = Object.values(inputObj.getFields());\n\n for (const field of fields) {\n if (\n (0, _definition.isNonNullType)(field.type) &&\n (0, _definition.isInputObjectType)(field.type.ofType)\n ) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n context.reportError(\n `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n const { astNode, extensionASTNodes } = type;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((typeNode) => {\n var _typeNode$interfaces;\n\n return (\n /* c8 ignore next */\n (_typeNode$interfaces = typeNode.interfaces) !== null &&\n _typeNode$interfaces !== void 0\n ? _typeNode$interfaces\n : []\n );\n })\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n const { astNode, extensionASTNodes } = union;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((unionNode) => {\n var _unionNode$types;\n\n return (\n /* c8 ignore next */\n (_unionNode$types = unionNode.types) !== null &&\n _unionNode$types !== void 0\n ? _unionNode$types\n : []\n );\n })\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n var _definitionNode$direc;\n\n return definitionNode === null || definitionNode === void 0\n ? void 0\n : (_definitionNode$direc = definitionNode.directives) === null ||\n _definitionNode$direc === void 0\n ? void 0\n : _definitionNode$direc.find(\n (node) =>\n node.name.value === _directives.GraphQLDeprecatedDirective.name,\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.typeFromAST = typeFromAST;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nfunction typeFromAST(schema, typeNode) {\n switch (typeNode.kind) {\n case _kinds.Kind.LIST_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new _definition.GraphQLList(innerType);\n }\n\n case _kinds.Kind.NON_NULL_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new _definition.GraphQLNonNull(innerType);\n }\n\n case _kinds.Kind.NAMED_TYPE:\n return schema.getType(typeNode.name.value);\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.TypeInfo = void 0;\nexports.visitWithTypeInfo = visitWithTypeInfo;\n\nvar _ast = require('../language/ast.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _typeFromAST = require('./typeFromAST.js');\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\nclass TypeInfo {\n constructor(\n schema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n initialType,\n /** @deprecated will be removed in 17.0.0 */\n getFieldDefFn,\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef =\n getFieldDefFn !== null && getFieldDefFn !== void 0\n ? getFieldDefFn\n : getFieldDef;\n\n if (initialType) {\n if ((0, _definition.isInputType)(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if ((0, _definition.isCompositeType)(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if ((0, _definition.isOutputType)(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'TypeInfo';\n }\n\n getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n }\n\n getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n }\n\n getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n }\n\n getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n }\n\n getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n }\n\n getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n }\n\n getDirective() {\n return this._directive;\n }\n\n getArgument() {\n return this._argument;\n }\n\n getEnumValue() {\n return this._enumValue;\n }\n\n enter(node) {\n const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case _kinds.Kind.SELECTION_SET: {\n const namedType = (0, _definition.getNamedType)(this.getType());\n\n this._parentTypeStack.push(\n (0, _definition.isCompositeType)(namedType) ? namedType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(\n (0, _definition.isOutputType)(fieldType) ? fieldType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case _kinds.Kind.OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n\n this._typeStack.push(\n (0, _definition.isObjectType)(rootType) ? rootType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.INLINE_FRAGMENT:\n case _kinds.Kind.FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType = typeConditionAST\n ? (0, _typeFromAST.typeFromAST)(schema, typeConditionAST)\n : (0, _definition.getNamedType)(this.getType());\n\n this._typeStack.push(\n (0, _definition.isOutputType)(outputType) ? outputType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.VARIABLE_DEFINITION: {\n const inputType = (0, _typeFromAST.typeFromAST)(schema, node.type);\n\n this._inputTypeStack.push(\n (0, _definition.isInputType)(inputType) ? inputType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.ARGUMENT: {\n var _this$getDirective;\n\n let argDef;\n let argType;\n const fieldOrDirective =\n (_this$getDirective = this.getDirective()) !== null &&\n _this$getDirective !== void 0\n ? _this$getDirective\n : this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(\n (0, _definition.isInputType)(argType) ? argType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.LIST: {\n const listType = (0, _definition.getNullableType)(this.getInputType());\n const itemType = (0, _definition.isListType)(listType)\n ? listType.ofType\n : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(\n (0, _definition.isInputType)(itemType) ? itemType : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.OBJECT_FIELD: {\n const objectType = (0, _definition.getNamedType)(this.getInputType());\n let inputFieldType;\n let inputField;\n\n if ((0, _definition.isInputObjectType)(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n\n this._inputTypeStack.push(\n (0, _definition.isInputType)(inputFieldType)\n ? inputFieldType\n : undefined,\n );\n\n break;\n }\n\n case _kinds.Kind.ENUM: {\n const enumType = (0, _definition.getNamedType)(this.getInputType());\n let enumValue;\n\n if ((0, _definition.isEnumType)(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n\n default: // Ignore other nodes\n }\n }\n\n leave(node) {\n switch (node.kind) {\n case _kinds.Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case _kinds.Kind.FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case _kinds.Kind.DIRECTIVE:\n this._directive = null;\n break;\n\n case _kinds.Kind.OPERATION_DEFINITION:\n case _kinds.Kind.INLINE_FRAGMENT:\n case _kinds.Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case _kinds.Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case _kinds.Kind.ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case _kinds.Kind.LIST:\n case _kinds.Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case _kinds.Kind.ENUM:\n this._enumValue = null;\n break;\n\n default: // Ignore other nodes\n }\n }\n}\n\nexports.TypeInfo = TypeInfo;\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n const name = fieldNode.name.value;\n\n if (\n name === _introspection.SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return _introspection.SchemaMetaFieldDef;\n }\n\n if (\n name === _introspection.TypeMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return _introspection.TypeMetaFieldDef;\n }\n\n if (\n name === _introspection.TypeNameMetaFieldDef.name &&\n (0, _definition.isCompositeType)(parentType)\n ) {\n return _introspection.TypeNameMetaFieldDef;\n }\n\n if (\n (0, _definition.isObjectType)(parentType) ||\n (0, _definition.isInterfaceType)(parentType)\n ) {\n return parentType.getFields()[name];\n }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).enter;\n\n if (fn) {\n const result = fn.apply(visitor, args);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if ((0, _ast.isNode)(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n\n leave(...args) {\n const node = args[0];\n const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).leave;\n let result;\n\n if (fn) {\n result = fn.apply(visitor, args);\n }\n\n typeInfo.leave(node);\n return result;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isConstValueNode = isConstValueNode;\nexports.isDefinitionNode = isDefinitionNode;\nexports.isExecutableDefinitionNode = isExecutableDefinitionNode;\nexports.isSelectionNode = isSelectionNode;\nexports.isTypeDefinitionNode = isTypeDefinitionNode;\nexports.isTypeExtensionNode = isTypeExtensionNode;\nexports.isTypeNode = isTypeNode;\nexports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\nexports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\nexports.isValueNode = isValueNode;\n\nvar _kinds = require('./kinds.js');\n\nfunction isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\n\nfunction isExecutableDefinitionNode(node) {\n return (\n node.kind === _kinds.Kind.OPERATION_DEFINITION ||\n node.kind === _kinds.Kind.FRAGMENT_DEFINITION\n );\n}\n\nfunction isSelectionNode(node) {\n return (\n node.kind === _kinds.Kind.FIELD ||\n node.kind === _kinds.Kind.FRAGMENT_SPREAD ||\n node.kind === _kinds.Kind.INLINE_FRAGMENT\n );\n}\n\nfunction isValueNode(node) {\n return (\n node.kind === _kinds.Kind.VARIABLE ||\n node.kind === _kinds.Kind.INT ||\n node.kind === _kinds.Kind.FLOAT ||\n node.kind === _kinds.Kind.STRING ||\n node.kind === _kinds.Kind.BOOLEAN ||\n node.kind === _kinds.Kind.NULL ||\n node.kind === _kinds.Kind.ENUM ||\n node.kind === _kinds.Kind.LIST ||\n node.kind === _kinds.Kind.OBJECT\n );\n}\n\nfunction isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === _kinds.Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === _kinds.Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== _kinds.Kind.VARIABLE)\n );\n}\n\nfunction isTypeNode(node) {\n return (\n node.kind === _kinds.Kind.NAMED_TYPE ||\n node.kind === _kinds.Kind.LIST_TYPE ||\n node.kind === _kinds.Kind.NON_NULL_TYPE\n );\n}\n\nfunction isTypeSystemDefinitionNode(node) {\n return (\n node.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === _kinds.Kind.DIRECTIVE_DEFINITION\n );\n}\n\nfunction isTypeDefinitionNode(node) {\n return (\n node.kind === _kinds.Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === _kinds.Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === _kinds.Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === _kinds.Kind.UNION_TYPE_DEFINITION ||\n node.kind === _kinds.Kind.ENUM_TYPE_DEFINITION ||\n node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\n\nfunction isTypeSystemExtensionNode(node) {\n return (\n node.kind === _kinds.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node)\n );\n}\n\nfunction isTypeExtensionNode(node) {\n return (\n node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === _kinds.Kind.UNION_TYPE_EXTENSION ||\n node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION ||\n node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.ExecutableDefinitionsRule = ExecutableDefinitionsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nfunction ExecutableDefinitionsRule(context) {\n return {\n Document(node) {\n for (const definition of node.definitions) {\n if (!(0, _predicates.isExecutableDefinitionNode)(definition)) {\n const defName =\n definition.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n definition.kind === _kinds.Kind.SCHEMA_EXTENSION\n ? 'schema'\n : '\"' + definition.name.value + '\"';\n context.reportError(\n new _GraphQLError.GraphQLError(\n `The ${defName} definition is not executable.`,\n {\n nodes: definition,\n },\n ),\n );\n }\n }\n\n return false;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.FieldsOnCorrectTypeRule = FieldsOnCorrectTypeRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _naturalCompare = require('../../jsutils/naturalCompare.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nfunction FieldsOnCorrectTypeRule(context) {\n return {\n Field(node) {\n const type = context.getParentType();\n\n if (type) {\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n const schema = context.getSchema();\n const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n let suggestion = (0, _didYouMean.didYouMean)(\n 'to use an inline fragment on',\n getSuggestedTypeNames(schema, type, fieldName),\n ); // If there are no suggested types, then perhaps this was a typo?\n\n if (suggestion === '') {\n suggestion = (0, _didYouMean.didYouMean)(\n getSuggestedFieldNames(type, fieldName),\n );\n } // Report an error, including helpful suggestions.\n\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n suggestion,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (!(0, _definition.isAbstractType)(type)) {\n // Must be an Object type, which does not have possible fields.\n return [];\n }\n\n const suggestedTypes = new Set();\n const usageCount = Object.create(null);\n\n for (const possibleType of schema.getPossibleTypes(type)) {\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n suggestedTypes.add(possibleType);\n usageCount[possibleType.name] = 1;\n\n for (const possibleInterface of possibleType.getInterfaces()) {\n var _usageCount$possibleI;\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n suggestedTypes.add(possibleInterface);\n usageCount[possibleInterface.name] =\n ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n null && _usageCount$possibleI !== void 0\n ? _usageCount$possibleI\n : 0) + 1;\n }\n }\n\n return [...suggestedTypes]\n .sort((typeA, typeB) => {\n // Suggest both interface and object types based on how common they are.\n const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n if (usageCountDiff !== 0) {\n return usageCountDiff;\n } // Suggest super types first followed by subtypes\n\n if (\n (0, _definition.isInterfaceType)(typeA) &&\n schema.isSubType(typeA, typeB)\n ) {\n return -1;\n }\n\n if (\n (0, _definition.isInterfaceType)(typeB) &&\n schema.isSubType(typeB, typeA)\n ) {\n return 1;\n }\n\n return (0, _naturalCompare.naturalCompare)(typeA.name, typeB.name);\n })\n .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n if (\n (0, _definition.isObjectType)(type) ||\n (0, _definition.isInterfaceType)(type)\n ) {\n const possibleFieldNames = Object.keys(type.getFields());\n return (0, _suggestionList.suggestionList)(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n return [];\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.FragmentsOnCompositeTypesRule = FragmentsOnCompositeTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n return {\n InlineFragment(node) {\n const typeCondition = node.typeCondition;\n\n if (typeCondition) {\n const type = (0, _typeFromAST.typeFromAST)(\n context.getSchema(),\n typeCondition,\n );\n\n if (type && !(0, _definition.isCompositeType)(type)) {\n const typeStr = (0, _printer.print)(typeCondition);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Fragment cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: typeCondition,\n },\n ),\n );\n }\n }\n },\n\n FragmentDefinition(node) {\n const type = (0, _typeFromAST.typeFromAST)(\n context.getSchema(),\n node.typeCondition,\n );\n\n if (type && !(0, _definition.isCompositeType)(type)) {\n const typeStr = (0, _printer.print)(node.typeCondition);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: node.typeCondition,\n },\n ),\n );\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.KnownArgumentNamesOnDirectivesRule = KnownArgumentNamesOnDirectivesRule;\nexports.KnownArgumentNamesRule = KnownArgumentNamesRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nfunction KnownArgumentNamesRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...KnownArgumentNamesOnDirectivesRule(context),\n\n Argument(argNode) {\n const argDef = context.getArgument();\n const fieldDef = context.getFieldDef();\n const parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n const argName = argNode.name.value;\n const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n const suggestions = (0, _suggestionList.suggestionList)(\n argName,\n knownArgsNames,\n );\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n (0, _didYouMean.didYouMean)(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n },\n };\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n const directiveArgs = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : _directives.specifiedDirectives;\n\n for (const directive of definedDirectives) {\n directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argsNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n }\n }\n\n return {\n Directive(directiveNode) {\n const directiveName = directiveNode.name.value;\n const knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (const argNode of directiveNode.arguments) {\n const argName = argNode.name.value;\n\n if (!knownArgs.includes(argName)) {\n const suggestions = (0, _suggestionList.suggestionList)(\n argName,\n knownArgs,\n );\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n (0, _didYouMean.didYouMean)(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n }\n }\n\n return false;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.KnownDirectivesRule = KnownDirectivesRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _ast = require('../../language/ast.js');\n\nvar _directiveLocation = require('../../language/directiveLocation.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nfunction KnownDirectivesRule(context) {\n const locationsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : _directives.specifiedDirectives;\n\n for (const directive of definedDirectives) {\n locationsMap[directive.name] = directive.locations;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map((name) => name.value);\n }\n }\n\n return {\n Directive(node, _key, _parent, _path, ancestors) {\n const name = node.name.value;\n const locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(\n new _GraphQLError.GraphQLError(`Unknown directive \"@${name}\".`, {\n nodes: node,\n }),\n );\n return;\n }\n\n const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && !locations.includes(candidateLocation)) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n const appliedTo = ancestors[ancestors.length - 1];\n 'kind' in appliedTo || (0, _invariant.invariant)(false);\n\n switch (appliedTo.kind) {\n case _kinds.Kind.OPERATION_DEFINITION:\n return getDirectiveLocationForOperation(appliedTo.operation);\n\n case _kinds.Kind.FIELD:\n return _directiveLocation.DirectiveLocation.FIELD;\n\n case _kinds.Kind.FRAGMENT_SPREAD:\n return _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD;\n\n case _kinds.Kind.INLINE_FRAGMENT:\n return _directiveLocation.DirectiveLocation.INLINE_FRAGMENT;\n\n case _kinds.Kind.FRAGMENT_DEFINITION:\n return _directiveLocation.DirectiveLocation.FRAGMENT_DEFINITION;\n\n case _kinds.Kind.VARIABLE_DEFINITION:\n return _directiveLocation.DirectiveLocation.VARIABLE_DEFINITION;\n\n case _kinds.Kind.SCHEMA_DEFINITION:\n case _kinds.Kind.SCHEMA_EXTENSION:\n return _directiveLocation.DirectiveLocation.SCHEMA;\n\n case _kinds.Kind.SCALAR_TYPE_DEFINITION:\n case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n return _directiveLocation.DirectiveLocation.SCALAR;\n\n case _kinds.Kind.OBJECT_TYPE_DEFINITION:\n case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n return _directiveLocation.DirectiveLocation.OBJECT;\n\n case _kinds.Kind.FIELD_DEFINITION:\n return _directiveLocation.DirectiveLocation.FIELD_DEFINITION;\n\n case _kinds.Kind.INTERFACE_TYPE_DEFINITION:\n case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n return _directiveLocation.DirectiveLocation.INTERFACE;\n\n case _kinds.Kind.UNION_TYPE_DEFINITION:\n case _kinds.Kind.UNION_TYPE_EXTENSION:\n return _directiveLocation.DirectiveLocation.UNION;\n\n case _kinds.Kind.ENUM_TYPE_DEFINITION:\n case _kinds.Kind.ENUM_TYPE_EXTENSION:\n return _directiveLocation.DirectiveLocation.ENUM;\n\n case _kinds.Kind.ENUM_VALUE_DEFINITION:\n return _directiveLocation.DirectiveLocation.ENUM_VALUE;\n\n case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return _directiveLocation.DirectiveLocation.INPUT_OBJECT;\n\n case _kinds.Kind.INPUT_VALUE_DEFINITION: {\n const parentNode = ancestors[ancestors.length - 3];\n 'kind' in parentNode || (0, _invariant.invariant)(false);\n return parentNode.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION\n ? _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION\n : _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION;\n }\n // Not reachable, all possible types have been considered.\n\n /* c8 ignore next */\n\n default:\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected kind: ' + (0, _inspect.inspect)(appliedTo.kind),\n );\n }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n switch (operation) {\n case _ast.OperationTypeNode.QUERY:\n return _directiveLocation.DirectiveLocation.QUERY;\n\n case _ast.OperationTypeNode.MUTATION:\n return _directiveLocation.DirectiveLocation.MUTATION;\n\n case _ast.OperationTypeNode.SUBSCRIPTION:\n return _directiveLocation.DirectiveLocation.SUBSCRIPTION;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.KnownFragmentNamesRule = KnownFragmentNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nfunction KnownFragmentNamesRule(context) {\n return {\n FragmentSpread(node) {\n const fragmentName = node.name.value;\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Unknown fragment \"${fragmentName}\".`,\n {\n nodes: node.name,\n },\n ),\n );\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.KnownTypeNamesRule = KnownTypeNamesRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _introspection = require('../../type/introspection.js');\n\nvar _scalars = require('../../type/scalars.js');\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nfunction KnownTypeNamesRule(context) {\n const schema = context.getSchema();\n const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if ((0, _predicates.isTypeDefinitionNode)(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n const typeNames = [\n ...Object.keys(existingTypesMap),\n ...Object.keys(definedTypes),\n ];\n return {\n NamedType(node, _1, parent, _2, ancestors) {\n const typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var _ancestors$;\n\n const definitionNode =\n (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n ? _ancestors$\n : parent;\n const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n if (isSDL && standardTypeNames.includes(typeName)) {\n return;\n }\n\n const suggestedTypes = (0, _suggestionList.suggestionList)(\n typeName,\n isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n );\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Unknown type \"${typeName}\".` +\n (0, _didYouMean.didYouMean)(suggestedTypes),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nconst standardTypeNames = [\n ..._scalars.specifiedScalarTypes,\n ..._introspection.introspectionTypes,\n].map((type) => type.name);\n\nfunction isSDLNode(value) {\n return (\n 'kind' in value &&\n ((0, _predicates.isTypeSystemDefinitionNode)(value) ||\n (0, _predicates.isTypeSystemExtensionNode)(value))\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.LoneAnonymousOperationRule = LoneAnonymousOperationRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nfunction LoneAnonymousOperationRule(context) {\n let operationCount = 0;\n return {\n Document(node) {\n operationCount = node.definitions.filter(\n (definition) => definition.kind === _kinds.Kind.OPERATION_DEFINITION,\n ).length;\n },\n\n OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n 'This anonymous operation must be the only defined operation.',\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n var _ref, _ref2, _oldSchema$astNode;\n\n const oldSchema = context.getSchema();\n const alreadyDefined =\n (_ref =\n (_ref2 =\n (_oldSchema$astNode =\n oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n ? _oldSchema$astNode\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n ? _ref2\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getMutationType()) !== null && _ref !== void 0\n ? _ref\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getSubscriptionType();\n let schemaDefinitionsCount = 0;\n return {\n SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n 'Cannot define a new schema within a schema extension.',\n {\n nodes: node,\n },\n ),\n );\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n 'Must provide only one schema definition.',\n {\n nodes: node,\n },\n ),\n );\n }\n\n ++schemaDefinitionsCount;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.NoFragmentCyclesRule = NoFragmentCyclesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nfunction NoFragmentCyclesRule(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n const spreadPath = []; // Position in the spread path\n\n const spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n },\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n const fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (const spreadNode of spreadNodes) {\n const spreadName = spreadNode.name.value;\n const cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n const spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n const cyclePath = spreadPath.slice(cycleIndex);\n const viaPath = cyclePath\n .slice(0, -1)\n .map((s) => '\"' + s.name.value + '\"')\n .join(', ');\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Cannot spread fragment \"${spreadName}\" within itself` +\n (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n {\n nodes: cyclePath,\n },\n ),\n );\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.NoUndefinedVariablesRule = NoUndefinedVariablesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nfunction NoUndefinedVariablesRule(context) {\n let variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n variableNameDefined = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n const varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n operation.name\n ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n : `Variable \"$${varName}\" is not defined.`,\n {\n nodes: [node, operation],\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.NoUnusedFragmentsRule = NoUnusedFragmentsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nfunction NoUnusedFragmentsRule(context) {\n const operationDefs = [];\n const fragmentDefs = [];\n return {\n OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n\n FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n\n Document: {\n leave() {\n const fragmentNameUsed = Object.create(null);\n\n for (const operation of operationDefs) {\n for (const fragment of context.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Fragment \"${fragName}\" is never used.`,\n {\n nodes: fragmentDef,\n },\n ),\n );\n }\n }\n },\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.NoUnusedVariablesRule = NoUnusedVariablesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nfunction NoUnusedVariablesRule(context) {\n let variableDefs = [];\n return {\n OperationDefinition: {\n enter() {\n variableDefs = [];\n },\n\n leave(operation) {\n const variableNameUsed = Object.create(null);\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n variableNameUsed[node.name.value] = true;\n }\n\n for (const variableDef of variableDefs) {\n const variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n operation.name\n ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n : `Variable \"$${variableName}\" is never used.`,\n {\n nodes: variableDef,\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(def) {\n variableDefs.push(def);\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.sortValueNode = sortValueNode;\n\nvar _naturalCompare = require('../jsutils/naturalCompare.js');\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\nfunction sortValueNode(valueNode) {\n switch (valueNode.kind) {\n case _kinds.Kind.OBJECT:\n return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n case _kinds.Kind.LIST:\n return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n case _kinds.Kind.INT:\n case _kinds.Kind.FLOAT:\n case _kinds.Kind.STRING:\n case _kinds.Kind.BOOLEAN:\n case _kinds.Kind.NULL:\n case _kinds.Kind.ENUM:\n case _kinds.Kind.VARIABLE:\n return valueNode;\n }\n}\n\nfunction sortFields(fields) {\n return fields\n .map((fieldNode) => ({\n ...fieldNode,\n value: sortValueNode(fieldNode.value),\n }))\n .sort((fieldA, fieldB) =>\n (0, _naturalCompare.naturalCompare)(fieldA.name.value, fieldB.name.value),\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.OverlappingFieldsCanBeMergedRule = OverlappingFieldsCanBeMergedRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _sortValueNode = require('../../utilities/sortValueNode.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason\n .map(\n ([responseName, subReason]) =>\n `subfields \"${responseName}\" conflict because ` +\n reasonMessage(subReason),\n )\n .join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n const cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet(selectionSet) {\n const conflicts = findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n context.getParentType(),\n selectionSet,\n );\n\n for (const [[responseName, reason], fields1, fields2] of conflicts) {\n const reasonMsg = reasonMessage(reason);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n {\n nodes: fields1.concat(fields2),\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentType,\n selectionSet,\n) {\n const conflicts = [];\n const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n );\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n for (let i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fieldMap,\n fragmentNames[i],\n ); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (let j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fragmentNames[i],\n fragmentNames[j],\n );\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fragmentName,\n) {\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n const [fieldMap2, referencedFragmentNames] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n ); // Do not compare a fragment's fieldMap to itself.\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fieldMap2,\n ); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (const referencedFragmentName of referencedFragmentNames) {\n // Memoize so two fragments are not compared for conflicts more than once.\n if (\n comparedFragmentPairs.has(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n )\n ) {\n continue;\n }\n\n comparedFragmentPairs.add(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n );\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n referencedFragmentName,\n );\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n if (\n comparedFragmentPairs.has(\n fragmentName1,\n fragmentName2,\n areMutuallyExclusive,\n )\n ) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n const fragment1 = context.getFragment(fragmentName1);\n const fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n const [fieldMap1, referencedFragmentNames1] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment1,\n );\n const [fieldMap2, referencedFragmentNames2] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment2,\n ); // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (const referencedFragmentName2 of referencedFragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n referencedFragmentName2,\n );\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n for (const referencedFragmentName1 of referencedFragmentNames1) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n referencedFragmentName1,\n fragmentName2,\n );\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n parentType1,\n selectionSet1,\n parentType2,\n selectionSet2,\n) {\n const conflicts = [];\n const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType1,\n selectionSet1,\n );\n const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType2,\n selectionSet2,\n ); // (H) First, collect all conflicts between these two collections of field.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fragmentName2,\n );\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n for (const fragmentName1 of fragmentNames1) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap2,\n fragmentName1,\n );\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n for (const fragmentName1 of fragmentNames1) {\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n );\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (const [responseName, fields] of Object.entries(fieldMap)) {\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (let i = 0; i < fields.length; i++) {\n for (let j = i + 1; j < fields.length; j++) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false, // within one collection is never mutually exclusive\n responseName,\n fields[i],\n fields[j],\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n const fields2 = fieldMap2[responseName];\n\n if (fields2) {\n for (const field1 of fields1) {\n for (const field2 of fields2) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n) {\n const [parentType1, node1, def1] = field1;\n const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n const areMutuallyExclusive =\n parentFieldsAreMutuallyExclusive ||\n (parentType1 !== parentType2 &&\n (0, _definition.isObjectType)(parentType1) &&\n (0, _definition.isObjectType)(parentType2));\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n const name1 = node1.name.value;\n const name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [\n [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n [node1],\n [node2],\n ];\n } // Two field calls must have the same arguments.\n\n if (stringifyArguments(node1) !== stringifyArguments(node2)) {\n return [\n [responseName, 'they have differing arguments'],\n [node1],\n [node2],\n ];\n }\n } // The return type for each field.\n\n const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [\n [\n responseName,\n `they return conflicting types \"${(0, _inspect.inspect)(\n type1,\n )}\" and \"${(0, _inspect.inspect)(type2)}\"`,\n ],\n [node1],\n [node2],\n ];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n const selectionSet1 = node1.selectionSet;\n const selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n const conflicts = findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n (0, _definition.getNamedType)(type1),\n selectionSet1,\n (0, _definition.getNamedType)(type2),\n selectionSet2,\n );\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction stringifyArguments(fieldNode) {\n var _fieldNode$arguments;\n\n // FIXME https://github.com/graphql/graphql-js/issues/2203\n const args =\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) !== null &&\n _fieldNode$arguments !== void 0\n ? _fieldNode$arguments\n : [];\n const inputObjectWithArgs = {\n kind: _kinds.Kind.OBJECT,\n fields: args.map((argNode) => ({\n kind: _kinds.Kind.OBJECT_FIELD,\n name: argNode.name,\n value: argNode.value,\n })),\n };\n return (0, _printer.print)(\n (0, _sortValueNode.sortValueNode)(inputObjectWithArgs),\n );\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n if ((0, _definition.isListType)(type1)) {\n return (0, _definition.isListType)(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if ((0, _definition.isListType)(type2)) {\n return true;\n }\n\n if ((0, _definition.isNonNullType)(type1)) {\n return (0, _definition.isNonNullType)(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if ((0, _definition.isNonNullType)(type2)) {\n return true;\n }\n\n if (\n (0, _definition.isLeafType)(type1) ||\n (0, _definition.isLeafType)(type2)\n ) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n) {\n const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const nodeAndDefs = Object.create(null);\n const fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n const result = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, result);\n return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n) {\n // Short-circuit building a type from the node if possible.\n const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const fragmentType = (0, _typeFromAST.typeFromAST)(\n context.getSchema(),\n fragment.typeCondition,\n );\n return getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragmentType,\n fragment.selectionSet,\n );\n}\n\nfunction _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case _kinds.Kind.FIELD: {\n const fieldName = selection.name.value;\n let fieldDef;\n\n if (\n (0, _definition.isObjectType)(parentType) ||\n (0, _definition.isInterfaceType)(parentType)\n ) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n const responseName = selection.alias\n ? selection.alias.value\n : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case _kinds.Kind.FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case _kinds.Kind.INLINE_FRAGMENT: {\n const typeCondition = selection.typeCondition;\n const inlineFragmentType = typeCondition\n ? (0, _typeFromAST.typeFromAST)(context.getSchema(), typeCondition)\n : parentType;\n\n _collectFieldsAndFragmentNames(\n context,\n inlineFragmentType,\n selection.selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [\n [responseName, conflicts.map(([reason]) => reason)],\n [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n ];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does not matter.\n */\n\nclass PairSet {\n constructor() {\n this._data = new Map();\n }\n\n has(a, b, areMutuallyExclusive) {\n var _this$_data$get;\n\n const [key1, key2] = a < b ? [a, b] : [b, a];\n const result =\n (_this$_data$get = this._data.get(key1)) === null ||\n _this$_data$get === void 0\n ? void 0\n : _this$_data$get.get(key2);\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true, hence if\n // we want to know if this PairSet \"has\" these two with no exclusivity,\n // we have to ensure it was added as such.\n\n return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n }\n\n add(a, b, areMutuallyExclusive) {\n const [key1, key2] = a < b ? [a, b] : [b, a];\n\n const map = this._data.get(key1);\n\n if (map === undefined) {\n this._data.set(key1, new Map([[key2, areMutuallyExclusive]]));\n } else {\n map.set(key2, areMutuallyExclusive);\n }\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.PossibleFragmentSpreadsRule = PossibleFragmentSpreadsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeComparators = require('../../utilities/typeComparators.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n return {\n InlineFragment(node) {\n const fragType = context.getType();\n const parentType = context.getParentType();\n\n if (\n (0, _definition.isCompositeType)(fragType) &&\n (0, _definition.isCompositeType)(parentType) &&\n !(0, _typeComparators.doTypesOverlap)(\n context.getSchema(),\n fragType,\n parentType,\n )\n ) {\n const parentTypeStr = (0, _inspect.inspect)(parentType);\n const fragTypeStr = (0, _inspect.inspect)(fragType);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n FragmentSpread(node) {\n const fragName = node.name.value;\n const fragType = getFragmentType(context, fragName);\n const parentType = context.getParentType();\n\n if (\n fragType &&\n parentType &&\n !(0, _typeComparators.doTypesOverlap)(\n context.getSchema(),\n fragType,\n parentType,\n )\n ) {\n const parentTypeStr = (0, _inspect.inspect)(parentType);\n const fragTypeStr = (0, _inspect.inspect)(fragType);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getFragmentType(context, name) {\n const frag = context.getFragment(name);\n\n if (frag) {\n const type = (0, _typeFromAST.typeFromAST)(\n context.getSchema(),\n frag.typeCondition,\n );\n\n if ((0, _definition.isCompositeType)(type)) {\n return type;\n }\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.PossibleTypeExtensionsRule = PossibleTypeExtensionsRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n const schema = context.getSchema();\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if ((0, _predicates.isTypeDefinitionNode)(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension,\n };\n\n function checkExtension(node) {\n const typeName = node.name.value;\n const defNode = definedTypes[typeName];\n const existingType =\n schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n let expectedKind;\n\n if (defNode) {\n expectedKind = defKindToExtKind[defNode.kind];\n } else if (existingType) {\n expectedKind = typeToExtKind(existingType);\n }\n\n if (expectedKind) {\n if (expectedKind !== node.kind) {\n const kindStr = extensionKindToTypeName(node.kind);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Cannot extend non-${kindStr} type \"${typeName}\".`,\n {\n nodes: defNode ? [defNode, node] : node,\n },\n ),\n );\n }\n } else {\n const allTypeNames = Object.keys({\n ...definedTypes,\n ...(schema === null || schema === void 0\n ? void 0\n : schema.getTypeMap()),\n });\n const suggestedTypes = (0, _suggestionList.suggestionList)(\n typeName,\n allTypeNames,\n );\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Cannot extend type \"${typeName}\" because it is not defined.` +\n (0, _didYouMean.didYouMean)(suggestedTypes),\n {\n nodes: node.name,\n },\n ),\n );\n }\n }\n}\n\nconst defKindToExtKind = {\n [_kinds.Kind.SCALAR_TYPE_DEFINITION]: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n [_kinds.Kind.OBJECT_TYPE_DEFINITION]: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n [_kinds.Kind.INTERFACE_TYPE_DEFINITION]: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n [_kinds.Kind.UNION_TYPE_DEFINITION]: _kinds.Kind.UNION_TYPE_EXTENSION,\n [_kinds.Kind.ENUM_TYPE_DEFINITION]: _kinds.Kind.ENUM_TYPE_EXTENSION,\n [_kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION]:\n _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n if ((0, _definition.isScalarType)(type)) {\n return _kinds.Kind.SCALAR_TYPE_EXTENSION;\n }\n\n if ((0, _definition.isObjectType)(type)) {\n return _kinds.Kind.OBJECT_TYPE_EXTENSION;\n }\n\n if ((0, _definition.isInterfaceType)(type)) {\n return _kinds.Kind.INTERFACE_TYPE_EXTENSION;\n }\n\n if ((0, _definition.isUnionType)(type)) {\n return _kinds.Kind.UNION_TYPE_EXTENSION;\n }\n\n if ((0, _definition.isEnumType)(type)) {\n return _kinds.Kind.ENUM_TYPE_EXTENSION;\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n return _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n }\n /* c8 ignore next 3 */\n // Not reachable. All possible types have been considered\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected type: ' + (0, _inspect.inspect)(type),\n );\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case _kinds.Kind.UNION_TYPE_EXTENSION:\n return 'union';\n\n case _kinds.Kind.ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n // Not reachable. All possible types have been considered\n\n /* c8 ignore next */\n\n default:\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected kind: ' + (0, _inspect.inspect)(kind),\n );\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.ProvidedRequiredArgumentsOnDirectivesRule =\n ProvidedRequiredArgumentsOnDirectivesRule;\nexports.ProvidedRequiredArgumentsRule = ProvidedRequiredArgumentsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _keyMap = require('../../jsutils/keyMap.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(fieldNode) {\n var _fieldNode$arguments;\n\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) === null ||\n _fieldNode$arguments === void 0\n ? void 0\n : _fieldNode$arguments.map((arg) => arg.name.value),\n );\n\n for (const argDef of fieldDef.args) {\n if (\n !providedArgs.has(argDef.name) &&\n (0, _definition.isRequiredArgument)(argDef)\n ) {\n const argTypeStr = (0, _inspect.inspect)(argDef.type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n {\n nodes: fieldNode,\n },\n ),\n );\n }\n }\n },\n },\n };\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n var _schema$getDirectives;\n\n const requiredArgsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives =\n (_schema$getDirectives =\n schema === null || schema === void 0\n ? void 0\n : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n ? _schema$getDirectives\n : _directives.specifiedDirectives;\n\n for (const directive of definedDirectives) {\n requiredArgsMap[directive.name] = (0, _keyMap.keyMap)(\n directive.args.filter(_definition.isRequiredArgument),\n (arg) => arg.name,\n );\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n requiredArgsMap[def.name.value] = (0, _keyMap.keyMap)(\n argNodes.filter(isRequiredArgumentNode),\n (arg) => arg.name.value,\n );\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(directiveNode) {\n const directiveName = directiveNode.name.value;\n const requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n for (const [argName, argDef] of Object.entries(requiredArgs)) {\n if (!argNodeMap.has(argName)) {\n const argType = (0, _definition.isType)(argDef.type)\n ? (0, _inspect.inspect)(argDef.type)\n : (0, _printer.print)(argDef.type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n {\n nodes: directiveNode,\n },\n ),\n );\n }\n }\n }\n },\n },\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return (\n arg.type.kind === _kinds.Kind.NON_NULL_TYPE && arg.defaultValue == null\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.ScalarLeafsRule = ScalarLeafsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n return {\n Field(node) {\n const type = context.getType();\n const selectionSet = node.selectionSet;\n\n if (type) {\n if ((0, _definition.isLeafType)((0, _definition.getNamedType)(type))) {\n if (selectionSet) {\n const fieldName = node.name.value;\n const typeStr = (0, _inspect.inspect)(type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n {\n nodes: selectionSet,\n },\n ),\n );\n }\n } else if (!selectionSet) {\n const fieldName = node.name.value;\n const typeStr = (0, _inspect.inspect)(type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.printPathArray = printPathArray;\n\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n return path\n .map((key) =>\n typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n )\n .join('');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.addPath = addPath;\nexports.pathToArray = pathToArray;\n\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n return {\n prev,\n key,\n typename,\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n const flattened = [];\n let curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.coerceInputValue = coerceInputValue;\n\nvar _didYouMean = require('../jsutils/didYouMean.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _printPathArray = require('../jsutils/printPathArray.js');\n\nvar _suggestionList = require('../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type, onError = defaultOnError) {\n return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n let errorPrefix = 'Invalid value ' + (0, _inspect.inspect)(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += ` at \"value${(0, _printPathArray.printPathArray)(path)}\"`;\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if ((0, _definition.isNonNullType)(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(\n (0, _Path.pathToArray)(path),\n inputValue,\n new _GraphQLError.GraphQLError(\n `Expected non-nullable type \"${(0, _inspect.inspect)(\n type,\n )}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if ((0, _definition.isListType)(type)) {\n const itemType = type.ofType;\n\n if ((0, _isIterableObject.isIterableObject)(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = (0, _Path.addPath)(path, index, undefined);\n return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n });\n } // Lists accept a non-list value as a list of one.\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n if (!(0, _isObjectLike.isObjectLike)(inputValue)) {\n onError(\n (0, _Path.pathToArray)(path),\n inputValue,\n new _GraphQLError.GraphQLError(\n `Expected type \"${type.name}\" to be an object.`,\n ),\n );\n return;\n }\n\n const coercedValue = {};\n const fieldDefs = type.getFields();\n\n for (const field of Object.values(fieldDefs)) {\n const fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n coercedValue[field.name] = field.defaultValue;\n } else if ((0, _definition.isNonNullType)(field.type)) {\n const typeStr = (0, _inspect.inspect)(field.type);\n onError(\n (0, _Path.pathToArray)(path),\n inputValue,\n new _GraphQLError.GraphQLError(\n `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n\n continue;\n }\n\n coercedValue[field.name] = coerceInputValueImpl(\n fieldValue,\n field.type,\n onError,\n (0, _Path.addPath)(path, field.name, type.name),\n );\n } // Ensure every provided field is defined.\n\n for (const fieldName of Object.keys(inputValue)) {\n if (!fieldDefs[fieldName]) {\n const suggestions = (0, _suggestionList.suggestionList)(\n fieldName,\n Object.keys(type.getFields()),\n );\n onError(\n (0, _Path.pathToArray)(path),\n inputValue,\n new _GraphQLError.GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n (0, _didYouMean.didYouMean)(suggestions),\n ),\n );\n }\n }\n\n return coercedValue;\n }\n\n if ((0, _definition.isLeafType)(type)) {\n let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n if (error instanceof _GraphQLError.GraphQLError) {\n onError((0, _Path.pathToArray)(path), inputValue, error);\n } else {\n onError(\n (0, _Path.pathToArray)(path),\n inputValue,\n new _GraphQLError.GraphQLError(\n `Expected type \"${type.name}\". ` + error.message,\n {\n originalError: error,\n },\n ),\n );\n }\n\n return;\n }\n\n if (parseResult === undefined) {\n onError(\n (0, _Path.pathToArray)(path),\n inputValue,\n new _GraphQLError.GraphQLError(`Expected type \"${type.name}\".`),\n );\n }\n\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected input type: ' + (0, _inspect.inspect)(type),\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.valueFromAST = valueFromAST;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\nfunction valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === _kinds.Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n\n const variableValue = variables[variableName];\n\n if (variableValue === null && (0, _definition.isNonNullType)(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n return variableValue;\n }\n\n if ((0, _definition.isNonNullType)(type)) {\n if (valueNode.kind === _kinds.Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === _kinds.Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if ((0, _definition.isListType)(type)) {\n const itemType = type.ofType;\n\n if (valueNode.kind === _kinds.Kind.LIST) {\n const coercedValues = [];\n\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if ((0, _definition.isNonNullType)(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n if (valueNode.kind !== _kinds.Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n const coercedObj = Object.create(null);\n const fieldNodes = (0, _keyMap.keyMap)(\n valueNode.fields,\n (field) => field.name.value,\n );\n\n for (const field of Object.values(type.getFields())) {\n const fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if ((0, _definition.isNonNullType)(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n }\n\n if ((0, _definition.isLeafType)(type)) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected input type: ' + (0, _inspect.inspect)(type),\n );\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return (\n valueNode.kind === _kinds.Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.getArgumentValues = getArgumentValues;\nexports.getDirectiveValues = getDirectiveValues;\nexports.getVariableValues = getVariableValues;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _printPathArray = require('../jsutils/printPathArray.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _coerceInputValue = require('../utilities/coerceInputValue.js');\n\nvar _typeFromAST = require('../utilities/typeFromAST.js');\n\nvar _valueFromAST = require('../utilities/valueFromAST.js');\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n const errors = [];\n const maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors;\n\n try {\n const coerced = coerceVariableValues(\n schema,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new _GraphQLError.GraphQLError(\n 'Too many errors processing variables, error limit reached. Execution aborted.',\n );\n }\n\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return {\n coerced,\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors,\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n const coercedValues = {};\n\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varType = (0, _typeFromAST.typeFromAST)(schema, varDefNode.type);\n\n if (!(0, _definition.isInputType)(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = (0, _printer.print)(varDefNode.type);\n onError(\n new _GraphQLError.GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n {\n nodes: varDefNode.type,\n },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = (0, _valueFromAST.valueFromAST)(\n varDefNode.defaultValue,\n varType,\n );\n } else if ((0, _definition.isNonNullType)(varType)) {\n const varTypeStr = (0, _inspect.inspect)(varType);\n onError(\n new _GraphQLError.GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n }\n\n continue;\n }\n\n const value = inputs[varName];\n\n if (value === null && (0, _definition.isNonNullType)(varType)) {\n const varTypeStr = (0, _inspect.inspect)(varType);\n onError(\n new _GraphQLError.GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = (0, _coerceInputValue.coerceInputValue)(\n value,\n varType,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` +\n (0, _inspect.inspect)(invalidValue);\n\n if (path.length > 0) {\n prefix += ` at \"${varName}${(0, _printPathArray.printPathArray)(\n path,\n )}\"`;\n }\n\n onError(\n new _GraphQLError.GraphQLError(prefix + '; ' + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getArgumentValues(def, node, variableValues) {\n var _node$arguments;\n\n const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n ? _node$arguments\n : [];\n const argNodeMap = (0, _keyMap.keyMap)(\n argumentNodes,\n (arg) => arg.name.value,\n );\n\n for (const argDef of def.args) {\n const name = argDef.name;\n const argType = argDef.type;\n const argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if ((0, _definition.isNonNullType)(argType)) {\n throw new _GraphQLError.GraphQLError(\n `Argument \"${name}\" of required type \"${(0, _inspect.inspect)(\n argType,\n )}\" ` + 'was not provided.',\n {\n nodes: node,\n },\n );\n }\n\n continue;\n }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === _kinds.Kind.NULL;\n\n if (valueNode.kind === _kinds.Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if ((0, _definition.isNonNullType)(argType)) {\n throw new _GraphQLError.GraphQLError(\n `Argument \"${name}\" of required type \"${(0, _inspect.inspect)(\n argType,\n )}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && (0, _definition.isNonNullType)(argType)) {\n throw new _GraphQLError.GraphQLError(\n `Argument \"${name}\" of non-null type \"${(0, _inspect.inspect)(\n argType,\n )}\" ` + 'must not be null.',\n {\n nodes: valueNode,\n },\n );\n }\n\n const coercedValue = (0, _valueFromAST.valueFromAST)(\n valueNode,\n argType,\n variableValues,\n );\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new _GraphQLError.GraphQLError(\n `Argument \"${name}\" has invalid value ${(0, _printer.print)(\n valueNode,\n )}.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n var _node$directives;\n\n const directiveNode =\n (_node$directives = node.directives) === null || _node$directives === void 0\n ? void 0\n : _node$directives.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.collectFields = collectFields;\nexports.collectSubfields = collectSubfields;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _typeFromAST = require('../utilities/typeFromAST.js');\n\nvar _values = require('./values.js');\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\nfunction collectFields(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n) {\n const fields = new Map();\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n new Set(),\n );\n return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectSubfields(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldNodes,\n) {\n const subFieldNodes = new Map();\n const visitedFragmentNames = new Set();\n\n for (const node of fieldNodes) {\n if (node.selectionSet) {\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n returnType,\n node.selectionSet,\n subFieldNodes,\n visitedFragmentNames,\n );\n }\n }\n\n return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n visitedFragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case _kinds.Kind.FIELD: {\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n\n const name = getFieldEntryKey(selection);\n const fieldList = fields.get(name);\n\n if (fieldList !== undefined) {\n fieldList.push(selection);\n } else {\n fields.set(name, [selection]);\n }\n\n break;\n }\n\n case _kinds.Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(variableValues, selection) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selection.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n\n case _kinds.Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n visitedFragmentNames.has(fragName) ||\n !shouldIncludeNode(variableValues, selection)\n ) {\n continue;\n }\n\n visitedFragmentNames.add(fragName);\n const fragment = fragments[fragName];\n\n if (\n !fragment ||\n !doesFragmentConditionMatch(schema, fragment, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n fragment.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n }\n }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n const skip = (0, _values.getDirectiveValues)(\n _directives.GraphQLSkipDirective,\n node,\n variableValues,\n );\n\n if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n return false;\n }\n\n const include = (0, _values.getDirectiveValues)(\n _directives.GraphQLIncludeDirective,\n node,\n variableValues,\n );\n\n if (\n (include === null || include === void 0 ? void 0 : include.if) === false\n ) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n const typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n const conditionalType = (0, _typeFromAST.typeFromAST)(\n schema,\n typeConditionNode,\n );\n\n if (conditionalType === type) {\n return true;\n }\n\n if ((0, _definition.isAbstractType)(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.SingleFieldSubscriptionsRule = SingleFieldSubscriptionsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _collectFields = require('../../execution/collectFields.js');\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nfunction SingleFieldSubscriptionsRule(context) {\n return {\n OperationDefinition(node) {\n if (node.operation === 'subscription') {\n const schema = context.getSchema();\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n const operationName = node.name ? node.name.value : null;\n const variableValues = Object.create(null);\n const document = context.getDocument();\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n if (definition.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n fragments[definition.name.value] = definition;\n }\n }\n\n const fields = (0, _collectFields.collectFields)(\n schema,\n fragments,\n variableValues,\n subscriptionType,\n node.selectionSet,\n );\n\n if (fields.size > 1) {\n const fieldSelectionLists = [...fields.values()];\n const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n const extraFieldSelections = extraFieldSelectionLists.flat();\n context.reportError(\n new _GraphQLError.GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must select only one top level field.`\n : 'Anonymous Subscription must select only one top level field.',\n {\n nodes: extraFieldSelections,\n },\n ),\n );\n }\n\n for (const fieldNodes of fields.values()) {\n const field = fieldNodes[0];\n const fieldName = field.name.value;\n\n if (fieldName.startsWith('__')) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n : 'Anonymous Subscription must not select an introspection top level field.',\n {\n nodes: fieldNodes,\n },\n ),\n );\n }\n }\n }\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.groupBy = groupBy;\n\n/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nfunction groupBy(list, keyFn) {\n const result = new Map();\n\n for (const item of list) {\n const key = keyFn(item);\n const group = result.get(key);\n\n if (group === undefined) {\n result.set(key, [item]);\n } else {\n group.push(item);\n }\n }\n\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueArgumentDefinitionNamesRule = UniqueArgumentDefinitionNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nfunction UniqueArgumentDefinitionNamesRule(context) {\n return {\n DirectiveDefinition(directiveNode) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n },\n\n InterfaceTypeDefinition: checkArgUniquenessPerField,\n InterfaceTypeExtension: checkArgUniquenessPerField,\n ObjectTypeDefinition: checkArgUniquenessPerField,\n ObjectTypeExtension: checkArgUniquenessPerField,\n };\n\n function checkArgUniquenessPerField(typeNode) {\n var _typeNode$fields;\n\n const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_typeNode$fields = typeNode.fields) !== null &&\n _typeNode$fields !== void 0\n ? _typeNode$fields\n : [];\n\n for (const fieldDef of fieldNodes) {\n var _fieldDef$arguments;\n\n const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_fieldDef$arguments = fieldDef.arguments) !== null &&\n _fieldDef$arguments !== void 0\n ? _fieldDef$arguments\n : [];\n checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n }\n\n return false;\n }\n\n function checkArgUniqueness(parentName, argumentNodes) {\n const seenArgs = (0, _groupBy.groupBy)(\n argumentNodes,\n (arg) => arg.name.value,\n );\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n\n return false;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueArgumentNamesRule = UniqueArgumentNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nfunction UniqueArgumentNamesRule(context) {\n return {\n Field: checkArgUniqueness,\n Directive: checkArgUniqueness,\n };\n\n function checkArgUniqueness(parentNode) {\n var _parentNode$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_parentNode$arguments = parentNode.arguments) !== null &&\n _parentNode$arguments !== void 0\n ? _parentNode$arguments\n : [];\n const seenArgs = (0, _groupBy.groupBy)(\n argumentNodes,\n (arg) => arg.name.value,\n );\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one argument named \"${argName}\".`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueDirectiveNamesRule = UniqueDirectiveNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n const knownDirectiveNames = Object.create(null);\n const schema = context.getSchema();\n return {\n DirectiveDefinition(node) {\n const directiveName = node.name.value;\n\n if (\n schema !== null &&\n schema !== void 0 &&\n schema.getDirective(directiveName)\n ) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one directive named \"@${directiveName}\".`,\n {\n nodes: [knownDirectiveNames[directiveName], node.name],\n },\n ),\n );\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueDirectivesPerLocationRule = UniqueDirectivesPerLocationRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n const uniqueDirectiveMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : _directives.specifiedDirectives;\n\n for (const directive of definedDirectives) {\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n const schemaDirectives = Object.create(null);\n const typeDirectivesMap = Object.create(null);\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter(node) {\n if (!('directives' in node) || !node.directives) {\n return;\n }\n\n let seenDirectives;\n\n if (\n node.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n node.kind === _kinds.Kind.SCHEMA_EXTENSION\n ) {\n seenDirectives = schemaDirectives;\n } else if (\n (0, _predicates.isTypeDefinitionNode)(node) ||\n (0, _predicates.isTypeExtensionNode)(node)\n ) {\n const typeName = node.name.value;\n seenDirectives = typeDirectivesMap[typeName];\n\n if (seenDirectives === undefined) {\n typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n }\n } else {\n seenDirectives = Object.create(null);\n }\n\n for (const directive of node.directives) {\n const directiveName = directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (seenDirectives[directiveName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `The directive \"@${directiveName}\" can only be used once at this location.`,\n {\n nodes: [seenDirectives[directiveName], directive],\n },\n ),\n );\n } else {\n seenDirectives[directiveName] = directive;\n }\n }\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueEnumValueNamesRule = UniqueEnumValueNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness,\n };\n\n function checkValueUniqueness(node) {\n var _node$values;\n\n const typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const valueNodes =\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n const valueNames = knownValueNames[typeName];\n\n for (const valueDef of valueNodes) {\n const valueName = valueDef.name.value;\n const existingType = existingTypeMap[typeName];\n\n if (\n (0, _definition.isEnumType)(existingType) &&\n existingType.getValue(valueName)\n ) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: valueDef.name,\n },\n ),\n );\n } else if (valueNames[valueName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n {\n nodes: [valueNames[valueName], valueDef.name],\n },\n ),\n );\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n\n return false;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueFieldDefinitionNamesRule = UniqueFieldDefinitionNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness,\n };\n\n function checkFieldUniqueness(node) {\n var _node$fields;\n\n const typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n const fieldNames = knownFieldNames[typeName];\n\n for (const fieldDef of fieldNodes) {\n const fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: fieldDef.name,\n },\n ),\n );\n } else if (fieldNames[fieldName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n {\n nodes: [fieldNames[fieldName], fieldDef.name],\n },\n ),\n );\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (\n (0, _definition.isObjectType)(type) ||\n (0, _definition.isInterfaceType)(type) ||\n (0, _definition.isInputObjectType)(type)\n ) {\n return type.getFields()[fieldName] != null;\n }\n\n return false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueFragmentNamesRule = UniqueFragmentNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nfunction UniqueFragmentNamesRule(context) {\n const knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n const fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one fragment named \"${fragmentName}\".`,\n {\n nodes: [knownFragmentNames[fragmentName], node.name],\n },\n ),\n );\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueInputFieldNamesRule = UniqueInputFieldNamesRule;\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nfunction UniqueInputFieldNamesRule(context) {\n const knownNameStack = [];\n let knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n\n leave() {\n const prevKnownNames = knownNameStack.pop();\n prevKnownNames || (0, _invariant.invariant)(false);\n knownNames = prevKnownNames;\n },\n },\n\n ObjectField(node) {\n const fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one input field named \"${fieldName}\".`,\n {\n nodes: [knownNames[fieldName], node.name],\n },\n ),\n );\n } else {\n knownNames[fieldName] = node.name;\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueOperationNamesRule = UniqueOperationNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nfunction UniqueOperationNamesRule(context) {\n const knownOperationNames = Object.create(null);\n return {\n OperationDefinition(node) {\n const operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one operation named \"${operationName.value}\".`,\n {\n nodes: [\n knownOperationNames[operationName.value],\n operationName,\n ],\n },\n ),\n );\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n\n FragmentDefinition: () => false,\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueOperationTypesRule = UniqueOperationTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n const schema = context.getSchema();\n const definedOperationTypes = Object.create(null);\n const existingOperationTypes = schema\n ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType(),\n }\n : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes,\n };\n\n function checkOperationTypes(node) {\n var _node$operationTypes;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const operationTypesNodes =\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n const operation = operationType.operation;\n const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n {\n nodes: operationType,\n },\n ),\n );\n } else if (alreadyDefinedOperationType) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one ${operation} type in schema.`,\n {\n nodes: [alreadyDefinedOperationType, operationType],\n },\n ),\n );\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n\n return false;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueTypeNamesRule = UniqueTypeNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n const knownTypeNames = Object.create(null);\n const schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName,\n };\n\n function checkTypeName(node) {\n const typeName = node.name.value;\n\n if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one type named \"${typeName}\".`,\n {\n nodes: [knownTypeNames[typeName], node.name],\n },\n ),\n );\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.UniqueVariableNamesRule = UniqueVariableNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n return {\n OperationDefinition(operationNode) {\n var _operationNode$variab;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const variableDefinitions =\n (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n _operationNode$variab !== void 0\n ? _operationNode$variab\n : [];\n const seenVariableDefinitions = (0, _groupBy.groupBy)(\n variableDefinitions,\n (node) => node.variable.name.value,\n );\n\n for (const [variableName, variableNodes] of seenVariableDefinitions) {\n if (variableNodes.length > 1) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `There can be only one variable named \"$${variableName}\".`,\n {\n nodes: variableNodes.map((node) => node.variable.name),\n },\n ),\n );\n }\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.ValuesOfCorrectTypeRule = ValuesOfCorrectTypeRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _keyMap = require('../../jsutils/keyMap.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nfunction ValuesOfCorrectTypeRule(context) {\n return {\n ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n const type = (0, _definition.getNullableType)(\n context.getParentInputType(),\n );\n\n if (!(0, _definition.isListType)(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n }\n },\n\n ObjectValue(node) {\n const type = (0, _definition.getNamedType)(context.getInputType());\n\n if (!(0, _definition.isInputObjectType)(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n const fieldNodeMap = (0, _keyMap.keyMap)(\n node.fields,\n (field) => field.name.value,\n );\n\n for (const fieldDef of Object.values(type.getFields())) {\n const fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && (0, _definition.isRequiredInputField)(fieldDef)) {\n const typeStr = (0, _inspect.inspect)(fieldDef.type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n ObjectField(node) {\n const parentType = (0, _definition.getNamedType)(\n context.getParentInputType(),\n );\n const fieldType = context.getInputType();\n\n if (!fieldType && (0, _definition.isInputObjectType)(parentType)) {\n const suggestions = (0, _suggestionList.suggestionList)(\n node.name.value,\n Object.keys(parentType.getFields()),\n );\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n (0, _didYouMean.didYouMean)(suggestions),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n NullValue(node) {\n const type = context.getInputType();\n\n if ((0, _definition.isNonNullType)(type)) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Expected value of type \"${(0, _inspect.inspect)(\n type,\n )}\", found ${(0, _printer.print)(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n EnumValue: (node) => isValidValueNode(context, node),\n IntValue: (node) => isValidValueNode(context, node),\n FloatValue: (node) => isValidValueNode(context, node),\n StringValue: (node) => isValidValueNode(context, node),\n BooleanValue: (node) => isValidValueNode(context, node),\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n // Report any error at the full type expected by the location.\n const locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n const type = (0, _definition.getNamedType)(locationType);\n\n if (!(0, _definition.isLeafType)(type)) {\n const typeStr = (0, _inspect.inspect)(locationType);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n node,\n )}.`,\n {\n nodes: node,\n },\n ),\n );\n return;\n } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n // which may throw or return an invalid value to indicate failure.\n\n try {\n const parseResult = type.parseLiteral(\n node,\n undefined,\n /* variables */\n );\n\n if (parseResult === undefined) {\n const typeStr = (0, _inspect.inspect)(locationType);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n node,\n )}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n } catch (error) {\n const typeStr = (0, _inspect.inspect)(locationType);\n\n if (error instanceof _GraphQLError.GraphQLError) {\n context.reportError(error);\n } else {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n node,\n )}; ` + error.message,\n {\n nodes: node,\n originalError: error,\n },\n ),\n );\n }\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.VariablesAreInputTypesRule = VariablesAreInputTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nfunction VariablesAreInputTypesRule(context) {\n return {\n VariableDefinition(node) {\n const type = (0, _typeFromAST.typeFromAST)(\n context.getSchema(),\n node.type,\n );\n\n if (type !== undefined && !(0, _definition.isInputType)(type)) {\n const variableName = node.variable.name.value;\n const typeName = (0, _printer.print)(node.type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n {\n nodes: node.type,\n },\n ),\n );\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.VariablesInAllowedPositionRule = VariablesInAllowedPositionRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeComparators = require('../../utilities/typeComparators.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nfunction VariablesInAllowedPositionRule(context) {\n let varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n varDefMap = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node, type, defaultValue } of usages) {\n const varName = node.name.value;\n const varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n const schema = context.getSchema();\n const varType = (0, _typeFromAST.typeFromAST)(schema, varDef.type);\n\n if (\n varType &&\n !allowedVariableUsage(\n schema,\n varType,\n varDef.defaultValue,\n type,\n defaultValue,\n )\n ) {\n const varTypeStr = (0, _inspect.inspect)(varType);\n const typeStr = (0, _inspect.inspect)(type);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n {\n nodes: [varDef, node],\n },\n ),\n );\n }\n }\n }\n },\n },\n\n VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n },\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n schema,\n varType,\n varDefaultValue,\n locationType,\n locationDefaultValue,\n) {\n if (\n (0, _definition.isNonNullType)(locationType) &&\n !(0, _definition.isNonNullType)(varType)\n ) {\n const hasNonNullVariableDefaultValue =\n varDefaultValue != null && varDefaultValue.kind !== _kinds.Kind.NULL;\n const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n const nullableLocationType = locationType.ofType;\n return (0, _typeComparators.isTypeSubTypeOf)(\n schema,\n varType,\n nullableLocationType,\n );\n }\n\n return (0, _typeComparators.isTypeSubTypeOf)(schema, varType, locationType);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.specifiedSDLRules = exports.specifiedRules = void 0;\n\nvar _ExecutableDefinitionsRule = require('./rules/ExecutableDefinitionsRule.js');\n\nvar _FieldsOnCorrectTypeRule = require('./rules/FieldsOnCorrectTypeRule.js');\n\nvar _FragmentsOnCompositeTypesRule = require('./rules/FragmentsOnCompositeTypesRule.js');\n\nvar _KnownArgumentNamesRule = require('./rules/KnownArgumentNamesRule.js');\n\nvar _KnownDirectivesRule = require('./rules/KnownDirectivesRule.js');\n\nvar _KnownFragmentNamesRule = require('./rules/KnownFragmentNamesRule.js');\n\nvar _KnownTypeNamesRule = require('./rules/KnownTypeNamesRule.js');\n\nvar _LoneAnonymousOperationRule = require('./rules/LoneAnonymousOperationRule.js');\n\nvar _LoneSchemaDefinitionRule = require('./rules/LoneSchemaDefinitionRule.js');\n\nvar _NoFragmentCyclesRule = require('./rules/NoFragmentCyclesRule.js');\n\nvar _NoUndefinedVariablesRule = require('./rules/NoUndefinedVariablesRule.js');\n\nvar _NoUnusedFragmentsRule = require('./rules/NoUnusedFragmentsRule.js');\n\nvar _NoUnusedVariablesRule = require('./rules/NoUnusedVariablesRule.js');\n\nvar _OverlappingFieldsCanBeMergedRule = require('./rules/OverlappingFieldsCanBeMergedRule.js');\n\nvar _PossibleFragmentSpreadsRule = require('./rules/PossibleFragmentSpreadsRule.js');\n\nvar _PossibleTypeExtensionsRule = require('./rules/PossibleTypeExtensionsRule.js');\n\nvar _ProvidedRequiredArgumentsRule = require('./rules/ProvidedRequiredArgumentsRule.js');\n\nvar _ScalarLeafsRule = require('./rules/ScalarLeafsRule.js');\n\nvar _SingleFieldSubscriptionsRule = require('./rules/SingleFieldSubscriptionsRule.js');\n\nvar _UniqueArgumentDefinitionNamesRule = require('./rules/UniqueArgumentDefinitionNamesRule.js');\n\nvar _UniqueArgumentNamesRule = require('./rules/UniqueArgumentNamesRule.js');\n\nvar _UniqueDirectiveNamesRule = require('./rules/UniqueDirectiveNamesRule.js');\n\nvar _UniqueDirectivesPerLocationRule = require('./rules/UniqueDirectivesPerLocationRule.js');\n\nvar _UniqueEnumValueNamesRule = require('./rules/UniqueEnumValueNamesRule.js');\n\nvar _UniqueFieldDefinitionNamesRule = require('./rules/UniqueFieldDefinitionNamesRule.js');\n\nvar _UniqueFragmentNamesRule = require('./rules/UniqueFragmentNamesRule.js');\n\nvar _UniqueInputFieldNamesRule = require('./rules/UniqueInputFieldNamesRule.js');\n\nvar _UniqueOperationNamesRule = require('./rules/UniqueOperationNamesRule.js');\n\nvar _UniqueOperationTypesRule = require('./rules/UniqueOperationTypesRule.js');\n\nvar _UniqueTypeNamesRule = require('./rules/UniqueTypeNamesRule.js');\n\nvar _UniqueVariableNamesRule = require('./rules/UniqueVariableNamesRule.js');\n\nvar _ValuesOfCorrectTypeRule = require('./rules/ValuesOfCorrectTypeRule.js');\n\nvar _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js');\n\nvar _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');\n\n// Spec Section: \"Executable Definitions\"\n// Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n// Spec Section: \"Fragments on Composite Types\"\n// Spec Section: \"Argument Names\"\n// Spec Section: \"Directives Are Defined\"\n// Spec Section: \"Fragment spread target defined\"\n// Spec Section: \"Fragment Spread Type Existence\"\n// Spec Section: \"Lone Anonymous Operation\"\n// SDL-specific validation rules\n// Spec Section: \"Fragments must not form cycles\"\n// Spec Section: \"All Variable Used Defined\"\n// Spec Section: \"Fragments must be used\"\n// Spec Section: \"All Variables Used\"\n// Spec Section: \"Field Selection Merging\"\n// Spec Section: \"Fragment spread is possible\"\n// Spec Section: \"Argument Optionality\"\n// Spec Section: \"Leaf Field Selections\"\n// Spec Section: \"Subscriptions with Single Root Field\"\n// Spec Section: \"Argument Uniqueness\"\n// Spec Section: \"Directives Are Unique Per Location\"\n// Spec Section: \"Fragment Name Uniqueness\"\n// Spec Section: \"Input Object Field Uniqueness\"\n// Spec Section: \"Operation Name Uniqueness\"\n// Spec Section: \"Variable Uniqueness\"\n// Spec Section: \"Value Type Correctness\"\n// Spec Section: \"Variables are Input Types\"\n// Spec Section: \"All Variable Usages Are Allowed\"\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\nconst specifiedRules = Object.freeze([\n _ExecutableDefinitionsRule.ExecutableDefinitionsRule,\n _UniqueOperationNamesRule.UniqueOperationNamesRule,\n _LoneAnonymousOperationRule.LoneAnonymousOperationRule,\n _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule,\n _KnownTypeNamesRule.KnownTypeNamesRule,\n _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule,\n _VariablesAreInputTypesRule.VariablesAreInputTypesRule,\n _ScalarLeafsRule.ScalarLeafsRule,\n _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule,\n _UniqueFragmentNamesRule.UniqueFragmentNamesRule,\n _KnownFragmentNamesRule.KnownFragmentNamesRule,\n _NoUnusedFragmentsRule.NoUnusedFragmentsRule,\n _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule,\n _NoFragmentCyclesRule.NoFragmentCyclesRule,\n _UniqueVariableNamesRule.UniqueVariableNamesRule,\n _NoUndefinedVariablesRule.NoUndefinedVariablesRule,\n _NoUnusedVariablesRule.NoUnusedVariablesRule,\n _KnownDirectivesRule.KnownDirectivesRule,\n _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule,\n _KnownArgumentNamesRule.KnownArgumentNamesRule,\n _UniqueArgumentNamesRule.UniqueArgumentNamesRule,\n _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule,\n _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule,\n _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule,\n _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule,\n _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,\n]);\n/**\n * @internal\n */\n\nexports.specifiedRules = specifiedRules;\nconst specifiedSDLRules = Object.freeze([\n _LoneSchemaDefinitionRule.LoneSchemaDefinitionRule,\n _UniqueOperationTypesRule.UniqueOperationTypesRule,\n _UniqueTypeNamesRule.UniqueTypeNamesRule,\n _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule,\n _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule,\n _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule,\n _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule,\n _KnownTypeNamesRule.KnownTypeNamesRule,\n _KnownDirectivesRule.KnownDirectivesRule,\n _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule,\n _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule,\n _KnownArgumentNamesRule.KnownArgumentNamesOnDirectivesRule,\n _UniqueArgumentNamesRule.UniqueArgumentNamesRule,\n _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,\n _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsOnDirectivesRule,\n]);\nexports.specifiedSDLRules = specifiedSDLRules;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.ValidationContext =\n exports.SDLValidationContext =\n exports.ASTValidationContext =\n void 0;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _TypeInfo = require('../utilities/TypeInfo.js');\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nclass ASTValidationContext {\n constructor(ast, onError) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag]() {\n return 'ASTValidationContext';\n }\n\n reportError(error) {\n this._onError(error);\n }\n\n getDocument() {\n return this._ast;\n }\n\n getFragment(name) {\n let fragments;\n\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n\n this._fragments = fragments;\n }\n\n return fragments[name];\n }\n\n getFragmentSpreads(node) {\n let spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n const setsToVisit = [node];\n let set;\n\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === _kinds.Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n }\n\n getRecursivelyReferencedFragments(operation) {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit = [operation.selectionSet];\n let node;\n\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n }\n}\n\nexports.ASTValidationContext = ASTValidationContext;\n\nclass SDLValidationContext extends ASTValidationContext {\n constructor(ast, schema, onError) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get [Symbol.toStringTag]() {\n return 'SDLValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n}\n\nexports.SDLValidationContext = SDLValidationContext;\n\nclass ValidationContext extends ASTValidationContext {\n constructor(schema, ast, typeInfo, onError) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n }\n\n get [Symbol.toStringTag]() {\n return 'ValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n\n getVariableUsages(node) {\n let usages = this._variableUsages.get(node);\n\n if (!usages) {\n const newUsages = [];\n const typeInfo = new _TypeInfo.TypeInfo(this._schema);\n (0, _visitor.visit)(\n node,\n (0, _TypeInfo.visitWithTypeInfo)(typeInfo, {\n VariableDefinition: () => false,\n\n Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n });\n },\n }),\n );\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n }\n\n getRecursiveVariableUsages(operation) {\n let usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n }\n\n getType() {\n return this._typeInfo.getType();\n }\n\n getParentType() {\n return this._typeInfo.getParentType();\n }\n\n getInputType() {\n return this._typeInfo.getInputType();\n }\n\n getParentInputType() {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef() {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective() {\n return this._typeInfo.getDirective();\n }\n\n getArgument() {\n return this._typeInfo.getArgument();\n }\n\n getEnumValue() {\n return this._typeInfo.getEnumValue();\n }\n}\n\nexports.ValidationContext = ValidationContext;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.assertValidSDL = assertValidSDL;\nexports.assertValidSDLExtension = assertValidSDLExtension;\nexports.validate = validate;\nexports.validateSDL = validateSDL;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _validate = require('../type/validate.js');\n\nvar _TypeInfo = require('../utilities/TypeInfo.js');\n\nvar _specifiedRules = require('./specifiedRules.js');\n\nvar _ValidationContext = require('./ValidationContext.js');\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\nfunction validate(\n schema,\n documentAST,\n rules = _specifiedRules.specifiedRules,\n options,\n /** @deprecated will be removed in 17.0.0 */\n typeInfo = new _TypeInfo.TypeInfo(schema),\n) {\n var _options$maxErrors;\n\n const maxErrors =\n (_options$maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors) !==\n null && _options$maxErrors !== void 0\n ? _options$maxErrors\n : 100;\n documentAST || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n (0, _validate.assertValidSchema)(schema);\n const abortObj = Object.freeze({});\n const errors = [];\n const context = new _ValidationContext.ValidationContext(\n schema,\n documentAST,\n typeInfo,\n (error) => {\n if (errors.length >= maxErrors) {\n errors.push(\n new _GraphQLError.GraphQLError(\n 'Too many validation errors, error limit reached. Validation aborted.',\n ),\n ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n throw abortObj;\n }\n\n errors.push(error);\n },\n ); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n const visitor = (0, _visitor.visitInParallel)(\n rules.map((rule) => rule(context)),\n ); // Visit the whole document with each instance of all provided rules.\n\n try {\n (0, _visitor.visit)(\n documentAST,\n (0, _TypeInfo.visitWithTypeInfo)(typeInfo, visitor),\n );\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(\n documentAST,\n schemaToExtend,\n rules = _specifiedRules.specifiedSDLRules,\n) {\n const errors = [];\n const context = new _ValidationContext.SDLValidationContext(\n documentAST,\n schemaToExtend,\n (error) => {\n errors.push(error);\n },\n );\n const visitors = rules.map((rule) => rule(context));\n (0, _visitor.visit)(documentAST, (0, _visitor.visitInParallel)(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n const errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDLExtension(documentAST, schema) {\n const errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.memoize3 = memoize3;\n\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n let cache0;\n return function memoized(a1, a2, a3) {\n if (cache0 === undefined) {\n cache0 = new WeakMap();\n }\n\n let cache1 = cache0.get(a1);\n\n if (cache1 === undefined) {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n let cache2 = cache1.get(a2);\n\n if (cache2 === undefined) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n let fnResult = cache2.get(a3);\n\n if (fnResult === undefined) {\n fnResult = fn(a1, a2, a3);\n cache2.set(a3, fnResult);\n }\n\n return fnResult;\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.promiseForObject = promiseForObject;\n\n/**\n * This function transforms a JS object `ObjMap>` into\n * a `Promise>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n return Promise.all(Object.values(object)).then((resolvedValues) => {\n const resolvedObject = Object.create(null);\n\n for (const [i, key] of Object.keys(object).entries()) {\n resolvedObject[key] = resolvedValues[i];\n }\n\n return resolvedObject;\n });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.promiseReduce = promiseReduce;\n\nvar _isPromise = require('./isPromise.js');\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nfunction promiseReduce(values, callbackFn, initialValue) {\n let accumulator = initialValue;\n\n for (const value of values) {\n accumulator = (0, _isPromise.isPromise)(accumulator)\n ? accumulator.then((resolved) => callbackFn(resolved, value))\n : callbackFn(accumulator, value);\n }\n\n return accumulator;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.toError = toError;\n\nvar _inspect = require('./inspect.js');\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\nfunction toError(thrownValue) {\n return thrownValue instanceof Error\n ? thrownValue\n : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n constructor(thrownValue) {\n super('Unexpected error value: ' + (0, _inspect.inspect)(thrownValue));\n this.name = 'NonErrorThrown';\n this.thrownValue = thrownValue;\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.locatedError = locatedError;\n\nvar _toError = require('../jsutils/toError.js');\n\nvar _GraphQLError = require('./GraphQLError.js');\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\nfunction locatedError(rawOriginalError, nodes, path) {\n var _nodes;\n\n const originalError = (0, _toError.toError)(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n if (isLocatedGraphQLError(originalError)) {\n return originalError;\n }\n\n return new _GraphQLError.GraphQLError(originalError.message, {\n nodes:\n (_nodes = originalError.nodes) !== null && _nodes !== void 0\n ? _nodes\n : nodes,\n source: originalError.source,\n positions: originalError.positions,\n path,\n originalError,\n });\n}\n\nfunction isLocatedGraphQLError(error) {\n return Array.isArray(error.path);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.assertValidExecutionArguments = assertValidExecutionArguments;\nexports.buildExecutionContext = buildExecutionContext;\nexports.buildResolveInfo = buildResolveInfo;\nexports.defaultTypeResolver = exports.defaultFieldResolver = void 0;\nexports.execute = execute;\nexports.executeSync = executeSync;\nexports.getFieldDef = getFieldDef;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _isPromise = require('../jsutils/isPromise.js');\n\nvar _memoize = require('../jsutils/memoize3.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _promiseForObject = require('../jsutils/promiseForObject.js');\n\nvar _promiseReduce = require('../jsutils/promiseReduce.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _locatedError = require('../error/locatedError.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _validate = require('../type/validate.js');\n\nvar _collectFields = require('./collectFields.js');\n\nvar _values = require('./values.js');\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\nconst collectSubfields = (0, _memoize.memoize3)(\n (exeContext, returnType, fieldNodes) =>\n (0, _collectFields.collectSubfields)(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n returnType,\n fieldNodes,\n ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nfunction execute(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n (0, _devAssert.devAssert)(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n //\n // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n\n try {\n const { operation } = exeContext;\n const result = executeOperation(exeContext, operation, rootValue);\n\n if ((0, _isPromise.isPromise)(result)) {\n return result.then(\n (data) => buildResponse(data, exeContext.errors),\n (error) => {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n },\n );\n }\n\n return buildResponse(result, exeContext.errors);\n } catch (error) {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction executeSync(args) {\n const result = execute(args); // Assert that the execution was synchronous.\n\n if ((0, _isPromise.isPromise)(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n return errors.length === 0\n ? {\n data,\n }\n : {\n errors,\n data,\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nfunction assertValidExecutionArguments(schema, document, rawVariableValues) {\n document || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n (0, _validate.assertValidSchema)(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null ||\n (0, _isObjectLike.isObjectLike)(rawVariableValues) ||\n (0, _devAssert.devAssert)(\n false,\n 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(args) {\n var _definition$name, _operation$variableDe;\n\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues: rawVariableValues,\n operationName,\n fieldResolver,\n typeResolver,\n subscribeFieldResolver,\n } = args;\n let operation;\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case _kinds.Kind.OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [\n new _GraphQLError.GraphQLError(\n 'Must provide operation name if query contains multiple operations.',\n ),\n ];\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n operation = definition;\n }\n\n break;\n\n case _kinds.Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n\n default: // ignore non-executable definitions\n }\n }\n\n if (!operation) {\n if (operationName != null) {\n return [\n new _GraphQLError.GraphQLError(\n `Unknown operation named \"${operationName}\".`,\n ),\n ];\n }\n\n return [new _GraphQLError.GraphQLError('Must provide an operation.')];\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const variableDefinitions =\n (_operation$variableDe = operation.variableDefinitions) !== null &&\n _operation$variableDe !== void 0\n ? _operation$variableDe\n : [];\n const coercedVariableValues = (0, _values.getVariableValues)(\n schema,\n variableDefinitions,\n rawVariableValues !== null && rawVariableValues !== void 0\n ? rawVariableValues\n : {},\n {\n maxErrors: 50,\n },\n );\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema,\n fragments,\n rootValue,\n contextValue,\n operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver:\n fieldResolver !== null && fieldResolver !== void 0\n ? fieldResolver\n : defaultFieldResolver,\n typeResolver:\n typeResolver !== null && typeResolver !== void 0\n ? typeResolver\n : defaultTypeResolver,\n subscribeFieldResolver:\n subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n ? subscribeFieldResolver\n : defaultFieldResolver,\n errors: [],\n };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n const rootType = exeContext.schema.getRootType(operation.operation);\n\n if (rootType == null) {\n throw new _GraphQLError.GraphQLError(\n `Schema is not configured to execute ${operation.operation} operation.`,\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = (0, _collectFields.collectFields)(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n rootType,\n operation.selectionSet,\n );\n const path = undefined;\n\n switch (operation.operation) {\n case _ast.OperationTypeNode.QUERY:\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n case _ast.OperationTypeNode.MUTATION:\n return executeFieldsSerially(\n exeContext,\n rootType,\n rootValue,\n path,\n rootFields,\n );\n\n case _ast.OperationTypeNode.SUBSCRIPTION:\n // TODO: deprecate `subscribe` and move all logic here\n // Temporary solution until we finish merging execute and subscribe together\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n exeContext,\n parentType,\n sourceValue,\n path,\n fields,\n) {\n return (0, _promiseReduce.promiseReduce)(\n fields.entries(),\n (results, [responseName, fieldNodes]) => {\n const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result === undefined) {\n return results;\n }\n\n if ((0, _isPromise.isPromise)(result)) {\n return result.then((resolvedResult) => {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n const results = Object.create(null);\n let containsPromise = false;\n\n for (const [responseName, fieldNodes] of fields.entries()) {\n const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if ((0, _isPromise.isPromise)(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n return (0, _promiseForObject.promiseForObject)(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n var _fieldDef$resolve;\n\n const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn =\n (_fieldDef$resolve = fieldDef.resolve) !== null &&\n _fieldDef$resolve !== void 0\n ? _fieldDef$resolve\n : exeContext.fieldResolver;\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = (0, _values.getArgumentValues)(\n fieldDef,\n fieldNodes[0],\n exeContext.variableValues,\n ); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue;\n const result = resolveFn(source, args, contextValue, info);\n let completed;\n\n if ((0, _isPromise.isPromise)(result)) {\n completed = result.then((resolved) =>\n completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n );\n } else {\n completed = completeValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n\n if ((0, _isPromise.isPromise)(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError) => {\n const error = (0, _locatedError.locatedError)(\n rawError,\n fieldNodes,\n (0, _Path.pathToArray)(path),\n );\n return handleFieldError(error, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (rawError) {\n const error = (0, _locatedError.locatedError)(\n rawError,\n fieldNodes,\n (0, _Path.pathToArray)(path),\n );\n return handleFieldError(error, returnType, exeContext);\n }\n}\n/**\n * @internal\n */\n\nfunction buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes,\n returnType: fieldDef.type,\n parentType,\n path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues,\n };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if ((0, _definition.isNonNullType)(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n if ((0, _definition.isNonNullType)(returnType)) {\n const completed = completeValue(\n exeContext,\n returnType.ofType,\n fieldNodes,\n info,\n path,\n result,\n );\n\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n );\n }\n\n return completed;\n } // If result value is null or undefined then return null.\n\n if (result == null) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n if ((0, _definition.isListType)(returnType)) {\n return completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n if ((0, _definition.isLeafType)(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n if ((0, _definition.isAbstractType)(returnType)) {\n return completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is Object, execute and complete all sub-selections.\n\n if ((0, _definition.isObjectType)(returnType)) {\n return completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n /* c8 ignore next 6 */\n // Not reachable, all possible output types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Cannot complete value of unexpected output type: ' +\n (0, _inspect.inspect)(returnType),\n );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n if (!(0, _isIterableObject.isIterableObject)(result)) {\n throw new _GraphQLError.GraphQLError(\n `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n );\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n const itemType = returnType.ofType;\n let containsPromise = false;\n const completedResults = Array.from(result, (item, index) => {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = (0, _Path.addPath)(path, index, undefined);\n\n try {\n let completedItem;\n\n if ((0, _isPromise.isPromise)(item)) {\n completedItem = item.then((resolved) =>\n completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n resolved,\n ),\n );\n } else {\n completedItem = completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n item,\n );\n }\n\n if ((0, _isPromise.isPromise)(completedItem)) {\n containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n\n return completedItem.then(undefined, (rawError) => {\n const error = (0, _locatedError.locatedError)(\n rawError,\n fieldNodes,\n (0, _Path.pathToArray)(itemPath),\n );\n return handleFieldError(error, itemType, exeContext);\n });\n }\n\n return completedItem;\n } catch (rawError) {\n const error = (0, _locatedError.locatedError)(\n rawError,\n fieldNodes,\n (0, _Path.pathToArray)(itemPath),\n );\n return handleFieldError(error, itemType, exeContext);\n }\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n const serializedResult = returnType.serialize(result);\n\n if (serializedResult == null) {\n throw new Error(\n `Expected \\`${(0, _inspect.inspect)(returnType)}.serialize(${(0,\n _inspect.inspect)(result)})\\` to ` +\n `return non-nullable value, returned: ${(0, _inspect.inspect)(\n serializedResult,\n )}`,\n );\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n var _returnType$resolveTy;\n\n const resolveTypeFn =\n (_returnType$resolveTy = returnType.resolveType) !== null &&\n _returnType$resolveTy !== void 0\n ? _returnType$resolveTy\n : exeContext.typeResolver;\n const contextValue = exeContext.contextValue;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if ((0, _isPromise.isPromise)(runtimeType)) {\n return runtimeType.then((resolvedRuntimeType) =>\n completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n resolvedRuntimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n ),\n );\n }\n\n return completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n runtimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n );\n}\n\nfunction ensureValidRuntimeType(\n runtimeTypeName,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n) {\n if (runtimeTypeName == null) {\n throw new _GraphQLError.GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n fieldNodes,\n );\n } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n // TODO: remove in 17.0.0 release\n\n if ((0, _definition.isObjectType)(runtimeTypeName)) {\n throw new _GraphQLError.GraphQLError(\n 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new _GraphQLError.GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n `value ${(0, _inspect.inspect)(result)}, received \"${(0,\n _inspect.inspect)(runtimeTypeName)}\".`,\n );\n }\n\n const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n if (runtimeType == null) {\n throw new _GraphQLError.GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!(0, _definition.isObjectType)(runtimeType)) {\n throw new _GraphQLError.GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw new _GraphQLError.GraphQLError(\n `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n // Collect sub-fields to execute to complete this value.\n const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if ((0, _isPromise.isPromise)(isTypeOf)) {\n return isTypeOf.then((resolvedIsTypeOf) => {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return executeFields(\n exeContext,\n returnType,\n result,\n path,\n subFieldNodes,\n );\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new _GraphQLError.GraphQLError(\n `Expected value of type \"${returnType.name}\" but got: ${(0,\n _inspect.inspect)(result)}.`,\n {\n nodes: fieldNodes,\n },\n );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nconst defaultTypeResolver = function (value, contextValue, info, abstractType) {\n // First, look for `__typename`.\n if (\n (0, _isObjectLike.isObjectLike)(value) &&\n typeof value.__typename === 'string'\n ) {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n const promisedIsTypeOfResults = [];\n\n for (let i = 0; i < possibleTypes.length; i++) {\n const type = possibleTypes[i];\n\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if ((0, _isPromise.isPromise)(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n for (let i = 0; i < isTypeOfResults.length; i++) {\n if (isTypeOfResults[i]) {\n return possibleTypes[i].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexports.defaultTypeResolver = defaultTypeResolver;\n\nconst defaultFieldResolver = function (source, args, contextValue, info) {\n // ensure source is a value for which property access is acceptable.\n if ((0, _isObjectLike.isObjectLike)(source) || typeof source === 'function') {\n const property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nexports.defaultFieldResolver = defaultFieldResolver;\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n const fieldName = fieldNode.name.value;\n\n if (\n fieldName === _introspection.SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return _introspection.SchemaMetaFieldDef;\n } else if (\n fieldName === _introspection.TypeMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return _introspection.TypeMetaFieldDef;\n } else if (fieldName === _introspection.TypeNameMetaFieldDef.name) {\n return _introspection.TypeNameMetaFieldDef;\n }\n\n return parentType.getFields()[fieldName];\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.graphql = graphql;\nexports.graphqlSync = graphqlSync;\n\nvar _devAssert = require('./jsutils/devAssert.js');\n\nvar _isPromise = require('./jsutils/isPromise.js');\n\nvar _parser = require('./language/parser.js');\n\nvar _validate = require('./type/validate.js');\n\nvar _validate2 = require('./validation/validate.js');\n\nvar _execute = require('./execution/execute.js');\n\nfunction graphql(args) {\n // Always return a Promise for a consistent API.\n return new Promise((resolve) => resolve(graphqlImpl(args)));\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction graphqlSync(args) {\n const result = graphqlImpl(args); // Assert that the execution was synchronous.\n\n if ((0, _isPromise.isPromise)(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n\nfunction graphqlImpl(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n (0, _devAssert.devAssert)(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const {\n schema,\n source,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n } = args; // Validate Schema\n\n const schemaValidationErrors = (0, _validate.validateSchema)(schema);\n\n if (schemaValidationErrors.length > 0) {\n return {\n errors: schemaValidationErrors,\n };\n } // Parse\n\n let document;\n\n try {\n document = (0, _parser.parse)(source);\n } catch (syntaxError) {\n return {\n errors: [syntaxError],\n };\n } // Validate\n\n const validationErrors = (0, _validate2.validate)(schema, document);\n\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors,\n };\n } // Execute\n\n return (0, _execute.execute)({\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'DEFAULT_DEPRECATION_REASON', {\n enumerable: true,\n get: function () {\n return _directives.DEFAULT_DEPRECATION_REASON;\n },\n});\nObject.defineProperty(exports, 'GRAPHQL_MAX_INT', {\n enumerable: true,\n get: function () {\n return _scalars.GRAPHQL_MAX_INT;\n },\n});\nObject.defineProperty(exports, 'GRAPHQL_MIN_INT', {\n enumerable: true,\n get: function () {\n return _scalars.GRAPHQL_MIN_INT;\n },\n});\nObject.defineProperty(exports, 'GraphQLBoolean', {\n enumerable: true,\n get: function () {\n return _scalars.GraphQLBoolean;\n },\n});\nObject.defineProperty(exports, 'GraphQLDeprecatedDirective', {\n enumerable: true,\n get: function () {\n return _directives.GraphQLDeprecatedDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLDirective', {\n enumerable: true,\n get: function () {\n return _directives.GraphQLDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLEnumType', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLEnumType;\n },\n});\nObject.defineProperty(exports, 'GraphQLFloat', {\n enumerable: true,\n get: function () {\n return _scalars.GraphQLFloat;\n },\n});\nObject.defineProperty(exports, 'GraphQLID', {\n enumerable: true,\n get: function () {\n return _scalars.GraphQLID;\n },\n});\nObject.defineProperty(exports, 'GraphQLIncludeDirective', {\n enumerable: true,\n get: function () {\n return _directives.GraphQLIncludeDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLInputObjectType', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLInputObjectType;\n },\n});\nObject.defineProperty(exports, 'GraphQLInt', {\n enumerable: true,\n get: function () {\n return _scalars.GraphQLInt;\n },\n});\nObject.defineProperty(exports, 'GraphQLInterfaceType', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLInterfaceType;\n },\n});\nObject.defineProperty(exports, 'GraphQLList', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLList;\n },\n});\nObject.defineProperty(exports, 'GraphQLNonNull', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLNonNull;\n },\n});\nObject.defineProperty(exports, 'GraphQLObjectType', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLObjectType;\n },\n});\nObject.defineProperty(exports, 'GraphQLScalarType', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLScalarType;\n },\n});\nObject.defineProperty(exports, 'GraphQLSchema', {\n enumerable: true,\n get: function () {\n return _schema.GraphQLSchema;\n },\n});\nObject.defineProperty(exports, 'GraphQLSkipDirective', {\n enumerable: true,\n get: function () {\n return _directives.GraphQLSkipDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLSpecifiedByDirective', {\n enumerable: true,\n get: function () {\n return _directives.GraphQLSpecifiedByDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLString', {\n enumerable: true,\n get: function () {\n return _scalars.GraphQLString;\n },\n});\nObject.defineProperty(exports, 'GraphQLUnionType', {\n enumerable: true,\n get: function () {\n return _definition.GraphQLUnionType;\n },\n});\nObject.defineProperty(exports, 'SchemaMetaFieldDef', {\n enumerable: true,\n get: function () {\n return _introspection.SchemaMetaFieldDef;\n },\n});\nObject.defineProperty(exports, 'TypeKind', {\n enumerable: true,\n get: function () {\n return _introspection.TypeKind;\n },\n});\nObject.defineProperty(exports, 'TypeMetaFieldDef', {\n enumerable: true,\n get: function () {\n return _introspection.TypeMetaFieldDef;\n },\n});\nObject.defineProperty(exports, 'TypeNameMetaFieldDef', {\n enumerable: true,\n get: function () {\n return _introspection.TypeNameMetaFieldDef;\n },\n});\nObject.defineProperty(exports, '__Directive', {\n enumerable: true,\n get: function () {\n return _introspection.__Directive;\n },\n});\nObject.defineProperty(exports, '__DirectiveLocation', {\n enumerable: true,\n get: function () {\n return _introspection.__DirectiveLocation;\n },\n});\nObject.defineProperty(exports, '__EnumValue', {\n enumerable: true,\n get: function () {\n return _introspection.__EnumValue;\n },\n});\nObject.defineProperty(exports, '__Field', {\n enumerable: true,\n get: function () {\n return _introspection.__Field;\n },\n});\nObject.defineProperty(exports, '__InputValue', {\n enumerable: true,\n get: function () {\n return _introspection.__InputValue;\n },\n});\nObject.defineProperty(exports, '__Schema', {\n enumerable: true,\n get: function () {\n return _introspection.__Schema;\n },\n});\nObject.defineProperty(exports, '__Type', {\n enumerable: true,\n get: function () {\n return _introspection.__Type;\n },\n});\nObject.defineProperty(exports, '__TypeKind', {\n enumerable: true,\n get: function () {\n return _introspection.__TypeKind;\n },\n});\nObject.defineProperty(exports, 'assertAbstractType', {\n enumerable: true,\n get: function () {\n return _definition.assertAbstractType;\n },\n});\nObject.defineProperty(exports, 'assertCompositeType', {\n enumerable: true,\n get: function () {\n return _definition.assertCompositeType;\n },\n});\nObject.defineProperty(exports, 'assertDirective', {\n enumerable: true,\n get: function () {\n return _directives.assertDirective;\n },\n});\nObject.defineProperty(exports, 'assertEnumType', {\n enumerable: true,\n get: function () {\n return _definition.assertEnumType;\n },\n});\nObject.defineProperty(exports, 'assertEnumValueName', {\n enumerable: true,\n get: function () {\n return _assertName.assertEnumValueName;\n },\n});\nObject.defineProperty(exports, 'assertInputObjectType', {\n enumerable: true,\n get: function () {\n return _definition.assertInputObjectType;\n },\n});\nObject.defineProperty(exports, 'assertInputType', {\n enumerable: true,\n get: function () {\n return _definition.assertInputType;\n },\n});\nObject.defineProperty(exports, 'assertInterfaceType', {\n enumerable: true,\n get: function () {\n return _definition.assertInterfaceType;\n },\n});\nObject.defineProperty(exports, 'assertLeafType', {\n enumerable: true,\n get: function () {\n return _definition.assertLeafType;\n },\n});\nObject.defineProperty(exports, 'assertListType', {\n enumerable: true,\n get: function () {\n return _definition.assertListType;\n },\n});\nObject.defineProperty(exports, 'assertName', {\n enumerable: true,\n get: function () {\n return _assertName.assertName;\n },\n});\nObject.defineProperty(exports, 'assertNamedType', {\n enumerable: true,\n get: function () {\n return _definition.assertNamedType;\n },\n});\nObject.defineProperty(exports, 'assertNonNullType', {\n enumerable: true,\n get: function () {\n return _definition.assertNonNullType;\n },\n});\nObject.defineProperty(exports, 'assertNullableType', {\n enumerable: true,\n get: function () {\n return _definition.assertNullableType;\n },\n});\nObject.defineProperty(exports, 'assertObjectType', {\n enumerable: true,\n get: function () {\n return _definition.assertObjectType;\n },\n});\nObject.defineProperty(exports, 'assertOutputType', {\n enumerable: true,\n get: function () {\n return _definition.assertOutputType;\n },\n});\nObject.defineProperty(exports, 'assertScalarType', {\n enumerable: true,\n get: function () {\n return _definition.assertScalarType;\n },\n});\nObject.defineProperty(exports, 'assertSchema', {\n enumerable: true,\n get: function () {\n return _schema.assertSchema;\n },\n});\nObject.defineProperty(exports, 'assertType', {\n enumerable: true,\n get: function () {\n return _definition.assertType;\n },\n});\nObject.defineProperty(exports, 'assertUnionType', {\n enumerable: true,\n get: function () {\n return _definition.assertUnionType;\n },\n});\nObject.defineProperty(exports, 'assertValidSchema', {\n enumerable: true,\n get: function () {\n return _validate.assertValidSchema;\n },\n});\nObject.defineProperty(exports, 'assertWrappingType', {\n enumerable: true,\n get: function () {\n return _definition.assertWrappingType;\n },\n});\nObject.defineProperty(exports, 'getNamedType', {\n enumerable: true,\n get: function () {\n return _definition.getNamedType;\n },\n});\nObject.defineProperty(exports, 'getNullableType', {\n enumerable: true,\n get: function () {\n return _definition.getNullableType;\n },\n});\nObject.defineProperty(exports, 'introspectionTypes', {\n enumerable: true,\n get: function () {\n return _introspection.introspectionTypes;\n },\n});\nObject.defineProperty(exports, 'isAbstractType', {\n enumerable: true,\n get: function () {\n return _definition.isAbstractType;\n },\n});\nObject.defineProperty(exports, 'isCompositeType', {\n enumerable: true,\n get: function () {\n return _definition.isCompositeType;\n },\n});\nObject.defineProperty(exports, 'isDirective', {\n enumerable: true,\n get: function () {\n return _directives.isDirective;\n },\n});\nObject.defineProperty(exports, 'isEnumType', {\n enumerable: true,\n get: function () {\n return _definition.isEnumType;\n },\n});\nObject.defineProperty(exports, 'isInputObjectType', {\n enumerable: true,\n get: function () {\n return _definition.isInputObjectType;\n },\n});\nObject.defineProperty(exports, 'isInputType', {\n enumerable: true,\n get: function () {\n return _definition.isInputType;\n },\n});\nObject.defineProperty(exports, 'isInterfaceType', {\n enumerable: true,\n get: function () {\n return _definition.isInterfaceType;\n },\n});\nObject.defineProperty(exports, 'isIntrospectionType', {\n enumerable: true,\n get: function () {\n return _introspection.isIntrospectionType;\n },\n});\nObject.defineProperty(exports, 'isLeafType', {\n enumerable: true,\n get: function () {\n return _definition.isLeafType;\n },\n});\nObject.defineProperty(exports, 'isListType', {\n enumerable: true,\n get: function () {\n return _definition.isListType;\n },\n});\nObject.defineProperty(exports, 'isNamedType', {\n enumerable: true,\n get: function () {\n return _definition.isNamedType;\n },\n});\nObject.defineProperty(exports, 'isNonNullType', {\n enumerable: true,\n get: function () {\n return _definition.isNonNullType;\n },\n});\nObject.defineProperty(exports, 'isNullableType', {\n enumerable: true,\n get: function () {\n return _definition.isNullableType;\n },\n});\nObject.defineProperty(exports, 'isObjectType', {\n enumerable: true,\n get: function () {\n return _definition.isObjectType;\n },\n});\nObject.defineProperty(exports, 'isOutputType', {\n enumerable: true,\n get: function () {\n return _definition.isOutputType;\n },\n});\nObject.defineProperty(exports, 'isRequiredArgument', {\n enumerable: true,\n get: function () {\n return _definition.isRequiredArgument;\n },\n});\nObject.defineProperty(exports, 'isRequiredInputField', {\n enumerable: true,\n get: function () {\n return _definition.isRequiredInputField;\n },\n});\nObject.defineProperty(exports, 'isScalarType', {\n enumerable: true,\n get: function () {\n return _definition.isScalarType;\n },\n});\nObject.defineProperty(exports, 'isSchema', {\n enumerable: true,\n get: function () {\n return _schema.isSchema;\n },\n});\nObject.defineProperty(exports, 'isSpecifiedDirective', {\n enumerable: true,\n get: function () {\n return _directives.isSpecifiedDirective;\n },\n});\nObject.defineProperty(exports, 'isSpecifiedScalarType', {\n enumerable: true,\n get: function () {\n return _scalars.isSpecifiedScalarType;\n },\n});\nObject.defineProperty(exports, 'isType', {\n enumerable: true,\n get: function () {\n return _definition.isType;\n },\n});\nObject.defineProperty(exports, 'isUnionType', {\n enumerable: true,\n get: function () {\n return _definition.isUnionType;\n },\n});\nObject.defineProperty(exports, 'isWrappingType', {\n enumerable: true,\n get: function () {\n return _definition.isWrappingType;\n },\n});\nObject.defineProperty(exports, 'resolveObjMapThunk', {\n enumerable: true,\n get: function () {\n return _definition.resolveObjMapThunk;\n },\n});\nObject.defineProperty(exports, 'resolveReadonlyArrayThunk', {\n enumerable: true,\n get: function () {\n return _definition.resolveReadonlyArrayThunk;\n },\n});\nObject.defineProperty(exports, 'specifiedDirectives', {\n enumerable: true,\n get: function () {\n return _directives.specifiedDirectives;\n },\n});\nObject.defineProperty(exports, 'specifiedScalarTypes', {\n enumerable: true,\n get: function () {\n return _scalars.specifiedScalarTypes;\n },\n});\nObject.defineProperty(exports, 'validateSchema', {\n enumerable: true,\n get: function () {\n return _validate.validateSchema;\n },\n});\n\nvar _schema = require('./schema.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _scalars = require('./scalars.js');\n\nvar _introspection = require('./introspection.js');\n\nvar _validate = require('./validate.js');\n\nvar _assertName = require('./assertName.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'BREAK', {\n enumerable: true,\n get: function () {\n return _visitor.BREAK;\n },\n});\nObject.defineProperty(exports, 'DirectiveLocation', {\n enumerable: true,\n get: function () {\n return _directiveLocation.DirectiveLocation;\n },\n});\nObject.defineProperty(exports, 'Kind', {\n enumerable: true,\n get: function () {\n return _kinds.Kind;\n },\n});\nObject.defineProperty(exports, 'Lexer', {\n enumerable: true,\n get: function () {\n return _lexer.Lexer;\n },\n});\nObject.defineProperty(exports, 'Location', {\n enumerable: true,\n get: function () {\n return _ast.Location;\n },\n});\nObject.defineProperty(exports, 'OperationTypeNode', {\n enumerable: true,\n get: function () {\n return _ast.OperationTypeNode;\n },\n});\nObject.defineProperty(exports, 'Source', {\n enumerable: true,\n get: function () {\n return _source.Source;\n },\n});\nObject.defineProperty(exports, 'Token', {\n enumerable: true,\n get: function () {\n return _ast.Token;\n },\n});\nObject.defineProperty(exports, 'TokenKind', {\n enumerable: true,\n get: function () {\n return _tokenKind.TokenKind;\n },\n});\nObject.defineProperty(exports, 'getEnterLeaveForKind', {\n enumerable: true,\n get: function () {\n return _visitor.getEnterLeaveForKind;\n },\n});\nObject.defineProperty(exports, 'getLocation', {\n enumerable: true,\n get: function () {\n return _location.getLocation;\n },\n});\nObject.defineProperty(exports, 'getVisitFn', {\n enumerable: true,\n get: function () {\n return _visitor.getVisitFn;\n },\n});\nObject.defineProperty(exports, 'isConstValueNode', {\n enumerable: true,\n get: function () {\n return _predicates.isConstValueNode;\n },\n});\nObject.defineProperty(exports, 'isDefinitionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isExecutableDefinitionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isExecutableDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isSelectionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isSelectionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeDefinitionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isTypeDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeExtensionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isTypeExtensionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeNode', {\n enumerable: true,\n get: function () {\n return _predicates.isTypeNode;\n },\n});\nObject.defineProperty(exports, 'isTypeSystemDefinitionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isTypeSystemDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeSystemExtensionNode', {\n enumerable: true,\n get: function () {\n return _predicates.isTypeSystemExtensionNode;\n },\n});\nObject.defineProperty(exports, 'isValueNode', {\n enumerable: true,\n get: function () {\n return _predicates.isValueNode;\n },\n});\nObject.defineProperty(exports, 'parse', {\n enumerable: true,\n get: function () {\n return _parser.parse;\n },\n});\nObject.defineProperty(exports, 'parseConstValue', {\n enumerable: true,\n get: function () {\n return _parser.parseConstValue;\n },\n});\nObject.defineProperty(exports, 'parseType', {\n enumerable: true,\n get: function () {\n return _parser.parseType;\n },\n});\nObject.defineProperty(exports, 'parseValue', {\n enumerable: true,\n get: function () {\n return _parser.parseValue;\n },\n});\nObject.defineProperty(exports, 'print', {\n enumerable: true,\n get: function () {\n return _printer.print;\n },\n});\nObject.defineProperty(exports, 'printLocation', {\n enumerable: true,\n get: function () {\n return _printLocation.printLocation;\n },\n});\nObject.defineProperty(exports, 'printSourceLocation', {\n enumerable: true,\n get: function () {\n return _printLocation.printSourceLocation;\n },\n});\nObject.defineProperty(exports, 'visit', {\n enumerable: true,\n get: function () {\n return _visitor.visit;\n },\n});\nObject.defineProperty(exports, 'visitInParallel', {\n enumerable: true,\n get: function () {\n return _visitor.visitInParallel;\n },\n});\n\nvar _source = require('./source.js');\n\nvar _location = require('./location.js');\n\nvar _printLocation = require('./printLocation.js');\n\nvar _kinds = require('./kinds.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _parser = require('./parser.js');\n\nvar _printer = require('./printer.js');\n\nvar _visitor = require('./visitor.js');\n\nvar _ast = require('./ast.js');\n\nvar _predicates = require('./predicates.js');\n\nvar _directiveLocation = require('./directiveLocation.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isAsyncIterable = isAsyncIterable;\n\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nfunction isAsyncIterable(maybeAsyncIterable) {\n return (\n typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n ? void 0\n : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.mapAsyncIterator = mapAsyncIterator;\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterable, callback) {\n const iterator = iterable[Symbol.asyncIterator]();\n\n async function mapResult(result) {\n if (result.done) {\n return result;\n }\n\n try {\n return {\n value: await callback(result.value),\n done: false,\n };\n } catch (error) {\n /* c8 ignore start */\n // FIXME: add test case\n if (typeof iterator.return === 'function') {\n try {\n await iterator.return();\n } catch (_e) {\n /* ignore error */\n }\n }\n\n throw error;\n /* c8 ignore stop */\n }\n }\n\n return {\n async next() {\n return mapResult(await iterator.next());\n },\n\n async return() {\n // If iterator.return() does not exist, then type R must be undefined.\n return typeof iterator.return === 'function'\n ? mapResult(await iterator.return())\n : {\n value: undefined,\n done: true,\n };\n },\n\n async throw(error) {\n if (typeof iterator.throw === 'function') {\n return mapResult(await iterator.throw(error));\n }\n\n throw error;\n },\n\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.createSourceEventStream = createSourceEventStream;\nexports.subscribe = subscribe;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isAsyncIterable = require('../jsutils/isAsyncIterable.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _locatedError = require('../error/locatedError.js');\n\nvar _collectFields = require('./collectFields.js');\n\nvar _execute = require('./execute.js');\n\nvar _mapAsyncIterator = require('./mapAsyncIterator.js');\n\nvar _values = require('./values.js');\n\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\nasync function subscribe(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n (0, _devAssert.devAssert)(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n subscribeFieldResolver,\n } = args;\n const resultOrStream = await createSourceEventStream(\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n subscribeFieldResolver,\n );\n\n if (!(0, _isAsyncIterable.isAsyncIterable)(resultOrStream)) {\n return resultOrStream;\n } // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n const mapSourceToResponse = (payload) =>\n (0, _execute.execute)({\n schema,\n document,\n rootValue: payload,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n }); // Map every source value to a ExecutionResult value as described above.\n\n return (0, _mapAsyncIterator.mapAsyncIterator)(\n resultOrStream,\n mapSourceToResponse,\n );\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nasync function createSourceEventStream(\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n subscribeFieldResolver,\n) {\n // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n (0, _execute.assertValidExecutionArguments)(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = (0, _execute.buildExecutionContext)({\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n subscribeFieldResolver,\n }); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n }\n\n try {\n const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n if (!(0, _isAsyncIterable.isAsyncIterable)(eventStream)) {\n throw new Error(\n 'Subscription field must return Async Iterable. ' +\n `Received: ${(0, _inspect.inspect)(eventStream)}.`,\n );\n }\n\n return eventStream;\n } catch (error) {\n // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n // Otherwise treat the error as a system-class error and re-throw it.\n if (error instanceof _GraphQLError.GraphQLError) {\n return {\n errors: [error],\n };\n }\n\n throw error;\n }\n}\n\nasync function executeSubscription(exeContext) {\n const { schema, fragments, operation, variableValues, rootValue } =\n exeContext;\n const rootType = schema.getSubscriptionType();\n\n if (rootType == null) {\n throw new _GraphQLError.GraphQLError(\n 'Schema is not configured to execute subscription operation.',\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = (0, _collectFields.collectFields)(\n schema,\n fragments,\n variableValues,\n rootType,\n operation.selectionSet,\n );\n const [responseName, fieldNodes] = [...rootFields.entries()][0];\n const fieldDef = (0, _execute.getFieldDef)(schema, rootType, fieldNodes[0]);\n\n if (!fieldDef) {\n const fieldName = fieldNodes[0].name.value;\n throw new _GraphQLError.GraphQLError(\n `The subscription field \"${fieldName}\" is not defined.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n const path = (0, _Path.addPath)(undefined, responseName, rootType.name);\n const info = (0, _execute.buildResolveInfo)(\n exeContext,\n fieldDef,\n fieldNodes,\n rootType,\n path,\n );\n\n try {\n var _fieldDef$subscribe;\n\n // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n const args = (0, _values.getArgumentValues)(\n fieldDef,\n fieldNodes[0],\n variableValues,\n ); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n const resolveFn =\n (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n _fieldDef$subscribe !== void 0\n ? _fieldDef$subscribe\n : exeContext.subscribeFieldResolver;\n const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n if (eventStream instanceof Error) {\n throw eventStream;\n }\n\n return eventStream;\n } catch (error) {\n throw (0, _locatedError.locatedError)(\n error,\n fieldNodes,\n (0, _Path.pathToArray)(path),\n );\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'createSourceEventStream', {\n enumerable: true,\n get: function () {\n return _subscribe.createSourceEventStream;\n },\n});\nObject.defineProperty(exports, 'defaultFieldResolver', {\n enumerable: true,\n get: function () {\n return _execute.defaultFieldResolver;\n },\n});\nObject.defineProperty(exports, 'defaultTypeResolver', {\n enumerable: true,\n get: function () {\n return _execute.defaultTypeResolver;\n },\n});\nObject.defineProperty(exports, 'execute', {\n enumerable: true,\n get: function () {\n return _execute.execute;\n },\n});\nObject.defineProperty(exports, 'executeSync', {\n enumerable: true,\n get: function () {\n return _execute.executeSync;\n },\n});\nObject.defineProperty(exports, 'getArgumentValues', {\n enumerable: true,\n get: function () {\n return _values.getArgumentValues;\n },\n});\nObject.defineProperty(exports, 'getDirectiveValues', {\n enumerable: true,\n get: function () {\n return _values.getDirectiveValues;\n },\n});\nObject.defineProperty(exports, 'getVariableValues', {\n enumerable: true,\n get: function () {\n return _values.getVariableValues;\n },\n});\nObject.defineProperty(exports, 'responsePathAsArray', {\n enumerable: true,\n get: function () {\n return _Path.pathToArray;\n },\n});\nObject.defineProperty(exports, 'subscribe', {\n enumerable: true,\n get: function () {\n return _subscribe.subscribe;\n },\n});\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _execute = require('./execute.js');\n\nvar _subscribe = require('./subscribe.js');\n\nvar _values = require('./values.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.NoDeprecatedCustomRule = NoDeprecatedCustomRule;\n\nvar _invariant = require('../../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../../error/GraphQLError.js');\n\nvar _definition = require('../../../type/definition.js');\n\n/**\n * No deprecated\n *\n * A GraphQL document is only valid if all selected fields and all used enum values have not been\n * deprecated.\n *\n * Note: This rule is optional and is not part of the Validation section of the GraphQL\n * Specification. The main purpose of this rule is detection of deprecated usages and not\n * necessarily to forbid their use when querying a service.\n */\nfunction NoDeprecatedCustomRule(context) {\n return {\n Field(node) {\n const fieldDef = context.getFieldDef();\n const deprecationReason =\n fieldDef === null || fieldDef === void 0\n ? void 0\n : fieldDef.deprecationReason;\n\n if (fieldDef && deprecationReason != null) {\n const parentType = context.getParentType();\n parentType != null || (0, _invariant.invariant)(false);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n Argument(node) {\n const argDef = context.getArgument();\n const deprecationReason =\n argDef === null || argDef === void 0\n ? void 0\n : argDef.deprecationReason;\n\n if (argDef && deprecationReason != null) {\n const directiveDef = context.getDirective();\n\n if (directiveDef != null) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Directive \"@${directiveDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n } else {\n const parentType = context.getParentType();\n const fieldDef = context.getFieldDef();\n (parentType != null && fieldDef != null) ||\n (0, _invariant.invariant)(false);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `Field \"${parentType.name}.${fieldDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n ObjectField(node) {\n const inputObjectDef = (0, _definition.getNamedType)(\n context.getParentInputType(),\n );\n\n if ((0, _definition.isInputObjectType)(inputObjectDef)) {\n const inputFieldDef = inputObjectDef.getFields()[node.name.value];\n const deprecationReason =\n inputFieldDef === null || inputFieldDef === void 0\n ? void 0\n : inputFieldDef.deprecationReason;\n\n if (deprecationReason != null) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n EnumValue(node) {\n const enumValueDef = context.getEnumValue();\n const deprecationReason =\n enumValueDef === null || enumValueDef === void 0\n ? void 0\n : enumValueDef.deprecationReason;\n\n if (enumValueDef && deprecationReason != null) {\n const enumTypeDef = (0, _definition.getNamedType)(\n context.getInputType(),\n );\n enumTypeDef != null || (0, _invariant.invariant)(false);\n context.reportError(\n new _GraphQLError.GraphQLError(\n `The enum value \"${enumTypeDef.name}.${enumValueDef.name}\" is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.NoSchemaIntrospectionCustomRule = NoSchemaIntrospectionCustomRule;\n\nvar _GraphQLError = require('../../../error/GraphQLError.js');\n\nvar _definition = require('../../../type/definition.js');\n\nvar _introspection = require('../../../type/introspection.js');\n\n/**\n * Prohibit introspection queries\n *\n * A GraphQL document is only valid if all fields selected are not fields that\n * return an introspection type.\n *\n * Note: This rule is optional and is not part of the Validation section of the\n * GraphQL Specification. This rule effectively disables introspection, which\n * does not reflect best practices and should only be done if absolutely necessary.\n */\nfunction NoSchemaIntrospectionCustomRule(context) {\n return {\n Field(node) {\n const type = (0, _definition.getNamedType)(context.getType());\n\n if (type && (0, _introspection.isIntrospectionType)(type)) {\n context.reportError(\n new _GraphQLError.GraphQLError(\n `GraphQL introspection has been disabled, but the requested query contained the field \"${node.name.value}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'ExecutableDefinitionsRule', {\n enumerable: true,\n get: function () {\n return _ExecutableDefinitionsRule.ExecutableDefinitionsRule;\n },\n});\nObject.defineProperty(exports, 'FieldsOnCorrectTypeRule', {\n enumerable: true,\n get: function () {\n return _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule;\n },\n});\nObject.defineProperty(exports, 'FragmentsOnCompositeTypesRule', {\n enumerable: true,\n get: function () {\n return _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule;\n },\n});\nObject.defineProperty(exports, 'KnownArgumentNamesRule', {\n enumerable: true,\n get: function () {\n return _KnownArgumentNamesRule.KnownArgumentNamesRule;\n },\n});\nObject.defineProperty(exports, 'KnownDirectivesRule', {\n enumerable: true,\n get: function () {\n return _KnownDirectivesRule.KnownDirectivesRule;\n },\n});\nObject.defineProperty(exports, 'KnownFragmentNamesRule', {\n enumerable: true,\n get: function () {\n return _KnownFragmentNamesRule.KnownFragmentNamesRule;\n },\n});\nObject.defineProperty(exports, 'KnownTypeNamesRule', {\n enumerable: true,\n get: function () {\n return _KnownTypeNamesRule.KnownTypeNamesRule;\n },\n});\nObject.defineProperty(exports, 'LoneAnonymousOperationRule', {\n enumerable: true,\n get: function () {\n return _LoneAnonymousOperationRule.LoneAnonymousOperationRule;\n },\n});\nObject.defineProperty(exports, 'LoneSchemaDefinitionRule', {\n enumerable: true,\n get: function () {\n return _LoneSchemaDefinitionRule.LoneSchemaDefinitionRule;\n },\n});\nObject.defineProperty(exports, 'NoDeprecatedCustomRule', {\n enumerable: true,\n get: function () {\n return _NoDeprecatedCustomRule.NoDeprecatedCustomRule;\n },\n});\nObject.defineProperty(exports, 'NoFragmentCyclesRule', {\n enumerable: true,\n get: function () {\n return _NoFragmentCyclesRule.NoFragmentCyclesRule;\n },\n});\nObject.defineProperty(exports, 'NoSchemaIntrospectionCustomRule', {\n enumerable: true,\n get: function () {\n return _NoSchemaIntrospectionCustomRule.NoSchemaIntrospectionCustomRule;\n },\n});\nObject.defineProperty(exports, 'NoUndefinedVariablesRule', {\n enumerable: true,\n get: function () {\n return _NoUndefinedVariablesRule.NoUndefinedVariablesRule;\n },\n});\nObject.defineProperty(exports, 'NoUnusedFragmentsRule', {\n enumerable: true,\n get: function () {\n return _NoUnusedFragmentsRule.NoUnusedFragmentsRule;\n },\n});\nObject.defineProperty(exports, 'NoUnusedVariablesRule', {\n enumerable: true,\n get: function () {\n return _NoUnusedVariablesRule.NoUnusedVariablesRule;\n },\n});\nObject.defineProperty(exports, 'OverlappingFieldsCanBeMergedRule', {\n enumerable: true,\n get: function () {\n return _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule;\n },\n});\nObject.defineProperty(exports, 'PossibleFragmentSpreadsRule', {\n enumerable: true,\n get: function () {\n return _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule;\n },\n});\nObject.defineProperty(exports, 'PossibleTypeExtensionsRule', {\n enumerable: true,\n get: function () {\n return _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule;\n },\n});\nObject.defineProperty(exports, 'ProvidedRequiredArgumentsRule', {\n enumerable: true,\n get: function () {\n return _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule;\n },\n});\nObject.defineProperty(exports, 'ScalarLeafsRule', {\n enumerable: true,\n get: function () {\n return _ScalarLeafsRule.ScalarLeafsRule;\n },\n});\nObject.defineProperty(exports, 'SingleFieldSubscriptionsRule', {\n enumerable: true,\n get: function () {\n return _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule;\n },\n});\nObject.defineProperty(exports, 'UniqueArgumentDefinitionNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueArgumentNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueArgumentNamesRule.UniqueArgumentNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueDirectiveNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueDirectivesPerLocationRule', {\n enumerable: true,\n get: function () {\n return _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule;\n },\n});\nObject.defineProperty(exports, 'UniqueEnumValueNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueFieldDefinitionNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueFragmentNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueFragmentNamesRule.UniqueFragmentNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueInputFieldNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueOperationNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueOperationNamesRule.UniqueOperationNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueOperationTypesRule', {\n enumerable: true,\n get: function () {\n return _UniqueOperationTypesRule.UniqueOperationTypesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueTypeNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueTypeNamesRule.UniqueTypeNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueVariableNamesRule', {\n enumerable: true,\n get: function () {\n return _UniqueVariableNamesRule.UniqueVariableNamesRule;\n },\n});\nObject.defineProperty(exports, 'ValidationContext', {\n enumerable: true,\n get: function () {\n return _ValidationContext.ValidationContext;\n },\n});\nObject.defineProperty(exports, 'ValuesOfCorrectTypeRule', {\n enumerable: true,\n get: function () {\n return _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule;\n },\n});\nObject.defineProperty(exports, 'VariablesAreInputTypesRule', {\n enumerable: true,\n get: function () {\n return _VariablesAreInputTypesRule.VariablesAreInputTypesRule;\n },\n});\nObject.defineProperty(exports, 'VariablesInAllowedPositionRule', {\n enumerable: true,\n get: function () {\n return _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule;\n },\n});\nObject.defineProperty(exports, 'specifiedRules', {\n enumerable: true,\n get: function () {\n return _specifiedRules.specifiedRules;\n },\n});\nObject.defineProperty(exports, 'validate', {\n enumerable: true,\n get: function () {\n return _validate.validate;\n },\n});\n\nvar _validate = require('./validate.js');\n\nvar _ValidationContext = require('./ValidationContext.js');\n\nvar _specifiedRules = require('./specifiedRules.js');\n\nvar _ExecutableDefinitionsRule = require('./rules/ExecutableDefinitionsRule.js');\n\nvar _FieldsOnCorrectTypeRule = require('./rules/FieldsOnCorrectTypeRule.js');\n\nvar _FragmentsOnCompositeTypesRule = require('./rules/FragmentsOnCompositeTypesRule.js');\n\nvar _KnownArgumentNamesRule = require('./rules/KnownArgumentNamesRule.js');\n\nvar _KnownDirectivesRule = require('./rules/KnownDirectivesRule.js');\n\nvar _KnownFragmentNamesRule = require('./rules/KnownFragmentNamesRule.js');\n\nvar _KnownTypeNamesRule = require('./rules/KnownTypeNamesRule.js');\n\nvar _LoneAnonymousOperationRule = require('./rules/LoneAnonymousOperationRule.js');\n\nvar _NoFragmentCyclesRule = require('./rules/NoFragmentCyclesRule.js');\n\nvar _NoUndefinedVariablesRule = require('./rules/NoUndefinedVariablesRule.js');\n\nvar _NoUnusedFragmentsRule = require('./rules/NoUnusedFragmentsRule.js');\n\nvar _NoUnusedVariablesRule = require('./rules/NoUnusedVariablesRule.js');\n\nvar _OverlappingFieldsCanBeMergedRule = require('./rules/OverlappingFieldsCanBeMergedRule.js');\n\nvar _PossibleFragmentSpreadsRule = require('./rules/PossibleFragmentSpreadsRule.js');\n\nvar _ProvidedRequiredArgumentsRule = require('./rules/ProvidedRequiredArgumentsRule.js');\n\nvar _ScalarLeafsRule = require('./rules/ScalarLeafsRule.js');\n\nvar _SingleFieldSubscriptionsRule = require('./rules/SingleFieldSubscriptionsRule.js');\n\nvar _UniqueArgumentNamesRule = require('./rules/UniqueArgumentNamesRule.js');\n\nvar _UniqueDirectivesPerLocationRule = require('./rules/UniqueDirectivesPerLocationRule.js');\n\nvar _UniqueFragmentNamesRule = require('./rules/UniqueFragmentNamesRule.js');\n\nvar _UniqueInputFieldNamesRule = require('./rules/UniqueInputFieldNamesRule.js');\n\nvar _UniqueOperationNamesRule = require('./rules/UniqueOperationNamesRule.js');\n\nvar _UniqueVariableNamesRule = require('./rules/UniqueVariableNamesRule.js');\n\nvar _ValuesOfCorrectTypeRule = require('./rules/ValuesOfCorrectTypeRule.js');\n\nvar _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js');\n\nvar _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');\n\nvar _LoneSchemaDefinitionRule = require('./rules/LoneSchemaDefinitionRule.js');\n\nvar _UniqueOperationTypesRule = require('./rules/UniqueOperationTypesRule.js');\n\nvar _UniqueTypeNamesRule = require('./rules/UniqueTypeNamesRule.js');\n\nvar _UniqueEnumValueNamesRule = require('./rules/UniqueEnumValueNamesRule.js');\n\nvar _UniqueFieldDefinitionNamesRule = require('./rules/UniqueFieldDefinitionNamesRule.js');\n\nvar _UniqueArgumentDefinitionNamesRule = require('./rules/UniqueArgumentDefinitionNamesRule.js');\n\nvar _UniqueDirectiveNamesRule = require('./rules/UniqueDirectiveNamesRule.js');\n\nvar _PossibleTypeExtensionsRule = require('./rules/PossibleTypeExtensionsRule.js');\n\nvar _NoDeprecatedCustomRule = require('./rules/custom/NoDeprecatedCustomRule.js');\n\nvar _NoSchemaIntrospectionCustomRule = require('./rules/custom/NoSchemaIntrospectionCustomRule.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'GraphQLError', {\n enumerable: true,\n get: function () {\n return _GraphQLError.GraphQLError;\n },\n});\nObject.defineProperty(exports, 'formatError', {\n enumerable: true,\n get: function () {\n return _GraphQLError.formatError;\n },\n});\nObject.defineProperty(exports, 'locatedError', {\n enumerable: true,\n get: function () {\n return _locatedError.locatedError;\n },\n});\nObject.defineProperty(exports, 'printError', {\n enumerable: true,\n get: function () {\n return _GraphQLError.printError;\n },\n});\nObject.defineProperty(exports, 'syntaxError', {\n enumerable: true,\n get: function () {\n return _syntaxError.syntaxError;\n },\n});\n\nvar _GraphQLError = require('./GraphQLError.js');\n\nvar _syntaxError = require('./syntaxError.js');\n\nvar _locatedError = require('./locatedError.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.getIntrospectionQuery = getIntrospectionQuery;\n\n/**\n * Produce the GraphQL query recommended for a full schema introspection.\n * Accepts optional IntrospectionOptions.\n */\nfunction getIntrospectionQuery(options) {\n const optionsWithDefault = {\n descriptions: true,\n specifiedByUrl: false,\n directiveIsRepeatable: false,\n schemaDescription: false,\n inputValueDeprecation: false,\n ...options,\n };\n const descriptions = optionsWithDefault.descriptions ? 'description' : '';\n const specifiedByUrl = optionsWithDefault.specifiedByUrl\n ? 'specifiedByURL'\n : '';\n const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable\n ? 'isRepeatable'\n : '';\n const schemaDescription = optionsWithDefault.schemaDescription\n ? descriptions\n : '';\n\n function inputDeprecation(str) {\n return optionsWithDefault.inputValueDeprecation ? str : '';\n }\n\n return `\n query IntrospectionQuery {\n __schema {\n ${schemaDescription}\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n ${descriptions}\n ${directiveIsRepeatable}\n locations\n args${inputDeprecation('(includeDeprecated: true)')} {\n ...InputValue\n }\n }\n }\n }\n\n fragment FullType on __Type {\n kind\n name\n ${descriptions}\n ${specifiedByUrl}\n fields(includeDeprecated: true) {\n name\n ${descriptions}\n args${inputDeprecation('(includeDeprecated: true)')} {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields${inputDeprecation('(includeDeprecated: true)')} {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n ${descriptions}\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n }\n }\n\n fragment InputValue on __InputValue {\n name\n ${descriptions}\n type { ...TypeRef }\n defaultValue\n ${inputDeprecation('isDeprecated')}\n ${inputDeprecation('deprecationReason')}\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n `;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.getOperationAST = getOperationAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\nfunction getOperationAST(documentAST, operationName) {\n let operation = null;\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.getOperationRootType = getOperationRootType;\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\n/**\n * Extracts the root type of the operation from the schema.\n *\n * @deprecated Please use `GraphQLSchema.getRootType` instead. Will be removed in v17\n */\nfunction getOperationRootType(schema, operation) {\n if (operation.operation === 'query') {\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n throw new _GraphQLError.GraphQLError(\n 'Schema does not define the required query root type.',\n {\n nodes: operation,\n },\n );\n }\n\n return queryType;\n }\n\n if (operation.operation === 'mutation') {\n const mutationType = schema.getMutationType();\n\n if (!mutationType) {\n throw new _GraphQLError.GraphQLError(\n 'Schema is not configured for mutations.',\n {\n nodes: operation,\n },\n );\n }\n\n return mutationType;\n }\n\n if (operation.operation === 'subscription') {\n const subscriptionType = schema.getSubscriptionType();\n\n if (!subscriptionType) {\n throw new _GraphQLError.GraphQLError(\n 'Schema is not configured for subscriptions.',\n {\n nodes: operation,\n },\n );\n }\n\n return subscriptionType;\n }\n\n throw new _GraphQLError.GraphQLError(\n 'Can only have query, mutation and subscription operations.',\n {\n nodes: operation,\n },\n );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.introspectionFromSchema = introspectionFromSchema;\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _execute = require('../execution/execute.js');\n\nvar _getIntrospectionQuery = require('./getIntrospectionQuery.js');\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\nfunction introspectionFromSchema(schema, options) {\n const optionsWithDefaults = {\n specifiedByUrl: true,\n directiveIsRepeatable: true,\n schemaDescription: true,\n inputValueDeprecation: true,\n ...options,\n };\n const document = (0, _parser.parse)(\n (0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults),\n );\n const result = (0, _execute.executeSync)({\n schema,\n document,\n });\n (!result.errors && result.data) || (0, _invariant.invariant)(false);\n return result.data;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.buildClientSchema = buildClientSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\nfunction buildClientSchema(introspection, options) {\n ((0, _isObjectLike.isObjectLike)(introspection) &&\n (0, _isObjectLike.isObjectLike)(introspection.__schema)) ||\n (0, _devAssert.devAssert)(\n false,\n `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${(0,\n _inspect.inspect)(introspection)}.`,\n ); // Get the schema from the introspection result.\n\n const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n const typeMap = (0, _keyValMap.keyValMap)(\n schemaIntrospection.types,\n (typeIntrospection) => typeIntrospection.name,\n (typeIntrospection) => buildType(typeIntrospection),\n ); // Include standard types only if they are used.\n\n for (const stdType of [\n ..._scalars.specifiedScalarTypes,\n ..._introspection.introspectionTypes,\n ]) {\n if (typeMap[stdType.name]) {\n typeMap[stdType.name] = stdType;\n }\n } // Get the root Query, Mutation, and Subscription types.\n\n const queryType = schemaIntrospection.queryType\n ? getObjectType(schemaIntrospection.queryType)\n : null;\n const mutationType = schemaIntrospection.mutationType\n ? getObjectType(schemaIntrospection.mutationType)\n : null;\n const subscriptionType = schemaIntrospection.subscriptionType\n ? getObjectType(schemaIntrospection.subscriptionType)\n : null; // Get the directives supported by Introspection, assuming empty-set if\n // directives were not queried for.\n\n const directives = schemaIntrospection.directives\n ? schemaIntrospection.directives.map(buildDirective)\n : []; // Then produce and return a Schema with these types.\n\n return new _schema.GraphQLSchema({\n description: schemaIntrospection.description,\n query: queryType,\n mutation: mutationType,\n subscription: subscriptionType,\n types: Object.values(typeMap),\n directives,\n assumeValid:\n options === null || options === void 0 ? void 0 : options.assumeValid,\n }); // Given a type reference in introspection, return the GraphQLType instance.\n // preferring cached instances before building new instances.\n\n function getType(typeRef) {\n if (typeRef.kind === _introspection.TypeKind.LIST) {\n const itemRef = typeRef.ofType;\n\n if (!itemRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n return new _definition.GraphQLList(getType(itemRef));\n }\n\n if (typeRef.kind === _introspection.TypeKind.NON_NULL) {\n const nullableRef = typeRef.ofType;\n\n if (!nullableRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n const nullableType = getType(nullableRef);\n return new _definition.GraphQLNonNull(\n (0, _definition.assertNullableType)(nullableType),\n );\n }\n\n return getNamedType(typeRef);\n }\n\n function getNamedType(typeRef) {\n const typeName = typeRef.name;\n\n if (!typeName) {\n throw new Error(\n `Unknown type reference: ${(0, _inspect.inspect)(typeRef)}.`,\n );\n }\n\n const type = typeMap[typeName];\n\n if (!type) {\n throw new Error(\n `Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`,\n );\n }\n\n return type;\n }\n\n function getObjectType(typeRef) {\n return (0, _definition.assertObjectType)(getNamedType(typeRef));\n }\n\n function getInterfaceType(typeRef) {\n return (0, _definition.assertInterfaceType)(getNamedType(typeRef));\n } // Given a type's introspection result, construct the correct\n // GraphQLType instance.\n\n function buildType(type) {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (type != null && type.name != null && type.kind != null) {\n // FIXME: Properly type IntrospectionType, it's a breaking change so fix in v17\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type.kind) {\n case _introspection.TypeKind.SCALAR:\n return buildScalarDef(type);\n\n case _introspection.TypeKind.OBJECT:\n return buildObjectDef(type);\n\n case _introspection.TypeKind.INTERFACE:\n return buildInterfaceDef(type);\n\n case _introspection.TypeKind.UNION:\n return buildUnionDef(type);\n\n case _introspection.TypeKind.ENUM:\n return buildEnumDef(type);\n\n case _introspection.TypeKind.INPUT_OBJECT:\n return buildInputObjectDef(type);\n }\n }\n\n const typeStr = (0, _inspect.inspect)(type);\n throw new Error(\n `Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`,\n );\n }\n\n function buildScalarDef(scalarIntrospection) {\n return new _definition.GraphQLScalarType({\n name: scalarIntrospection.name,\n description: scalarIntrospection.description,\n specifiedByURL: scalarIntrospection.specifiedByURL,\n });\n }\n\n function buildImplementationsList(implementingIntrospection) {\n // TODO: Temporary workaround until GraphQL ecosystem will fully support\n // 'interfaces' on interface types.\n if (\n implementingIntrospection.interfaces === null &&\n implementingIntrospection.kind === _introspection.TypeKind.INTERFACE\n ) {\n return [];\n }\n\n if (!implementingIntrospection.interfaces) {\n const implementingIntrospectionStr = (0, _inspect.inspect)(\n implementingIntrospection,\n );\n throw new Error(\n `Introspection result missing interfaces: ${implementingIntrospectionStr}.`,\n );\n }\n\n return implementingIntrospection.interfaces.map(getInterfaceType);\n }\n\n function buildObjectDef(objectIntrospection) {\n return new _definition.GraphQLObjectType({\n name: objectIntrospection.name,\n description: objectIntrospection.description,\n interfaces: () => buildImplementationsList(objectIntrospection),\n fields: () => buildFieldDefMap(objectIntrospection),\n });\n }\n\n function buildInterfaceDef(interfaceIntrospection) {\n return new _definition.GraphQLInterfaceType({\n name: interfaceIntrospection.name,\n description: interfaceIntrospection.description,\n interfaces: () => buildImplementationsList(interfaceIntrospection),\n fields: () => buildFieldDefMap(interfaceIntrospection),\n });\n }\n\n function buildUnionDef(unionIntrospection) {\n if (!unionIntrospection.possibleTypes) {\n const unionIntrospectionStr = (0, _inspect.inspect)(unionIntrospection);\n throw new Error(\n `Introspection result missing possibleTypes: ${unionIntrospectionStr}.`,\n );\n }\n\n return new _definition.GraphQLUnionType({\n name: unionIntrospection.name,\n description: unionIntrospection.description,\n types: () => unionIntrospection.possibleTypes.map(getObjectType),\n });\n }\n\n function buildEnumDef(enumIntrospection) {\n if (!enumIntrospection.enumValues) {\n const enumIntrospectionStr = (0, _inspect.inspect)(enumIntrospection);\n throw new Error(\n `Introspection result missing enumValues: ${enumIntrospectionStr}.`,\n );\n }\n\n return new _definition.GraphQLEnumType({\n name: enumIntrospection.name,\n description: enumIntrospection.description,\n values: (0, _keyValMap.keyValMap)(\n enumIntrospection.enumValues,\n (valueIntrospection) => valueIntrospection.name,\n (valueIntrospection) => ({\n description: valueIntrospection.description,\n deprecationReason: valueIntrospection.deprecationReason,\n }),\n ),\n });\n }\n\n function buildInputObjectDef(inputObjectIntrospection) {\n if (!inputObjectIntrospection.inputFields) {\n const inputObjectIntrospectionStr = (0, _inspect.inspect)(\n inputObjectIntrospection,\n );\n throw new Error(\n `Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`,\n );\n }\n\n return new _definition.GraphQLInputObjectType({\n name: inputObjectIntrospection.name,\n description: inputObjectIntrospection.description,\n fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),\n });\n }\n\n function buildFieldDefMap(typeIntrospection) {\n if (!typeIntrospection.fields) {\n throw new Error(\n `Introspection result missing fields: ${(0, _inspect.inspect)(\n typeIntrospection,\n )}.`,\n );\n }\n\n return (0, _keyValMap.keyValMap)(\n typeIntrospection.fields,\n (fieldIntrospection) => fieldIntrospection.name,\n buildField,\n );\n }\n\n function buildField(fieldIntrospection) {\n const type = getType(fieldIntrospection.type);\n\n if (!(0, _definition.isOutputType)(type)) {\n const typeStr = (0, _inspect.inspect)(type);\n throw new Error(\n `Introspection must provide output type for fields, but received: ${typeStr}.`,\n );\n }\n\n if (!fieldIntrospection.args) {\n const fieldIntrospectionStr = (0, _inspect.inspect)(fieldIntrospection);\n throw new Error(\n `Introspection result missing field args: ${fieldIntrospectionStr}.`,\n );\n }\n\n return {\n description: fieldIntrospection.description,\n deprecationReason: fieldIntrospection.deprecationReason,\n type,\n args: buildInputValueDefMap(fieldIntrospection.args),\n };\n }\n\n function buildInputValueDefMap(inputValueIntrospections) {\n return (0, _keyValMap.keyValMap)(\n inputValueIntrospections,\n (inputValue) => inputValue.name,\n buildInputValue,\n );\n }\n\n function buildInputValue(inputValueIntrospection) {\n const type = getType(inputValueIntrospection.type);\n\n if (!(0, _definition.isInputType)(type)) {\n const typeStr = (0, _inspect.inspect)(type);\n throw new Error(\n `Introspection must provide input type for arguments, but received: ${typeStr}.`,\n );\n }\n\n const defaultValue =\n inputValueIntrospection.defaultValue != null\n ? (0, _valueFromAST.valueFromAST)(\n (0, _parser.parseValue)(inputValueIntrospection.defaultValue),\n type,\n )\n : undefined;\n return {\n description: inputValueIntrospection.description,\n type,\n defaultValue,\n deprecationReason: inputValueIntrospection.deprecationReason,\n };\n }\n\n function buildDirective(directiveIntrospection) {\n if (!directiveIntrospection.args) {\n const directiveIntrospectionStr = (0, _inspect.inspect)(\n directiveIntrospection,\n );\n throw new Error(\n `Introspection result missing directive args: ${directiveIntrospectionStr}.`,\n );\n }\n\n if (!directiveIntrospection.locations) {\n const directiveIntrospectionStr = (0, _inspect.inspect)(\n directiveIntrospection,\n );\n throw new Error(\n `Introspection result missing directive locations: ${directiveIntrospectionStr}.`,\n );\n }\n\n return new _directives.GraphQLDirective({\n name: directiveIntrospection.name,\n description: directiveIntrospection.description,\n isRepeatable: directiveIntrospection.isRepeatable,\n locations: directiveIntrospection.locations.slice(),\n args: buildInputValueDefMap(directiveIntrospection.args),\n });\n }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.extendSchema = extendSchema;\nexports.extendSchemaImpl = extendSchemaImpl;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _mapValue = require('../jsutils/mapValue.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _predicates = require('../language/predicates.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _validate = require('../validation/validate.js');\n\nvar _values = require('../execution/values.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n */\nfunction extendSchema(schema, documentAST, options) {\n (0, _schema.assertSchema)(schema);\n (documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT) ||\n (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n (0, _validate.assertValidSDLExtension)(documentAST, schema);\n }\n\n const schemaConfig = schema.toConfig();\n const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n return schemaConfig === extendedConfig\n ? schema\n : new _schema.GraphQLSchema(extendedConfig);\n}\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n // Collect the type definitions and extensions found in the document.\n const typeDefs = [];\n const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n const directiveDefs = [];\n let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n const schemaExtensions = [];\n\n for (const def of documentAST.definitions) {\n if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {\n schemaExtensions.push(def);\n } else if ((0, _predicates.isTypeDefinitionNode)(def)) {\n typeDefs.push(def);\n } else if ((0, _predicates.isTypeExtensionNode)(def)) {\n const extendedTypeName = def.name.value;\n const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n ? existingTypeExtensions.concat([def])\n : [def];\n } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n if (\n Object.keys(typeExtensionsMap).length === 0 &&\n typeDefs.length === 0 &&\n directiveDefs.length === 0 &&\n schemaExtensions.length === 0 &&\n schemaDef == null\n ) {\n return schemaConfig;\n }\n\n const typeMap = Object.create(null);\n\n for (const existingType of schemaConfig.types) {\n typeMap[existingType.name] = extendNamedType(existingType);\n }\n\n for (const typeNode of typeDefs) {\n var _stdTypeMap$name;\n\n const name = typeNode.name.value;\n typeMap[name] =\n (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n _stdTypeMap$name !== void 0\n ? _stdTypeMap$name\n : buildType(typeNode);\n }\n\n const operationTypes = {\n // Get the extended root operation types.\n query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n subscription:\n schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n // Then, incorporate schema definition and all schema extensions.\n ...(schemaDef && getOperationTypes([schemaDef])),\n ...getOperationTypes(schemaExtensions),\n }; // Then produce and return a Schema config with these types.\n\n return {\n description:\n (_schemaDef = schemaDef) === null || _schemaDef === void 0\n ? void 0\n : (_schemaDef$descriptio = _schemaDef.description) === null ||\n _schemaDef$descriptio === void 0\n ? void 0\n : _schemaDef$descriptio.value,\n ...operationTypes,\n types: Object.values(typeMap),\n directives: [\n ...schemaConfig.directives.map(replaceDirective),\n ...directiveDefs.map(buildDirective),\n ],\n extensions: Object.create(null),\n astNode:\n (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n ? _schemaDef2\n : schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n assumeValid:\n (_options$assumeValid =\n options === null || options === void 0\n ? void 0\n : options.assumeValid) !== null && _options$assumeValid !== void 0\n ? _options$assumeValid\n : false,\n }; // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if ((0, _definition.isListType)(type)) {\n // @ts-expect-error\n return new _definition.GraphQLList(replaceType(type.ofType));\n }\n\n if ((0, _definition.isNonNullType)(type)) {\n // @ts-expect-error\n return new _definition.GraphQLNonNull(replaceType(type.ofType));\n } // @ts-expect-error FIXME\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n return typeMap[type.name];\n }\n\n function replaceDirective(directive) {\n const config = directive.toConfig();\n return new _directives.GraphQLDirective({\n ...config,\n args: (0, _mapValue.mapValue)(config.args, extendArg),\n });\n }\n\n function extendNamedType(type) {\n if (\n (0, _introspection.isIntrospectionType)(type) ||\n (0, _scalars.isSpecifiedScalarType)(type)\n ) {\n // Builtin types are not extended.\n return type;\n }\n\n if ((0, _definition.isScalarType)(type)) {\n return extendScalarType(type);\n }\n\n if ((0, _definition.isObjectType)(type)) {\n return extendObjectType(type);\n }\n\n if ((0, _definition.isInterfaceType)(type)) {\n return extendInterfaceType(type);\n }\n\n if ((0, _definition.isUnionType)(type)) {\n return extendUnionType(type);\n }\n\n if ((0, _definition.isEnumType)(type)) {\n return extendEnumType(type);\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n return extendInputObjectType(type);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible type definition nodes have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected type: ' + (0, _inspect.inspect)(type),\n );\n }\n\n function extendInputObjectType(type) {\n var _typeExtensionsMap$co;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co !== void 0\n ? _typeExtensionsMap$co\n : [];\n return new _definition.GraphQLInputObjectType({\n ...config,\n fields: () => ({\n ...(0, _mapValue.mapValue)(config.fields, (field) => ({\n ...field,\n type: replaceType(field.type),\n })),\n ...buildInputFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendEnumType(type) {\n var _typeExtensionsMap$ty;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n _typeExtensionsMap$ty !== void 0\n ? _typeExtensionsMap$ty\n : [];\n return new _definition.GraphQLEnumType({\n ...config,\n values: { ...config.values, ...buildEnumValueMap(extensions) },\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendScalarType(type) {\n var _typeExtensionsMap$co2;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co2 !== void 0\n ? _typeExtensionsMap$co2\n : [];\n let specifiedByURL = config.specifiedByURL;\n\n for (const extensionNode of extensions) {\n var _getSpecifiedByURL;\n\n specifiedByURL =\n (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n _getSpecifiedByURL !== void 0\n ? _getSpecifiedByURL\n : specifiedByURL;\n }\n\n return new _definition.GraphQLScalarType({\n ...config,\n specifiedByURL,\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendObjectType(type) {\n var _typeExtensionsMap$co3;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co3 !== void 0\n ? _typeExtensionsMap$co3\n : [];\n return new _definition.GraphQLObjectType({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...(0, _mapValue.mapValue)(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendInterfaceType(type) {\n var _typeExtensionsMap$co4;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co4 !== void 0\n ? _typeExtensionsMap$co4\n : [];\n return new _definition.GraphQLInterfaceType({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...(0, _mapValue.mapValue)(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendUnionType(type) {\n var _typeExtensionsMap$co5;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co5 !== void 0\n ? _typeExtensionsMap$co5\n : [];\n return new _definition.GraphQLUnionType({\n ...config,\n types: () => [\n ...type.getTypes().map(replaceNamedType),\n ...buildUnionTypes(extensions),\n ],\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendField(field) {\n return {\n ...field,\n type: replaceType(field.type),\n args: field.args && (0, _mapValue.mapValue)(field.args, extendArg),\n };\n }\n\n function extendArg(arg) {\n return { ...arg, type: replaceType(arg.type) };\n }\n\n function getOperationTypes(nodes) {\n const opTypes = {};\n\n for (const node of nodes) {\n var _node$operationTypes;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const operationTypesNodes =\n /* c8 ignore next */\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n opTypes[operationType.operation] = getNamedType(operationType.type);\n }\n }\n\n return opTypes;\n }\n\n function getNamedType(node) {\n var _stdTypeMap$name2;\n\n const name = node.name.value;\n const type =\n (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n _stdTypeMap$name2 !== void 0\n ? _stdTypeMap$name2\n : typeMap[name];\n\n if (type === undefined) {\n throw new Error(`Unknown type: \"${name}\".`);\n }\n\n return type;\n }\n\n function getWrappedType(node) {\n if (node.kind === _kinds.Kind.LIST_TYPE) {\n return new _definition.GraphQLList(getWrappedType(node.type));\n }\n\n if (node.kind === _kinds.Kind.NON_NULL_TYPE) {\n return new _definition.GraphQLNonNull(getWrappedType(node.type));\n }\n\n return getNamedType(node);\n }\n\n function buildDirective(node) {\n var _node$description;\n\n return new _directives.GraphQLDirective({\n name: node.name.value,\n description:\n (_node$description = node.description) === null ||\n _node$description === void 0\n ? void 0\n : _node$description.value,\n // @ts-expect-error\n locations: node.locations.map(({ value }) => value),\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n astNode: node,\n });\n }\n\n function buildFieldMap(nodes) {\n const fieldConfigMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const nodeFields =\n /* c8 ignore next */\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n\n for (const field of nodeFields) {\n var _field$description;\n\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: getWrappedType(field.type),\n description:\n (_field$description = field.description) === null ||\n _field$description === void 0\n ? void 0\n : _field$description.value,\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return fieldConfigMap;\n }\n\n function buildArgumentMap(args) {\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const argsNodes =\n /* c8 ignore next */\n args !== null && args !== void 0 ? args : [];\n const argConfigMap = Object.create(null);\n\n for (const arg of argsNodes) {\n var _arg$description;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(arg.type);\n argConfigMap[arg.name.value] = {\n type,\n description:\n (_arg$description = arg.description) === null ||\n _arg$description === void 0\n ? void 0\n : _arg$description.value,\n defaultValue: (0, _valueFromAST.valueFromAST)(arg.defaultValue, type),\n deprecationReason: getDeprecationReason(arg),\n astNode: arg,\n };\n }\n\n return argConfigMap;\n }\n\n function buildInputFieldMap(nodes) {\n const inputFieldMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields2;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const fieldsNodes =\n /* c8 ignore next */\n (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n ? _node$fields2\n : [];\n\n for (const field of fieldsNodes) {\n var _field$description2;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(field.type);\n inputFieldMap[field.name.value] = {\n type,\n description:\n (_field$description2 = field.description) === null ||\n _field$description2 === void 0\n ? void 0\n : _field$description2.value,\n defaultValue: (0, _valueFromAST.valueFromAST)(\n field.defaultValue,\n type,\n ),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return inputFieldMap;\n }\n\n function buildEnumValueMap(nodes) {\n const enumValueMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$values;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const valuesNodes =\n /* c8 ignore next */\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n\n for (const value of valuesNodes) {\n var _value$description;\n\n enumValueMap[value.name.value] = {\n description:\n (_value$description = value.description) === null ||\n _value$description === void 0\n ? void 0\n : _value$description.value,\n deprecationReason: getDeprecationReason(value),\n astNode: value,\n };\n }\n }\n\n return enumValueMap;\n }\n\n function buildInterfaces(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$interfaces$map, _node$interfaces;\n\n return (\n /* c8 ignore next */\n (_node$interfaces$map =\n (_node$interfaces = node.interfaces) === null ||\n _node$interfaces === void 0\n ? void 0\n : _node$interfaces.map(getNamedType)) !== null &&\n _node$interfaces$map !== void 0\n ? _node$interfaces$map\n : []\n );\n },\n );\n }\n\n function buildUnionTypes(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$types$map, _node$types;\n\n return (\n /* c8 ignore next */\n (_node$types$map =\n (_node$types = node.types) === null || _node$types === void 0\n ? void 0\n : _node$types.map(getNamedType)) !== null &&\n _node$types$map !== void 0\n ? _node$types$map\n : []\n );\n },\n );\n }\n\n function buildType(astNode) {\n var _typeExtensionsMap$na;\n\n const name = astNode.name.value;\n const extensionASTNodes =\n (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n _typeExtensionsMap$na !== void 0\n ? _typeExtensionsMap$na\n : [];\n\n switch (astNode.kind) {\n case _kinds.Kind.OBJECT_TYPE_DEFINITION: {\n var _astNode$description;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _definition.GraphQLObjectType({\n name,\n description:\n (_astNode$description = astNode.description) === null ||\n _astNode$description === void 0\n ? void 0\n : _astNode$description.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _kinds.Kind.INTERFACE_TYPE_DEFINITION: {\n var _astNode$description2;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _definition.GraphQLInterfaceType({\n name,\n description:\n (_astNode$description2 = astNode.description) === null ||\n _astNode$description2 === void 0\n ? void 0\n : _astNode$description2.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _kinds.Kind.ENUM_TYPE_DEFINITION: {\n var _astNode$description3;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _definition.GraphQLEnumType({\n name,\n description:\n (_astNode$description3 = astNode.description) === null ||\n _astNode$description3 === void 0\n ? void 0\n : _astNode$description3.value,\n values: buildEnumValueMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _kinds.Kind.UNION_TYPE_DEFINITION: {\n var _astNode$description4;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _definition.GraphQLUnionType({\n name,\n description:\n (_astNode$description4 = astNode.description) === null ||\n _astNode$description4 === void 0\n ? void 0\n : _astNode$description4.value,\n types: () => buildUnionTypes(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _kinds.Kind.SCALAR_TYPE_DEFINITION: {\n var _astNode$description5;\n\n return new _definition.GraphQLScalarType({\n name,\n description:\n (_astNode$description5 = astNode.description) === null ||\n _astNode$description5 === void 0\n ? void 0\n : _astNode$description5.value,\n specifiedByURL: getSpecifiedByURL(astNode),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n var _astNode$description6;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _definition.GraphQLInputObjectType({\n name,\n description:\n (_astNode$description6 = astNode.description) === null ||\n _astNode$description6 === void 0\n ? void 0\n : _astNode$description6.value,\n fields: () => buildInputFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n }\n }\n}\n\nconst stdTypeMap = (0, _keyMap.keyMap)(\n [..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes],\n (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n const deprecated = (0, _values.getDirectiveValues)(\n _directives.GraphQLDeprecatedDirective,\n node,\n ); // @ts-expect-error validated by `getDirectiveValues`\n\n return deprecated === null || deprecated === void 0\n ? void 0\n : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n const specifiedBy = (0, _values.getDirectiveValues)(\n _directives.GraphQLSpecifiedByDirective,\n node,\n ); // @ts-expect-error validated by `getDirectiveValues`\n\n return specifiedBy === null || specifiedBy === void 0\n ? void 0\n : specifiedBy.url;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.buildASTSchema = buildASTSchema;\nexports.buildSchema = buildSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _validate = require('../validation/validate.js');\n\nvar _extendSchema = require('./extendSchema.js');\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nfunction buildASTSchema(documentAST, options) {\n (documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT) ||\n (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n (0, _validate.assertValidSDL)(documentAST);\n }\n\n const emptySchemaConfig = {\n description: undefined,\n types: [],\n directives: [],\n extensions: Object.create(null),\n extensionASTNodes: [],\n assumeValid: false,\n };\n const config = (0, _extendSchema.extendSchemaImpl)(\n emptySchemaConfig,\n documentAST,\n options,\n );\n\n if (config.astNode == null) {\n for (const type of config.types) {\n switch (type.name) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n case 'Query':\n // @ts-expect-error validated in `validateSchema`\n config.query = type;\n break;\n\n case 'Mutation':\n // @ts-expect-error validated in `validateSchema`\n config.mutation = type;\n break;\n\n case 'Subscription':\n // @ts-expect-error validated in `validateSchema`\n config.subscription = type;\n break;\n }\n }\n }\n\n const directives = [\n ...config.directives, // If specified directives were not explicitly declared, add them.\n ..._directives.specifiedDirectives.filter((stdDirective) =>\n config.directives.every(\n (directive) => directive.name !== stdDirective.name,\n ),\n ),\n ];\n return new _schema.GraphQLSchema({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n const document = (0, _parser.parse)(source, {\n noLocation:\n options === null || options === void 0 ? void 0 : options.noLocation,\n allowLegacyFragmentVariables:\n options === null || options === void 0\n ? void 0\n : options.allowLegacyFragmentVariables,\n });\n return buildASTSchema(document, {\n assumeValidSDL:\n options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n assumeValid:\n options === null || options === void 0 ? void 0 : options.assumeValid,\n });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.lexicographicSortSchema = lexicographicSortSchema;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _naturalCompare = require('../jsutils/naturalCompare.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _schema = require('../type/schema.js');\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\nfunction lexicographicSortSchema(schema) {\n const schemaConfig = schema.toConfig();\n const typeMap = (0, _keyValMap.keyValMap)(\n sortByName(schemaConfig.types),\n (type) => type.name,\n sortNamedType,\n );\n return new _schema.GraphQLSchema({\n ...schemaConfig,\n types: Object.values(typeMap),\n directives: sortByName(schemaConfig.directives).map(sortDirective),\n query: replaceMaybeType(schemaConfig.query),\n mutation: replaceMaybeType(schemaConfig.mutation),\n subscription: replaceMaybeType(schemaConfig.subscription),\n });\n\n function replaceType(type) {\n if ((0, _definition.isListType)(type)) {\n // @ts-expect-error\n return new _definition.GraphQLList(replaceType(type.ofType));\n } else if ((0, _definition.isNonNullType)(type)) {\n // @ts-expect-error\n return new _definition.GraphQLNonNull(replaceType(type.ofType));\n } // @ts-expect-error FIXME: TS Conversion\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function replaceMaybeType(maybeType) {\n return maybeType && replaceNamedType(maybeType);\n }\n\n function sortDirective(directive) {\n const config = directive.toConfig();\n return new _directives.GraphQLDirective({\n ...config,\n locations: sortBy(config.locations, (x) => x),\n args: sortArgs(config.args),\n });\n }\n\n function sortArgs(args) {\n return sortObjMap(args, (arg) => ({ ...arg, type: replaceType(arg.type) }));\n }\n\n function sortFields(fieldsMap) {\n return sortObjMap(fieldsMap, (field) => ({\n ...field,\n type: replaceType(field.type),\n args: field.args && sortArgs(field.args),\n }));\n }\n\n function sortInputFields(fieldsMap) {\n return sortObjMap(fieldsMap, (field) => ({\n ...field,\n type: replaceType(field.type),\n }));\n }\n\n function sortTypes(array) {\n return sortByName(array).map(replaceNamedType);\n }\n\n function sortNamedType(type) {\n if (\n (0, _definition.isScalarType)(type) ||\n (0, _introspection.isIntrospectionType)(type)\n ) {\n return type;\n }\n\n if ((0, _definition.isObjectType)(type)) {\n const config = type.toConfig();\n return new _definition.GraphQLObjectType({\n ...config,\n interfaces: () => sortTypes(config.interfaces),\n fields: () => sortFields(config.fields),\n });\n }\n\n if ((0, _definition.isInterfaceType)(type)) {\n const config = type.toConfig();\n return new _definition.GraphQLInterfaceType({\n ...config,\n interfaces: () => sortTypes(config.interfaces),\n fields: () => sortFields(config.fields),\n });\n }\n\n if ((0, _definition.isUnionType)(type)) {\n const config = type.toConfig();\n return new _definition.GraphQLUnionType({\n ...config,\n types: () => sortTypes(config.types),\n });\n }\n\n if ((0, _definition.isEnumType)(type)) {\n const config = type.toConfig();\n return new _definition.GraphQLEnumType({\n ...config,\n values: sortObjMap(config.values, (value) => value),\n });\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n const config = type.toConfig();\n return new _definition.GraphQLInputObjectType({\n ...config,\n fields: () => sortInputFields(config.fields),\n });\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected type: ' + (0, _inspect.inspect)(type),\n );\n }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n const sortedMap = Object.create(null);\n\n for (const key of Object.keys(map).sort(_naturalCompare.naturalCompare)) {\n sortedMap[key] = sortValueFn(map[key]);\n }\n\n return sortedMap;\n}\n\nfunction sortByName(array) {\n return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy(array, mapToKey) {\n return array.slice().sort((obj1, obj2) => {\n const key1 = mapToKey(obj1);\n const key2 = mapToKey(obj2);\n return (0, _naturalCompare.naturalCompare)(key1, key2);\n });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.printIntrospectionSchema = printIntrospectionSchema;\nexports.printSchema = printSchema;\nexports.printType = printType;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _blockString = require('../language/blockString.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nfunction printSchema(schema) {\n return printFilteredSchema(\n schema,\n (n) => !(0, _directives.isSpecifiedDirective)(n),\n isDefinedType,\n );\n}\n\nfunction printIntrospectionSchema(schema) {\n return printFilteredSchema(\n schema,\n _directives.isSpecifiedDirective,\n _introspection.isIntrospectionType,\n );\n}\n\nfunction isDefinedType(type) {\n return (\n !(0, _scalars.isSpecifiedScalarType)(type) &&\n !(0, _introspection.isIntrospectionType)(type)\n );\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter) {\n const directives = schema.getDirectives().filter(directiveFilter);\n const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n return [\n printSchemaDefinition(schema),\n ...directives.map((directive) => printDirective(directive)),\n ...types.map((type) => printType(type)),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema) {\n if (schema.description == null && isSchemaOfCommonNames(schema)) {\n return;\n }\n\n const operationTypes = [];\n const queryType = schema.getQueryType();\n\n if (queryType) {\n operationTypes.push(` query: ${queryType.name}`);\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType) {\n operationTypes.push(` mutation: ${mutationType.name}`);\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n operationTypes.push(` subscription: ${subscriptionType.name}`);\n }\n\n return printDescription(schema) + `schema {\\n${operationTypes.join('\\n')}\\n}`;\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n * schema {\n * query: Query\n * mutation: Mutation\n * subscription: Subscription\n * }\n * ```\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\nfunction isSchemaOfCommonNames(schema) {\n const queryType = schema.getQueryType();\n\n if (queryType && queryType.name !== 'Query') {\n return false;\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && mutationType.name !== 'Mutation') {\n return false;\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && subscriptionType.name !== 'Subscription') {\n return false;\n }\n\n return true;\n}\n\nfunction printType(type) {\n if ((0, _definition.isScalarType)(type)) {\n return printScalar(type);\n }\n\n if ((0, _definition.isObjectType)(type)) {\n return printObject(type);\n }\n\n if ((0, _definition.isInterfaceType)(type)) {\n return printInterface(type);\n }\n\n if ((0, _definition.isUnionType)(type)) {\n return printUnion(type);\n }\n\n if ((0, _definition.isEnumType)(type)) {\n return printEnum(type);\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n return printInputObject(type);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected type: ' + (0, _inspect.inspect)(type),\n );\n}\n\nfunction printScalar(type) {\n return (\n printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type)\n );\n}\n\nfunction printImplementedInterfaces(type) {\n const interfaces = type.getInterfaces();\n return interfaces.length\n ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n : '';\n}\n\nfunction printObject(type) {\n return (\n printDescription(type) +\n `type ${type.name}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printInterface(type) {\n return (\n printDescription(type) +\n `interface ${type.name}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printUnion(type) {\n const types = type.getTypes();\n const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type) {\n const values = type\n .getValues()\n .map(\n (value, i) =>\n printDescription(value, ' ', !i) +\n ' ' +\n value.name +\n printDeprecated(value.deprecationReason),\n );\n return printDescription(type) + `enum ${type.name}` + printBlock(values);\n}\n\nfunction printInputObject(type) {\n const fields = Object.values(type.getFields()).map(\n (f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),\n );\n return printDescription(type) + `input ${type.name}` + printBlock(fields);\n}\n\nfunction printFields(type) {\n const fields = Object.values(type.getFields()).map(\n (f, i) =>\n printDescription(f, ' ', !i) +\n ' ' +\n f.name +\n printArgs(f.args, ' ') +\n ': ' +\n String(f.type) +\n printDeprecated(f.deprecationReason),\n );\n return printBlock(fields);\n}\n\nfunction printBlock(items) {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(args, indentation = '') {\n if (args.length === 0) {\n return '';\n } // If every arg does not have a description, print them on one line.\n\n if (args.every((arg) => !arg.description)) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return (\n '(\\n' +\n args\n .map(\n (arg, i) =>\n printDescription(arg, ' ' + indentation, !i) +\n ' ' +\n indentation +\n printInputValue(arg),\n )\n .join('\\n') +\n '\\n' +\n indentation +\n ')'\n );\n}\n\nfunction printInputValue(arg) {\n const defaultAST = (0, _astFromValue.astFromValue)(\n arg.defaultValue,\n arg.type,\n );\n let argDecl = arg.name + ': ' + String(arg.type);\n\n if (defaultAST) {\n argDecl += ` = ${(0, _printer.print)(defaultAST)}`;\n }\n\n return argDecl + printDeprecated(arg.deprecationReason);\n}\n\nfunction printDirective(directive) {\n return (\n printDescription(directive) +\n 'directive @' +\n directive.name +\n printArgs(directive.args) +\n (directive.isRepeatable ? ' repeatable' : '') +\n ' on ' +\n directive.locations.join(' | ')\n );\n}\n\nfunction printDeprecated(reason) {\n if (reason == null) {\n return '';\n }\n\n if (reason !== _directives.DEFAULT_DEPRECATION_REASON) {\n const astValue = (0, _printer.print)({\n kind: _kinds.Kind.STRING,\n value: reason,\n });\n return ` @deprecated(reason: ${astValue})`;\n }\n\n return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar) {\n if (scalar.specifiedByURL == null) {\n return '';\n }\n\n const astValue = (0, _printer.print)({\n kind: _kinds.Kind.STRING,\n value: scalar.specifiedByURL,\n });\n return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(def, indentation = '', firstInBlock = true) {\n const { description } = def;\n\n if (description == null) {\n return '';\n }\n\n const blockString = (0, _printer.print)({\n kind: _kinds.Kind.STRING,\n value: description,\n block: (0, _blockString.isPrintableAsBlockString)(description),\n });\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.concatAST = concatAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\nfunction concatAST(documents) {\n const definitions = [];\n\n for (const doc of documents) {\n definitions.push(...doc.definitions);\n }\n\n return {\n kind: _kinds.Kind.DOCUMENT,\n definitions,\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.separateOperations = separateOperations;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\nfunction separateOperations(documentAST) {\n const operations = [];\n const depGraph = Object.create(null); // Populate metadata and build a dependency graph.\n\n for (const definitionNode of documentAST.definitions) {\n switch (definitionNode.kind) {\n case _kinds.Kind.OPERATION_DEFINITION:\n operations.push(definitionNode);\n break;\n\n case _kinds.Kind.FRAGMENT_DEFINITION:\n depGraph[definitionNode.name.value] = collectDependencies(\n definitionNode.selectionSet,\n );\n break;\n\n default: // ignore non-executable definitions\n }\n } // For each operation, produce a new synthesized AST which includes only what\n // is necessary for completing that operation.\n\n const separatedDocumentASTs = Object.create(null);\n\n for (const operation of operations) {\n const dependencies = new Set();\n\n for (const fragmentName of collectDependencies(operation.selectionSet)) {\n collectTransitiveDependencies(dependencies, depGraph, fragmentName);\n } // Provides the empty string for anonymous operations.\n\n const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted\n // to retain the same order as the original document.\n\n separatedDocumentASTs[operationName] = {\n kind: _kinds.Kind.DOCUMENT,\n definitions: documentAST.definitions.filter(\n (node) =>\n node === operation ||\n (node.kind === _kinds.Kind.FRAGMENT_DEFINITION &&\n dependencies.has(node.name.value)),\n ),\n };\n }\n\n return separatedDocumentASTs;\n}\n\n// From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n if (!collected.has(fromName)) {\n collected.add(fromName);\n const immediateDeps = depGraph[fromName];\n\n if (immediateDeps !== undefined) {\n for (const toName of immediateDeps) {\n collectTransitiveDependencies(collected, depGraph, toName);\n }\n }\n }\n}\n\nfunction collectDependencies(selectionSet) {\n const dependencies = [];\n (0, _visitor.visit)(selectionSet, {\n FragmentSpread(node) {\n dependencies.push(node.name.value);\n },\n });\n return dependencies;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.stripIgnoredCharacters = stripIgnoredCharacters;\n\nvar _blockString = require('../language/blockString.js');\n\nvar _lexer = require('../language/lexer.js');\n\nvar _source = require('../language/source.js');\n\nvar _tokenKind = require('../language/tokenKind.js');\n\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n * - UnicodeBOM\n * - WhiteSpace\n * - LineTerminator\n * - Comment\n * - Comma\n * - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * ```graphql\n * query SomeQuery($foo: String!, $bar: String) {\n * someField(foo: $foo, bar: $bar) {\n * a\n * b {\n * c\n * d\n * }\n * }\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n * ```\n *\n * SDL example:\n *\n * ```graphql\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n * \"\"\"\n * Field description\n * \"\"\"\n * bar: String\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n * ```\n */\nfunction stripIgnoredCharacters(source) {\n const sourceObj = (0, _source.isSource)(source)\n ? source\n : new _source.Source(source);\n const body = sourceObj.body;\n const lexer = new _lexer.Lexer(sourceObj);\n let strippedBody = '';\n let wasLastAddedTokenNonPunctuator = false;\n\n while (lexer.advance().kind !== _tokenKind.TokenKind.EOF) {\n const currentToken = lexer.token;\n const tokenKind = currentToken.kind;\n /**\n * Every two non-punctuator tokens should have space between them.\n * Also prevent case of non-punctuator token following by spread resulting\n * in invalid token (e.g. `1...` is invalid Float token).\n */\n\n const isNonPunctuator = !(0, _lexer.isPunctuatorTokenKind)(\n currentToken.kind,\n );\n\n if (wasLastAddedTokenNonPunctuator) {\n if (\n isNonPunctuator ||\n currentToken.kind === _tokenKind.TokenKind.SPREAD\n ) {\n strippedBody += ' ';\n }\n }\n\n const tokenBody = body.slice(currentToken.start, currentToken.end);\n\n if (tokenKind === _tokenKind.TokenKind.BLOCK_STRING) {\n strippedBody += (0, _blockString.printBlockString)(currentToken.value, {\n minimize: true,\n });\n } else {\n strippedBody += tokenBody;\n }\n\n wasLastAddedTokenNonPunctuator = isNonPunctuator;\n }\n\n return strippedBody;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.assertValidName = assertValidName;\nexports.isValidNameError = isValidNameError;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _assertName = require('../type/assertName.js');\n\n/* c8 ignore start */\n\n/**\n * Upholds the spec rules about naming.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\nfunction assertValidName(name) {\n const error = isValidNameError(name);\n\n if (error) {\n throw error;\n }\n\n return name;\n}\n/**\n * Returns an Error if a name is invalid.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction isValidNameError(name) {\n typeof name === 'string' ||\n (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n\n if (name.startsWith('__')) {\n return new _GraphQLError.GraphQLError(\n `Name \"${name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n );\n }\n\n try {\n (0, _assertName.assertName)(name);\n } catch (error) {\n return error;\n }\n}\n/* c8 ignore stop */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.DangerousChangeType = exports.BreakingChangeType = void 0;\nexports.findBreakingChanges = findBreakingChanges;\nexports.findDangerousChanges = findDangerousChanges;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nvar _sortValueNode = require('./sortValueNode.js');\n\nlet BreakingChangeType;\nexports.BreakingChangeType = BreakingChangeType;\n\n(function (BreakingChangeType) {\n BreakingChangeType['TYPE_REMOVED'] = 'TYPE_REMOVED';\n BreakingChangeType['TYPE_CHANGED_KIND'] = 'TYPE_CHANGED_KIND';\n BreakingChangeType['TYPE_REMOVED_FROM_UNION'] = 'TYPE_REMOVED_FROM_UNION';\n BreakingChangeType['VALUE_REMOVED_FROM_ENUM'] = 'VALUE_REMOVED_FROM_ENUM';\n BreakingChangeType['REQUIRED_INPUT_FIELD_ADDED'] =\n 'REQUIRED_INPUT_FIELD_ADDED';\n BreakingChangeType['IMPLEMENTED_INTERFACE_REMOVED'] =\n 'IMPLEMENTED_INTERFACE_REMOVED';\n BreakingChangeType['FIELD_REMOVED'] = 'FIELD_REMOVED';\n BreakingChangeType['FIELD_CHANGED_KIND'] = 'FIELD_CHANGED_KIND';\n BreakingChangeType['REQUIRED_ARG_ADDED'] = 'REQUIRED_ARG_ADDED';\n BreakingChangeType['ARG_REMOVED'] = 'ARG_REMOVED';\n BreakingChangeType['ARG_CHANGED_KIND'] = 'ARG_CHANGED_KIND';\n BreakingChangeType['DIRECTIVE_REMOVED'] = 'DIRECTIVE_REMOVED';\n BreakingChangeType['DIRECTIVE_ARG_REMOVED'] = 'DIRECTIVE_ARG_REMOVED';\n BreakingChangeType['REQUIRED_DIRECTIVE_ARG_ADDED'] =\n 'REQUIRED_DIRECTIVE_ARG_ADDED';\n BreakingChangeType['DIRECTIVE_REPEATABLE_REMOVED'] =\n 'DIRECTIVE_REPEATABLE_REMOVED';\n BreakingChangeType['DIRECTIVE_LOCATION_REMOVED'] =\n 'DIRECTIVE_LOCATION_REMOVED';\n})(\n BreakingChangeType || (exports.BreakingChangeType = BreakingChangeType = {}),\n);\n\nlet DangerousChangeType;\nexports.DangerousChangeType = DangerousChangeType;\n\n(function (DangerousChangeType) {\n DangerousChangeType['VALUE_ADDED_TO_ENUM'] = 'VALUE_ADDED_TO_ENUM';\n DangerousChangeType['TYPE_ADDED_TO_UNION'] = 'TYPE_ADDED_TO_UNION';\n DangerousChangeType['OPTIONAL_INPUT_FIELD_ADDED'] =\n 'OPTIONAL_INPUT_FIELD_ADDED';\n DangerousChangeType['OPTIONAL_ARG_ADDED'] = 'OPTIONAL_ARG_ADDED';\n DangerousChangeType['IMPLEMENTED_INTERFACE_ADDED'] =\n 'IMPLEMENTED_INTERFACE_ADDED';\n DangerousChangeType['ARG_DEFAULT_VALUE_CHANGE'] = 'ARG_DEFAULT_VALUE_CHANGE';\n})(\n DangerousChangeType ||\n (exports.DangerousChangeType = DangerousChangeType = {}),\n);\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nfunction findBreakingChanges(oldSchema, newSchema) {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in BreakingChangeType,\n );\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nfunction findDangerousChanges(oldSchema, newSchema) {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in DangerousChangeType,\n );\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n return [\n ...findTypeChanges(oldSchema, newSchema),\n ...findDirectiveChanges(oldSchema, newSchema),\n ];\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n const schemaChanges = [];\n const directivesDiff = diff(\n oldSchema.getDirectives(),\n newSchema.getDirectives(),\n );\n\n for (const oldDirective of directivesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: `${oldDirective.name} was removed.`,\n });\n }\n\n for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n const argsDiff = diff(oldDirective.args, newDirective.args);\n\n for (const newArg of argsDiff.added) {\n if ((0, _definition.isRequiredArgument)(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,\n });\n }\n }\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: `${oldArg.name} was removed from ${oldDirective.name}.`,\n });\n }\n\n if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n description: `Repeatable flag was removed from ${oldDirective.name}.`,\n });\n }\n\n for (const location of oldDirective.locations) {\n if (!newDirective.locations.includes(location)) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: `${location} was removed from ${oldDirective.name}.`,\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n const schemaChanges = [];\n const typesDiff = diff(\n Object.values(oldSchema.getTypeMap()),\n Object.values(newSchema.getTypeMap()),\n );\n\n for (const oldType of typesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: (0, _scalars.isSpecifiedScalarType)(oldType)\n ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`\n : `${oldType.name} was removed.`,\n });\n }\n\n for (const [oldType, newType] of typesDiff.persisted) {\n if (\n (0, _definition.isEnumType)(oldType) &&\n (0, _definition.isEnumType)(newType)\n ) {\n schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n } else if (\n (0, _definition.isUnionType)(oldType) &&\n (0, _definition.isUnionType)(newType)\n ) {\n schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n } else if (\n (0, _definition.isInputObjectType)(oldType) &&\n (0, _definition.isInputObjectType)(newType)\n ) {\n schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n } else if (\n (0, _definition.isObjectType)(oldType) &&\n (0, _definition.isObjectType)(newType)\n ) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (\n (0, _definition.isInterfaceType)(oldType) &&\n (0, _definition.isInterfaceType)(newType)\n ) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description:\n `${oldType.name} changed from ` +\n `${typeKindName(oldType)} to ${typeKindName(newType)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const newField of fieldsDiff.added) {\n if ((0, _definition.isRequiredInputField)(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: `A required field ${newField.name} on input type ${oldType.name} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,\n });\n }\n }\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `${oldType.name}.${oldField.name} was removed.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldField.type,\n newField.type,\n );\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description:\n `${oldType.name}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n const schemaChanges = [];\n const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (const newPossibleType of possibleTypesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: `${newPossibleType.name} was added to union type ${oldType.name}.`,\n });\n }\n\n for (const oldPossibleType of possibleTypesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n const schemaChanges = [];\n const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (const newValue of valuesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: `${newValue.name} was added to enum type ${oldType.name}.`,\n });\n }\n\n for (const oldValue of valuesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: `${oldValue.name} was removed from enum type ${oldType.name}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(oldType, newType) {\n const schemaChanges = [];\n const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (const newInterface of interfacesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,\n });\n }\n\n for (const oldInterface of interfacesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `${oldType.name}.${oldField.name} was removed.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n schemaChanges.push(...findArgChanges(oldType, oldField, newField));\n const isSafe = isChangeSafeForObjectOrInterfaceField(\n oldField.type,\n newField.type,\n );\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description:\n `${oldType.name}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n const schemaChanges = [];\n const argsDiff = diff(oldField.args, newField.args);\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,\n });\n }\n\n for (const [oldArg, newArg] of argsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldArg.type,\n newArg.type,\n );\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description:\n `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n } else if (oldArg.defaultValue !== undefined) {\n if (newArg.defaultValue === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,\n });\n } else {\n // Since we looking only for client's observable changes we should\n // compare default values in the same representation as they are\n // represented inside introspection.\n const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);\n const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n if (oldValueStr !== newValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,\n });\n }\n }\n }\n }\n\n for (const newArg of argsDiff.added) {\n if ((0, _definition.isRequiredArgument)(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n if ((0, _definition.isListType)(oldType)) {\n return (\n // if they're both lists, make sure the underlying types are compatible\n ((0, _definition.isListType)(newType) &&\n isChangeSafeForObjectOrInterfaceField(\n oldType.ofType,\n newType.ofType,\n )) || // moving from nullable to non-null of the same underlying type is safe\n ((0, _definition.isNonNullType)(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n }\n\n if ((0, _definition.isNonNullType)(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return (\n (0, _definition.isNonNullType)(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n );\n }\n\n return (\n // if they're both named types, see if their names are equivalent\n ((0, _definition.isNamedType)(newType) && oldType.name === newType.name) || // moving from nullable to non-null of the same underlying type is safe\n ((0, _definition.isNonNullType)(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n if ((0, _definition.isListType)(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return (\n (0, _definition.isListType)(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n );\n }\n\n if ((0, _definition.isNonNullType)(oldType)) {\n return (\n // if they're both non-null, make sure the underlying types are\n // compatible\n ((0, _definition.isNonNullType)(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(\n oldType.ofType,\n newType.ofType,\n )) || // moving from non-null to nullable of the same underlying type is safe\n (!(0, _definition.isNonNullType)(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n );\n } // if they're both named types, see if their names are equivalent\n\n return (0, _definition.isNamedType)(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n if ((0, _definition.isScalarType)(type)) {\n return 'a Scalar type';\n }\n\n if ((0, _definition.isObjectType)(type)) {\n return 'an Object type';\n }\n\n if ((0, _definition.isInterfaceType)(type)) {\n return 'an Interface type';\n }\n\n if ((0, _definition.isUnionType)(type)) {\n return 'a Union type';\n }\n\n if ((0, _definition.isEnumType)(type)) {\n return 'an Enum type';\n }\n\n if ((0, _definition.isInputObjectType)(type)) {\n return 'an Input type';\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false ||\n (0, _invariant.invariant)(\n false,\n 'Unexpected type: ' + (0, _inspect.inspect)(type),\n );\n}\n\nfunction stringifyValue(value, type) {\n const ast = (0, _astFromValue.astFromValue)(value, type);\n ast != null || (0, _invariant.invariant)(false);\n return (0, _printer.print)((0, _sortValueNode.sortValueNode)(ast));\n}\n\nfunction diff(oldArray, newArray) {\n const added = [];\n const removed = [];\n const persisted = [];\n const oldMap = (0, _keyMap.keyMap)(oldArray, ({ name }) => name);\n const newMap = (0, _keyMap.keyMap)(newArray, ({ name }) => name);\n\n for (const oldItem of oldArray) {\n const newItem = newMap[oldItem.name];\n\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (const newItem of newArray) {\n if (oldMap[newItem.name] === undefined) {\n added.push(newItem);\n }\n }\n\n return {\n added,\n persisted,\n removed,\n };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'BreakingChangeType', {\n enumerable: true,\n get: function () {\n return _findBreakingChanges.BreakingChangeType;\n },\n});\nObject.defineProperty(exports, 'DangerousChangeType', {\n enumerable: true,\n get: function () {\n return _findBreakingChanges.DangerousChangeType;\n },\n});\nObject.defineProperty(exports, 'TypeInfo', {\n enumerable: true,\n get: function () {\n return _TypeInfo.TypeInfo;\n },\n});\nObject.defineProperty(exports, 'assertValidName', {\n enumerable: true,\n get: function () {\n return _assertValidName.assertValidName;\n },\n});\nObject.defineProperty(exports, 'astFromValue', {\n enumerable: true,\n get: function () {\n return _astFromValue.astFromValue;\n },\n});\nObject.defineProperty(exports, 'buildASTSchema', {\n enumerable: true,\n get: function () {\n return _buildASTSchema.buildASTSchema;\n },\n});\nObject.defineProperty(exports, 'buildClientSchema', {\n enumerable: true,\n get: function () {\n return _buildClientSchema.buildClientSchema;\n },\n});\nObject.defineProperty(exports, 'buildSchema', {\n enumerable: true,\n get: function () {\n return _buildASTSchema.buildSchema;\n },\n});\nObject.defineProperty(exports, 'coerceInputValue', {\n enumerable: true,\n get: function () {\n return _coerceInputValue.coerceInputValue;\n },\n});\nObject.defineProperty(exports, 'concatAST', {\n enumerable: true,\n get: function () {\n return _concatAST.concatAST;\n },\n});\nObject.defineProperty(exports, 'doTypesOverlap', {\n enumerable: true,\n get: function () {\n return _typeComparators.doTypesOverlap;\n },\n});\nObject.defineProperty(exports, 'extendSchema', {\n enumerable: true,\n get: function () {\n return _extendSchema.extendSchema;\n },\n});\nObject.defineProperty(exports, 'findBreakingChanges', {\n enumerable: true,\n get: function () {\n return _findBreakingChanges.findBreakingChanges;\n },\n});\nObject.defineProperty(exports, 'findDangerousChanges', {\n enumerable: true,\n get: function () {\n return _findBreakingChanges.findDangerousChanges;\n },\n});\nObject.defineProperty(exports, 'getIntrospectionQuery', {\n enumerable: true,\n get: function () {\n return _getIntrospectionQuery.getIntrospectionQuery;\n },\n});\nObject.defineProperty(exports, 'getOperationAST', {\n enumerable: true,\n get: function () {\n return _getOperationAST.getOperationAST;\n },\n});\nObject.defineProperty(exports, 'getOperationRootType', {\n enumerable: true,\n get: function () {\n return _getOperationRootType.getOperationRootType;\n },\n});\nObject.defineProperty(exports, 'introspectionFromSchema', {\n enumerable: true,\n get: function () {\n return _introspectionFromSchema.introspectionFromSchema;\n },\n});\nObject.defineProperty(exports, 'isEqualType', {\n enumerable: true,\n get: function () {\n return _typeComparators.isEqualType;\n },\n});\nObject.defineProperty(exports, 'isTypeSubTypeOf', {\n enumerable: true,\n get: function () {\n return _typeComparators.isTypeSubTypeOf;\n },\n});\nObject.defineProperty(exports, 'isValidNameError', {\n enumerable: true,\n get: function () {\n return _assertValidName.isValidNameError;\n },\n});\nObject.defineProperty(exports, 'lexicographicSortSchema', {\n enumerable: true,\n get: function () {\n return _lexicographicSortSchema.lexicographicSortSchema;\n },\n});\nObject.defineProperty(exports, 'printIntrospectionSchema', {\n enumerable: true,\n get: function () {\n return _printSchema.printIntrospectionSchema;\n },\n});\nObject.defineProperty(exports, 'printSchema', {\n enumerable: true,\n get: function () {\n return _printSchema.printSchema;\n },\n});\nObject.defineProperty(exports, 'printType', {\n enumerable: true,\n get: function () {\n return _printSchema.printType;\n },\n});\nObject.defineProperty(exports, 'separateOperations', {\n enumerable: true,\n get: function () {\n return _separateOperations.separateOperations;\n },\n});\nObject.defineProperty(exports, 'stripIgnoredCharacters', {\n enumerable: true,\n get: function () {\n return _stripIgnoredCharacters.stripIgnoredCharacters;\n },\n});\nObject.defineProperty(exports, 'typeFromAST', {\n enumerable: true,\n get: function () {\n return _typeFromAST.typeFromAST;\n },\n});\nObject.defineProperty(exports, 'valueFromAST', {\n enumerable: true,\n get: function () {\n return _valueFromAST.valueFromAST;\n },\n});\nObject.defineProperty(exports, 'valueFromASTUntyped', {\n enumerable: true,\n get: function () {\n return _valueFromASTUntyped.valueFromASTUntyped;\n },\n});\nObject.defineProperty(exports, 'visitWithTypeInfo', {\n enumerable: true,\n get: function () {\n return _TypeInfo.visitWithTypeInfo;\n },\n});\n\nvar _getIntrospectionQuery = require('./getIntrospectionQuery.js');\n\nvar _getOperationAST = require('./getOperationAST.js');\n\nvar _getOperationRootType = require('./getOperationRootType.js');\n\nvar _introspectionFromSchema = require('./introspectionFromSchema.js');\n\nvar _buildClientSchema = require('./buildClientSchema.js');\n\nvar _buildASTSchema = require('./buildASTSchema.js');\n\nvar _extendSchema = require('./extendSchema.js');\n\nvar _lexicographicSortSchema = require('./lexicographicSortSchema.js');\n\nvar _printSchema = require('./printSchema.js');\n\nvar _typeFromAST = require('./typeFromAST.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\nvar _valueFromASTUntyped = require('./valueFromASTUntyped.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nvar _TypeInfo = require('./TypeInfo.js');\n\nvar _coerceInputValue = require('./coerceInputValue.js');\n\nvar _concatAST = require('./concatAST.js');\n\nvar _separateOperations = require('./separateOperations.js');\n\nvar _stripIgnoredCharacters = require('./stripIgnoredCharacters.js');\n\nvar _typeComparators = require('./typeComparators.js');\n\nvar _assertValidName = require('./assertValidName.js');\n\nvar _findBreakingChanges = require('./findBreakingChanges.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nObject.defineProperty(exports, 'BREAK', {\n enumerable: true,\n get: function () {\n return _index2.BREAK;\n },\n});\nObject.defineProperty(exports, 'BreakingChangeType', {\n enumerable: true,\n get: function () {\n return _index6.BreakingChangeType;\n },\n});\nObject.defineProperty(exports, 'DEFAULT_DEPRECATION_REASON', {\n enumerable: true,\n get: function () {\n return _index.DEFAULT_DEPRECATION_REASON;\n },\n});\nObject.defineProperty(exports, 'DangerousChangeType', {\n enumerable: true,\n get: function () {\n return _index6.DangerousChangeType;\n },\n});\nObject.defineProperty(exports, 'DirectiveLocation', {\n enumerable: true,\n get: function () {\n return _index2.DirectiveLocation;\n },\n});\nObject.defineProperty(exports, 'ExecutableDefinitionsRule', {\n enumerable: true,\n get: function () {\n return _index4.ExecutableDefinitionsRule;\n },\n});\nObject.defineProperty(exports, 'FieldsOnCorrectTypeRule', {\n enumerable: true,\n get: function () {\n return _index4.FieldsOnCorrectTypeRule;\n },\n});\nObject.defineProperty(exports, 'FragmentsOnCompositeTypesRule', {\n enumerable: true,\n get: function () {\n return _index4.FragmentsOnCompositeTypesRule;\n },\n});\nObject.defineProperty(exports, 'GRAPHQL_MAX_INT', {\n enumerable: true,\n get: function () {\n return _index.GRAPHQL_MAX_INT;\n },\n});\nObject.defineProperty(exports, 'GRAPHQL_MIN_INT', {\n enumerable: true,\n get: function () {\n return _index.GRAPHQL_MIN_INT;\n },\n});\nObject.defineProperty(exports, 'GraphQLBoolean', {\n enumerable: true,\n get: function () {\n return _index.GraphQLBoolean;\n },\n});\nObject.defineProperty(exports, 'GraphQLDeprecatedDirective', {\n enumerable: true,\n get: function () {\n return _index.GraphQLDeprecatedDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLDirective', {\n enumerable: true,\n get: function () {\n return _index.GraphQLDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLEnumType', {\n enumerable: true,\n get: function () {\n return _index.GraphQLEnumType;\n },\n});\nObject.defineProperty(exports, 'GraphQLError', {\n enumerable: true,\n get: function () {\n return _index5.GraphQLError;\n },\n});\nObject.defineProperty(exports, 'GraphQLFloat', {\n enumerable: true,\n get: function () {\n return _index.GraphQLFloat;\n },\n});\nObject.defineProperty(exports, 'GraphQLID', {\n enumerable: true,\n get: function () {\n return _index.GraphQLID;\n },\n});\nObject.defineProperty(exports, 'GraphQLIncludeDirective', {\n enumerable: true,\n get: function () {\n return _index.GraphQLIncludeDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLInputObjectType', {\n enumerable: true,\n get: function () {\n return _index.GraphQLInputObjectType;\n },\n});\nObject.defineProperty(exports, 'GraphQLInt', {\n enumerable: true,\n get: function () {\n return _index.GraphQLInt;\n },\n});\nObject.defineProperty(exports, 'GraphQLInterfaceType', {\n enumerable: true,\n get: function () {\n return _index.GraphQLInterfaceType;\n },\n});\nObject.defineProperty(exports, 'GraphQLList', {\n enumerable: true,\n get: function () {\n return _index.GraphQLList;\n },\n});\nObject.defineProperty(exports, 'GraphQLNonNull', {\n enumerable: true,\n get: function () {\n return _index.GraphQLNonNull;\n },\n});\nObject.defineProperty(exports, 'GraphQLObjectType', {\n enumerable: true,\n get: function () {\n return _index.GraphQLObjectType;\n },\n});\nObject.defineProperty(exports, 'GraphQLScalarType', {\n enumerable: true,\n get: function () {\n return _index.GraphQLScalarType;\n },\n});\nObject.defineProperty(exports, 'GraphQLSchema', {\n enumerable: true,\n get: function () {\n return _index.GraphQLSchema;\n },\n});\nObject.defineProperty(exports, 'GraphQLSkipDirective', {\n enumerable: true,\n get: function () {\n return _index.GraphQLSkipDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLSpecifiedByDirective', {\n enumerable: true,\n get: function () {\n return _index.GraphQLSpecifiedByDirective;\n },\n});\nObject.defineProperty(exports, 'GraphQLString', {\n enumerable: true,\n get: function () {\n return _index.GraphQLString;\n },\n});\nObject.defineProperty(exports, 'GraphQLUnionType', {\n enumerable: true,\n get: function () {\n return _index.GraphQLUnionType;\n },\n});\nObject.defineProperty(exports, 'Kind', {\n enumerable: true,\n get: function () {\n return _index2.Kind;\n },\n});\nObject.defineProperty(exports, 'KnownArgumentNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.KnownArgumentNamesRule;\n },\n});\nObject.defineProperty(exports, 'KnownDirectivesRule', {\n enumerable: true,\n get: function () {\n return _index4.KnownDirectivesRule;\n },\n});\nObject.defineProperty(exports, 'KnownFragmentNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.KnownFragmentNamesRule;\n },\n});\nObject.defineProperty(exports, 'KnownTypeNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.KnownTypeNamesRule;\n },\n});\nObject.defineProperty(exports, 'Lexer', {\n enumerable: true,\n get: function () {\n return _index2.Lexer;\n },\n});\nObject.defineProperty(exports, 'Location', {\n enumerable: true,\n get: function () {\n return _index2.Location;\n },\n});\nObject.defineProperty(exports, 'LoneAnonymousOperationRule', {\n enumerable: true,\n get: function () {\n return _index4.LoneAnonymousOperationRule;\n },\n});\nObject.defineProperty(exports, 'LoneSchemaDefinitionRule', {\n enumerable: true,\n get: function () {\n return _index4.LoneSchemaDefinitionRule;\n },\n});\nObject.defineProperty(exports, 'NoDeprecatedCustomRule', {\n enumerable: true,\n get: function () {\n return _index4.NoDeprecatedCustomRule;\n },\n});\nObject.defineProperty(exports, 'NoFragmentCyclesRule', {\n enumerable: true,\n get: function () {\n return _index4.NoFragmentCyclesRule;\n },\n});\nObject.defineProperty(exports, 'NoSchemaIntrospectionCustomRule', {\n enumerable: true,\n get: function () {\n return _index4.NoSchemaIntrospectionCustomRule;\n },\n});\nObject.defineProperty(exports, 'NoUndefinedVariablesRule', {\n enumerable: true,\n get: function () {\n return _index4.NoUndefinedVariablesRule;\n },\n});\nObject.defineProperty(exports, 'NoUnusedFragmentsRule', {\n enumerable: true,\n get: function () {\n return _index4.NoUnusedFragmentsRule;\n },\n});\nObject.defineProperty(exports, 'NoUnusedVariablesRule', {\n enumerable: true,\n get: function () {\n return _index4.NoUnusedVariablesRule;\n },\n});\nObject.defineProperty(exports, 'OperationTypeNode', {\n enumerable: true,\n get: function () {\n return _index2.OperationTypeNode;\n },\n});\nObject.defineProperty(exports, 'OverlappingFieldsCanBeMergedRule', {\n enumerable: true,\n get: function () {\n return _index4.OverlappingFieldsCanBeMergedRule;\n },\n});\nObject.defineProperty(exports, 'PossibleFragmentSpreadsRule', {\n enumerable: true,\n get: function () {\n return _index4.PossibleFragmentSpreadsRule;\n },\n});\nObject.defineProperty(exports, 'PossibleTypeExtensionsRule', {\n enumerable: true,\n get: function () {\n return _index4.PossibleTypeExtensionsRule;\n },\n});\nObject.defineProperty(exports, 'ProvidedRequiredArgumentsRule', {\n enumerable: true,\n get: function () {\n return _index4.ProvidedRequiredArgumentsRule;\n },\n});\nObject.defineProperty(exports, 'ScalarLeafsRule', {\n enumerable: true,\n get: function () {\n return _index4.ScalarLeafsRule;\n },\n});\nObject.defineProperty(exports, 'SchemaMetaFieldDef', {\n enumerable: true,\n get: function () {\n return _index.SchemaMetaFieldDef;\n },\n});\nObject.defineProperty(exports, 'SingleFieldSubscriptionsRule', {\n enumerable: true,\n get: function () {\n return _index4.SingleFieldSubscriptionsRule;\n },\n});\nObject.defineProperty(exports, 'Source', {\n enumerable: true,\n get: function () {\n return _index2.Source;\n },\n});\nObject.defineProperty(exports, 'Token', {\n enumerable: true,\n get: function () {\n return _index2.Token;\n },\n});\nObject.defineProperty(exports, 'TokenKind', {\n enumerable: true,\n get: function () {\n return _index2.TokenKind;\n },\n});\nObject.defineProperty(exports, 'TypeInfo', {\n enumerable: true,\n get: function () {\n return _index6.TypeInfo;\n },\n});\nObject.defineProperty(exports, 'TypeKind', {\n enumerable: true,\n get: function () {\n return _index.TypeKind;\n },\n});\nObject.defineProperty(exports, 'TypeMetaFieldDef', {\n enumerable: true,\n get: function () {\n return _index.TypeMetaFieldDef;\n },\n});\nObject.defineProperty(exports, 'TypeNameMetaFieldDef', {\n enumerable: true,\n get: function () {\n return _index.TypeNameMetaFieldDef;\n },\n});\nObject.defineProperty(exports, 'UniqueArgumentDefinitionNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueArgumentDefinitionNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueArgumentNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueArgumentNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueDirectiveNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueDirectiveNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueDirectivesPerLocationRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueDirectivesPerLocationRule;\n },\n});\nObject.defineProperty(exports, 'UniqueEnumValueNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueEnumValueNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueFieldDefinitionNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueFieldDefinitionNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueFragmentNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueFragmentNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueInputFieldNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueInputFieldNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueOperationNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueOperationNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueOperationTypesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueOperationTypesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueTypeNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueTypeNamesRule;\n },\n});\nObject.defineProperty(exports, 'UniqueVariableNamesRule', {\n enumerable: true,\n get: function () {\n return _index4.UniqueVariableNamesRule;\n },\n});\nObject.defineProperty(exports, 'ValidationContext', {\n enumerable: true,\n get: function () {\n return _index4.ValidationContext;\n },\n});\nObject.defineProperty(exports, 'ValuesOfCorrectTypeRule', {\n enumerable: true,\n get: function () {\n return _index4.ValuesOfCorrectTypeRule;\n },\n});\nObject.defineProperty(exports, 'VariablesAreInputTypesRule', {\n enumerable: true,\n get: function () {\n return _index4.VariablesAreInputTypesRule;\n },\n});\nObject.defineProperty(exports, 'VariablesInAllowedPositionRule', {\n enumerable: true,\n get: function () {\n return _index4.VariablesInAllowedPositionRule;\n },\n});\nObject.defineProperty(exports, '__Directive', {\n enumerable: true,\n get: function () {\n return _index.__Directive;\n },\n});\nObject.defineProperty(exports, '__DirectiveLocation', {\n enumerable: true,\n get: function () {\n return _index.__DirectiveLocation;\n },\n});\nObject.defineProperty(exports, '__EnumValue', {\n enumerable: true,\n get: function () {\n return _index.__EnumValue;\n },\n});\nObject.defineProperty(exports, '__Field', {\n enumerable: true,\n get: function () {\n return _index.__Field;\n },\n});\nObject.defineProperty(exports, '__InputValue', {\n enumerable: true,\n get: function () {\n return _index.__InputValue;\n },\n});\nObject.defineProperty(exports, '__Schema', {\n enumerable: true,\n get: function () {\n return _index.__Schema;\n },\n});\nObject.defineProperty(exports, '__Type', {\n enumerable: true,\n get: function () {\n return _index.__Type;\n },\n});\nObject.defineProperty(exports, '__TypeKind', {\n enumerable: true,\n get: function () {\n return _index.__TypeKind;\n },\n});\nObject.defineProperty(exports, 'assertAbstractType', {\n enumerable: true,\n get: function () {\n return _index.assertAbstractType;\n },\n});\nObject.defineProperty(exports, 'assertCompositeType', {\n enumerable: true,\n get: function () {\n return _index.assertCompositeType;\n },\n});\nObject.defineProperty(exports, 'assertDirective', {\n enumerable: true,\n get: function () {\n return _index.assertDirective;\n },\n});\nObject.defineProperty(exports, 'assertEnumType', {\n enumerable: true,\n get: function () {\n return _index.assertEnumType;\n },\n});\nObject.defineProperty(exports, 'assertEnumValueName', {\n enumerable: true,\n get: function () {\n return _index.assertEnumValueName;\n },\n});\nObject.defineProperty(exports, 'assertInputObjectType', {\n enumerable: true,\n get: function () {\n return _index.assertInputObjectType;\n },\n});\nObject.defineProperty(exports, 'assertInputType', {\n enumerable: true,\n get: function () {\n return _index.assertInputType;\n },\n});\nObject.defineProperty(exports, 'assertInterfaceType', {\n enumerable: true,\n get: function () {\n return _index.assertInterfaceType;\n },\n});\nObject.defineProperty(exports, 'assertLeafType', {\n enumerable: true,\n get: function () {\n return _index.assertLeafType;\n },\n});\nObject.defineProperty(exports, 'assertListType', {\n enumerable: true,\n get: function () {\n return _index.assertListType;\n },\n});\nObject.defineProperty(exports, 'assertName', {\n enumerable: true,\n get: function () {\n return _index.assertName;\n },\n});\nObject.defineProperty(exports, 'assertNamedType', {\n enumerable: true,\n get: function () {\n return _index.assertNamedType;\n },\n});\nObject.defineProperty(exports, 'assertNonNullType', {\n enumerable: true,\n get: function () {\n return _index.assertNonNullType;\n },\n});\nObject.defineProperty(exports, 'assertNullableType', {\n enumerable: true,\n get: function () {\n return _index.assertNullableType;\n },\n});\nObject.defineProperty(exports, 'assertObjectType', {\n enumerable: true,\n get: function () {\n return _index.assertObjectType;\n },\n});\nObject.defineProperty(exports, 'assertOutputType', {\n enumerable: true,\n get: function () {\n return _index.assertOutputType;\n },\n});\nObject.defineProperty(exports, 'assertScalarType', {\n enumerable: true,\n get: function () {\n return _index.assertScalarType;\n },\n});\nObject.defineProperty(exports, 'assertSchema', {\n enumerable: true,\n get: function () {\n return _index.assertSchema;\n },\n});\nObject.defineProperty(exports, 'assertType', {\n enumerable: true,\n get: function () {\n return _index.assertType;\n },\n});\nObject.defineProperty(exports, 'assertUnionType', {\n enumerable: true,\n get: function () {\n return _index.assertUnionType;\n },\n});\nObject.defineProperty(exports, 'assertValidName', {\n enumerable: true,\n get: function () {\n return _index6.assertValidName;\n },\n});\nObject.defineProperty(exports, 'assertValidSchema', {\n enumerable: true,\n get: function () {\n return _index.assertValidSchema;\n },\n});\nObject.defineProperty(exports, 'assertWrappingType', {\n enumerable: true,\n get: function () {\n return _index.assertWrappingType;\n },\n});\nObject.defineProperty(exports, 'astFromValue', {\n enumerable: true,\n get: function () {\n return _index6.astFromValue;\n },\n});\nObject.defineProperty(exports, 'buildASTSchema', {\n enumerable: true,\n get: function () {\n return _index6.buildASTSchema;\n },\n});\nObject.defineProperty(exports, 'buildClientSchema', {\n enumerable: true,\n get: function () {\n return _index6.buildClientSchema;\n },\n});\nObject.defineProperty(exports, 'buildSchema', {\n enumerable: true,\n get: function () {\n return _index6.buildSchema;\n },\n});\nObject.defineProperty(exports, 'coerceInputValue', {\n enumerable: true,\n get: function () {\n return _index6.coerceInputValue;\n },\n});\nObject.defineProperty(exports, 'concatAST', {\n enumerable: true,\n get: function () {\n return _index6.concatAST;\n },\n});\nObject.defineProperty(exports, 'createSourceEventStream', {\n enumerable: true,\n get: function () {\n return _index3.createSourceEventStream;\n },\n});\nObject.defineProperty(exports, 'defaultFieldResolver', {\n enumerable: true,\n get: function () {\n return _index3.defaultFieldResolver;\n },\n});\nObject.defineProperty(exports, 'defaultTypeResolver', {\n enumerable: true,\n get: function () {\n return _index3.defaultTypeResolver;\n },\n});\nObject.defineProperty(exports, 'doTypesOverlap', {\n enumerable: true,\n get: function () {\n return _index6.doTypesOverlap;\n },\n});\nObject.defineProperty(exports, 'execute', {\n enumerable: true,\n get: function () {\n return _index3.execute;\n },\n});\nObject.defineProperty(exports, 'executeSync', {\n enumerable: true,\n get: function () {\n return _index3.executeSync;\n },\n});\nObject.defineProperty(exports, 'extendSchema', {\n enumerable: true,\n get: function () {\n return _index6.extendSchema;\n },\n});\nObject.defineProperty(exports, 'findBreakingChanges', {\n enumerable: true,\n get: function () {\n return _index6.findBreakingChanges;\n },\n});\nObject.defineProperty(exports, 'findDangerousChanges', {\n enumerable: true,\n get: function () {\n return _index6.findDangerousChanges;\n },\n});\nObject.defineProperty(exports, 'formatError', {\n enumerable: true,\n get: function () {\n return _index5.formatError;\n },\n});\nObject.defineProperty(exports, 'getArgumentValues', {\n enumerable: true,\n get: function () {\n return _index3.getArgumentValues;\n },\n});\nObject.defineProperty(exports, 'getDirectiveValues', {\n enumerable: true,\n get: function () {\n return _index3.getDirectiveValues;\n },\n});\nObject.defineProperty(exports, 'getEnterLeaveForKind', {\n enumerable: true,\n get: function () {\n return _index2.getEnterLeaveForKind;\n },\n});\nObject.defineProperty(exports, 'getIntrospectionQuery', {\n enumerable: true,\n get: function () {\n return _index6.getIntrospectionQuery;\n },\n});\nObject.defineProperty(exports, 'getLocation', {\n enumerable: true,\n get: function () {\n return _index2.getLocation;\n },\n});\nObject.defineProperty(exports, 'getNamedType', {\n enumerable: true,\n get: function () {\n return _index.getNamedType;\n },\n});\nObject.defineProperty(exports, 'getNullableType', {\n enumerable: true,\n get: function () {\n return _index.getNullableType;\n },\n});\nObject.defineProperty(exports, 'getOperationAST', {\n enumerable: true,\n get: function () {\n return _index6.getOperationAST;\n },\n});\nObject.defineProperty(exports, 'getOperationRootType', {\n enumerable: true,\n get: function () {\n return _index6.getOperationRootType;\n },\n});\nObject.defineProperty(exports, 'getVariableValues', {\n enumerable: true,\n get: function () {\n return _index3.getVariableValues;\n },\n});\nObject.defineProperty(exports, 'getVisitFn', {\n enumerable: true,\n get: function () {\n return _index2.getVisitFn;\n },\n});\nObject.defineProperty(exports, 'graphql', {\n enumerable: true,\n get: function () {\n return _graphql.graphql;\n },\n});\nObject.defineProperty(exports, 'graphqlSync', {\n enumerable: true,\n get: function () {\n return _graphql.graphqlSync;\n },\n});\nObject.defineProperty(exports, 'introspectionFromSchema', {\n enumerable: true,\n get: function () {\n return _index6.introspectionFromSchema;\n },\n});\nObject.defineProperty(exports, 'introspectionTypes', {\n enumerable: true,\n get: function () {\n return _index.introspectionTypes;\n },\n});\nObject.defineProperty(exports, 'isAbstractType', {\n enumerable: true,\n get: function () {\n return _index.isAbstractType;\n },\n});\nObject.defineProperty(exports, 'isCompositeType', {\n enumerable: true,\n get: function () {\n return _index.isCompositeType;\n },\n});\nObject.defineProperty(exports, 'isConstValueNode', {\n enumerable: true,\n get: function () {\n return _index2.isConstValueNode;\n },\n});\nObject.defineProperty(exports, 'isDefinitionNode', {\n enumerable: true,\n get: function () {\n return _index2.isDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isDirective', {\n enumerable: true,\n get: function () {\n return _index.isDirective;\n },\n});\nObject.defineProperty(exports, 'isEnumType', {\n enumerable: true,\n get: function () {\n return _index.isEnumType;\n },\n});\nObject.defineProperty(exports, 'isEqualType', {\n enumerable: true,\n get: function () {\n return _index6.isEqualType;\n },\n});\nObject.defineProperty(exports, 'isExecutableDefinitionNode', {\n enumerable: true,\n get: function () {\n return _index2.isExecutableDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isInputObjectType', {\n enumerable: true,\n get: function () {\n return _index.isInputObjectType;\n },\n});\nObject.defineProperty(exports, 'isInputType', {\n enumerable: true,\n get: function () {\n return _index.isInputType;\n },\n});\nObject.defineProperty(exports, 'isInterfaceType', {\n enumerable: true,\n get: function () {\n return _index.isInterfaceType;\n },\n});\nObject.defineProperty(exports, 'isIntrospectionType', {\n enumerable: true,\n get: function () {\n return _index.isIntrospectionType;\n },\n});\nObject.defineProperty(exports, 'isLeafType', {\n enumerable: true,\n get: function () {\n return _index.isLeafType;\n },\n});\nObject.defineProperty(exports, 'isListType', {\n enumerable: true,\n get: function () {\n return _index.isListType;\n },\n});\nObject.defineProperty(exports, 'isNamedType', {\n enumerable: true,\n get: function () {\n return _index.isNamedType;\n },\n});\nObject.defineProperty(exports, 'isNonNullType', {\n enumerable: true,\n get: function () {\n return _index.isNonNullType;\n },\n});\nObject.defineProperty(exports, 'isNullableType', {\n enumerable: true,\n get: function () {\n return _index.isNullableType;\n },\n});\nObject.defineProperty(exports, 'isObjectType', {\n enumerable: true,\n get: function () {\n return _index.isObjectType;\n },\n});\nObject.defineProperty(exports, 'isOutputType', {\n enumerable: true,\n get: function () {\n return _index.isOutputType;\n },\n});\nObject.defineProperty(exports, 'isRequiredArgument', {\n enumerable: true,\n get: function () {\n return _index.isRequiredArgument;\n },\n});\nObject.defineProperty(exports, 'isRequiredInputField', {\n enumerable: true,\n get: function () {\n return _index.isRequiredInputField;\n },\n});\nObject.defineProperty(exports, 'isScalarType', {\n enumerable: true,\n get: function () {\n return _index.isScalarType;\n },\n});\nObject.defineProperty(exports, 'isSchema', {\n enumerable: true,\n get: function () {\n return _index.isSchema;\n },\n});\nObject.defineProperty(exports, 'isSelectionNode', {\n enumerable: true,\n get: function () {\n return _index2.isSelectionNode;\n },\n});\nObject.defineProperty(exports, 'isSpecifiedDirective', {\n enumerable: true,\n get: function () {\n return _index.isSpecifiedDirective;\n },\n});\nObject.defineProperty(exports, 'isSpecifiedScalarType', {\n enumerable: true,\n get: function () {\n return _index.isSpecifiedScalarType;\n },\n});\nObject.defineProperty(exports, 'isType', {\n enumerable: true,\n get: function () {\n return _index.isType;\n },\n});\nObject.defineProperty(exports, 'isTypeDefinitionNode', {\n enumerable: true,\n get: function () {\n return _index2.isTypeDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeExtensionNode', {\n enumerable: true,\n get: function () {\n return _index2.isTypeExtensionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeNode', {\n enumerable: true,\n get: function () {\n return _index2.isTypeNode;\n },\n});\nObject.defineProperty(exports, 'isTypeSubTypeOf', {\n enumerable: true,\n get: function () {\n return _index6.isTypeSubTypeOf;\n },\n});\nObject.defineProperty(exports, 'isTypeSystemDefinitionNode', {\n enumerable: true,\n get: function () {\n return _index2.isTypeSystemDefinitionNode;\n },\n});\nObject.defineProperty(exports, 'isTypeSystemExtensionNode', {\n enumerable: true,\n get: function () {\n return _index2.isTypeSystemExtensionNode;\n },\n});\nObject.defineProperty(exports, 'isUnionType', {\n enumerable: true,\n get: function () {\n return _index.isUnionType;\n },\n});\nObject.defineProperty(exports, 'isValidNameError', {\n enumerable: true,\n get: function () {\n return _index6.isValidNameError;\n },\n});\nObject.defineProperty(exports, 'isValueNode', {\n enumerable: true,\n get: function () {\n return _index2.isValueNode;\n },\n});\nObject.defineProperty(exports, 'isWrappingType', {\n enumerable: true,\n get: function () {\n return _index.isWrappingType;\n },\n});\nObject.defineProperty(exports, 'lexicographicSortSchema', {\n enumerable: true,\n get: function () {\n return _index6.lexicographicSortSchema;\n },\n});\nObject.defineProperty(exports, 'locatedError', {\n enumerable: true,\n get: function () {\n return _index5.locatedError;\n },\n});\nObject.defineProperty(exports, 'parse', {\n enumerable: true,\n get: function () {\n return _index2.parse;\n },\n});\nObject.defineProperty(exports, 'parseConstValue', {\n enumerable: true,\n get: function () {\n return _index2.parseConstValue;\n },\n});\nObject.defineProperty(exports, 'parseType', {\n enumerable: true,\n get: function () {\n return _index2.parseType;\n },\n});\nObject.defineProperty(exports, 'parseValue', {\n enumerable: true,\n get: function () {\n return _index2.parseValue;\n },\n});\nObject.defineProperty(exports, 'print', {\n enumerable: true,\n get: function () {\n return _index2.print;\n },\n});\nObject.defineProperty(exports, 'printError', {\n enumerable: true,\n get: function () {\n return _index5.printError;\n },\n});\nObject.defineProperty(exports, 'printIntrospectionSchema', {\n enumerable: true,\n get: function () {\n return _index6.printIntrospectionSchema;\n },\n});\nObject.defineProperty(exports, 'printLocation', {\n enumerable: true,\n get: function () {\n return _index2.printLocation;\n },\n});\nObject.defineProperty(exports, 'printSchema', {\n enumerable: true,\n get: function () {\n return _index6.printSchema;\n },\n});\nObject.defineProperty(exports, 'printSourceLocation', {\n enumerable: true,\n get: function () {\n return _index2.printSourceLocation;\n },\n});\nObject.defineProperty(exports, 'printType', {\n enumerable: true,\n get: function () {\n return _index6.printType;\n },\n});\nObject.defineProperty(exports, 'resolveObjMapThunk', {\n enumerable: true,\n get: function () {\n return _index.resolveObjMapThunk;\n },\n});\nObject.defineProperty(exports, 'resolveReadonlyArrayThunk', {\n enumerable: true,\n get: function () {\n return _index.resolveReadonlyArrayThunk;\n },\n});\nObject.defineProperty(exports, 'responsePathAsArray', {\n enumerable: true,\n get: function () {\n return _index3.responsePathAsArray;\n },\n});\nObject.defineProperty(exports, 'separateOperations', {\n enumerable: true,\n get: function () {\n return _index6.separateOperations;\n },\n});\nObject.defineProperty(exports, 'specifiedDirectives', {\n enumerable: true,\n get: function () {\n return _index.specifiedDirectives;\n },\n});\nObject.defineProperty(exports, 'specifiedRules', {\n enumerable: true,\n get: function () {\n return _index4.specifiedRules;\n },\n});\nObject.defineProperty(exports, 'specifiedScalarTypes', {\n enumerable: true,\n get: function () {\n return _index.specifiedScalarTypes;\n },\n});\nObject.defineProperty(exports, 'stripIgnoredCharacters', {\n enumerable: true,\n get: function () {\n return _index6.stripIgnoredCharacters;\n },\n});\nObject.defineProperty(exports, 'subscribe', {\n enumerable: true,\n get: function () {\n return _index3.subscribe;\n },\n});\nObject.defineProperty(exports, 'syntaxError', {\n enumerable: true,\n get: function () {\n return _index5.syntaxError;\n },\n});\nObject.defineProperty(exports, 'typeFromAST', {\n enumerable: true,\n get: function () {\n return _index6.typeFromAST;\n },\n});\nObject.defineProperty(exports, 'validate', {\n enumerable: true,\n get: function () {\n return _index4.validate;\n },\n});\nObject.defineProperty(exports, 'validateSchema', {\n enumerable: true,\n get: function () {\n return _index.validateSchema;\n },\n});\nObject.defineProperty(exports, 'valueFromAST', {\n enumerable: true,\n get: function () {\n return _index6.valueFromAST;\n },\n});\nObject.defineProperty(exports, 'valueFromASTUntyped', {\n enumerable: true,\n get: function () {\n return _index6.valueFromASTUntyped;\n },\n});\nObject.defineProperty(exports, 'version', {\n enumerable: true,\n get: function () {\n return _version.version;\n },\n});\nObject.defineProperty(exports, 'versionInfo', {\n enumerable: true,\n get: function () {\n return _version.versionInfo;\n },\n});\nObject.defineProperty(exports, 'visit', {\n enumerable: true,\n get: function () {\n return _index2.visit;\n },\n});\nObject.defineProperty(exports, 'visitInParallel', {\n enumerable: true,\n get: function () {\n return _index2.visitInParallel;\n },\n});\nObject.defineProperty(exports, 'visitWithTypeInfo', {\n enumerable: true,\n get: function () {\n return _index6.visitWithTypeInfo;\n },\n});\n\nvar _version = require('./version.js');\n\nvar _graphql = require('./graphql.js');\n\nvar _index = require('./type/index.js');\n\nvar _index2 = require('./language/index.js');\n\nvar _index3 = require('./execution/index.js');\n\nvar _index4 = require('./validation/index.js');\n\nvar _index5 = require('./error/index.js');\n\nvar _index6 = require('./utilities/index.js');\n", "/**\n * Exposes methods to reason about types and their relationship.\n */\n\nimport {\n AbstractType,\n InterfaceType,\n isCompositeType,\n isInterfaceType,\n isListType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isUnionType,\n ObjectType,\n Type,\n UnionType\n} from \"./definitions\";\n\nexport const ALL_SUBTYPING_RULES = [\n 'direct' as const,\n 'nonNullable_downgrade' as const,\n 'list_upgrade' as const,\n 'list_propagation' as const,\n 'nonNullable_propagation' as const\n];\n\nexport type SubtypingRule = typeof ALL_SUBTYPING_RULES[number];\n\n// The subtyping rules that graphQL-js enforces in particular\nexport const DEFAULT_SUBTYPING_RULES = ALL_SUBTYPING_RULES.filter(r => r !== \"list_upgrade\");\n\n/**\n * Tests whether 2 types are the \"same\" type.\n *\n * To be the same type, for this method, is defined as having the samee name for named types\n * or, for wrapper types, the same wrapper type and recursively same wrapped one.\n *\n * This method does not check that both types are from the same schema and does not validate\n * that the structure of named types is the same. Also note that it does not check the \"kind\"\n * of the type, which is actually relied on due to @interfaceObject (where the \"same\" type \n * can be an interface in one subgraph but an object type in another, while fundamentally being\n * the same type).\n */\nexport function sameType(t1: Type, t2: Type): boolean {\n switch (t1.kind) {\n case 'ListType':\n return isListType(t2) && sameType(t1.ofType, t2.ofType);\n case 'NonNullType':\n return isNonNullType(t2) && sameType(t1.ofType, t2.ofType);\n default:\n return isNamedType(t2) && t1.name === t2.name;\n }\n}\n\n/**\n * Tests whether `maybeSubType` is a direct subtype of `type`.\n *\n * A type `maybeSubType` is a direct subtype of `type` if either `type` is a union and\n * `maybeSubType` is a member of that union, or `type` is an interface and `maybeSubType`\n * implements `type`.\n *\n * The notion of \"direct\" subtypes is a strict one, in that a type is never a direct subtype\n * of itself.\n *\n * This relation does _not_ check that both types are from the same schema: union type\n * membership and interface implementation is based on type names only.\n *\n */\nexport function isDirectSubtype(\n type: AbstractType,\n maybeSubType: ObjectType | InterfaceType,\n unionMembershipTester: (union: UnionType, maybeMember: ObjectType) => boolean = (u, m) => u.hasTypeMember(m),\n implementsInterfaceTester: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean = (m, i) => m.implementsInterface(i),\n): boolean {\n if (isUnionType(type)) {\n return isObjectType(maybeSubType) && unionMembershipTester(type, maybeSubType);\n }\n return implementsInterfaceTester(maybeSubType, type);\n}\n\n/**\n * Tests whether `maybeSubType` is a subtype of `type`.\n *\n * Subtyping is defined as the notion of \"direct\" subtyping (of `isDirectSubtype`) extended to wrapper types\n * and to equality. More precisely, `maybeSubType` is a subtype of `type` if one of the following is true:\n * - both types are the same.\n * - `maybeSubType` is a direct subtype of `type`.\n * - `maybeSubType` and `type` are the same kind of wrapper type (both lists or both non-null), and the\n * type wrapped by `maybeSubType` is a subtype of the type wrapped by `type`.\n * - `maybeSubType` is a non-null type and the type wrapped by `maybeSubType` is a subtype of `type`.\n *\n * As usual, this subtyping relation ensures that if a value is of type `subType` and `subType` is a subtype\n * of `type`, then it can be used where a value of type `type` is expected.\n *\n * If you to exclude equality from the relation, use `isStrictSubtype`.\n */\nexport function isSubtype(\n type: Type,\n maybeSubType: Type,\n allowedRules: SubtypingRule[] = DEFAULT_SUBTYPING_RULES,\n unionMembershipTester: (union: UnionType, maybeMember: ObjectType) => boolean = (u, m) => u.hasTypeMember(m),\n implementsInterfaceTester: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean = (m, i) => m.implementsInterface(i)\n): boolean {\n return sameType(type, maybeSubType) || isStrictSubtype(type, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n}\n\n/**\n * Tests whether `maybeSubType` is a strict subtype of `type`.\n *\n * Strict subtyping is the subtyping relation defined on `isSubtype`, but where\n * equality (as defined by `sameType`) is excluded.\n */\nexport function isStrictSubtype(\n type: Type,\n maybeSubType: Type,\n allowedRules: SubtypingRule[] = DEFAULT_SUBTYPING_RULES,\n unionMembershipTester: (union: UnionType, maybeMember: ObjectType) => boolean = (u, m) => u.hasTypeMember(m),\n implementsInterfaceTester: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean = (m, i) => m.implementsInterface(i)\n): boolean {\n switch (maybeSubType.kind) {\n case 'ListType':\n return allowedRules.includes('list_propagation')\n && isListType(type)\n && isSubtype(type.ofType, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n case 'NonNullType':\n if (isNonNullType(type)) {\n return allowedRules.includes('nonNullable_propagation')\n && isSubtype(type.ofType, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n }\n return allowedRules.includes('nonNullable_downgrade')\n && isSubtype(type, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n case 'ObjectType':\n case 'InterfaceType':\n if (isListType(type)) {\n return allowedRules.includes('list_upgrade')\n && isSubtype(type.ofType, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n }\n return allowedRules.includes('direct')\n && (isInterfaceType(type) || isUnionType(type))\n && isDirectSubtype(type, maybeSubType, unionMembershipTester, implementsInterfaceTester);\n default:\n return isListType(type)\n && allowedRules.includes('list_upgrade')\n && isSubtype(type.ofType, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n }\n}\n\n/**\n * This essentially follows the beginning of https://spec.graphql.org/draft/#SameResponseShape().\n * That is, the types cannot be merged unless:\n * - they have the same nullability and \"list-ability\", potentially recursively.\n * - their base type is either both composite, or are the same type.\n */\nexport function typesCanBeMerged(t1: Type, t2: Type): boolean {\n if (isNonNullType(t1)) {\n return isNonNullType(t2) ? typesCanBeMerged(t1.ofType, t2.ofType) : false;\n }\n if (isListType(t1)) {\n return isListType(t2) ? typesCanBeMerged(t1.ofType, t2.ofType) : false;\n }\n if (isCompositeType(t1)) {\n return isCompositeType(t2);\n }\n return sameType(t1, t2);\n}\n\n", "/**\n * For lack of a \"home of federation utilities\", this function is copy/pasted\n * verbatim across the federation, gateway, and query-planner packages. Any changes\n * made here should be reflected in the other two locations as well.\n *\n * @param condition\n * @param message\n * @throws\n */\nexport function assert(condition: any, message: string | (() => string)): asserts condition {\n if (!condition) {\n throw new Error(typeof message === 'string' ? message : message());\n }\n}\n\nexport function assertUnreachable(_: never): never {\n throw new Error(\"Didn't expect to get here\");\n}\n\nexport class MultiMap extends Map {\n add(key: K, value: V): this {\n const values = this.get(key);\n if (values) {\n values.push(value);\n } else {\n this.set(key, [value]);\n }\n return this;\n }\n\n addAll(otherMap: MultiMap): this {\n for (const [k, vs] of otherMap.entries()) {\n for (const v of vs) {\n this.add(k, v);\n }\n }\n return this;\n }\n}\n\nexport class SetMultiMap extends Map> {\n add(key: K, value: V): this {\n let values = this.get(key);\n if (!values) {\n values = new Set();\n this.set(key, values);\n }\n values.add(value);\n return this;\n }\n\n addAll(otherMap: SetMultiMap): this {\n for (const [k, vs] of otherMap.entries()) {\n for (const v of vs) {\n this.add(k, v);\n }\n }\n return this;\n }\n}\n\n/**\n * Generic OrderedMap class that can sort keys based on an arbitrary sorting function\n * Insert time is O(log(N))\n * Remove is not implemented, but the trivial implementation would be O(N)\n * Uses '<' '>' sorting by default\n * Collisions are fine, it will just overwrite the old value\n */\nexport class OrderedMap {\n private _keys: K[] = [];\n private _values: Map = new Map();\n private _compareFn: (a: K, b: K) => number;\n\n private static defaultCompareFn(a: K, b: K) {\n if (a < b) {\n return -1;\n } else if (b < a) {\n return 1;\n }\n return 0;\n }\n\n constructor(compareFn: (a: K, b: K) => number = OrderedMap.defaultCompareFn) {\n this._compareFn = compareFn;\n }\n\n add(key: K, value: V) {\n if (!this._values.has(key)) {\n this.insertKeyInOrder(key);\n }\n this._values.set(key, value);\n }\n\n get(key: K): V | undefined {\n return this._values.get(key);\n }\n\n has(key: K): boolean {\n return this._values.has(key);\n }\n\n get size() {\n return this._keys.length;\n }\n\n keys(): K[] {\n return this._keys;\n }\n\n values(): V[] {\n return this._keys.map(key => {\n const v = this._values.get(key);\n assert(v, 'value for known key not found in OrderedMap');\n return v;\n });\n }\n\n // O(log(N)) - find location via middle finding\n private insertKeyInOrder(key: K) {\n let lower = 0;\n let upper = this._keys.length - 1;\n while (lower <= upper) {\n const middle = Math.floor((upper + lower) / 2);\n if (this._compareFn(this._keys[middle], key) < 0) {\n lower = middle + 1;\n } else {\n upper = middle - 1;\n }\n }\n this._keys = this._keys.slice(0, lower).concat(key).concat(this._keys.slice(lower));\n }\n\n // remove(key: K): void - not implemented\n\n *[Symbol.iterator]() {\n for (let i = 0; i < this._keys.length; i += 1) {\n const v = this._values.get(this._keys[i]);\n assert(v, 'value for known key not found in OrderedMap');\n yield v;\n }\n }\n}\n\n/**\n * Tests if the provided arrays have the same elements (using '===' equality or the provided\n * equality function).\n * This is _not_ a deep equality by default, though you can build one somewhat when passing\n * an equality function.\n */\nexport function arrayEquals(\n a: readonly T[],\n b: readonly T[],\n equalFct?: (e1: T, e2: T) => boolean\n): boolean {\n if (a === b) {\n return true;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n const eltEqual = equalFct ? equalFct(a[i], b[i]) : a[i] === b[i];\n if (!eltEqual) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Whether the first set is a (non-strict) subset of the second set.\n */\nexport function isSubset(superset: Set, maybeSubset: Set): boolean {\n if (superset === maybeSubset) {\n return true;\n }\n for (const elt of maybeSubset) {\n if (!superset.has(elt)) {\n return false;\n }\n }\n return true;\n}\n\nexport function firstOf(iterable: Iterable): T | undefined {\n const res = iterable[Symbol.iterator]().next();\n return res.done ? undefined : res.value;\n}\n\nexport function mapValues(map: ReadonlyMap): V[] {\n const array = new Array(map.size);\n let i = 0;\n for (const v of map.values()) {\n array[i++] = v;\n }\n return array;\n}\n\nexport function mapKeys(map: ReadonlyMap): K[] {\n const array = new Array(map.size);\n let i = 0;\n for (const k of map.keys()) {\n array[i++] = k;\n }\n return array;\n}\n\nexport function mapEntries(map: ReadonlyMap): [K, V][] {\n const array = new Array(map.size);\n let i = 0;\n for (const entry of map.entries()) {\n array[i++] = entry;\n }\n return array;\n}\n\nexport function setValues(set: ReadonlySet): V[] {\n const array = new Array(set.size);\n let i = 0;\n for (const v of set.values()) {\n array[i++] = v;\n }\n return array;\n}\n\nexport class MapWithCachedArrays {\n private readonly map = new Map();\n private cachedKeys?: readonly K[];\n private cachedValues?: readonly V[];\n\n private clearCaches() {\n this.cachedKeys = undefined;\n this.cachedValues = undefined;\n }\n\n get size(): number {\n return this.map.size;\n }\n\n has(key: K): boolean {\n return this.map.has(key);\n }\n\n get(key: K): V | undefined {\n return this.map.get(key);\n }\n\n set(key: K, value: V): this {\n this.map.set(key, value);\n this.clearCaches();\n return this;\n }\n\n delete(key: K): boolean {\n const deleted = this.map.delete(key);\n if (deleted) {\n this.clearCaches();\n }\n return deleted;\n }\n\n clear(): void {\n this.map.clear();\n this.clearCaches();\n }\n\n keys(): readonly K[] {\n if (!this.cachedKeys) {\n this.cachedKeys = mapKeys(this.map);\n }\n return this.cachedKeys;\n }\n\n values(): readonly V[] {\n if (!this.cachedValues) {\n this.cachedValues = mapValues(this.map);\n }\n return this.cachedValues;\n }\n}\n\nexport function copyWitNewLength(arr: T[], newLength: number): T[] {\n assert(newLength >= arr.length, () => `${newLength} < ${arr.length}`);\n const copy = new Array(newLength);\n for (let i = 0; i < arr.length; i++) {\n copy[i] = arr[i];\n }\n return copy;\n}\n\n/**\n * Checks whether the provided string value is defined and represents a \"boolean-ish\"\n * value, returning that boolean value.\n *\n * @param str - the string to check.\n * @return the boolean value contains in `str` if `str` represents a boolean-ish value,\n * where \"boolean-ish\" is one of \"true\"/\"false\", \"yes\"/\"no\" or \"0\"/\"1\" (where the check\n * is case-insensitive). Otherwise, `undefined` is returned.\n */\nexport function validateStringContainsBoolean(str?: string) : boolean | undefined {\n if (!str) {\n return false;\n }\n switch (str.toLocaleLowerCase()) {\n case \"true\":\n case \"yes\":\n case \"1\":\n return true;\n case \"false\":\n case \"no\":\n case \"0\":\n return false;\n default:\n return undefined;\n }\n}\n\n/**\n * Joins an array of string, much like `Array.prototype.join`, but with the ability to use a specific different\n * separator for the first and/or last occurence.\n *\n * The goal is to make reading flow slightly better. For instance, if you have a list of subgraphs `s = [\"A\", \"B\", \"C\"]`,\n * then `\"subgraphs \" + joinString(s)` will yield \"subgraphs A, B and C\".\n */\nexport function joinStrings(toJoin: string[], sep: string = ', ', firstSep?: string, lastSep: string = ' and ') {\n if (toJoin.length == 0) {\n return '';\n }\n const first = toJoin[0];\n if (toJoin.length == 1) {\n return first;\n }\n const last = toJoin[toJoin.length - 1];\n if (toJoin.length == 2) {\n return first + (firstSep ? firstSep : lastSep) + last;\n }\n return first + (firstSep ? firstSep : sep) + toJoin.slice(1, toJoin.length - 1).join(sep) + lastSep + last;\n}\n\n// When displaying a list of something in a human readable form, after what size (in\n// number of characters) we start displaying only a subset of the list.\nconst DEFAULT_HUMAN_READABLE_LIST_CUTOFF_LENGTH = 100;\n\n/**\n * Like `joinStrings`, joins an array of string, but with a few twists, namely:\n * - If the resulting list to print is \"too long\", it only display a subset of the elements and use some elipsis (...). In other\n * words, this method is for case where, where the list ot print is too long, it is more useful to avoid flooding the output than\n * printing everything.\n * - it allows to prefix the whole list, and to use a different prefix for a single element than for > 1 elements.\n * - it forces the use of ',' as separator, but allow a different lastSeparator.\n */\nexport function printHumanReadableList(\n names: string[],\n {\n emptyValue,\n prefix,\n prefixPlural,\n lastSeparator,\n cutoff_output_length,\n } : {\n emptyValue?: string,\n prefix?: string,\n prefixPlural?: string,\n lastSeparator?: string,\n cutoff_output_length?: number,\n }\n): string {\n if (names.length === 0) {\n return emptyValue ?? '';\n }\n if (names.length == 1) {\n return prefix ? prefix + ' ' + names[0] : names[0];\n }\n const cutoff = cutoff_output_length ?? DEFAULT_HUMAN_READABLE_LIST_CUTOFF_LENGTH;\n\n const { lastIdx } = names.reduce(\n ({ lastIdx, length }, name) => {\n if (length + name.length > cutoff) {\n return {\n lastIdx,\n length,\n };\n }\n return {\n lastIdx: lastIdx + 1,\n length: length + name.length,\n };\n },\n { lastIdx: 0, length: 0}\n );\n // In case the name we list have absurdly long names, we cut it off but ensure we at least display one.\n const toDisplay = names.slice(0, Math.max(1, lastIdx));\n const actualPrefix = prefixPlural\n ? prefixPlural + ' '\n : (prefix ? prefix + ' ' : '');\n if (toDisplay.length === names.length) {\n return actualPrefix + joinStrings(toDisplay, ', ', undefined, lastSeparator);\n } else {\n return actualPrefix + joinStrings(toDisplay, ', ', undefined, ', ') + ', ...';\n }\n}\n\nexport type Concrete = {\n [Property in keyof Type]-?: Concrete;\n};\n\n// for use with Array.filter\n// Example:\n// const x = [1,2,undefined];\n// const y: number[] = x.filter(isDefined);\nexport const isDefined = (t: T | undefined): t is T => t === undefined ? false : true;\n\n/**\n * Removes the first occurrence of the provided element in the provided array, if said array contains said elements.\n *\n * @return whether the element was removed.\n */\nexport function removeArrayElement(element: T, array: T[]): boolean {\n const index = array.indexOf(element);\n if (index >= 0) {\n array.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\nexport type NonEmptyArray = [T, ...T[]];\n\nexport function isNonEmptyArray(array: T[]): array is NonEmptyArray {\n return array.length > 0;\n}\n\n// We can switch to `Array.prototype.findLast` when we drop support for Node 16\nexport function findLast(array: T[], predicate: (t: T) => boolean): T | undefined {\n for (let i = array.length - 1; i >= 0; i--) {\n const t = array[i];\n if (predicate(t)) {\n return t;\n }\n }\n return undefined;\n}\n\nexport function mergeMapOrNull(m1: Map | null, m2: Map | null): Map | null {\n if (!m1) {\n return m2;\n }\n if (!m2) {\n return m1;\n }\n return new Map([...m1, ...m2]);\n}\n\nexport function composeSets(s1: Set | null, s2: Set | null): Set | null {\n if (!s1 && !s2) {\n return null;\n }\n const result = new Set();\n s1?.forEach(v => result.add(v));\n s2?.forEach(v => result.add(v));\n return result;\n}\n\nexport function setsEqual(s1: Set | null, s2: Set | null): boolean {\n if (s1 === s2) {\n return true;\n }\n if (!s1 && !s2) {\n return true;\n }\n if (!s1 || !s2 || s1.size !== s2.size) {\n return false;\n }\n for (const key of s1) {\n if (!s2.has(key)) {\n return false;\n }\n }\n return true;\n}\n", "import { ASTNode, GraphQLError, GraphQLErrorOptions, GraphQLFormattedError } from \"graphql\";\nimport { assert } from \"./utils\";\n\n// Redefining `SchemaRootKind` here instead of using the version from `./definition.ts` because we don't want\n// this file to import other ones, so it can be used without worrying about recusive dependency. That\n// \"duplication\" is very minor in practice though and unlikely to be a maintenance headache (graphQL is unlikely\n// to add new root kind all that often).\ntype SchemaRootKind = 'query' | 'mutation' | 'subscription';\n\n/*\n * We didn't track errors addition precisely pre-2.0 and tracking it now has an\n * unclear ROI, so we just mark all the error code that predates 2.0 as 0.x.\n */\nconst FED1_CODE = '0.x';\n\nexport type ErrorCodeMetadata = {\n addedIn: string,\n replaces?: string[],\n}\n\nexport type ErrorCodeDefinition = {\n code: string,\n description: string,\n metadata: ErrorCodeMetadata,\n err: (message: string, options?: GraphQLErrorOptions) => GraphQLError,\n}\n\nconst makeCodeDefinition = (\n code: string,\n description: string,\n metadata: ErrorCodeMetadata = DEFAULT_METADATA\n): ErrorCodeDefinition => ({\n code,\n description,\n metadata,\n err: (message: string, options?: GraphQLErrorOptions) => new GraphQLError(\n message,\n {\n ...options,\n extensions: {\n ...options?.extensions,\n code,\n }\n }\n ),\n});\n\nexport function extractGraphQLErrorOptions(e: GraphQLError): GraphQLErrorOptions {\n return {\n nodes: e.nodes,\n source: e.source,\n positions: e.positions,\n path: e.path,\n originalError: e.originalError,\n extensions: e.extensions,\n };\n}\n\nclass AggregateGraphQLError extends GraphQLError {\n constructor(\n code: string,\n message: string,\n readonly causes: GraphQLError[],\n options?: GraphQLErrorOptions,\n ) {\n super(\n message + '. Caused by:\\n' + causes.map((c) => c.toString()).join('\\n\\n'),\n {\n ...options,\n extensions: { code },\n }\n );\n }\n\n toString() {\n let output = `[${this.extensions.code}] ${super.toString()}`\n output += \"\\ncaused by:\";\n for (const cause of this.causes) {\n output += \"\\n\\n - \";\n output += cause.toString().split(\"\\n\").join(\"\\n \");\n }\n return output;\n }\n}\n\nexport function aggregateError(code: string, message: string, causes: GraphQLError[]): GraphQLError {\n return new AggregateGraphQLError(code, message, causes);\n}\n\n/**\n * Given an error, check if it is a graphQL error and potentially extract its causes if is aggregate.\n * If the error is not a graphQL error, undefined is returned.\n */\nexport function errorCauses(e: Error): GraphQLError[] | undefined {\n if (e instanceof AggregateGraphQLError) {\n return e.causes;\n }\n if (e instanceof GraphQLError) {\n return [e];\n }\n return undefined;\n}\n\nexport function printGraphQLErrorsOrRethrow(e: Error): string {\n const causes = errorCauses(e);\n if (!causes) {\n throw e;\n }\n return causes.map(e => e.toString()).join('\\n\\n');\n}\n\nexport function printErrors(errors: GraphQLError[]): string {\n return errors.map(e => e.toString()).join('\\n\\n');\n}\n/*\n * Most codes currently originate from the initial fed 2 release so we use this for convenience.\n * This can be changed later, inline versions everywhere, if that becomes irrelevant.\n */\nconst DEFAULT_METADATA = { addedIn: '2.0.0' };\n\nexport type ErrorCodeCategory = {\n get(element: TElement): ErrorCodeDefinition;\n}\n\nconst makeErrorCodeCategory = (\n extractCode: (element: TElement) => string,\n makeDescription: (element: TElement) => string,\n metadata: ErrorCodeMetadata = DEFAULT_METADATA,\n): ErrorCodeCategory & { createCode(element: TElement): ErrorCodeDefinition } => ({\n createCode: (element: TElement) => {\n return makeCodeDefinition(extractCode(element), makeDescription(element), metadata);\n },\n get: (element: TElement) => {\n const def = codeDefByCode[extractCode(element)];\n assert(def, `Unexpected element: ${element}`);\n return def;\n }\n});\n\nconst makeFederationDirectiveErrorCodeCategory = (\n codeSuffix: string,\n makeDescription: (directiveName: string) => string,\n metadata: ErrorCodeMetadata = DEFAULT_METADATA,\n) => makeErrorCodeCategory((directive) => `${directive.toLocaleUpperCase()}_${codeSuffix}`, makeDescription, metadata);\n\n\nexport function errorCode(e: GraphQLError | GraphQLFormattedError): string | undefined {\n if (!e.extensions || !('code' in e.extensions)) {\n return undefined;\n }\n return e.extensions.code as string;\n}\n\nexport function errorCodeDef(e: GraphQLError | GraphQLFormattedError | string): ErrorCodeDefinition | undefined {\n const code = typeof e === 'string' ? e : errorCode(e);\n return code ? codeDefByCode[code] : undefined;\n}\n\nexport function withModifiedErrorMessage(e: GraphQLError, newMessage: string): GraphQLError {\n return new GraphQLError(\n newMessage,\n {\n nodes: e.nodes,\n source: e.source,\n positions: e.positions,\n path: e.path,\n originalError: e.originalError,\n extensions: e.extensions\n }\n );\n}\n\nexport function withModifiedErrorNodes(e: GraphQLError, newNodes: readonly ASTNode[] | ASTNode | undefined): GraphQLError {\n return new GraphQLError(\n e.message,\n {\n nodes: newNodes,\n source: e.source,\n positions: e.positions,\n path: e.path,\n originalError: e.originalError,\n extensions: e.extensions\n }\n );\n}\n\nconst INVALID_GRAPHQL = makeCodeDefinition(\n 'INVALID_GRAPHQL',\n 'A schema is invalid GraphQL: it violates one of the rule of the specification.'\n);\n\nconst DIRECTIVE_DEFINITION_INVALID = makeCodeDefinition(\n 'DIRECTIVE_DEFINITION_INVALID',\n 'A built-in or federation directive has an invalid definition in the schema.',\n { ...DEFAULT_METADATA, replaces: ['TAG_DEFINITION_INVALID'] },\n);\n\nconst TYPE_DEFINITION_INVALID = makeCodeDefinition(\n 'TYPE_DEFINITION_INVALID',\n 'A built-in or federation type has an invalid definition in the schema.',\n);\n\nconst UNSUPPORTED_LINKED_FEATURE = makeCodeDefinition(\n 'UNSUPPORTED_LINKED_FEATURE',\n 'Indicates that a feature used in a @link is either unsupported or is used with unsupported options.',\n);\n\nconst UNKNOWN_FEDERATION_LINK_VERSION = makeCodeDefinition(\n 'UNKNOWN_FEDERATION_LINK_VERSION',\n 'The version of federation in a @link directive on the schema is unknown.',\n);\n\nconst UNKNOWN_LINK_VERSION = makeCodeDefinition(\n 'UNKNOWN_LINK_VERSION',\n 'The version of @link set on the schema is unknown.',\n { addedIn: '2.1.0' },\n);\n\nconst FIELDS_HAS_ARGS = makeFederationDirectiveErrorCodeCategory(\n 'FIELDS_HAS_ARGS',\n (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive includes a field defined with arguments (which is not currently supported).`\n);\n\nconst KEY_FIELDS_HAS_ARGS = FIELDS_HAS_ARGS.createCode('key');\nconst PROVIDES_FIELDS_HAS_ARGS = FIELDS_HAS_ARGS.createCode('provides');\n\nconst DIRECTIVE_FIELDS_MISSING_EXTERNAL = makeFederationDirectiveErrorCodeCategory(\n 'FIELDS_MISSING_EXTERNAL',\n (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive includes a field that is not marked as \\`@external\\`.`,\n { addedIn: FED1_CODE },\n);\n\nconst PROVIDES_MISSING_EXTERNAL = DIRECTIVE_FIELDS_MISSING_EXTERNAL.createCode('provides');\nconst REQUIRES_MISSING_EXTERNAL = DIRECTIVE_FIELDS_MISSING_EXTERNAL.createCode('requires');\n\nconst DIRECTIVE_UNSUPPORTED_ON_INTERFACE = makeFederationDirectiveErrorCodeCategory(\n 'UNSUPPORTED_ON_INTERFACE',\n (directive) => `A \\`@${directive}\\` directive is used on an interface, which is ${directive === 'key' ? 'only supported when @linking to federation 2.3+' : 'not (yet) supported'}.`,\n);\n\nconst KEY_UNSUPPORTED_ON_INTERFACE = DIRECTIVE_UNSUPPORTED_ON_INTERFACE.createCode('key');\nconst PROVIDES_UNSUPPORTED_ON_INTERFACE = DIRECTIVE_UNSUPPORTED_ON_INTERFACE.createCode('provides');\nconst REQUIRES_UNSUPPORTED_ON_INTERFACE = DIRECTIVE_UNSUPPORTED_ON_INTERFACE.createCode('requires');\n\nconst DIRECTIVE_IN_FIELDS_ARG = makeFederationDirectiveErrorCodeCategory(\n 'DIRECTIVE_IN_FIELDS_ARG',\n (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive includes some directive applications. This is not supported`,\n { addedIn: '2.1.0' },\n);\n\nconst KEY_HAS_DIRECTIVE_IN_FIELDS_ARGS = DIRECTIVE_IN_FIELDS_ARG.createCode('key');\nconst PROVIDES_HAS_DIRECTIVE_IN_FIELDS_ARGS = DIRECTIVE_IN_FIELDS_ARG.createCode('provides');\nconst REQUIRES_HAS_DIRECTIVE_IN_FIELDS_ARGS = DIRECTIVE_IN_FIELDS_ARG.createCode('requires');\n\nconst EXTERNAL_UNUSED = makeCodeDefinition(\n 'EXTERNAL_UNUSED',\n 'An `@external` field is not being used by any instance of `@key`, `@requires`, `@provides` or to satisfy an interface implementation.',\n { addedIn: FED1_CODE },\n);\n\nconst TYPE_WITH_ONLY_UNUSED_EXTERNAL = makeCodeDefinition(\n 'TYPE_WITH_ONLY_UNUSED_EXTERNAL',\n 'A federation 1 schema has a composite type comprised only of unused external fields.'\n + ` Note that this error can _only_ be raised for federation 1 schema as federation 2 schema do not allow unused external fields (and errors with code ${EXTERNAL_UNUSED.code} will be raised in that case).`\n + ' But when federation 1 schema are automatically migrated to federation 2 ones, unused external fields are automatically removed, and in rare case this can leave a type empty. If that happens, an error with this code will be raised',\n);\n\nconst PROVIDES_ON_NON_OBJECT_FIELD = makeCodeDefinition(\n 'PROVIDES_ON_NON_OBJECT_FIELD',\n 'A `@provides` directive is used to mark a field whose base type is not an object type.'\n);\n\nconst DIRECTIVE_INVALID_FIELDS_TYPE = makeFederationDirectiveErrorCodeCategory(\n 'INVALID_FIELDS_TYPE',\n (directive) => `The value passed to the \\`fields\\` argument of a \\`@${directive}\\` directive is not a string.`,\n);\n\nconst KEY_INVALID_FIELDS_TYPE = DIRECTIVE_INVALID_FIELDS_TYPE.createCode('key');\nconst PROVIDES_INVALID_FIELDS_TYPE = DIRECTIVE_INVALID_FIELDS_TYPE.createCode('provides');\nconst REQUIRES_INVALID_FIELDS_TYPE = DIRECTIVE_INVALID_FIELDS_TYPE.createCode('requires');\n\nconst DIRECTIVE_INVALID_FIELDS = makeFederationDirectiveErrorCodeCategory(\n 'INVALID_FIELDS',\n (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive is invalid (it has invalid syntax, includes unknown fields, ...).`,\n);\n\nconst KEY_INVALID_FIELDS = DIRECTIVE_INVALID_FIELDS.createCode('key');\nconst PROVIDES_INVALID_FIELDS = DIRECTIVE_INVALID_FIELDS.createCode('provides');\nconst REQUIRES_INVALID_FIELDS = DIRECTIVE_INVALID_FIELDS.createCode('requires');\n\nconst KEY_FIELDS_SELECT_INVALID_TYPE = makeCodeDefinition(\n 'KEY_FIELDS_SELECT_INVALID_TYPE',\n 'The `fields` argument of `@key` directive includes a field whose type is a list, interface, or union type. Fields of these types cannot be part of a `@key`',\n { addedIn: FED1_CODE },\n)\n\nconst ROOT_TYPE_USED = makeErrorCodeCategory(\n (kind) => `ROOT_${kind.toLocaleUpperCase()}_USED`,\n (kind) => `A subgraph's schema defines a type with the name \\`${kind}\\`, while also specifying a _different_ type name as the root query object. This is not allowed.`,\n { addedIn: FED1_CODE },\n);\n\nconst ROOT_QUERY_USED = ROOT_TYPE_USED.createCode('query');\nconst ROOT_MUTATION_USED = ROOT_TYPE_USED.createCode('mutation');\nconst ROOT_SUBSCRIPTION_USED = ROOT_TYPE_USED.createCode('subscription');\n\nconst INVALID_SUBGRAPH_NAME = makeCodeDefinition(\n 'INVALID_SUBGRAPH_NAME',\n 'A subgraph name is invalid (subgraph names cannot be a single underscore (\"_\")).'\n);\n\nconst NO_QUERIES = makeCodeDefinition(\n 'NO_QUERIES',\n 'None of the composed subgraphs expose any query.'\n);\n\nconst INTERFACE_FIELD_NO_IMPLEM = makeCodeDefinition(\n 'INTERFACE_FIELD_NO_IMPLEM',\n 'After subgraph merging, an implementation is missing a field of one of the interface it implements (which can happen for valid subgraphs).'\n);\n\nconst TYPE_KIND_MISMATCH = makeCodeDefinition(\n 'TYPE_KIND_MISMATCH',\n 'A type has the same name in different subgraphs, but a different kind. For instance, one definition is an object type but another is an interface.',\n { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_KIND_MISMATCH', 'EXTENSION_OF_WRONG_KIND', 'ENUM_MISMATCH_TYPE'] },\n);\n\nconst CONTEXT_NOT_SET = makeCodeDefinition(\n 'CONTEXT_NOT_SET',\n 'Context is never set for context trying to be used.',\n { addedIn: '2.8.0' },\n);\n\nconst CONTEXT_INVALID_SELECTION= makeCodeDefinition(\n 'CONTEXT_INVALID_SELECTION',\n 'Selection within @fromContext must resolve to a single field.',\n { addedIn: '2.8.0' },\n);\n\nconst NO_CONTEXT_IN_SELECTION = makeCodeDefinition(\n 'NO_CONTEXT_IN_SELECTION',\n 'Selection in @fromContext field argument does not reference a context.',\n { addedIn: '2.8.0' },\n);\n\nconst CONTEXT_NO_RESOLVABLE_KEY = makeCodeDefinition(\n 'CONTEXT_NO_RESOLVABLE_KEY',\n 'If an ObjectType uses a @fromContext, at least one of its keys must be resolvable.',\n { addedIn: '2.8.0' },\n);\n\nconst CONTEXT_NAME_INVALID = makeCodeDefinition(\n 'CONTEXT_NAME_INVALID',\n 'Context name is invalid.',\n { addedIn: '2.8.0' },\n);\n\nconst EXTERNAL_TYPE_MISMATCH = makeCodeDefinition(\n 'EXTERNAL_TYPE_MISMATCH',\n 'An `@external` field has a type that is incompatible with the declaration(s) of that field in other subgraphs.',\n { addedIn: FED1_CODE },\n);\n\nconst EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE = makeCodeDefinition(\n 'EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE',\n 'The @external directive collides with other directives in some situations.',\n { addedIn: '2.1.0' },\n);\n\nconst EXTERNAL_ARGUMENT_MISSING = makeCodeDefinition(\n 'EXTERNAL_ARGUMENT_MISSING',\n 'An `@external` field is missing some arguments present in the declaration(s) of that field in other subgraphs.',\n);\n\nconst EXTERNAL_ARGUMENT_TYPE_MISMATCH = makeCodeDefinition(\n 'EXTERNAL_ARGUMENT_TYPE_MISMATCH',\n 'An `@external` field declares an argument with a type that is incompatible with the corresponding argument in the declaration(s) of that field in other subgraphs.',\n);\n\nconst EXTERNAL_ARGUMENT_DEFAULT_MISMATCH = makeCodeDefinition(\n 'EXTERNAL_ARGUMENT_DEFAULT_MISMATCH',\n 'An `@external` field declares an argument with a default that is incompatible with the corresponding argument in the declaration(s) of that field in other subgraphs.',\n);\n\nconst EXTERNAL_ON_INTERFACE = makeCodeDefinition(\n 'EXTERNAL_ON_INTERFACE',\n 'The field of an interface type is marked with `@external`: as external is about marking field not resolved by the subgraph and as interface field are not resolved (only implementations of those fields are), an \"external\" interface field is nonsensical',\n);\n\nconst MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL = makeCodeDefinition(\n 'MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL',\n 'In a subgraph, a field is both marked @external and has a merged directive applied to it',\n);\n\nconst FIELD_TYPE_MISMATCH = makeCodeDefinition(\n 'FIELD_TYPE_MISMATCH',\n 'A field has a type that is incompatible with other declarations of that field in other subgraphs.',\n { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_FIELD_TYPE_MISMATCH'] },\n);\n\nconst ARGUMENT_TYPE_MISMATCH = makeCodeDefinition(\n 'FIELD_ARGUMENT_TYPE_MISMATCH',\n 'An argument (of a field/directive) has a type that is incompatible with that of other declarations of that same argument in other subgraphs.',\n { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_INPUT_VALUE_MISMATCH'] },\n);\n\nconst INPUT_FIELD_DEFAULT_MISMATCH = makeCodeDefinition(\n 'INPUT_FIELD_DEFAULT_MISMATCH',\n 'An input field has a default value that is incompatible with other declarations of that field in other subgraphs.',\n);\nconst ARGUMENT_DEFAULT_MISMATCH = makeCodeDefinition(\n 'FIELD_ARGUMENT_DEFAULT_MISMATCH',\n 'An argument (of a field/directive) has a default value that is incompatible with that of other declarations of that same argument in other subgraphs.',\n);\n\nconst EXTENSION_WITH_NO_BASE = makeCodeDefinition(\n 'EXTENSION_WITH_NO_BASE',\n 'A subgraph is attempting to `extend` a type that is not originally defined in any known subgraph.',\n { addedIn: FED1_CODE },\n);\n\nconst EXTERNAL_MISSING_ON_BASE = makeCodeDefinition(\n 'EXTERNAL_MISSING_ON_BASE',\n 'A field is marked as `@external` in a subgraph but with no non-external declaration in any other subgraph.',\n { addedIn: FED1_CODE },\n);\n\nconst INVALID_FIELD_SHARING = makeCodeDefinition(\n 'INVALID_FIELD_SHARING',\n 'A field that is non-shareable in at least one subgraph is resolved by multiple subgraphs.'\n);\n\nconst INVALID_SHAREABLE_USAGE = makeCodeDefinition(\n 'INVALID_SHAREABLE_USAGE',\n 'The `@shareable` federation directive is used in an invalid way.',\n { addedIn: '2.1.2' },\n);\n\nconst INVALID_LINK_DIRECTIVE_USAGE = makeCodeDefinition(\n 'INVALID_LINK_DIRECTIVE_USAGE',\n 'An application of the @link directive is invalid/does not respect the specification.'\n);\n\nconst INVALID_LINK_IDENTIFIER = makeCodeDefinition(\n 'INVALID_LINK_IDENTIFIER',\n 'A url/version for a @link feature is invalid/does not respect the specification.',\n { addedIn: '2.1.0' },\n);\n\nconst LINK_IMPORT_NAME_MISMATCH = makeCodeDefinition(\n 'LINK_IMPORT_NAME_MISMATCH',\n 'The import name for a merged directive (as declared by the relevant `@link(import:)` argument) is inconsistent between subgraphs.'\n);\n\nconst REFERENCED_INACCESSIBLE = makeCodeDefinition(\n 'REFERENCED_INACCESSIBLE',\n 'An element is marked as @inaccessible but is referenced by an element visible in the API schema.'\n);\n\nconst DEFAULT_VALUE_USES_INACCESSIBLE = makeCodeDefinition(\n 'DEFAULT_VALUE_USES_INACCESSIBLE',\n 'An element is marked as @inaccessible but is used in the default value of an element visible in the API schema.'\n);\n\nconst QUERY_ROOT_TYPE_INACCESSIBLE = makeCodeDefinition(\n 'QUERY_ROOT_TYPE_INACCESSIBLE',\n 'An element is marked as @inaccessible but is the query root type, which must be visible in the API schema.'\n);\n\nconst REQUIRED_INACCESSIBLE = makeCodeDefinition(\n 'REQUIRED_INACCESSIBLE',\n 'An element is marked as @inaccessible but is required by an element visible in the API schema.'\n);\n\nconst IMPLEMENTED_BY_INACCESSIBLE = makeCodeDefinition(\n 'IMPLEMENTED_BY_INACCESSIBLE',\n 'An element is marked as @inaccessible but implements an element visible in the API schema.'\n);\n\nconst DISALLOWED_INACCESSIBLE = makeCodeDefinition(\n 'DISALLOWED_INACCESSIBLE',\n 'An element is marked as @inaccessible that is not allowed to be @inaccessible.'\n);\n\nconst ONLY_INACCESSIBLE_CHILDREN = makeCodeDefinition(\n 'ONLY_INACCESSIBLE_CHILDREN',\n 'A type visible in the API schema has only @inaccessible children.'\n);\n\nconst REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH = makeCodeDefinition(\n 'REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH',\n 'A field of an input object type is mandatory in some subgraphs, but the field is not defined in all the subgraphs that define the input object type.'\n);\n\nconst REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH = makeCodeDefinition(\n 'REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH',\n 'An argument of a field or directive definition is mandatory in some subgraphs, but the argument is not defined in all the subgraphs that define the field or directive definition.'\n);\n\nconst EMPTY_MERGED_INPUT_TYPE = makeCodeDefinition(\n 'EMPTY_MERGED_INPUT_TYPE',\n 'An input object type has no field common to all the subgraphs that define the type. Merging that type would result in an invalid empty input object type.'\n);\n\nconst ENUM_VALUE_MISMATCH = makeCodeDefinition(\n 'ENUM_VALUE_MISMATCH',\n 'An enum type that is used as both an input and output type has a value that is not defined in all the subgraphs that define the enum type.'\n);\n\nconst EMPTY_MERGED_ENUM_TYPE = makeCodeDefinition(\n 'EMPTY_MERGED_ENUM_TYPE',\n 'An enum type has no value common to all the subgraphs that define the type. Merging that type would result in an invalid empty enum type.'\n);\n\nconst SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES = makeCodeDefinition(\n 'SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES',\n 'A shareable field return type has mismatched possible runtime types in the subgraphs in which the field is declared. As shared fields must resolve the same way in all subgraphs, this is almost surely a mistake.'\n);\n\nconst SATISFIABILITY_ERROR = makeCodeDefinition(\n 'SATISFIABILITY_ERROR',\n 'Subgraphs can be merged, but the resulting supergraph API would have queries that cannot be satisfied by those subgraphs.',\n);\n\nconst OVERRIDE_FROM_SELF_ERROR = makeCodeDefinition(\n 'OVERRIDE_FROM_SELF_ERROR',\n 'Field with `@override` directive has \"from\" location that references its own subgraph.',\n);\n\nconst OVERRIDE_SOURCE_HAS_OVERRIDE = makeCodeDefinition(\n 'OVERRIDE_SOURCE_HAS_OVERRIDE',\n 'Field which is overridden to another subgraph is also marked @override.',\n);\n\nconst OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE = makeCodeDefinition(\n 'OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE',\n 'The @override directive cannot be used on external fields, nor to override fields with either @external, @provides, or @requires.',\n);\n\nconst OVERRIDE_ON_INTERFACE = makeCodeDefinition(\n 'OVERRIDE_ON_INTERFACE',\n 'The @override directive cannot be used on the fields of an interface type.',\n { addedIn: '2.3.0' },\n);\n\nconst OVERRIDE_LABEL_INVALID = makeCodeDefinition(\n 'OVERRIDE_LABEL_INVALID',\n 'The @override directive `label` argument must match the pattern /^[a-zA-Z][a-zA-Z0-9_\\-:./]*$/ or /^percent\\((\\d{1,2}(\\.\\d{1,8})?|100)\\)$/',\n { addedIn: '2.7.0' },\n);\n\nconst UNSUPPORTED_FEATURE = makeCodeDefinition(\n 'UNSUPPORTED_FEATURE',\n 'Indicates an error due to feature currently unsupported by federation.',\n { addedIn: '2.1.0' },\n);\n\nconst INVALID_FEDERATION_SUPERGRAPH = makeCodeDefinition(\n 'INVALID_FEDERATION_SUPERGRAPH',\n 'Indicates that a schema provided for an Apollo Federation supergraph is not a valid supergraph schema.',\n { addedIn: '2.1.0' },\n);\n\nconst DOWNSTREAM_SERVICE_ERROR = makeCodeDefinition(\n 'DOWNSTREAM_SERVICE_ERROR',\n 'Indicates an error in a subgraph service query during query execution in a federated service.',\n { addedIn: FED1_CODE },\n);\n\nconst DIRECTIVE_COMPOSITION_ERROR = makeCodeDefinition(\n 'DIRECTIVE_COMPOSITION_ERROR',\n 'Error when composing custom directives.',\n { addedIn: '2.1.0' },\n);\n\nconst INTERFACE_OBJECT_USAGE_ERROR = makeCodeDefinition(\n 'INTERFACE_OBJECT_USAGE_ERROR',\n 'Error in the usage of the @interfaceObject directive.',\n { addedIn: '2.3.0' },\n);\n\nconst INTERFACE_KEY_NOT_ON_IMPLEMENTATION = makeCodeDefinition(\n 'INTERFACE_KEY_NOT_ON_IMPLEMENTATION',\n 'A `@key` is defined on an interface type, but is not defined (or is not resolvable) on at least one of the interface implementations',\n { addedIn: '2.3.0' },\n);\n\nconst INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE = makeCodeDefinition(\n 'INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE',\n 'A subgraph has a `@key` on an interface type, but that subgraph does not define an implementation (in the supergraph) of that interface',\n { addedIn: '2.3.0' },\n)\n\nconst SOURCE_FEDERATION_VERSION_REQUIRED = makeCodeDefinition(\n 'SOURCE_FEDERATION_VERSION_REQUIRED',\n 'Schemas using `@source{API,Type,Field}` directives must @link-import v2.7 or later of federation',\n { addedIn: '2.7.1' },\n);\n\nconst SOURCE_API_NAME_INVALID = makeCodeDefinition(\n 'SOURCE_API_NAME_INVALID',\n 'Each `@sourceAPI` directive must take a unique and valid name as an argument',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_API_PROTOCOL_INVALID = makeCodeDefinition(\n 'SOURCE_API_PROTOCOL_INVALID',\n 'Each `@sourceAPI` directive must specify exactly one of the known protocols',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_API_HTTP_BASE_URL_INVALID = makeCodeDefinition(\n 'SOURCE_API_HTTP_BASE_URL_INVALID',\n 'The `@sourceAPI` directive must specify a valid http.baseURL',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_HTTP_HEADERS_INVALID = makeCodeDefinition(\n 'SOURCE_HTTP_HEADERS_INVALID',\n 'The `http.headers` argument of `@source*` directives must specify valid HTTP headers',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_API_ERROR = makeCodeDefinition(\n 'SOURCE_TYPE_API_ERROR',\n 'The `api` argument of the `@sourceType` directive must match a valid `@sourceAPI` name',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_PROTOCOL_INVALID = makeCodeDefinition(\n 'SOURCE_TYPE_PROTOCOL_INVALID',\n 'The `@sourceType` directive must specify the same protocol as its corresponding `@sourceAPI`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_HTTP_METHOD_INVALID = makeCodeDefinition(\n 'SOURCE_TYPE_HTTP_METHOD_INVALID',\n 'The `@sourceType` directive must specify exactly one of `http.GET` or `http.POST`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_HTTP_PATH_INVALID = makeCodeDefinition(\n 'SOURCE_TYPE_HTTP_PATH_INVALID',\n 'The `@sourceType` directive must specify a valid URL template for `http.GET` or `http.POST`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_HTTP_BODY_INVALID = makeCodeDefinition(\n 'SOURCE_TYPE_HTTP_BODY_INVALID',\n 'If the `@sourceType` specifies `http.body`, it must be a valid `JSONSelection`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY = makeCodeDefinition(\n 'SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY',\n 'The `@sourceType` directive must be applied to an object or interface type that also has `@key`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_TYPE_SELECTION_INVALID = makeCodeDefinition(\n 'SOURCE_TYPE_SELECTION_INVALID',\n 'The `selection` argument of the `@sourceType` directive must be a valid `JSONSelection` that outputs fields of the GraphQL type',\n);\n\nconst SOURCE_FIELD_API_ERROR = makeCodeDefinition(\n 'SOURCE_FIELD_API_ERROR',\n 'The `api` argument of the `@sourceField` directive must match a valid `@sourceAPI` name',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_FIELD_PROTOCOL_INVALID = makeCodeDefinition(\n 'SOURCE_FIELD_PROTOCOL_INVALID',\n 'If `@sourceField` specifies a protocol, it must match the corresponding `@sourceAPI` protocol',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_FIELD_HTTP_METHOD_INVALID = makeCodeDefinition(\n 'SOURCE_FIELD_HTTP_METHOD_INVALID',\n 'The `@sourceField` directive must specify at most one of `http.{GET,POST,PUT,PATCH,DELETE}`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_FIELD_HTTP_PATH_INVALID = makeCodeDefinition(\n 'SOURCE_FIELD_HTTP_PATH_INVALID',\n 'The `@sourceField` directive must specify a valid URL template for `http.{GET,POST,PUT,PATCH,DELETE}`',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_FIELD_HTTP_BODY_INVALID = makeCodeDefinition(\n 'SOURCE_FIELD_HTTP_BODY_INVALID',\n 'If `@sourceField` specifies http.body, it must be a valid `JSONSelection` matching available arguments and fields',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_FIELD_SELECTION_INVALID = makeCodeDefinition(\n 'SOURCE_FIELD_SELECTION_INVALID',\n 'The `selection` argument of the `@sourceField` directive must be a valid `JSONSelection` that outputs fields of the GraphQL type',\n { addedIn: '2.7.0' },\n);\n\nconst SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD = makeCodeDefinition(\n 'SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD',\n 'The `@sourceField` directive must be applied to a field of the `Query` or `Mutation` types, or of an entity type',\n { addedIn: '2.7.0' },\n);\n\nconst CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS = makeCodeDefinition(\n 'CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS',\n 'Argument on field is marked contextual in only some subgraphs',\n { addedIn: '2.7.0' },\n);\n\nconst COST_APPLIED_TO_INTERFACE_FIELD = makeCodeDefinition(\n 'COST_APPLIED_TO_INTERFACE_FIELD',\n 'The `@cost` directive must be applied to concrete types',\n { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_APPLIED_TO_NON_LIST = makeCodeDefinition(\n 'LIST_SIZE_APPLIED_TO_NON_LIST',\n 'The `@listSize` directive must be applied to list types',\n { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_INVALID_ASSUMED_SIZE = makeCodeDefinition(\n 'LIST_SIZE_INVALID_ASSUMED_SIZE',\n 'The `@listSize` directive assumed size cannot be negative',\n { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_INVALID_SLICING_ARGUMENT = makeCodeDefinition(\n 'LIST_SIZE_INVALID_SLICING_ARGUMENT',\n 'The `@listSize` directive must have existing integer slicing arguments',\n { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_INVALID_SIZED_FIELD = makeCodeDefinition(\n 'LIST_SIZE_INVALID_SIZED_FIELD',\n 'The `@listSize` directive must reference existing list fields as sized fields',\n { addedIn: '2.9.2' },\n);\n\nexport const ERROR_CATEGORIES = {\n DIRECTIVE_FIELDS_MISSING_EXTERNAL,\n DIRECTIVE_UNSUPPORTED_ON_INTERFACE,\n DIRECTIVE_INVALID_FIELDS_TYPE,\n DIRECTIVE_INVALID_FIELDS,\n FIELDS_HAS_ARGS,\n ROOT_TYPE_USED,\n DIRECTIVE_IN_FIELDS_ARG,\n}\n\nexport const ERRORS = {\n INVALID_GRAPHQL,\n DIRECTIVE_DEFINITION_INVALID,\n TYPE_DEFINITION_INVALID,\n UNSUPPORTED_LINKED_FEATURE,\n UNKNOWN_FEDERATION_LINK_VERSION,\n UNKNOWN_LINK_VERSION,\n KEY_FIELDS_HAS_ARGS,\n PROVIDES_FIELDS_HAS_ARGS,\n PROVIDES_MISSING_EXTERNAL,\n REQUIRES_MISSING_EXTERNAL,\n KEY_UNSUPPORTED_ON_INTERFACE,\n PROVIDES_UNSUPPORTED_ON_INTERFACE,\n REQUIRES_UNSUPPORTED_ON_INTERFACE,\n EXTERNAL_UNUSED,\n EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE,\n TYPE_WITH_ONLY_UNUSED_EXTERNAL,\n PROVIDES_ON_NON_OBJECT_FIELD,\n KEY_INVALID_FIELDS_TYPE,\n PROVIDES_INVALID_FIELDS_TYPE,\n REQUIRES_INVALID_FIELDS_TYPE,\n KEY_INVALID_FIELDS,\n PROVIDES_INVALID_FIELDS,\n REQUIRES_INVALID_FIELDS,\n KEY_FIELDS_SELECT_INVALID_TYPE,\n ROOT_QUERY_USED,\n ROOT_MUTATION_USED,\n ROOT_SUBSCRIPTION_USED,\n INVALID_SUBGRAPH_NAME,\n NO_QUERIES,\n INTERFACE_FIELD_NO_IMPLEM,\n TYPE_KIND_MISMATCH,\n CONTEXT_NOT_SET,\n CONTEXT_INVALID_SELECTION,\n NO_CONTEXT_IN_SELECTION,\n CONTEXT_NO_RESOLVABLE_KEY,\n CONTEXT_NAME_INVALID,\n EXTERNAL_TYPE_MISMATCH,\n EXTERNAL_ARGUMENT_MISSING,\n EXTERNAL_ARGUMENT_TYPE_MISMATCH,\n EXTERNAL_ARGUMENT_DEFAULT_MISMATCH,\n EXTERNAL_ON_INTERFACE,\n MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL,\n FIELD_TYPE_MISMATCH,\n ARGUMENT_TYPE_MISMATCH,\n INPUT_FIELD_DEFAULT_MISMATCH,\n ARGUMENT_DEFAULT_MISMATCH,\n EXTENSION_WITH_NO_BASE,\n EXTERNAL_MISSING_ON_BASE,\n INVALID_FIELD_SHARING,\n INVALID_SHAREABLE_USAGE,\n INVALID_LINK_DIRECTIVE_USAGE,\n INVALID_LINK_IDENTIFIER,\n LINK_IMPORT_NAME_MISMATCH,\n REFERENCED_INACCESSIBLE,\n DEFAULT_VALUE_USES_INACCESSIBLE,\n QUERY_ROOT_TYPE_INACCESSIBLE,\n REQUIRED_INACCESSIBLE,\n DISALLOWED_INACCESSIBLE,\n IMPLEMENTED_BY_INACCESSIBLE,\n ONLY_INACCESSIBLE_CHILDREN,\n REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH,\n REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH,\n EMPTY_MERGED_INPUT_TYPE,\n ENUM_VALUE_MISMATCH,\n EMPTY_MERGED_ENUM_TYPE,\n SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES,\n SATISFIABILITY_ERROR,\n OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE,\n OVERRIDE_FROM_SELF_ERROR,\n OVERRIDE_SOURCE_HAS_OVERRIDE,\n OVERRIDE_ON_INTERFACE,\n OVERRIDE_LABEL_INVALID,\n UNSUPPORTED_FEATURE,\n INVALID_FEDERATION_SUPERGRAPH,\n DOWNSTREAM_SERVICE_ERROR,\n KEY_HAS_DIRECTIVE_IN_FIELDS_ARGS,\n PROVIDES_HAS_DIRECTIVE_IN_FIELDS_ARGS,\n REQUIRES_HAS_DIRECTIVE_IN_FIELDS_ARGS,\n DIRECTIVE_COMPOSITION_ERROR,\n INTERFACE_OBJECT_USAGE_ERROR,\n INTERFACE_KEY_NOT_ON_IMPLEMENTATION,\n INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE,\n // Errors related to @sourceAPI, @sourceType, and/or @sourceField\n SOURCE_FEDERATION_VERSION_REQUIRED,\n SOURCE_API_NAME_INVALID,\n SOURCE_API_PROTOCOL_INVALID,\n SOURCE_API_HTTP_BASE_URL_INVALID,\n SOURCE_HTTP_HEADERS_INVALID,\n SOURCE_TYPE_API_ERROR,\n SOURCE_TYPE_PROTOCOL_INVALID,\n SOURCE_TYPE_HTTP_METHOD_INVALID,\n SOURCE_TYPE_HTTP_PATH_INVALID,\n SOURCE_TYPE_HTTP_BODY_INVALID,\n SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY,\n SOURCE_TYPE_SELECTION_INVALID,\n SOURCE_FIELD_API_ERROR,\n SOURCE_FIELD_PROTOCOL_INVALID,\n SOURCE_FIELD_HTTP_METHOD_INVALID,\n SOURCE_FIELD_HTTP_PATH_INVALID,\n SOURCE_FIELD_HTTP_BODY_INVALID,\n SOURCE_FIELD_SELECTION_INVALID,\n SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD,\n CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,\n // Errors related to demand control\n COST_APPLIED_TO_INTERFACE_FIELD,\n LIST_SIZE_APPLIED_TO_NON_LIST,\n LIST_SIZE_INVALID_ASSUMED_SIZE,\n LIST_SIZE_INVALID_SIZED_FIELD,\n LIST_SIZE_INVALID_SLICING_ARGUMENT,\n};\n\nconst codeDefByCode = Object.values(ERRORS).reduce((obj: {[code: string]: ErrorCodeDefinition}, codeDef: ErrorCodeDefinition) => { obj[codeDef.code] = codeDef; return obj; }, {});\n\n/*\n * A list of now-removed errors, each as a pair of the old code and a comment for the removal.\n * This exist mostly for the sake of being included in the auto-generated documentation. But\n * having it here means that grepping any error code in this file should turn up something:\n * - either a currently active code.\n * - or one that has been replaced/generalized (in a `replaces:` of an active code).\n * - or a now removed code below.\n */\nexport const REMOVED_ERRORS = [\n ['KEY_FIELDS_MISSING_ON_BASE', 'Keys can now use any field from any other subgraph.'],\n ['KEY_FIELDS_MISSING_EXTERNAL', 'Using `@external` for key fields is now discouraged, unless the field is truly meant to be external.'],\n ['KEY_MISSING_ON_BASE', 'Each subgraph is now free to declare a key only if it needs it.'],\n ['MULTIPLE_KEYS_ON_EXTENSION', 'Every subgraph can have multiple keys, as necessary.'],\n ['KEY_NOT_SPECIFIED', 'Each subgraph can declare key independently of any other subgraph.'],\n ['EXTERNAL_USED_ON_BASE', 'As there is not type ownership anymore, there is also no particular limitation as to where a field can be external.'],\n\n ['PROVIDES_NOT_ON_ENTITY', '@provides can now be used on any type.'],\n ['REQUIRES_FIELDS_MISSING_ON_BASE', 'Fields in @requires can now be from any subgraph.'],\n ['REQUIRES_USED_ON_BASE', 'As there is not type ownership anymore, there is also no particular limitation as to which subgraph can use a @requires.'],\n\n ['DUPLICATE_SCALAR_DEFINITION', 'As duplicate scalar definitions is invalid GraphQL, this will now be an error with code `INVALID_GRAPHQL`.'],\n ['DUPLICATE_ENUM_DEFINITION', 'As duplicate enum definitions is invalid GraphQL, this will now be an error with code `INVALID_GRAPHQL`.'],\n ['DUPLICATE_ENUM_VALUE', 'As duplicate enum values is invalid GraphQL, this will now be an error with code `INVALID_GRAPHQL`.'],\n\n ['ENUM_MISMATCH', 'Subgraph definitions for an enum are now merged by composition.'],\n ['VALUE_TYPE_NO_ENTITY', 'There is no strong different between entity and value types in the model (they are just usage pattern) and a type can have keys in one subgraph but not another.'],\n ['VALUE_TYPE_UNION_TYPES_MISMATCH', 'Subgraph definitions for an union are now merged by composition.'],\n ['PROVIDES_FIELDS_SELECT_INVALID_TYPE', '@provides can now be used on field of interface, union and list types.'],\n ['RESERVED_FIELD_USED', 'This error was previously not correctly enforced: the _service and _entities, if present, were overridden; this is still the case.'],\n\n ['NON_REPEATABLE_DIRECTIVE_ARGUMENTS_MISMATCH', 'Since federation 2.1.0, the case this error used to cover is now a warning (with code `INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS`) instead of an error.'],\n ['REQUIRES_FIELDS_HAS_ARGS', 'Since federation 2.1.1, using fields with arguments in a @requires is fully supported.'],\n\n ['INTERFACE_FIELD_IMPLEM_TYPE_MISMATCH', 'This error was thrown by a validation introduced to avoid running into a known runtime bug. Since federation 2.3, the underlying runtime bug has been addressed and the validation/limitation was no longer necessary and has been removed.'],\n];\n", "'use strict';\nmodule.exports = (function()\n{\n function _min(d0, d1, d2, bx, ay)\n {\n return d0 < d1 || d2 < d1\n ? d0 > d2\n ? d2 + 1\n : d0 + 1\n : bx === ay\n ? d1\n : d1 + 1;\n }\n\n return function(a, b)\n {\n if (a === b) {\n return 0;\n }\n\n if (a.length > b.length) {\n var tmp = a;\n a = b;\n b = tmp;\n }\n\n var la = a.length;\n var lb = b.length;\n\n while (la > 0 && (a.charCodeAt(la - 1) === b.charCodeAt(lb - 1))) {\n la--;\n lb--;\n }\n\n var offset = 0;\n\n while (offset < la && (a.charCodeAt(offset) === b.charCodeAt(offset))) {\n offset++;\n }\n\n la -= offset;\n lb -= offset;\n\n if (la === 0 || lb < 3) {\n return lb;\n }\n\n var x = 0;\n var y;\n var d0;\n var d1;\n var d2;\n var d3;\n var dd;\n var dy;\n var ay;\n var bx0;\n var bx1;\n var bx2;\n var bx3;\n\n var vector = [];\n\n for (y = 0; y < la; y++) {\n vector.push(y + 1);\n vector.push(a.charCodeAt(offset + y));\n }\n\n var len = vector.length - 1;\n\n for (; x < lb - 3;) {\n bx0 = b.charCodeAt(offset + (d0 = x));\n bx1 = b.charCodeAt(offset + (d1 = x + 1));\n bx2 = b.charCodeAt(offset + (d2 = x + 2));\n bx3 = b.charCodeAt(offset + (d3 = x + 3));\n dd = (x += 4);\n for (y = 0; y < len; y += 2) {\n dy = vector[y];\n ay = vector[y + 1];\n d0 = _min(dy, d0, d1, bx0, ay);\n d1 = _min(d0, d1, d2, bx1, ay);\n d2 = _min(d1, d2, d3, bx2, ay);\n dd = _min(d2, d3, dd, bx3, ay);\n vector[y] = dd;\n d3 = d2;\n d2 = d1;\n d1 = d0;\n d0 = dy;\n }\n }\n\n for (; x < lb;) {\n bx0 = b.charCodeAt(offset + (d0 = x));\n dd = ++x;\n for (y = 0; y < len; y += 2) {\n dy = vector[y];\n vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);\n d0 = dy;\n }\n }\n\n return dd;\n };\n})();\n\n", "import levenshtein from 'js-levenshtein';\nimport { mapKeys } from './utils';\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nexport function suggestionList(input: string, options: readonly string[]): string[] {\n const optionsByDistance = new Map();\n\n const threshold = Math.floor(input.length * 0.4) + 1;\n const inputLowerCase = input.toLowerCase();\n for (const option of options) {\n // Special casing so that if the only mismatch is in uppper/lower-case, then the\n // option is always shown.\n const distance = inputLowerCase === option.toLowerCase()\n ? 1\n : levenshtein(input, option);\n if (distance <= threshold) {\n optionsByDistance.set(option, distance);\n }\n }\n\n return mapKeys(optionsByDistance).sort((a, b) => {\n const distanceDiff = optionsByDistance.get(a)! - optionsByDistance.get(b)!;\n return distanceDiff !== 0 ? distanceDiff : a.localeCompare(b);\n });\n}\n\nconst MAX_SUGGESTIONS = 5;\n\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\nexport function didYouMean(suggestions: readonly string[]): string {\n const message = ' Did you mean ';\n\n const quotedSuggestions = suggestions.map((x) => `\"${x}\"`);\n switch (suggestions.length) {\n case 0:\n return '';\n case 1:\n return message + quotedSuggestions[0] + '?';\n case 2:\n return message + quotedSuggestions[0] + ' or ' + quotedSuggestions[1] + '?';\n }\n\n const selected = quotedSuggestions.slice(0, MAX_SUGGESTIONS);\n const lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n", "'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n", "'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n", "'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n", "'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n", "'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n", "'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n", "'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, typedArray) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nvar trySlices = function tryAllSlices(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, name) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tgetter(value);\n\t\t\t\tfound = $slice(name, 1);\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar gOPD = require('gopd');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n", "// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n", "module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n", "import {\n ArgumentDefinition,\n EnumType,\n InputFieldDefinition,\n InputObjectType,\n InputType,\n isBooleanType,\n isCustomScalarType,\n isEnumType,\n isFloatType,\n isIDType,\n isInputObjectType,\n isIntType,\n isListType,\n isNonNullType,\n isScalarType,\n isStringType,\n isVariable,\n ScalarType,\n Schema,\n Variable,\n VariableCollector,\n VariableDefinition,\n VariableDefinitions,\n} from './definitions';\nimport {\n ArgumentNode,\n GraphQLError,\n Kind,\n print,\n ValueNode,\n ObjectFieldNode,\n ConstValueNode,\n ConstObjectFieldNode,\n} from 'graphql';\nimport { didYouMean, suggestionList } from './suggestions';\nimport { inspect } from 'util';\nimport { sameType } from './types';\nimport { assert, assertUnreachable } from './utils';\nimport { ERRORS } from './error';\n\n// Per-GraphQL spec, max and value for an Int type.\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\n/**\n * Converts a graphQL value into it's textual representation.\n *\n * @param v - the value to convert/display. This method assumes that it is a value graphQL\n * value (essentially, one that could have been produced by `valueFromAST`/`valueFormASTUntyped`).\n * If this is not the case, the behaviour is unspecified, and in particular this method may\n * throw or produce an output that is not valid graphQL syntax.\n * @param expectedType - the type of the value being converted. This is optional is only used to\n * ensure enum values are displayed as such and not as strings. In other words, the type of\n * the value should be provided when possible (when the value is known to be of a ype) but\n * using this method without a type is useful to dispaly the value in error/debug messages\n * where no type may be known. Note that if `v` is not a valid value for `expectedType`,\n * this method will not throw but enum values may be represented by strings in the output.\n * @return a textual representation of the value. It is guaranteed to be valid graphQL syntax\n * if the input value is a valid graphQL value.\n */\nexport function valueToString(v: any, expectedType?: InputType): string {\n if (v === undefined || v === null) {\n return \"null\";\n }\n\n if (expectedType && isNonNullType(expectedType)) {\n return valueToString(v, expectedType.ofType);\n }\n\n if (expectedType && isCustomScalarType(expectedType)) {\n // If the expected type is a custom scalar, we can't really infer anything from it.\n expectedType = undefined;\n }\n\n if (isVariable(v)) {\n return v.toString();\n }\n\n if (Array.isArray(v)) {\n let elementsType: InputType | undefined = undefined;\n // If the expected type is not a list, we've been given an invalid type. We don't want this\n // method to fail though, so we just ignore the provided type from that point one (passing\n // `undefined` to the recursion).\n if (expectedType && isListType(expectedType)) {\n elementsType = expectedType.ofType;\n }\n return '[' + v.map(e => valueToString(e, elementsType)).join(', ') + ']';\n }\n\n // We know the value is not a list/array. But if the type is a list, we still want to print\n // the value correctly, at least as long as it's a valid value for the element type, since\n // list input coercions may allow this.\n if (expectedType && isListType(expectedType)) {\n return valueToString(v, expectedType.ofType);\n }\n\n if (typeof v === 'object') {\n if (expectedType && !isInputObjectType(expectedType)) {\n // expectedType does not match the value, we ignore it for what remains.\n expectedType = undefined;\n }\n return '{' + Object.keys(v).map(k => {\n const valueType = expectedType ? (expectedType as InputObjectType).field(k)?.type : undefined;\n return `${k}: ${valueToString(v[k], valueType)}`;\n }).join(', ') + '}';\n }\n\n if (typeof v === 'string') {\n if (expectedType) {\n if (isEnumType(expectedType)) {\n // If the value is essentially invalid (not one of the enum value), then we display it as a string. This\n // avoid strange syntax errors if the string itself is not even valid graphQL. Note that validation will\n // reject such a value at some point with a proper error message, but this isn't the right place to error\n // out and generate something syntactially invalid is dodgy (in particular because the input from which this\n // value comes was probably syntactially valid, so the value was probably inputed as a string there).\n return expectedType.value(v) ? v : JSON.stringify(v);\n }\n if (expectedType === expectedType.schema().idType() && integerStringRegExp.test(v)) {\n return v;\n }\n }\n return JSON.stringify(v);\n }\n\n return String(v);\n}\n\n// Fundamentally a deep-equal, but the generic 'deep-equal' was showing up on profiling and\n// as we know our values can only so many things, we can do faster fairly simply.\nexport function valueEquals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n return Array.isArray(b) && arrayValueEquals(a, b) ;\n }\n // Note that typeof null === 'object', so we have to manually rule that out\n // here.\n if (a !== null && typeof a === 'object') {\n return b !== null && typeof b === 'object' && objectEquals(a, b);\n }\n return a === b;\n}\n\nfunction arrayValueEquals(a: any[], b: any[]): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!valueEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction objectEquals(a: {[key: string]: any}, b: {[key: string]: any}): boolean {\n const keys1 = Object.keys(a);\n const keys2 = Object.keys(b);\n if (keys1.length != keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const v1 = a[key];\n const v2 = b[key];\n // Beware of false-negative due to getting undefined because the property is not\n // in args2.\n if (v2 === undefined && !keys2.includes(key)) {\n return false;\n }\n if (!valueEquals(v1, v2)) {\n return false;\n }\n }\n return true;\n}\n\nexport function argumentsEquals(args1: {[key: string]: any}, args2: {[key: string]: any}): boolean {\n if (args1 === args2) {\n return true;\n }\n return objectEquals(args1, args2);\n}\n\nfunction buildError(message: string): Error {\n // Maybe not the right error for this?\n return new Error(message);\n}\n\nfunction applyDefaultValues(value: any, type: InputType): any {\n if (isVariable(value)) {\n return value;\n }\n\n if (value === null) {\n if (isNonNullType(type)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid null value for non-null type ${type} while computing default values`);\n }\n return null;\n }\n\n if (isNonNullType(type)) {\n return applyDefaultValues(value, type.ofType);\n }\n\n if (isListType(type)) {\n if (Array.isArray(value)) {\n return value.map(v => applyDefaultValues(v, type.ofType));\n } else {\n return applyDefaultValues(value, type.ofType);\n }\n }\n\n if (isInputObjectType(type)) {\n if (typeof value !== 'object') {\n throw ERRORS.INVALID_GRAPHQL.err(`Expected value for type ${type} to be an object, but is ${typeof value}.`);\n }\n\n const updated = Object.create(null);\n for (const field of type.fields()) {\n if (!field.type) {\n throw buildError(`Cannot compute default value for field ${field.name} of ${type} as the field type is undefined`);\n }\n const fieldValue = value[field.name];\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n updated[field.name] = applyDefaultValues(field.defaultValue, field.type);\n } else if (!isNonNullType(field.type)) {\n updated[field.name] = null;\n } else {\n throw ERRORS.INVALID_GRAPHQL.err(`Required field \"${field.name}\" of type ${type} was not provided.`);\n }\n } else {\n updated[field.name] = applyDefaultValues(fieldValue, field.type);\n }\n }\n\n // Ensure every provided field is defined.\n for (const fieldName of Object.keys(value)) {\n if (!type.field(fieldName)) {\n const suggestions = suggestionList(fieldName, type.fields().map(f => f.name));\n throw ERRORS.INVALID_GRAPHQL.err(`Field \"${fieldName}\" is not defined by type \"${type}\".` + didYouMean(suggestions));\n }\n }\n return updated;\n }\n return value;\n}\n\nexport function withDefaultValues(value: any, argument: ArgumentDefinition): any {\n if (!argument.type) {\n throw buildError(`Cannot compute default value for argument ${argument} as the type is undefined`);\n }\n if (value === undefined) {\n if (argument.defaultValue !== undefined) {\n return applyDefaultValues(argument.defaultValue, argument.type);\n } else if (!isNonNullType(argument.type)) {\n return null;\n } else {\n throw ERRORS.INVALID_GRAPHQL.err(`Required argument \"${argument.coordinate}\" was not provided.`);\n }\n }\n return applyDefaultValues(value, argument.type);\n}\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n\nfunction objectFieldNodeToConst(field: ObjectFieldNode): ConstObjectFieldNode {\n return { ...field, value: valueNodeToConstValueNode(field.value) };\n}\n\n/**\n * Transforms a ValueNode to a ConstValueNode. This should only be invoked when we know that the value node can be const\n * as it will result in an exception if it contains a VariableNode\n */\nexport function valueNodeToConstValueNode(value: ValueNode): ConstValueNode {\n if (value.kind === Kind.NULL\n || value.kind === Kind.INT\n || value.kind === Kind.FLOAT\n || value.kind === Kind.STRING\n || value.kind === Kind.BOOLEAN\n || value.kind === Kind.ENUM\n ) {\n return value;\n }\n if (value.kind === Kind.LIST) {\n const constValues = value.values.map(v => valueNodeToConstValueNode(v));\n return { ...value, values: constValues };\n }\n if (value.kind === Kind.OBJECT) {\n const constFields = value.fields.map(f => objectFieldNodeToConst(f));\n return { ...value, fields: constFields };\n }\n if (value.kind === Kind.VARIABLE) {\n // VarableNode does not exist in ConstValueNode\n throw new Error('Unexpected VariableNode in const AST');\n }\n assertUnreachable(value);\n}\n\n// Adapted from the `astFromValue` function in graphQL-js\nexport function valueToAST(value: any, type: InputType): ValueNode | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (isNonNullType(type)) {\n const astValue = valueToAST(value, type.ofType);\n if (astValue?.kind === Kind.NULL) {\n throw buildError(`Invalid null value ${valueToString(value)} for non-null type ${type}`);\n }\n return astValue;\n }\n\n // only explicit null, not undefined, NaN\n if (value === null) {\n return { kind: Kind.NULL };\n }\n\n if (isVariable(value)) {\n return { kind: Kind.VARIABLE, name: { kind: Kind.NAME, value: value.name } };\n }\n\n if (isCustomScalarType(type)) {\n return valueToASTUntyped(value);\n }\n\n // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n if (isListType(type)) {\n const itemType: InputType = type.ofType;\n const items = Array.from(value);\n if (items != null) {\n const valuesNodes = [];\n for (const item of items) {\n const itemNode = valueToAST(item, itemType);\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n return { kind: Kind.LIST, values: valuesNodes };\n }\n return valueToAST(value, itemType);\n }\n\n // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n if (isInputObjectType(type)) {\n if (typeof value !== 'object') {\n throw buildError(`Invalid non-objet value for input type ${type}, cannot be converted to AST: ${inspect(value, true, 10, true)}`);\n }\n const fieldNodes: ObjectFieldNode[] = [];\n for (const field of type.fields()) {\n if (!field.type) {\n throw buildError(`Cannot convert value ${valueToString(value)} as field ${field} has no type set`);\n }\n const fieldValue = valueToAST(value[field.name], field.type);\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: field.name },\n value: fieldValue,\n });\n }\n }\n return { kind: Kind.OBJECT, fields: fieldNodes };\n }\n\n // TODO: we may have to handle some coercions (not sure it matters in our use case\n // though).\n\n if (typeof value === 'boolean') {\n return { kind: Kind.BOOLEAN, value: value };\n }\n\n if (typeof value === 'number' && isFinite(value)) {\n const stringNum = String(value);\n return integerStringRegExp.test(stringNum)\n ? { kind: Kind.INT, value: stringNum }\n : { kind: Kind.FLOAT, value: stringNum };\n }\n\n if (typeof value === 'string') {\n // Enum types use Enum literals.\n if (isEnumType(type)) {\n return { kind: Kind.ENUM, value: value };\n }\n\n // ID types can use Int literals.\n if (type === type.schema().idType() && integerStringRegExp.test(value)) {\n return { kind: Kind.INT, value: value };\n }\n\n return {\n kind: Kind.STRING,\n value: value,\n };\n }\n\n throw buildError(`Invalid value for type ${type}, cannot be converted to AST: ${inspect(value)}`);\n}\n\nfunction valueToASTUntyped(value: any): ValueNode | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return { kind: Kind.NULL };\n }\n\n if (isVariable(value)) {\n return { kind: Kind.VARIABLE, name: { kind: Kind.NAME, value: value.name } };\n }\n\n // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n if (Array.isArray(value)) {\n const valuesNodes = [];\n for (const item of value) {\n const itemNode = valueToASTUntyped(item);\n if (itemNode !== undefined) {\n valuesNodes.push(itemNode);\n }\n }\n return { kind: Kind.LIST, values: valuesNodes };\n }\n\n if (typeof value === 'object') {\n const fieldNodes: ObjectFieldNode[] = [];\n for (const key of Object.keys(value)) {\n const fieldValue = valueToASTUntyped(value[key]);\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: key },\n value: fieldValue,\n });\n }\n }\n return { kind: Kind.OBJECT, fields: fieldNodes };\n }\n\n if (typeof value === 'boolean') {\n return { kind: Kind.BOOLEAN, value: value };\n }\n\n if (typeof value === 'number' && isFinite(value)) {\n const stringNum = String(value);\n return integerStringRegExp.test(stringNum)\n ? { kind: Kind.INT, value: stringNum }\n : { kind: Kind.FLOAT, value: stringNum };\n }\n\n if (typeof value === 'string') {\n return { kind: Kind.STRING, value: value };\n }\n\n throw buildError(`Invalid value, cannot be converted to AST: ${inspect(value, true, 10, true)}`);\n}\n\n// see https://spec.graphql.org/draft/#IsVariableUsageAllowed()\nfunction isValidVariable(variable: VariableDefinition, locationType: InputType, locationDefault: any): boolean {\n const variableType = variable.type;\n\n if (isNonNullType(locationType) && !isNonNullType(variableType)) {\n const hasVariableDefault = variable.defaultValue !== undefined && variable.defaultValue !== null;\n const hasLocationDefault = locationDefault !== undefined;\n if (!hasVariableDefault && !hasLocationDefault) {\n return false;\n }\n return areTypesCompatible(variableType, locationType.ofType);\n }\n\n return areTypesCompatible(variableType, locationType);\n}\n\n// see https://spec.graphql.org/draft/#AreTypesCompatible()\nfunction areTypesCompatible(variableType: InputType, locationType: InputType): boolean {\n if (isNonNullType(locationType)) {\n if (!isNonNullType(variableType)) {\n return false;\n }\n return areTypesCompatible(variableType.ofType, locationType.ofType);\n }\n if (isNonNullType(variableType)) {\n return areTypesCompatible(variableType.ofType, locationType);\n }\n if (isListType(locationType)) {\n if (!isListType(variableType)) {\n return false;\n }\n return areTypesCompatible(variableType.ofType, locationType.ofType);\n }\n return !isListType(variableType) && sameType(variableType, locationType);\n}\n\nexport function isValidValue(value: any, argument: ArgumentDefinition | InputFieldDefinition, variableDefinitions: VariableDefinitions): boolean {\n return isValidValueApplication(value, argument.type!, argument.defaultValue, variableDefinitions);\n}\n\nexport function isValidValueApplication(value: any, locationType: InputType, locationDefault: any, variableDefinitions: VariableDefinitions): boolean {\n // Note that this needs to be first, or the recursive call within 'isNonNullType' would break for variables\n if (isVariable(value)) {\n const definition = variableDefinitions.definition(value);\n return !!definition && isValidVariable(definition, locationType, locationDefault);\n }\n\n if (isNonNullType(locationType)) {\n return value !== null && isValidValueApplication(value, locationType.ofType, undefined, variableDefinitions);\n }\n\n if (value === null || value === undefined) {\n return true;\n }\n\n if (isListType(locationType)) {\n const itemType: InputType = locationType.ofType;\n if (Array.isArray(value)) {\n return value.every(item => isValidValueApplication(item, itemType, undefined, variableDefinitions));\n }\n // Equivalent of coercing non-null element as a list of one.\n return isValidValueApplication(value, itemType, locationDefault, variableDefinitions);\n }\n\n if (isInputObjectType(locationType)) {\n if (typeof value !== 'object') {\n return false;\n }\n const valueKeys = new Set(Object.keys(value));\n const fieldsAreValid = locationType.fields().every(field => {\n valueKeys.delete(field.name);\n return isValidValueApplication(value[field.name], field.type!, field.defaultValue, variableDefinitions)\n });\n const hasUnexpectedField = valueKeys.size !== 0\n return fieldsAreValid && !hasUnexpectedField;\n }\n\n // TODO: we may have to handle some coercions (not sure it matters in our use case\n // though).\n return isValidLeafValue(locationType.schema(), value, locationType);\n}\n\nexport function valueFromAST(node: ValueNode, expectedType: InputType): any {\n if (node.kind === Kind.NULL) {\n if (isNonNullType(expectedType)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid null value for non-null type \"${expectedType}\"`);\n }\n return null;\n }\n\n if (node.kind === Kind.VARIABLE) {\n return new Variable(node.name.value);\n }\n\n if (isNonNullType(expectedType)) {\n expectedType = expectedType.ofType;\n }\n\n if (isListType(expectedType)) {\n const baseType = expectedType.ofType;\n if (node.kind === Kind.LIST) {\n return node.values.map(v => valueFromAST(v, baseType));\n }\n return [valueFromAST(node, baseType)];\n }\n\n if (isIntType(expectedType)) {\n if (node.kind !== Kind.INT) {\n throw ERRORS.INVALID_GRAPHQL.err(`Int cannot represent non-integer value ${print(node)}.`);\n }\n const i = parseInt(node.value, 10);\n if (i > MAX_INT || i < MIN_INT) {\n throw ERRORS.INVALID_GRAPHQL.err(`Int cannot represent non 32-bit signed integer value ${i}.`);\n }\n return i;\n }\n\n if (isFloatType(expectedType)) {\n let parsed: number;\n if (node.kind === Kind.INT) {\n parsed = parseInt(node.value, 10);\n } else if (node.kind === Kind.FLOAT) {\n parsed = parseFloat(node.value);\n } else {\n throw ERRORS.INVALID_GRAPHQL.err(`Float can only represent integer or float value, but got a ${node.kind}.`);\n }\n if (!isFinite(parsed)) {\n throw ERRORS.INVALID_GRAPHQL.err( `Float cannot represent non numeric value ${parsed}.`);\n }\n return parsed;\n }\n\n if (isBooleanType(expectedType)) {\n if (node.kind !== Kind.BOOLEAN) {\n throw ERRORS.INVALID_GRAPHQL.err(`Boolean cannot represent a non boolean value ${print(node)}.`);\n }\n return node.value;\n }\n\n if (isStringType(expectedType)) {\n if (node.kind !== Kind.STRING) {\n throw ERRORS.INVALID_GRAPHQL.err(`String cannot represent non string value ${print(node)}.`);\n }\n return node.value;\n }\n\n if (isIDType(expectedType)) {\n if (node.kind !== Kind.STRING && node.kind !== Kind.INT) {\n throw ERRORS.INVALID_GRAPHQL.err(`ID cannot represent value ${print(node)}.`);\n }\n return node.value;\n }\n\n if (isScalarType(expectedType)) {\n return valueFromASTUntyped(node);\n }\n\n if (isInputObjectType(expectedType)) {\n if (node.kind !== Kind.OBJECT) {\n throw ERRORS.INVALID_GRAPHQL.err(`Input Object Type ${expectedType} cannot represent non-object value ${print(node)}.`);\n }\n const obj = Object.create(null);\n for (const f of node.fields) {\n const name = f.name.value;\n const field = expectedType.field(name);\n if (!field) {\n throw ERRORS.INVALID_GRAPHQL.err(`Unknown field \"${name}\" found in value for Input Object Type \"${expectedType}\".`);\n }\n // TODO: as we recurse in sub-objects, we may get an error on a field value deep in the object\n // and the error will not be precise to where it happens. We could try to build the path to\n // the error and include it in the error somehow.\n obj[name] = valueFromAST(f.value, field.type!);\n }\n return obj;\n }\n\n if (isEnumType(expectedType)) {\n if (node.kind !== Kind.STRING && node.kind !== Kind.ENUM) {\n throw ERRORS.INVALID_GRAPHQL.err(`Enum Type ${expectedType} cannot represent value ${print(node)}.`);\n }\n if (!expectedType.value(node.value)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Enum Type ${expectedType} has no value ${node.value}.`);\n }\n return node.value;\n }\n\n assert(false, () => `Unexpected input type ${expectedType} of kind ${expectedType.kind}.`);\n}\n\nexport function valueFromASTUntyped(node: ValueNode): any {\n switch (node.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(node.value, 10);\n case Kind.FLOAT:\n return parseFloat(node.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return node.value;\n case Kind.LIST:\n return node.values.map(valueFromASTUntyped);\n case Kind.OBJECT:\n const obj = Object.create(null);\n node.fields.forEach(f => obj[f.name.value] = valueFromASTUntyped(f.value));\n return obj;\n case Kind.VARIABLE:\n return new Variable(node.name.value);\n }\n}\n\nexport function isValidLeafValue(schema: Schema, value: any, type: ScalarType | EnumType): boolean {\n if (isCustomScalarType(type)) {\n // There is no imposition on what a custom scalar value can be.\n return true;\n }\n\n if (typeof value === 'boolean') {\n return type === schema.booleanType();\n }\n\n if (typeof value === 'number' && isFinite(value)) {\n const stringNum = String(value);\n if (type === schema.intType() || type === schema.idType()) {\n return integerStringRegExp.test(stringNum);\n }\n return type === schema.floatType();\n }\n\n if (typeof value === 'string') {\n if (isEnumType(type)) {\n return type.value(value) !== undefined;\n }\n return type !== schema.booleanType()\n && type !== schema.intType()\n && type !== schema.floatType();\n }\n return false;\n}\n\nexport function argumentsFromAST(\n context: string,\n args: readonly ArgumentNode[] | undefined,\n argsDefiner: { argument(name: string): ArgumentDefinition | undefined }\n): {[key: string]: any} | undefined {\n if (!args || args.length === 0) {\n return undefined;\n }\n\n const values = Object.create(null);\n for (const argNode of args) {\n const name = argNode.name.value;\n const expectedType = argsDefiner.argument(name)?.type;\n if (!expectedType) {\n throw ERRORS.INVALID_GRAPHQL.err(\n `Unknown argument \"${name}\" found in value: \"${context}\" has no argument named \"${name}\"`\n );\n }\n try {\n values[name] = valueFromAST(argNode.value, expectedType);\n } catch (e) {\n if (e instanceof GraphQLError) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid value for argument \"${name}\": ${e.message}`);\n }\n throw e;\n }\n }\n return values;\n}\n\nexport function collectVariablesInValue(value: any, collector: VariableCollector) {\n if (isVariable(value)) {\n collector.add(value);\n return;\n }\n\n if (!value) {\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach(v => collectVariablesInValue(v, collector));\n }\n\n if (typeof value === 'object') {\n Object.keys(value).forEach(k => collectVariablesInValue(value[k], collector));\n }\n}\n", "import { GraphQLError } from \"graphql\";\nimport { Schema } from \"./definitions\";\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl } from \"./specs/coreSpec\";\n\nconst registeredFeatures = new Map();\n\nexport function registerKnownFeature(definitions: FeatureDefinitions) {\n if (!registeredFeatures.has(definitions.identity)) {\n registeredFeatures.set(definitions.identity, definitions);\n }\n}\n\nexport function coreFeatureDefinitionIfKnown(url: FeatureUrl): FeatureDefinition | undefined {\n return registeredFeatures.get(url.identity)?.find(url.version);\n}\n\nexport function validateKnownFeatures(\n schema: Schema,\n errorCollector: GraphQLError[] = [],\n): GraphQLError[] {\n registeredFeatures.forEach(definitions => {\n const feature = definitions.latest();\n if (feature.validateSubgraphSchema !== FeatureDefinition.prototype.validateSubgraphSchema) {\n errorCollector.push(...feature.validateSubgraphSchema(schema));\n }\n });\n return errorCollector;\n}\n\n/**\n * Removes a feature from the set of known features.\n *\n * This exists purely for testing purposes. There is no reason to unregistered features otherwise.\n */\nexport function unregisterKnownFeatures(definitions: FeatureDefinitions) {\n registeredFeatures.delete(definitions.identity);\n}\n", "import { ASTNode, DirectiveLocation, GraphQLError } from \"graphql\";\nimport {\n ArgumentDefinition,\n CoreFeature,\n DirectiveDefinition,\n EnumType,\n InputType,\n isCustomScalarType,\n isEnumType,\n isListType,\n isNonNullType,\n isObjectType,\n isUnionType,\n NamedType,\n ObjectType,\n OutputType,\n ScalarType,\n Schema,\n UnionType,\n} from \"./definitions\";\nimport { ERRORS } from \"./error\";\nimport { valueEquals, valueToString } from \"./values\";\nimport { sameType } from \"./types\";\nimport { arrayEquals, assert } from \"./utils\";\nimport { ArgumentCompositionStrategy } from \"./argumentCompositionStrategies\";\nimport { FeatureDefinition, FeatureVersion } from \"./specs/coreSpec\";\nimport { Subgraph } from '.';\n\nexport type DirectiveSpecification = {\n name: string,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => GraphQLError[],\n composition?: DirectiveCompositionSpecification,\n}\n\nexport type DirectiveCompositionSpecification = {\n supergraphSpecification: (federationVersion: FeatureVersion) => FeatureDefinition,\n argumentsMerger?: (schema: Schema, feature: CoreFeature) => ArgumentMerger | GraphQLError,\n staticArgumentTransform?: StaticArgumentsTransform,\n}\n\nexport type StaticArgumentsTransform = (subgraph: Subgraph, args: Readonly<{[key: string]: any}>) => Readonly<{[key: string]: any}>;\n\nexport type ArgumentMerger = {\n merge: (argName: string, values: any[]) => any,\n toString: () => string,\n}\n\nexport type TypeSpecification = {\n name: string,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => GraphQLError[],\n}\n\nexport type ArgumentSpecification = {\n name: string,\n type: (schema: Schema, feature?: CoreFeature) => InputType | GraphQLError[],\n defaultValue?: any,\n}\n\nexport type DirectiveArgumentSpecification = ArgumentSpecification & {\n compositionStrategy?: ArgumentCompositionStrategy,\n}\n\nexport type FieldSpecification = {\n name: string,\n type: OutputType,\n args?: ResolvedArgumentSpecification[],\n}\n\ntype ResolvedArgumentSpecification = {\n name: string,\n type: InputType,\n defaultValue?: any,\n}\n\nexport function createDirectiveSpecification({\n name,\n locations,\n repeatable = false,\n args = [],\n composes = false,\n supergraphSpecification = undefined,\n staticArgumentTransform = undefined,\n}: {\n name: string,\n locations: DirectiveLocation[],\n repeatable?: boolean,\n args?: DirectiveArgumentSpecification[],\n composes?: boolean,\n supergraphSpecification?: (fedVersion: FeatureVersion) => FeatureDefinition,\n staticArgumentTransform?: (subgraph: Subgraph, args: {[key: string]: any}) => {[key: string]: any},\n}): DirectiveSpecification {\n let composition: DirectiveCompositionSpecification | undefined = undefined;\n if (composes) {\n assert(supergraphSpecification, `Should provide a @link specification to use in supergraph for directive @${name} if it composes`);\n const argStrategies = new Map(args.filter((arg) => arg.compositionStrategy).map((arg) => [arg.name, arg.compositionStrategy!]));\n let argumentsMerger: ((schema: Schema, feature: CoreFeature) => ArgumentMerger | GraphQLError) | undefined = undefined;\n if (argStrategies.size > 0) {\n assert(!repeatable, () => `Invalid directive specification for @${name}: @${name} is repeatable and should not define composition strategy for its arguments`);\n assert(argStrategies.size === args.length, () => `Invalid directive specification for @${name}: not all arguments define a composition strategy`);\n argumentsMerger = (schema, feature) => {\n // Validate that the arguments have compatible types with the declared strategies (a bit unfortunate that we can't do this until\n // we have a schema but well, not a huge deal either).\n for (const { name: argName, type } of args) {\n const strategy = argStrategies.get(argName);\n // Note that we've built `argStrategies` from the declared args and checked that all argument had a strategy, so it would be\n // a bug in the code if we didn't get a strategy (not an issue in the directive declaration).\n assert(strategy, () => `Should have a strategy for ${argName}`);\n const argType = type(schema, feature);\n // By the time we call this, the directive should have been added to the schema and so getting the type should not raise errors.\n assert(!Array.isArray(argType), () => `Should have gotten error getting type for @${name}(${argName}:), but got ${argType}`)\n const { valid, supportedMsg } = strategy.isTypeSupported(schema, argType);\n if (!valid) {\n return new GraphQLError(\n `Invalid composition strategy ${strategy.name} for argument @${name}(${argName}:) of type ${argType}; `\n + `${strategy.name} only supports ${supportedMsg}`\n );\n }\n }\n return {\n merge: (argName, values) => {\n const strategy = argStrategies.get(argName);\n assert(strategy, () => `Should have a strategy for ${argName}`);\n return strategy.mergeValues(values);\n },\n toString: () => {\n if (argStrategies.size === 0) {\n return \"\";\n }\n return '{ ' + [...argStrategies.entries()].map(([arg, strategy]) => `\"${arg}\": ${strategy.name}`).join(', ') + ' }';\n }\n };\n }\n }\n composition = {\n supergraphSpecification,\n argumentsMerger,\n staticArgumentTransform,\n };\n }\n\n return {\n name,\n composition,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n const actualName = feature?.directiveNameInSchema(name) ?? name;\n const { resolvedArgs, errors } = args.reduce<{ resolvedArgs: (ResolvedArgumentSpecification & { compositionStrategy?: ArgumentCompositionStrategy })[], errors: GraphQLError[] }>(\n ({ resolvedArgs, errors }, arg) => {\n const typeOrErrors = arg.type(schema, feature);\n if (Array.isArray(typeOrErrors)) {\n errors.push(...typeOrErrors);\n } else {\n resolvedArgs.push({ ...arg, type: typeOrErrors });\n }\n return { resolvedArgs, errors };\n },\n { resolvedArgs: [], errors: [] }\n );\n if (errors.length > 0) {\n return errors;\n }\n const existing = schema.directive(actualName);\n if (existing) {\n return ensureSameDirectiveStructure({ name: actualName, locations, repeatable, args: resolvedArgs }, existing);\n } else {\n const directive = schema.addDirectiveDefinition(new DirectiveDefinition(actualName, asBuiltIn));\n directive.repeatable = repeatable;\n directive.addLocations(...locations);\n for (const { name, type, defaultValue } of resolvedArgs) {\n directive.addArgument(name, type, defaultValue);\n }\n return [];\n }\n },\n }\n}\n\nexport function createScalarTypeSpecification({ name }: { name: string }): TypeSpecification {\n return {\n name,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n const actualName = feature?.typeNameInSchema(name) ?? name;\n const existing = schema.type(actualName);\n if (existing) {\n return ensureSameTypeKind('ScalarType', existing);\n } else {\n schema.addType(new ScalarType(actualName, asBuiltIn));\n return [];\n }\n },\n }\n}\n\nexport function createObjectTypeSpecification({\n name,\n fieldsFct,\n}: {\n name: string,\n fieldsFct: (schema: Schema) => FieldSpecification[],\n}): TypeSpecification {\n return {\n name,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n const actualName = feature?.typeNameInSchema(name) ?? name;\n const expectedFields = fieldsFct(schema);\n const existing = schema.type(actualName);\n if (existing) {\n let errors = ensureSameTypeKind('ObjectType', existing);\n if (errors.length > 0) {\n return errors;\n }\n assert(isObjectType(existing), 'Should be an object type');\n for (const { name, type, args } of expectedFields) {\n const existingField = existing.field(name);\n if (!existingField) {\n errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n `Invalid definition of type ${name}: missing field ${name}`,\n { nodes: existing.sourceAST },\n ));\n continue;\n }\n // We allow adding non-nullability because we've seen redefinition of the federation _Service type with type String! for the `sdl` field\n // and we don't want to break backward compatibility as this doesn't feel too harmful.\n let existingType = existingField.type!;\n if (!isNonNullType(type) && isNonNullType(existingType)) {\n existingType = existingType.ofType;\n }\n if (!sameType(type, existingType)) {\n errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n `Invalid definition for field ${name} of type ${name}: should have type ${type} but found type ${existingField.type}`,\n { nodes: existingField.sourceAST },\n ));\n }\n errors = errors.concat(ensureSameArguments(\n { name, args },\n existingField,\n `field \"${existingField.coordinate}\"`,\n ));\n }\n return errors;\n } else {\n const createdType = schema.addType(new ObjectType(actualName, asBuiltIn));\n for (const { name, type, args } of expectedFields) {\n const field = createdType.addField(name, type);\n for (const { name: argName, type: argType, defaultValue } of args ?? []) {\n field.addArgument(argName, argType, defaultValue);\n }\n }\n return [];\n }\n },\n }\n}\n\nexport function createUnionTypeSpecification({\n name,\n membersFct,\n}: {\n name: string,\n membersFct: (schema: Schema) => string[],\n}): TypeSpecification {\n return {\n name,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n const actualName = feature?.typeNameInSchema(name) ?? name;\n const existing = schema.type(actualName);\n const expectedMembers = membersFct(schema).sort((n1, n2) => n1.localeCompare(n2));\n if (expectedMembers.length === 0) {\n if (existing) {\n return [ERRORS.TYPE_DEFINITION_INVALID.err(\n `Invalid definition of type ${name}: expected the union type to not exist/have no members but it is defined.`,\n { nodes: existing.sourceAST },\n )];\n }\n return [];\n }\n if (existing) {\n let errors = ensureSameTypeKind('UnionType', existing);\n if (errors.length > 0) {\n return errors;\n }\n assert(isUnionType(existing), 'Should be an union type');\n const actualMembers = existing.members().map(m => m.type.name).sort((n1, n2) => n1.localeCompare(n2));\n // This is kind of fragile in a core schema world where members may have been renamed, but we currently\n // only use this one for the _Entity type where that shouldn't be an issue.\n if (!arrayEquals(expectedMembers, actualMembers)) {\n errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n `Invalid definition of type ${name}: expected members [${expectedMembers}] but found [${actualMembers}].`,\n { nodes: existing.sourceAST },\n ));\n }\n return errors;\n } else {\n const type = schema.addType(new UnionType(actualName, asBuiltIn));\n for (const member of expectedMembers) {\n type.addType(member);\n }\n return [];\n }\n },\n }\n}\n\nexport function createEnumTypeSpecification({\n name,\n values,\n}: {\n name: string,\n values: { name: string, description?: string }[],\n}): TypeSpecification {\n return {\n name,\n checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n const actualName = feature?.typeNameInSchema(name) ?? name;\n const existing = schema.type(actualName);\n const expectedValueNames = values.map((v) => v.name).sort((n1, n2) => n1.localeCompare(n2));\n if (existing) {\n let errors = ensureSameTypeKind('EnumType', existing);\n if (errors.length > 0) {\n return errors;\n }\n assert(isEnumType(existing), 'Should be an enum type');\n const actualValueNames = existing.values.map(v => v.name).sort((n1, n2) => n1.localeCompare(n2));\n if (!arrayEquals(expectedValueNames, actualValueNames)) {\n errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n `Invalid definition for type \"${name}\": expected values [${expectedValueNames.join(', ')}] but found [${actualValueNames.join(', ')}].`,\n { nodes: existing.sourceAST },\n ));\n }\n return errors;\n } else {\n const type = schema.addType(new EnumType(actualName, asBuiltIn));\n for (const { name, description } of values) {\n type.addValue(name).description = description;\n }\n return [];\n }\n },\n }\n}\n\nfunction ensureSameTypeKind(expected: NamedType['kind'], actual: NamedType): GraphQLError[] {\n return expected === actual.kind\n ? []\n : [\n ERRORS.TYPE_DEFINITION_INVALID.err(\n `Invalid definition for type ${actual.name}: ${actual.name} should be a ${expected} but is defined as a ${actual.kind}`,\n { nodes: actual.sourceAST },\n )\n ];\n}\n\nfunction ensureSameDirectiveStructure(\n expected: {\n name: string,\n locations: DirectiveLocation[],\n repeatable: boolean,\n args: ResolvedArgumentSpecification[]\n },\n actual: DirectiveDefinition,\n): GraphQLError[] {\n const directiveName = `\"@${expected.name}\"`\n let errors = ensureSameArguments(expected, actual, `directive ${directiveName}`);\n // It's ok to say you'll never repeat a repeatable directive. It's not ok to repeat one that isn't.\n if (!expected.repeatable && actual.repeatable) {\n errors = errors.concat(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Invalid definition for directive ${directiveName}: ${directiveName} should${expected.repeatable ? \"\" : \" not\"} be repeatable`,\n { nodes: actual.sourceAST },\n ));\n }\n // Similarly, it's ok to say that you will never use a directive in some locations, but not that you will use it in places not allowed by what is expected.\n if (!actual.locations.every(loc => expected.locations.includes(loc))) {\n errors = errors.concat(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Invalid definition for directive ${directiveName}: ${directiveName} should have locations ${expected.locations.join(', ')}, but found (non-subset) ${actual.locations.join(', ')}`,\n { nodes: actual.sourceAST },\n ));\n }\n return errors;\n}\n\nfunction ensureSameArguments(\n expected: {\n name: string,\n args?: ResolvedArgumentSpecification[]\n },\n actual: { argument(name: string): ArgumentDefinition | undefined, arguments(): readonly ArgumentDefinition[] },\n what: string,\n containerSourceAST?: ASTNode,\n): GraphQLError[] {\n const expectedArguments = expected.args ?? [];\n const errors: GraphQLError[] = [];\n for (const { name, type, defaultValue } of expectedArguments) {\n const actualArgument = actual.argument(name);\n if (!actualArgument) {\n // Not declaring an optional argument is ok: that means you won't be able to pass a non-default value in your schema, but we allow you that.\n // But missing a required argument it not ok.\n if (isNonNullType(type) && defaultValue === undefined) {\n errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Invalid definition for ${what}: missing required argument \"${name}\"`,\n { nodes: containerSourceAST },\n ));\n }\n continue;\n }\n\n let actualType = actualArgument.type!;\n if (isNonNullType(actualType) && !isNonNullType(type)) {\n // It's ok to redefine an optional argument as mandatory. For instance, if you want to force people on your team to provide a \"deprecation reason\", you can\n // redefine @deprecated as `directive @deprecated(reason: String!)...` to get validation. In other words, you are allowed to always pass an argument that\n // is optional if you so wish.\n actualType = actualType.ofType;\n }\n if (!sameType(type, actualType) && !isValidInputTypeRedefinition(type, actualType)) {\n errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Invalid definition for ${what}: argument \"${name}\" should have type \"${type}\" but found type \"${actualArgument.type!}\"`,\n { nodes: actualArgument.sourceAST },\n ));\n } else if (!isNonNullType(actualArgument.type!) && !valueEquals(defaultValue, actualArgument.defaultValue)) {\n errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Invalid definition for ${what}: argument \"${name}\" should have default value ${valueToString(defaultValue)} but found default value ${valueToString(actualArgument.defaultValue)}`,\n { nodes: actualArgument.sourceAST },\n ));\n }\n }\n for (const actualArgument of actual.arguments()) {\n // If it's an expect argument, we already validated it. But we still need to reject unkown argument.\n if (!expectedArguments.some((arg) => arg.name === actualArgument.name)) {\n errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Invalid definition for ${what}: unknown/unsupported argument \"${actualArgument.name}\"`,\n { nodes: actualArgument.sourceAST },\n ));\n }\n }\n return errors;\n}\n\nfunction isValidInputTypeRedefinition(expectedType: InputType, actualType: InputType): boolean {\n // If the expected type is a custom scalar, then we allow the redefinition to be another type (unless it's a custom scalar, in which\n // case it has to be the same scalar). The rational being that since graphQL does no validation of values passed to a custom scalar,\n // any code that gets some value as input for a custom scalar has to do validation manually, and so there is little harm in allowing\n // a redefinition with another type since any truly invalid value would failed that \"manual validation\". In practice, this leeway\n // make sense because many scalar will tend to accept only one kind of values (say, strings) and exists only to inform that said string\n // needs to follow a specific format, and in such case, letting user redefine the type as String adds flexibility while doing little harm.\n if (isListType(expectedType)) {\n return isListType(actualType) && isValidInputTypeRedefinition(expectedType.ofType, actualType.ofType);\n }\n if (isNonNullType(expectedType)) {\n return isNonNullType(actualType) && isValidInputTypeRedefinition(expectedType.ofType, actualType.ofType);\n }\n return isCustomScalarType(expectedType) && !isCustomScalarType(actualType);\n}\n", "import { ASTNode, DirectiveLocation, GraphQLError, StringValueNode } from \"graphql\";\nimport { URL } from \"url\";\nimport { CoreFeature, Directive, DirectiveDefinition, EnumType, ErrGraphQLAPISchemaValidationFailed, ErrGraphQLValidationFailed, InputType, ListType, NamedType, NonNullType, ScalarType, Schema, SchemaDefinition, SchemaElement, sourceASTs } from \"../definitions\";\nimport { sameType } from \"../types\";\nimport { assert, findLast, firstOf, MapWithCachedArrays } from '../utils';\nimport { aggregateError, ERRORS } from \"../error\";\nimport { valueToString } from \"../values\";\nimport { coreFeatureDefinitionIfKnown, registerKnownFeature } from \"../knownCoreFeatures\";\nimport { didYouMean, suggestionList } from \"../suggestions\";\nimport { ArgumentSpecification, createDirectiveSpecification, createEnumTypeSpecification, createScalarTypeSpecification, DirectiveCompositionSpecification, DirectiveSpecification, TypeSpecification } from \"../directiveAndTypeSpecification\";\n\nexport const coreIdentity = 'https://specs.apollo.dev/core';\nexport const linkIdentity = 'https://specs.apollo.dev/link';\n\nexport const linkDirectiveDefaultName = 'link';\n\nexport const ErrCoreCheckFailed = (causes: GraphQLError[]) => aggregateError('CheckFailed', 'one or more checks failed', causes);\n\nfunction buildError(message: string): Error {\n // Maybe not the right error for this?\n return new Error(message);\n}\n\nexport const corePurposes = [\n 'SECURITY' as const,\n 'EXECUTION' as const,\n];\n\nexport type CorePurpose = typeof corePurposes[number];\n\nfunction purposesDescription(purpose: CorePurpose) {\n switch (purpose) {\n case 'SECURITY': return \"`SECURITY` features provide metadata necessary to securely resolve fields.\";\n case 'EXECUTION': return \"`EXECUTION` features provide metadata necessary for operation execution.\";\n }\n}\n\nexport abstract class FeatureDefinition {\n readonly url: FeatureUrl;\n\n private readonly _directiveSpecs = new MapWithCachedArrays();\n private readonly _typeSpecs = new MapWithCachedArrays();\n\n // A minimumFederationVersion that's undefined would mean that we won't produce that version in the supergraph SDL.\n constructor(url: FeatureUrl | string, readonly minimumFederationVersion?: FeatureVersion) {\n this.url = typeof url === 'string' ? FeatureUrl.parse(url) : url;\n }\n\n protected registerDirective(spec: DirectiveSpecification) {\n this._directiveSpecs.set(spec.name, spec);\n }\n\n protected registerType(spec: TypeSpecification) {\n this._typeSpecs.set(spec.name, spec);\n }\n\n protected registerSubFeature(subFeature: FeatureDefinition) {\n for (const typeSpec of subFeature.typeSpecs()) {\n this.registerType(typeSpec);\n }\n for (const directiveSpec of subFeature.directiveSpecs()) {\n this.registerDirective(directiveSpec);\n }\n }\n\n directiveSpecs(): readonly DirectiveSpecification[] {\n return this._directiveSpecs.values();\n }\n\n directiveSpec(name: string): DirectiveSpecification | undefined {\n return this._directiveSpecs.get(name);\n }\n\n typeSpecs(): readonly TypeSpecification[] {\n return this._typeSpecs.values();\n }\n\n typeSpec(name: string): TypeSpecification | undefined {\n return this._typeSpecs.get(name);\n }\n\n get identity(): string {\n return this.url.identity;\n }\n\n get version(): FeatureVersion {\n return this.url.version;\n }\n\n isSpecType(type: NamedType): boolean {\n const nameInSchema = this.nameInSchema(type.schema());\n return nameInSchema !== undefined && type.name.startsWith(`${nameInSchema}__`);\n }\n\n isSpecDirective(directive: DirectiveDefinition): boolean {\n const nameInSchema = this.nameInSchema(directive.schema());\n return nameInSchema != undefined && (directive.name === nameInSchema || directive.name.startsWith(`${nameInSchema}__`));\n }\n\n addElementsToSchema(schema: Schema): GraphQLError[] {\n const feature = this.featureInSchema(schema);\n assert(feature, () => `The ${this.url} specification should have been added to the schema before this is called`);\n\n let errors: GraphQLError[] = [];\n for (const type of this.typeSpecs()) {\n errors = errors.concat(type.checkOrAdd(schema, feature));\n }\n\n for (const directive of this.directiveSpecs()) {\n errors = errors.concat(directive.checkOrAdd(schema, feature));\n }\n return errors;\n }\n\n allElementNames(): string[] {\n return this.directiveSpecs().map((spec) => `@${spec.name}`)\n .concat(this.typeSpecs().map((spec) => spec.name));\n }\n\n // No-op implementation that can be overridden by subclasses.\n validateSubgraphSchema(_schema: Schema): GraphQLError[] {\n return [];\n }\n\n protected nameInSchema(schema: Schema): string | undefined {\n const feature = this.featureInSchema(schema);\n return feature?.nameInSchema;\n }\n\n protected directiveNameInSchema(schema: Schema, directiveName: string): string | undefined {\n const feature = this.featureInSchema(schema);\n return feature ? feature.directiveNameInSchema(directiveName) : undefined;\n }\n\n protected typeNameInSchema(schema: Schema, typeName: string): string | undefined {\n const feature = this.featureInSchema(schema);\n return feature ? feature.typeNameInSchema(typeName) : undefined;\n }\n\n protected rootDirective(schema: Schema): DirectiveDefinition | undefined {\n const name = this.nameInSchema(schema);\n return name ? schema.directive(name) as DirectiveDefinition | undefined : undefined;\n }\n\n protected directive(schema: Schema, elementName: string): DirectiveDefinition | undefined {\n const name = this.directiveNameInSchema(schema, elementName);\n return name ? schema.directive(name) as DirectiveDefinition | undefined : undefined;\n }\n\n protected type(schema: Schema, elementName: string): T | undefined {\n const name = this.typeNameInSchema(schema, elementName);\n return name ? schema.type(name) as T : undefined;\n }\n\n protected addRootDirective(schema: Schema): DirectiveDefinition {\n return schema.addDirectiveDefinition(this.nameInSchema(schema)!);\n }\n\n protected addDirective(schema: Schema, name: string): DirectiveDefinition {\n return schema.addDirectiveDefinition(this.directiveNameInSchema(schema, name)!);\n }\n\n protected addScalarType(schema: Schema, name: string): ScalarType {\n return schema.addType(new ScalarType(this.typeNameInSchema(schema, name)!));\n }\n\n protected addEnumType(schema: Schema, name: string): EnumType {\n return schema.addType(new EnumType(this.typeNameInSchema(schema, name)!));\n }\n\n protected featureInSchema(schema: Schema): CoreFeature | undefined {\n const features = schema.coreFeatures;\n if (!features) {\n throw buildError(`Schema is not a core schema (add @link first)`);\n }\n return features.getByIdentity(this.identity);\n }\n\n get defaultCorePurpose(): CorePurpose | undefined {\n return undefined;\n }\n\n compositionSpecification(directiveNameInFeature: string): DirectiveCompositionSpecification | undefined {\n const spec = this._directiveSpecs.get(directiveNameInFeature);\n return spec?.composition;\n }\n\n toString(): string {\n return `${this.identity}/${this.version}`\n }\n}\n\n\nexport type CoreDirectiveArgs = {\n url: undefined,\n feature: string,\n as?: string,\n for?: string,\n import: undefined,\n}\n\nexport type LinkDirectiveArgs = {\n url: string,\n feature: undefined,\n as?: string,\n for?: string,\n import?: (string | CoreImport)[],\n}\n\nexport type CoreOrLinkDirectiveArgs = CoreDirectiveArgs | LinkDirectiveArgs;\n\nexport type CoreImport = {\n name: string,\n as?: string,\n};\n\nexport function extractCoreFeatureImports(url: FeatureUrl, directive: Directive): CoreImport[] {\n // Note: up to this point, we've kind of cheated with typing and force-casted the arguments to `CoreOrLinkDirectiveArgs`, and while this\n // graphQL type validations ensure this is \"mostly\" true, the `import' arg is an exception becuse it uses the `link__Import` scalar,\n // and so there is no fine-grained graphQL-side validation of the values. So we'll need to double-check that the values are indeed\n // either a string or a valid `CoreImport` value.\n const args = directive.arguments();\n if (!('import' in args) || !args.import) {\n return [];\n }\n const importArgValue = args.import;\n const definition = coreFeatureDefinitionIfKnown(url);\n const knownElements = definition?.allElementNames();\n const errors: GraphQLError[] = [];\n const imports: CoreImport[] = [];\n\n importArgLoop:\n for (const elt of importArgValue) {\n if (typeof elt === 'string') {\n imports.push({ name: elt });\n validateImportedName(elt, knownElements, errors, directive);\n continue;\n }\n if (typeof elt !== 'object') {\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Invalid sub-value ${valueToString(elt)} for @link(import:) argument: values should be either strings or input object values of the form { name: \"\", as: \"\" }.`,\n { nodes: directive.sourceAST },\n ));\n continue;\n }\n let name: string | undefined;\n for (const [key, value] of Object.entries(elt)) {\n switch (key) {\n case 'name':\n if (typeof value !== 'string') {\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Invalid value for the \"name\" field for sub-value ${valueToString(elt)} of @link(import:) argument: must be a string.`,\n { nodes: directive.sourceAST },\n ));\n continue importArgLoop;\n }\n name = value;\n break;\n case 'as':\n if (typeof value !== 'string') {\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Invalid value for the \"as\" field for sub-value ${valueToString(elt)} of @link(import:) argument: must be a string.`,\n { nodes: directive.sourceAST },\n ));\n continue importArgLoop;\n }\n break;\n default:\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Unknown field \"${key}\" for sub-value ${valueToString(elt)} of @link(import:) argument.`,\n { nodes: directive.sourceAST },\n ));\n continue importArgLoop;\n }\n }\n if (name) {\n const i = elt as CoreImport;\n imports.push(i);\n if (i.as) {\n if (i.name.charAt(0) === '@' && i.as.charAt(0) !== '@') {\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Invalid @link import renaming: directive \"${i.name}\" imported name should start with a '@' character, but got \"${i.as}\".`,\n { nodes: directive.sourceAST },\n ));\n }\n else if (i.name.charAt(0) !== '@' && i.as.charAt(0) === '@') {\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Invalid @link import renaming: type \"${i.name}\" imported name should not start with a '@' character, but got \"${i.as}\" (or, if @${i.name} is a directive, then it should be referred to with a '@').`,\n { nodes: directive.sourceAST },\n ));\n }\n }\n validateImportedName(name, knownElements, errors, directive);\n } else {\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Invalid sub-value ${valueToString(elt)} for @link(import:) argument: missing mandatory \"name\" field.`,\n { nodes: directive.sourceAST },\n ));\n }\n }\n\n if (errors.length > 0) {\n throw ErrGraphQLValidationFailed(errors);\n }\n return imports;\n}\n\nfunction validateImportedName(name: string, knownElements: string[] | undefined, errors: GraphQLError[], directive: Directive) {\n if (knownElements && !knownElements.includes(name)) {\n let details = '';\n if (!name.startsWith('@') && knownElements.includes('@' + name)) {\n details = ` Did you mean directive \"@${name}\"?`;\n } else {\n const suggestions = suggestionList(name, knownElements);\n if (suggestions) {\n details = didYouMean(suggestions);\n }\n }\n errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Cannot import unknown element \"${name}\".${details}`,\n { nodes: directive.sourceAST },\n ));\n }\n}\n\nexport function isCoreSpecDirectiveApplication(directive: Directive): directive is Directive {\n const definition = directive.definition;\n if (!definition) {\n return false;\n }\n const asArg = definition.argument('as');\n if (asArg && !sameType(asArg.type!, directive.schema().stringType())) {\n return false;\n }\n if (!definition.repeatable || definition.locations.length !== 1 || definition.locations[0] !== DirectiveLocation.SCHEMA) {\n return false;\n }\n const urlArg = definition.argument('url') ?? definition.argument('feature');\n if (!urlArg || !isValidUrlArgumentType(urlArg.type!, directive.schema())) {\n return false;\n }\n\n const args = directive.arguments();\n try {\n const url = FeatureUrl.parse(args[urlArg.name] as string);\n if (url.identity === coreIdentity) {\n return directive.name === (args.as ?? 'core');\n } else {\n return url.identity === linkIdentity && directive.name === (args.as ?? linkDirectiveDefaultName);\n }\n } catch (err) {\n return false;\n }\n}\n\nfunction isValidUrlArgumentType(type: InputType, schema: Schema): boolean {\n // Note that the 'url' arg is defined as nullable (mostly for future proofing reasons) but we allow use to provide a definition\n // where it's non-nullable (and in practice, @core (which we never generate anymore, but recognize) definition technically uses\n // with a non-nullable argument, and some fed2 previews did if for @link, so this ensure we handle reading schema generated\n // by those versions just fine).\n return sameType(type, schema.stringType())\n || sameType(type, new NonNullType(schema.stringType()));\n}\n\nconst linkPurposeTypeSpec = createEnumTypeSpecification({\n name: 'Purpose',\n values: corePurposes.map((name) => ({ name, description: purposesDescription(name) }))\n});\n\nconst linkImportTypeSpec = createScalarTypeSpecification({ name: 'Import' });\n\nexport class CoreSpecDefinition extends FeatureDefinition {\n private readonly directiveDefinitionSpec: DirectiveSpecification;\n\n constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion, identity: string = linkIdentity, name: string = linkDirectiveDefaultName) {\n super(new FeatureUrl(identity, name, version), minimumFederationVersion);\n this.directiveDefinitionSpec = createDirectiveSpecification({\n name,\n locations: [DirectiveLocation.SCHEMA],\n repeatable: true,\n args: this.createDefinitionArgumentSpecifications(),\n });\n this.registerDirective(this.directiveDefinitionSpec);\n }\n\n private createDefinitionArgumentSpecifications(): ArgumentSpecification[] {\n const args: ArgumentSpecification[] = [\n { name: this.urlArgName(), type: (schema) => schema.stringType() },\n { name: 'as', type: (schema) => schema.stringType() },\n ];\n if (this.supportPurposes()) {\n args.push({\n name: 'for',\n type: (schema, feature) => {\n assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n return schema.type(feature.typeNameInSchema(linkPurposeTypeSpec.name)) as InputType;\n },\n });\n }\n if (this.supportImport()) {\n args.push({\n name: 'import',\n type: (schema, feature) => {\n assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n return new ListType(schema.type(feature.typeNameInSchema(linkImportTypeSpec.name))!);\n }\n });\n }\n return args;\n }\n\n addElementsToSchema(_: Schema): GraphQLError[] {\n // Core is special and the @core directive is added in `addToSchema` below\n return [];\n }\n\n // TODO: we may want to allow some `import` as argument to this method. When we do, we need to watch for imports of\n // `Purpose` and `Import` and add the types under their imported name.\n addToSchema(schema: Schema, alias?: string): GraphQLError[] {\n const errors = this.addDefinitionsToSchema(schema, alias);\n if (errors.length > 0) {\n return errors;\n }\n\n // Note: we don't use `applyFeatureToSchema` because it would complain the schema is not a core schema, which it isn't\n // until the next line.\n const args = { [this.urlArgName()]: this.toString() } as unknown as CoreOrLinkDirectiveArgs;\n if (alias) {\n args.as = alias;\n }\n\n // This adds `@link(url: \"https://specs.apollo.dev/link/v1.0\")` to the \"schema\" definition. And we have\n // a choice to add it either the main definition, or to an `extend schema`.\n //\n // In theory, always adding it to the main definition should be safe since even if some root operations\n // can be defined in extensions, you shouldn't have an extension without a definition, and so we should\n // never be in a case where _all_ root operations are defined in extensions (which would be a problem\n // for printing the definition itsef since it's syntactically invalid to have a schema definition with\n // no operations).\n //\n // In practice however, graphQL-js has historically accepted extensions without definition for schema,\n // and we even abuse this a bit with federation out of convenience, so we could end up in the situation\n // where if we put the directive on the definition, it cannot be printed properly due to the user having\n // defined all its root operations in an extension.\n //\n // We could always add the directive to an extension, and that could kind of work but:\n // 1. the core/link spec says that the link-to-link application should be the first `@link` of the\n // schema, but if user put some `@link` on their schema definition but we always put the link-to-link\n // on an extension, then we're kind of not respecting our own spec (in practice, our own code can\n // actually handle this as it does not strongly rely on that \"it should be the first\" rule, but that\n // would set a bad example).\n // 2. earlier versions (pre-#1875) were always putting that directive on the definition, and we wanted\n // to avoid suprising users by changing that for not reason.\n //\n // So instead, we put the directive on the schema definition unless some extensions exists but no\n // definition does (that is, no non-extension elements are populated).\n const schemaDef = schema.schemaDefinition;\n // Side-note: this test must be done _before_ we call `applyDirective`, otherwise it would take it into\n // account.\n const hasDefinition = schemaDef.hasNonExtensionElements();\n const directive = schemaDef.applyDirective(alias ?? this.url.name, args, true);\n if (!hasDefinition && schemaDef.hasExtensionElements()) {\n const extension = firstOf(schemaDef.extensions());\n assert(extension, '`hasExtensionElements` should not have been `true`');\n directive.setOfExtension(extension);\n }\n return [];\n }\n\n addDefinitionsToSchema(schema: Schema, as?: string, imports: CoreImport[] = []): GraphQLError[] {\n const existingCore = schema.coreFeatures;\n if (existingCore) {\n if (existingCore.coreItself.url.identity === this.identity) {\n // Already exists with the same version, let it be.\n return [];\n } else {\n return [ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n `Cannot add feature ${this} to the schema, it already uses ${existingCore.coreItself.url}`\n )];\n }\n }\n\n const nameInSchema = as ?? this.url.name;\n // The @link spec is special in that it is the one that bootstrap everything, and by the time this method\n // is called, the `schema` may not yet have any `schema.coreFeatures` setup yet. To have `checkAndAdd`\n // calls below still work, we pass a temp feature object with the proper information (not that the\n // `Directive` we pass is not complete and not even attached to the schema, but that is not used\n // in practice so unused).\n const feature = new CoreFeature(this.url, nameInSchema, new Directive(nameInSchema), imports);\n\n let errors: GraphQLError[] = [];\n errors = errors.concat(linkPurposeTypeSpec.checkOrAdd(schema, feature));\n errors = errors.concat(linkImportTypeSpec.checkOrAdd(schema, feature));\n errors = errors.concat(this.directiveDefinitionSpec.checkOrAdd(schema, feature));\n return errors;\n }\n\n /**\n * The list of all the element names that can be \"imported\" from this feature. Importantly, directive names\n * must start with a `@`.\n */\n allElementNames(): string[] {\n const names = [`@${this.url.name}`];\n if (this.supportPurposes()) {\n names.push('Purpose');\n }\n if (this.supportImport()) {\n names.push('Import');\n }\n return names;\n }\n\n private supportPurposes() {\n return this.version.strictlyGreaterThan(new FeatureVersion(0, 1));\n }\n\n private supportImport() {\n return this.url.name === linkDirectiveDefaultName;\n }\n\n private extractFeature(schema: Schema): CoreFeature {\n const features = schema.coreFeatures;\n if (!features) {\n throw buildError(`Schema is not a core schema (add @core first)`);\n }\n if (!features.coreItself.url.version.equals(this.version)) {\n throw buildError(`Cannot use this version of @core (${this.version}), the schema uses version ${features.coreItself.url.version}`);\n }\n return features.coreItself;\n }\n\n coreDirective(schema: Schema): DirectiveDefinition {\n const feature = this.extractFeature(schema);\n const directive = schema.directive(feature.nameInSchema);\n return directive as DirectiveDefinition;\n }\n\n coreVersion(schema: Schema): FeatureVersion {\n const feature = this.extractFeature(schema);\n return feature.url.version;\n }\n\n applyFeatureToSchema(\n schema: Schema,\n feature: FeatureDefinition,\n as?: string,\n purpose?: CorePurpose,\n imports?: CoreImport[],\n ): GraphQLError[] {\n const coreDirective = this.coreDirective(schema);\n const args = {\n [this.urlArgName()]: feature.toString(),\n as,\n } as CoreOrLinkDirectiveArgs;\n if (purpose) {\n if (this.supportPurposes()) {\n args.for = purpose;\n } else {\n return [new GraphQLError(\n `Cannot apply feature ${feature} with purpose since the schema's @core/@link version does not support it.`\n )];\n }\n }\n if (imports && imports.length > 0) {\n if (this.supportImport()) {\n args.import = imports.map(i => i.as ? i : i.name);\n } else {\n return [new GraphQLError(\n `Cannot apply feature ${feature} with imports since the schema's @core/@link version does not support it.`\n )];\n }\n }\n schema.schemaDefinition.applyDirective(coreDirective, args);\n return feature.addElementsToSchema(schema);\n }\n\n extractFeatureUrl(args: CoreOrLinkDirectiveArgs): FeatureUrl {\n return FeatureUrl.parse(args[this.urlArgName()]!);\n }\n\n urlArgName(): 'feature' | 'url' {\n return this.url.name === 'core' ? 'feature' : 'url';\n }\n}\n\nexport class FeatureDefinitions {\n // The list of definition corresponding to the known version of the particular feature this object handles,\n // sorted by _decreased_ versions.\n private readonly _definitions: T[] = [];\n\n constructor(readonly identity: string) {\n }\n\n add(definition: T): FeatureDefinitions {\n if (definition.identity !== this.identity) {\n throw buildError(`Cannot add definition for ${definition} to the versions of definitions for ${this.identity}`);\n }\n if (this._definitions.find(def => definition.version.equals(def.version))) {\n return this;\n }\n this._definitions.push(definition);\n // We sort by decreased versions sa it feels somewhat natural anyway to have more recent versions first.\n this._definitions.sort((def1, def2) => -def1.version.compareTo(def2.version));\n return this;\n }\n\n /**\n * Returns the definition corresponding to the requested version if known.\n */\n find(requested: FeatureVersion): T | undefined {\n return this._definitions.find((def) => def.version.equals(requested));\n }\n\n versions(): FeatureVersion[] {\n return this._definitions.map(def => def.version);\n }\n\n latest(): T {\n assert(this._definitions.length > 0, 'Trying to get latest when no definitions exist');\n return this._definitions[0];\n }\n\n getMinimumRequiredVersion(fedVersion: FeatureVersion): T {\n // this._definitions is already sorted with the most recent first\n // get the first definition that is compatible with the federation version\n // if the minimum version is not present, assume that we won't look for an older version\n const def = this._definitions.find(def => def.minimumFederationVersion ? fedVersion >= def.minimumFederationVersion : true);\n assert(def, `No compatible definition exists for federation version ${fedVersion}`);\n\n // note that it's necessary that we can only get versions that have the same major version as the latest,\n // because otherwise we can not guarantee compatibility. In this case, we want to return the oldest version with\n // the same major version as the latest.\n const latestMajor = this.latest().version.major;\n if (def.version.major !== latestMajor) {\n return findLast(this._definitions, def => def.version.major === latestMajor) ?? this.latest();\n }\n return def;\n }\n}\n\n/**\n * Versions are a (major, minor) number pair.\n */\nexport class FeatureVersion {\n constructor(public readonly major: number, public readonly minor: number) { }\n\n /**\n * Parse a version specifier of the form \"v(major).(minor)\" or throw\n *\n * # Example\n * ```\n * expect(FeatureVersion.parse('v1.0')).toEqual(new FeatureVersion(1, 0))\n * expect(FeatureVersion.parse('v0.1')).toEqual(new FeatureVersion(0, 1))\n * expect(FeatureVersion.parse(\"v987.65432\")).toEqual(new FeatureVersion(987, 65432))\n * ```\n */\n public static parse(input: string): FeatureVersion {\n const match = input.match(this.VERSION_RE)\n if (!match) {\n throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Expected a version string (of the form v1.2), got ${input}`);\n }\n return new this(+match[1], +match[2])\n }\n\n /**\n * Find the maximum version in a collection of versions, returning undefined in the case\n * that the collection is empty.\n *\n * # Example\n * ```\n * expect(FeatureVersion.max([new FeatureVersion(1, 0), new FeatureVersion(2, 0)])).toBe(new FeatureVersion(2, 0))\n * expect(FeatureVersion.max([])).toBe(undefined)\n * ```\n */\n public static max(versions: Iterable): FeatureVersion | undefined {\n let max: FeatureVersion | undefined;\n\n for (const version of versions) {\n if (!max || version > max) {\n max = version;\n }\n }\n\n return max;\n }\n\n /**\n * Return true if and only if this FeatureVersion satisfies the `required` version\n *\n * # Example\n * ```\n * expect(new FeatureVersion(1, 0).satisfies(new FeatureVersion(1, 0))).toBe(true)\n * expect(new FeatureVersion(1, 2).satisfies(new FeatureVersion(1, 0))).toBe(true)\n * expect(new FeatureVersion(2, 0).satisfies(new FeatureVersion(1, 9))).toBe(false)\n * expect(new FeatureVersion(0, 9).satisfies(new FeatureVersion(0, 8))).toBe(false)\n * ```\n **/\n public satisfies(required: FeatureVersion): boolean {\n const { major, minor } = this\n const { major: rMajor, minor: rMinor } = required\n return rMajor == major && (\n major == 0\n ? rMinor == minor\n : rMinor <= minor\n )\n }\n\n /**\n * a string indicating this version's compatibility series. for release versions (>= 1.0), this\n * will be a string like \"v1.x\", \"v2.x\", and so on. experimental minor updates carry no expectation\n * of compatibility, so those will just return the same thing as `this.toString()`.\n */\n public get series() {\n const { major } = this\n return major > 0 ? `${major}.x` : String(this)\n }\n\n /**\n * Compares this version to the provide one, returning 1 if it strictly greater, 0 if they are equals, and -1 if this\n * version is strictly smaller. The underlying ordering is that of major version and then minor versions.\n *\n * Be aware that this ordering does *not* imply compatibility. For example, `FeatureVersion(2, 0) > FeatureVersion(1, 9)`,\n * but an implementation of `FeatureVersion(2, 0)` *cannot* satisfy a request for `FeatureVersion(1, 9)`. To check for\n * version compatibility, use [the `satisfies` method](#satisfies).\n */\n public compareTo(other: FeatureVersion): number {\n if (this.major > other.major) {\n return 1;\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n return 0;\n }\n\n public lt(other: FeatureVersion): boolean {\n return this.compareTo(other) < 0;\n }\n\n public lte(other: FeatureVersion): boolean {\n return this.compareTo(other) <= 0;\n }\n\n public gt(other: FeatureVersion): boolean {\n return this.compareTo(other) > 0;\n }\n\n public gte(other: FeatureVersion): boolean {\n return this.compareTo(other) >= 0;\n }\n\n /**\n * Return true if this FeatureVersion is strictly greater than the provided one,\n * where ordering is meant by major and then minor number.\n *\n * Be aware that this ordering does *not* imply compatibility. For\n * example, `FeatureVersion(2, 0) > FeatureVersion(1, 9)`, but an implementation of `FeatureVersion(2, 0)`\n * *cannot* satisfy a request for `FeatureVersion(1, 9)`. To check for version compatibility,\n * use [the `satisfies` method](#satisfies).\n */\n public strictlyGreaterThan(version: FeatureVersion) {\n return this.compareTo(version) > 0;\n }\n\n /**\n * return the string version tag, like \"v2.9\"\n *\n * @returns a version tag\n */\n public toString() {\n return `v${this.major}.${this.minor}`\n }\n\n /**\n * return true iff this version is exactly equal to the provided version\n *\n * @param other the version to compare\n * @returns true if versions are strictly equal\n */\n public equals(other: FeatureVersion) {\n return this.major === other.major && this.minor === other.minor\n }\n\n private static VERSION_RE = /^v(\\d+)\\.(\\d+)$/\n}\n\n\nexport class FeatureUrl {\n constructor(\n public readonly identity: string,\n public readonly name: string,\n public readonly version: FeatureVersion,\n public readonly element?: string,\n ) { }\n\n public static maybeParse(input: string, node?: ASTNode): FeatureUrl | undefined {\n try {\n return FeatureUrl.parse(input, node);\n } catch (err) {\n return undefined;\n }\n }\n /// Parse a spec URL or throw\n public static parse(input: string, node?: ASTNode): FeatureUrl {\n const url = new URL(input)\n if (!url.pathname || url.pathname === '/') {\n throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Missing path in feature url '${url}'`, { nodes: node })\n }\n const path = url.pathname.split('/')\n const verStr = path.pop()\n if (!verStr) {\n throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Missing version component in feature url '${url}'`, { nodes: node })\n }\n const version = FeatureVersion.parse(verStr)\n const name = path[path.length - 1]\n if (!name) {\n throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Missing feature name component in feature url '${url}'`, { nodes: node })\n }\n const element = url.hash ? url.hash.slice(1) : undefined\n url.hash = ''\n url.search = ''\n url.password = ''\n url.username = ''\n url.pathname = path.join('/')\n return new FeatureUrl(url.toString(), name, version, element)\n }\n\n /// Decode a StringValueNode containing a feature url\n public static decode(node: StringValueNode): FeatureUrl {\n return this.parse(node.value, node)\n }\n\n /**\n * Return true if and only if this spec satisfies the `requested`\n * spec.\n *\n * @param request\n */\n public satisfies(requested: FeatureUrl): boolean {\n return requested.identity === this.identity &&\n this.version.satisfies(requested.version)\n }\n\n public equals(other: FeatureUrl) {\n return this.identity === other.identity &&\n this.version.equals(other.version)\n }\n\n get url() {\n return this.element ?\n `${this.identity}/${this.version}#${this.element}`\n : `${this.identity}/${this.version}`\n }\n\n get isDirective() {\n return this.element?.startsWith('@')\n }\n\n get elementName() {\n return this.isDirective ? this.element?.slice(1) : this.element\n }\n\n get base(): FeatureUrl {\n if (!this.element) return this\n return new FeatureUrl(this.identity, this.name, this.version)\n }\n\n toString() {\n return this.url\n }\n}\n\nexport function findCoreSpecVersion(featureUrl: FeatureUrl): CoreSpecDefinition | undefined {\n return featureUrl.name === 'core'\n ? CORE_VERSIONS.find(featureUrl.version)\n : (featureUrl.name === linkDirectiveDefaultName ? LINK_VERSIONS.find(featureUrl.version) : undefined)\n}\n\nexport const CORE_VERSIONS = new FeatureDefinitions(coreIdentity)\n .add(new CoreSpecDefinition(new FeatureVersion(0, 1), undefined, coreIdentity, 'core'))\n .add(new CoreSpecDefinition(new FeatureVersion(0, 2), new FeatureVersion(2, 0), coreIdentity, 'core'));\n\nexport const LINK_VERSIONS = new FeatureDefinitions(linkIdentity)\n .add(new CoreSpecDefinition(new FeatureVersion(1, 0), new FeatureVersion(2, 0)));\n\nregisterKnownFeature(CORE_VERSIONS);\nregisterKnownFeature(LINK_VERSIONS);\n\nexport function removeAllCoreFeatures(schema: Schema) {\n // Gather a list of core features up front, since we can't fetch them during\n // removal. (Also note that core being a feature itself, this will remove core\n // itself and mark the schema as 'not core').\n const coreFeatures = [...(schema.coreFeatures?.allFeatures() ?? [])];\n\n // Remove all feature elements, keeping track of any type references found\n // along the way.\n const typeReferences: {\n feature: CoreFeature;\n type: NamedType;\n references: SchemaElement[];\n }[] = [];\n for (const feature of coreFeatures) {\n // Remove feature directive definitions and their applications.\n const featureDirectiveDefs = schema.directives()\n .filter(d => feature.isFeatureDefinition(d));\n featureDirectiveDefs.forEach(def =>\n def.remove().forEach(application => application.remove())\n );\n\n // Remove feature types.\n const featureTypes = schema.types()\n .filter(t => feature.isFeatureDefinition(t));\n featureTypes.forEach(type => {\n const references = type.remove();\n if (references.length > 0) {\n typeReferences.push({\n feature,\n type,\n references,\n });\n }\n });\n }\n\n // Now that we're finished with removals, for any referencers encountered,\n // check whether they're still attached to the schema (and fail if they are).\n //\n // We wait for after all removals are done, since it means we don't have to\n // worry about the ordering of removals (e.g. if one feature element refers\n // to a different feature's element) or any circular references.\n //\n // Note that we fail for ALL type referencers, regardless of whether removing\n // the type necessitates removal of the type referencer. E.g. even if some\n // non-core object type were to implement some core feature interface type, we\n // would still require removal of the non-core object type. Users don't have\n // to enact this removal by removing the object type from their supergraph\n // schema though; they could also just mark it @inaccessible (since this\n // function is called after removeInaccessibleElements()).\n //\n // In the future, we could potentially relax this validation once we determine\n // the appropriate semantics. (This validation has already been relaxed for\n // directive applications, since feature directive definition removal does not\n // necessitate removal of elements with directive applications.)\n const errors: GraphQLError[] = [];\n for (const { feature, type, references } of typeReferences) {\n const referencesInSchema = references.filter(r => r.isAttached());\n if (referencesInSchema.length > 0) {\n // Note: using REFERENCED_INACCESSIBLE is slightly abusive because the reference element is not marked\n // @inacessible exactly. Instead, it is inacessible due to core elements being removed, but that's very\n // very close semantically. Overall, adding a publicly documented error code just to minor difference\n // doesn't feel worth it, especially since that case is super unlikely in the first place (and, as\n // the prior comment says, may one day be removed too).\n errors.push(ERRORS.REFERENCED_INACCESSIBLE.err(\n `Cannot remove elements of feature ${feature} as feature type ${type}` +\n ` is referenced by elements: ${referencesInSchema.join(', ')}`,\n { nodes: sourceASTs(...references) },\n ));\n }\n }\n if (errors.length > 0) {\n throw ErrGraphQLAPISchemaValidationFailed(errors);\n }\n}\n", "import { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport {\n ArgumentDefinition,\n CoreFeatures,\n DirectiveDefinition,\n EnumType,\n EnumValue,\n ErrGraphQLAPISchemaValidationFailed,\n FieldDefinition,\n InputFieldDefinition,\n InputObjectType,\n InputType,\n InterfaceType,\n isEnumType,\n isInputObjectType,\n isListType,\n isNonNullType,\n isScalarType,\n isTypeSystemDirectiveLocation,\n isVariable,\n NamedType,\n ObjectType,\n ScalarType,\n Schema,\n SchemaDefinition,\n SchemaElement,\n UnionType,\n} from \"../definitions\";\nimport { GraphQLError, DirectiveLocation } from \"graphql\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { ERRORS } from \"../error\";\nimport { createDirectiveSpecification, DirectiveSpecification } from \"../directiveAndTypeSpecification\";\nimport { assert } from \"../utils\";\n\nexport const inaccessibleIdentity = 'https://specs.apollo.dev/inaccessible';\n\nexport class InaccessibleSpecDefinition extends FeatureDefinition {\n public readonly inaccessibleLocations: DirectiveLocation[];\n public readonly inaccessibleDirectiveSpec: DirectiveSpecification;\n private readonly printedInaccessibleDefinition: string;\n\n constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n super(new FeatureUrl(inaccessibleIdentity, 'inaccessible', version), minimumFederationVersion);\n this.inaccessibleLocations = [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.UNION,\n ];\n this.printedInaccessibleDefinition = 'directive @inaccessible on FIELD_DEFINITION | INTERFACE | OBJECT | UNION';\n if (!this.isV01()) {\n this.inaccessibleLocations.push(\n DirectiveLocation.ARGUMENT_DEFINITION,\n DirectiveLocation.SCALAR,\n DirectiveLocation.ENUM,\n DirectiveLocation.ENUM_VALUE,\n DirectiveLocation.INPUT_OBJECT,\n DirectiveLocation.INPUT_FIELD_DEFINITION,\n );\n this.printedInaccessibleDefinition = 'directive @inaccessible on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION';\n }\n this.inaccessibleDirectiveSpec = createDirectiveSpecification({\n name: 'inaccessible',\n locations: this.inaccessibleLocations,\n composes: true,\n supergraphSpecification: (fedVersion) => INACCESSIBLE_VERSIONS.getMinimumRequiredVersion(fedVersion),\n });\n this.registerDirective(this.inaccessibleDirectiveSpec);\n }\n\n isV01() {\n return this.version.equals(new FeatureVersion(0, 1));\n }\n\n inaccessibleDirective(schema: Schema): DirectiveDefinition> | undefined {\n return this.directive(schema, 'inaccessible');\n }\n\n checkCompatibleDirective(definition: DirectiveDefinition): GraphQLError | undefined {\n const hasUnknownArguments = Object.keys(definition.arguments()).length > 0;\n const hasRepeatable = definition.repeatable;\n const hasValidLocations = definition.locations.every(loc => this.inaccessibleLocations.includes(loc));\n if (hasUnknownArguments || hasRepeatable || !hasValidLocations) {\n return ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Found invalid @inaccessible directive definition. Please ensure the directive definition in your schema's definitions matches the following:\\n\\t${this.printedInaccessibleDefinition}`,\n );\n }\n return undefined;\n }\n\n get defaultCorePurpose(): CorePurpose | undefined {\n return 'SECURITY';\n }\n}\n\nexport const INACCESSIBLE_VERSIONS = new FeatureDefinitions(inaccessibleIdentity)\n .add(new InaccessibleSpecDefinition(new FeatureVersion(0, 1)))\n .add(new InaccessibleSpecDefinition(new FeatureVersion(0, 2), new FeatureVersion(2, 0)));\n\nregisterKnownFeature(INACCESSIBLE_VERSIONS);\n\nexport function removeInaccessibleElements(schema: Schema) {\n // Note it doesn't hurt to validate here, since we expect the schema to be\n // validated already, and if it has been, it's cached/inexpensive.\n schema.validate();\n\n const coreFeatures = schema.coreFeatures;\n if (!coreFeatures) {\n return;\n }\n\n const inaccessibleFeature = coreFeatures.getByIdentity(inaccessibleIdentity);\n if (!inaccessibleFeature) {\n return;\n }\n const inaccessibleSpec = INACCESSIBLE_VERSIONS.find(\n inaccessibleFeature.url.version\n );\n if (!inaccessibleSpec) {\n throw ErrGraphQLAPISchemaValidationFailed([new GraphQLError(\n `Cannot remove inaccessible elements: the schema uses unsupported` +\n ` inaccessible spec version ${inaccessibleFeature.url.version}` +\n ` (supported versions: ${INACCESSIBLE_VERSIONS.versions().join(', ')})`\n )]);\n }\n\n const inaccessibleDirective = inaccessibleSpec.inaccessibleDirective(schema);\n if (!inaccessibleDirective) {\n throw ErrGraphQLAPISchemaValidationFailed([new GraphQLError(\n `Invalid schema: declares ${inaccessibleSpec.url} spec but does not` +\n ` define a @inaccessible directive.`\n )]);\n }\n\n const incompatibleError =\n inaccessibleSpec.checkCompatibleDirective(inaccessibleDirective);\n if (incompatibleError) {\n throw ErrGraphQLAPISchemaValidationFailed([incompatibleError]);\n }\n\n validateInaccessibleElements(\n schema,\n coreFeatures,\n inaccessibleSpec,\n inaccessibleDirective,\n );\n\n removeInaccessibleElementsAssumingValid(\n schema,\n inaccessibleDirective,\n )\n}\n\n// These are elements that may be hidden, by either @inaccessible or core\n// feature definition hiding.\ntype HideableElement =\n | ObjectType\n | InterfaceType\n | UnionType\n | ScalarType\n | EnumType\n | InputObjectType\n | DirectiveDefinition\n | FieldDefinition\n | ArgumentDefinition<\n | DirectiveDefinition\n | FieldDefinition>\n | InputFieldDefinition\n | EnumValue\n\n// Validate the applications of @inaccessible in the schema. Some of these may\n// technically be caught by Schema.validate() later, but we'd like to give\n// clearer error messaging when possible.\nfunction validateInaccessibleElements(\n schema: Schema,\n coreFeatures: CoreFeatures,\n inaccessibleSpec: InaccessibleSpecDefinition,\n inaccessibleDirective: DirectiveDefinition,\n): void {\n function isInaccessible(element: SchemaElement): boolean {\n return element.hasAppliedDirective(inaccessibleDirective);\n }\n\n const featureList = [...coreFeatures.allFeatures()];\n function isFeatureDefinition(\n element: NamedType | DirectiveDefinition\n ): boolean {\n return featureList.some((feature) => feature.isFeatureDefinition(element));\n }\n\n function isInAPISchema(element: HideableElement): boolean {\n // If this element is @inaccessible, it's not in the API schema.\n if (\n !(element instanceof DirectiveDefinition) &&\n isInaccessible(element)\n ) return false;\n\n if (\n (element instanceof ObjectType) ||\n (element instanceof InterfaceType) ||\n (element instanceof UnionType) ||\n (element instanceof ScalarType) ||\n (element instanceof EnumType) ||\n (element instanceof InputObjectType) ||\n (element instanceof DirectiveDefinition)\n ) {\n // These are top-level elements. If they're not @inaccessible, the only\n // way they won't be in the API schema is if they're definitions of some\n // core feature. However, we do intend on introducing mechanisms for\n // exposing core feature elements in the API schema in the near feature.\n // Because such mechanisms aren't completely nailed down yet, we opt to\n // pretend here that all core feature elements are in the API schema for\n // simplicity sake.\n //\n // This has the effect that if a non-core schema element is referenced by\n // a core schema element, that non-core schema element can't be marked\n // @inaccessible, despite that the core schema element may likely not be\n // in the API schema. This may be relaxed in a later version of the\n // inaccessible spec.\n return true;\n } else if (\n (element instanceof FieldDefinition) ||\n (element instanceof ArgumentDefinition) ||\n (element instanceof InputFieldDefinition) ||\n (element instanceof EnumValue)\n ) {\n // While this element isn't marked @inaccessible, this element won't be in\n // the API schema if its parent isn't.\n return isInAPISchema(element.parent);\n }\n assert(false, \"Unreachable code, element is of unknown type.\");\n }\n\n function fetchInaccessibleElementsDeep(\n element: HideableElement\n ): HideableElement[] {\n const inaccessibleElements: HideableElement[] = [];\n if (isInaccessible(element)) {\n inaccessibleElements.push(element);\n }\n\n if (\n (element instanceof ObjectType) ||\n (element instanceof InterfaceType) ||\n (element instanceof InputObjectType)\n ) {\n for (const field of element.fields()) {\n inaccessibleElements.push(\n ...fetchInaccessibleElementsDeep(field),\n );\n }\n return inaccessibleElements;\n } else if (element instanceof EnumType) {\n for (const enumValue of element.values) {\n inaccessibleElements.push(\n ...fetchInaccessibleElementsDeep(enumValue),\n )\n }\n return inaccessibleElements;\n } else if (\n (element instanceof DirectiveDefinition) ||\n (element instanceof FieldDefinition)\n ) {\n for (const argument of element.arguments()) {\n inaccessibleElements.push(\n ...fetchInaccessibleElementsDeep(argument),\n )\n }\n return inaccessibleElements;\n } else if (\n (element instanceof UnionType) ||\n (element instanceof ScalarType) ||\n (element instanceof ArgumentDefinition) ||\n (element instanceof InputFieldDefinition) ||\n (element instanceof EnumValue)\n ) {\n return inaccessibleElements;\n }\n assert(false, \"Unreachable code, element is of unknown type.\");\n }\n\n const errors: GraphQLError[] = [];\n let defaultValueReferencers: Map<\n DefaultValueReference,\n SchemaElementWithDefaultValue[]\n > | undefined = undefined;\n if (!inaccessibleSpec.isV01()) {\n // Note that for inaccessible v0.1, enum values and input fields can't be\n // @inaccessible, so there's no need to compute references (the inaccessible\n // v0.1 spec also doesn't require default values to be valid, so it doesn't\n // make sense to compute them).\n defaultValueReferencers = computeDefaultValueReferencers(schema);\n }\n\n for (const type of schema.allTypes()) {\n if (hasBuiltInName(type)) {\n // Built-in types (and their descendants) aren't allowed to be\n // @inaccessible, regardless of shadowing.\n const inaccessibleElements = fetchInaccessibleElementsDeep(type);\n if (inaccessibleElements.length > 0) {\n errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n `Built-in type \"${type.coordinate}\" cannot use @inaccessible.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: inaccessibleElements\n .map((element) => element.coordinate),\n inaccessible_referencers: [type.coordinate],\n }\n },\n ));\n }\n } else if (isFeatureDefinition(type)) {\n // Core feature types (and their descendants) aren't allowed to be\n // @inaccessible.\n const inaccessibleElements = fetchInaccessibleElementsDeep(type);\n if (inaccessibleElements.length > 0) {\n errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n `Core feature type \"${type.coordinate}\" cannot use @inaccessible.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: inaccessibleElements\n .map((element) => element.coordinate),\n inaccessible_referencers: [type.coordinate],\n }\n },\n ));\n }\n } else if (isInaccessible(type)) {\n // Types can be referenced by other schema elements in a few ways:\n // 1. Fields, arguments, and input fields may have the type as their base\n // type.\n // 2. Union types may have the type as a member (for object types).\n // 3. Object and interface types may implement the type (for interface\n // types).\n // 4. Schemas may have the type as a root operation type (for object\n // types).\n //\n // When a type is hidden, the referencer must follow certain rules for the\n // schema to be valid. Respectively, these rules are:\n // 1. The field/argument/input field must not be in the API schema.\n // 2. The union type, if empty, must not be in the API schema.\n // 3. No rules are imposed in this case.\n // 4. The root operation type must not be the query type.\n //\n // We validate the 1st and 4th rules above, and leave the 2nd for when we\n // look at accessible union types.\n const referencers = type.referencers();\n for (const referencer of referencers) {\n if (\n referencer instanceof FieldDefinition ||\n referencer instanceof ArgumentDefinition ||\n referencer instanceof InputFieldDefinition\n ) {\n if (isInAPISchema(referencer)) {\n errors.push(ERRORS.REFERENCED_INACCESSIBLE.err(\n `Type \"${type.coordinate}\" is @inaccessible but is referenced` +\n ` by \"${referencer.coordinate}\", which is in the API schema.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: [type.coordinate],\n inaccessible_referencers: [referencer.coordinate],\n }\n },\n ));\n }\n } else if (referencer instanceof SchemaDefinition) {\n if (type === referencer.rootType('query')) {\n errors.push(ERRORS.QUERY_ROOT_TYPE_INACCESSIBLE.err(\n `Type \"${type.coordinate}\" is @inaccessible but is the root` +\n ` query type, which must be in the API schema.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: [type.coordinate],\n }\n },\n ));\n }\n }\n }\n } else {\n // At this point, we know the type must be in the API schema. For types\n // with children (all types except scalar), we check that at least one of\n // the children is accessible.\n if (\n (type instanceof ObjectType) ||\n (type instanceof InterfaceType) ||\n (type instanceof InputObjectType)\n ) {\n let isEmpty = true;\n for (const field of type.fields()) {\n if (!isInaccessible(field)) isEmpty = false;\n }\n if (isEmpty) {\n errors.push(ERRORS.ONLY_INACCESSIBLE_CHILDREN.err(\n `Type \"${type.coordinate}\" is in the API schema but all of its` +\n ` ${(type instanceof InputObjectType) ? 'input ' : ''}fields` +\n ` are @inaccessible.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: type.fields()\n .map((field) => field.coordinate),\n inaccessible_referencers: [type.coordinate],\n }\n },\n ));\n }\n } else if (type instanceof UnionType) {\n let isEmpty = true;\n for (const member of type.types()) {\n if (!isInaccessible(member)) isEmpty = false;\n }\n if (isEmpty) {\n errors.push(ERRORS.ONLY_INACCESSIBLE_CHILDREN.err(\n `Type \"${type.coordinate}\" is in the API schema but all of its` +\n ` members are @inaccessible.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: type.types()\n .map((type) => type.coordinate),\n inaccessible_referencers: [type.coordinate],\n }\n }\n ));\n }\n } else if (type instanceof EnumType) {\n let isEmpty = true;\n for (const enumValue of type.values) {\n if (!isInaccessible(enumValue)) isEmpty = false;\n }\n if (isEmpty) {\n errors.push(ERRORS.ONLY_INACCESSIBLE_CHILDREN.err(\n `Type \"${type.coordinate}\" is in the API schema but all of its` +\n ` values are @inaccessible.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: type.values\n .map((enumValue) => enumValue.coordinate),\n inaccessible_referencers: [type.coordinate],\n }\n }\n ));\n }\n }\n\n // Descend into the type's children if needed.\n if (\n (type instanceof ObjectType) ||\n (type instanceof InterfaceType)\n ) {\n const implementedInterfaces = type.interfaces();\n const implementingTypes: (ObjectType | InterfaceType)[] = [];\n if (type instanceof InterfaceType) {\n for (const referencer of type.referencers()) {\n if (\n (referencer instanceof ObjectType) ||\n (referencer instanceof InterfaceType)\n ) {\n implementingTypes.push(referencer);\n }\n }\n }\n for (const field of type.fields()) {\n if (isInaccessible(field)) {\n // Fields can be \"referenced\" by the corresponding fields of any\n // interfaces their parent type implements. When a field is hidden\n // (but its parent isn't), we check that such implemented fields\n // aren't in the API schema.\n for (const implementedInterface of implementedInterfaces) {\n const implementedField = implementedInterface.field(field.name);\n if (implementedField && isInAPISchema(implementedField)) {\n errors.push(ERRORS.IMPLEMENTED_BY_INACCESSIBLE.err(\n `Field \"${field.coordinate}\" is @inaccessible but` +\n ` implements the interface field` +\n ` \"${implementedField.coordinate}\", which is in the API` +\n ` schema.`,\n {\n nodes: field.sourceAST,\n extensions: {\n inaccessible_elements: [field.coordinate],\n inaccessible_referencers: [implementedField.coordinate],\n }\n }\n ));\n }\n }\n } else {\n // Descend into the field's arguments.\n for (const argument of field.arguments()) {\n if (isInaccessible(argument)) {\n // When an argument is hidden (but its ancestors aren't), we\n // check that it isn't a required argument of its field.\n if (argument.isRequired()) {\n errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n `Argument \"${argument.coordinate}\" is @inaccessible but` +\n ` is a required argument of its field.`,\n {\n nodes: argument.sourceAST,\n extensions: {\n inaccessible_elements: [argument.coordinate],\n inaccessible_referencers: [argument.coordinate],\n }\n },\n ));\n }\n // When an argument is hidden (but its ancestors aren't), we\n // check that it isn't a required argument of any implementing\n // fields in the API schema. This is because the GraphQL spec\n // requires that any arguments of an implementing field that\n // aren't in its implemented field are optional.\n //\n // You might be thinking that a required argument in an\n // implementing field would necessitate that the implemented\n // field would also require that argument (and thus the check\n // above would also always error, removing the need for this\n // one), but the GraphQL spec does not enforce this. E.g. it's\n // valid GraphQL for the implementing and implemented arguments\n // to be both non-nullable, but for just the implemented\n // argument to have a default value. Not providing a value for\n // the argument when querying the implemented type succeeds\n // GraphQL operation validation, but results in input coercion\n // failure for the field at runtime.\n for (const implementingType of implementingTypes) {\n const implementingField = implementingType.field(field.name);\n assert(\n implementingField,\n \"Schema should have been valid, but an implementing type\" +\n \" did not implement one of this type's fields.\"\n );\n const implementingArgument = implementingField\n .argument(argument.name);\n assert(\n implementingArgument,\n \"Schema should have been valid, but an implementing type\" +\n \" did not implement one of this type's field's arguments.\"\n );\n if (\n isInAPISchema(implementingArgument) &&\n implementingArgument.isRequired()\n ) {\n errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n `Argument \"${argument.coordinate}\" is @inaccessible` +\n ` but is implemented by the required argument` +\n ` \"${implementingArgument.coordinate}\", which is` +\n ` in the API schema.`,\n {\n nodes: argument.sourceAST,\n extensions: {\n inaccessible_elements: [argument.coordinate],\n inaccessible_referencers: [\n implementingArgument.coordinate,\n ],\n }\n },\n ));\n }\n }\n\n // Arguments can be \"referenced\" by the corresponding arguments\n // of any interfaces their parent type implements. When an\n // argument is hidden (but its ancestors aren't), we check that\n // such implemented arguments aren't in the API schema.\n for (const implementedInterface of implementedInterfaces) {\n const implementedArgument = implementedInterface\n .field(field.name)\n ?.argument(argument.name);\n if (\n implementedArgument &&\n isInAPISchema(implementedArgument)\n ) {\n errors.push(ERRORS.IMPLEMENTED_BY_INACCESSIBLE.err(\n `Argument \"${argument.coordinate}\" is @inaccessible` +\n ` but implements the interface argument` +\n ` \"${implementedArgument.coordinate}\", which is in` +\n ` the API schema.`,\n {\n nodes: argument.sourceAST,\n extensions: {\n inaccessible_elements: [argument.coordinate],\n inaccessible_referencers: [\n implementedArgument.coordinate,\n ],\n }\n },\n ));\n }\n }\n }\n }\n }\n }\n } else if (type instanceof InputObjectType) {\n for (const inputField of type.fields()) {\n if (isInaccessible(inputField)) {\n // When an input field is hidden (but its parent isn't), we check\n // that it isn't a required argument of its field.\n if (inputField.isRequired()) {\n errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n `Input field \"${inputField.coordinate}\" is @inaccessible` +\n ` but is a required input field of its type.`,\n {\n nodes: inputField.sourceAST,\n extensions: {\n inaccessible_elements: [inputField.coordinate],\n inaccessible_referencers: [inputField.coordinate],\n }\n },\n ));\n }\n\n // Input fields can be referenced by schema default values. When an\n // input field is hidden (but its parent isn't), we check that the\n // arguments/input fields with such default values aren't in the API\n // schema.\n assert(\n defaultValueReferencers,\n \"Input fields can't be @inaccessible in v0.1, but default value\" +\n \" referencers weren't computed (which is only skipped for v0.1).\"\n );\n const referencers = defaultValueReferencers.get(inputField) ?? [];\n for (const referencer of referencers) {\n if (isInAPISchema(referencer)) {\n errors.push(ERRORS.DEFAULT_VALUE_USES_INACCESSIBLE.err(\n `Input field \"${inputField.coordinate}\" is @inaccessible` +\n ` but is used in the default value of` +\n ` \"${referencer.coordinate}\", which is in the API schema.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: [type.coordinate],\n inaccessible_referencers: [referencer.coordinate],\n }\n },\n ));\n }\n }\n }\n }\n } else if (type instanceof EnumType) {\n for (const enumValue of type.values) {\n if (isInaccessible(enumValue)) {\n // Enum values can be referenced by schema default values. When an\n // enum value is hidden (but its parent isn't), we check that the\n // arguments/input fields with such default values aren't in the API\n // schema.\n assert(\n defaultValueReferencers,\n \"Enum values can't be @inaccessible in v0.1, but default value\" +\n \" referencers weren't computed (which is only skipped for v0.1).\"\n );\n const referencers = defaultValueReferencers.get(enumValue) ?? [];\n for (const referencer of referencers) {\n if (isInAPISchema(referencer)) {\n errors.push(ERRORS.DEFAULT_VALUE_USES_INACCESSIBLE.err(\n `Enum value \"${enumValue.coordinate}\" is @inaccessible` +\n ` but is used in the default value of` +\n ` \"${referencer.coordinate}\", which is in the API schema.`,\n {\n nodes: type.sourceAST,\n extensions: {\n inaccessible_elements: [type.coordinate],\n inaccessible_referencers: [referencer.coordinate],\n }\n },\n ));\n }\n }\n }\n }\n }\n }\n }\n\n for (const directive of schema.allDirectives()) {\n const typeSystemLocations = directive.locations.filter((loc) => isTypeSystemDirectiveLocation(loc));\n if (hasBuiltInName(directive)) {\n // Built-in directives (and their descendants) aren't allowed to be\n // @inaccessible, regardless of shadowing.\n const inaccessibleElements =\n fetchInaccessibleElementsDeep(directive);\n if (inaccessibleElements.length > 0) {\n errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n `Built-in directive \"${directive.coordinate}\" cannot use @inaccessible.`,\n {\n nodes: directive.sourceAST,\n extensions: {\n inaccessible_elements: inaccessibleElements\n .map((element) => element.coordinate),\n inaccessible_referencers: [directive.coordinate],\n }\n },\n ));\n }\n } else if (isFeatureDefinition(directive)) {\n // Core feature directives (and their descendants) aren't allowed to be\n // @inaccessible.\n const inaccessibleElements =\n fetchInaccessibleElementsDeep(directive);\n if (inaccessibleElements.length > 0) {\n errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n `Core feature directive \"${directive.coordinate}\" cannot use @inaccessible.`,\n {\n nodes: directive.sourceAST,\n extensions: {\n inaccessible_elements: inaccessibleElements\n .map((element) => element.coordinate),\n inaccessible_referencers: [directive.coordinate],\n }\n },\n ));\n }\n } else if (typeSystemLocations.length > 0) {\n // Directives that can appear on type-system locations (and their\n // descendants) aren't allowed to be @inaccessible.\n const inaccessibleElements =\n fetchInaccessibleElementsDeep(directive);\n if (inaccessibleElements.length > 0) {\n errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n `Directive \"${directive.coordinate}\" cannot use @inaccessible` +\n ` because it may be applied to these type-system locations:` +\n ` ${typeSystemLocations.join(', ')}.`,\n {\n nodes: directive.sourceAST,\n extensions: {\n inaccessible_elements: inaccessibleElements\n .map((element) => element.coordinate),\n inaccessible_referencers: [directive.coordinate],\n }\n },\n ));\n }\n } else {\n // At this point, we know the directive must be in the API schema. Descend\n // into the directive's arguments.\n for (const argument of directive.arguments()) {\n // When an argument is hidden (but its parent isn't), we check that it\n // isn't a required argument of its directive.\n if (argument.isRequired()) {\n if (isInaccessible(argument)) {\n errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n `Argument \"${argument.coordinate}\" is @inaccessible but is a` +\n ` required argument of its directive.`,\n {\n nodes: argument.sourceAST,\n extensions: {\n inaccessible_elements: [argument.coordinate],\n inaccessible_referencers: [argument.coordinate],\n }\n },\n ));\n }\n }\n }\n }\n }\n\n if (errors.length > 0) {\n throw ErrGraphQLAPISchemaValidationFailed(errors);\n }\n}\n\ntype DefaultValueReference = InputFieldDefinition | EnumValue;\ntype SchemaElementWithDefaultValue =\n | ArgumentDefinition<\n | DirectiveDefinition\n | FieldDefinition>\n | InputFieldDefinition;\n\n// Default values in a schema may contain references to selectable elements that\n// are @inaccessible (input fields and enum values). For a given schema, this\n// function returns a map from such selectable elements to the elements with\n// default values referencing them. (The default values of built-ins and their\n// descendants are skipped.)\n//\n// This function assumes default values are coercible to their location types\n// (see the comments for addValueReferences() for details).\nfunction computeDefaultValueReferencers(\n schema: Schema,\n): Map<\n DefaultValueReference,\n SchemaElementWithDefaultValue[]\n> {\n const referencers = new Map<\n DefaultValueReference,\n SchemaElementWithDefaultValue[]\n >();\n\n function addReference(\n reference: DefaultValueReference,\n referencer: SchemaElementWithDefaultValue,\n ) {\n const referencerList = referencers.get(reference) ?? [];\n if (referencerList.length === 0) {\n referencers.set(reference, referencerList);\n }\n referencerList.push(referencer);\n }\n\n // Note that the fields/arguments/input fields for built-in schema elements\n // can presumably only have types that are built-in types. Since built-ins and\n // their children aren't allowed to be @inaccessible, this means we shouldn't\n // have to worry about references within the default values of arguments and\n // input fields of built-ins, which is why we skip them below.\n for (const type of schema.allTypes()) {\n if (hasBuiltInName(type)) continue;\n\n // Scan object/interface field arguments.\n if (\n (type instanceof ObjectType) ||\n (type instanceof InterfaceType)\n ) {\n for (const field of type.fields()) {\n for (const argument of field.arguments()) {\n for (\n const reference of computeDefaultValueReferences(argument)\n ) {\n addReference(reference, argument);\n }\n }\n }\n }\n\n // Scan input object fields.\n if (type instanceof InputObjectType) {\n for (const inputField of type.fields()) {\n for (\n const reference of computeDefaultValueReferences(inputField)\n ) {\n addReference(reference, inputField);\n }\n }\n }\n }\n\n // Scan directive definition arguments.\n for (const directive of schema.allDirectives()) {\n if (hasBuiltInName(directive)) continue;\n for (const argument of directive.arguments()) {\n for (\n const reference of computeDefaultValueReferences(argument)\n ) {\n addReference(reference, argument);\n }\n }\n }\n\n return referencers;\n}\n\n// For the given element, compute a list of input fields and enum values that\n// are referenced in its default value (if any). This function assumes the\n// default value is coercible to the element's type (see the comments for\n// addValueReferences() for details).\nfunction computeDefaultValueReferences(\n element: SchemaElementWithDefaultValue,\n): DefaultValueReference[] {\n const references: DefaultValueReference[] = [];\n addValueReferences(\n element.defaultValue,\n getInputType(element),\n references,\n )\n return references;\n}\n\nfunction getInputType(element: SchemaElementWithDefaultValue): InputType {\n const type = element.type;\n assert(\n type,\n \"Schema should have been valid, but argument/input field did not have type.\"\n );\n return type;\n}\n\n// For the given GraphQL input value (represented in the format implicitly\n// defined in buildValue()) and its type, add any references to input fields and\n// enum values in that input value to the given references list.\n//\n// Note that this function requires the input value to be coercible to its type,\n// similar to the \"Values of Correct Type\" validation in the GraphQL spec.\n// However, there are two noteable differences:\n// 1. Variable references are not allowed.\n// 2. Scalar values are not required to be coercible (due to machine-specific differences in input coercion rules).\n// As it turns out, building a Schema object validates this (and a bit more)\n// already, so in the interests of not duplicating validations/keeping the logic\n// centralized, this code assumes the input values it receives satisfy the above\n// validations.\n//\n// Accordingly, this function's code is structured very similarly to the\n// valueToString() function, which makes similar assumptions about its given\n// value. If any inconsistencies/invalidities are discovered, they will be\n// silently ignored.\nfunction addValueReferences(\n value: any,\n type: InputType,\n references: DefaultValueReference[],\n): void {\n if (value === undefined || value === null) {\n return;\n }\n\n if (isNonNullType(type)) {\n return addValueReferences(value, type.ofType, references);\n }\n\n if (isScalarType(type)) {\n // No need to look at scalar values.\n return;\n }\n\n if (isVariable(value)) {\n // Values in schemas shouldn't use variables, but we silently ignore it.\n return;\n }\n\n if (Array.isArray(value)) {\n if (isListType(type)) {\n const itemType = type.ofType;\n for (const item of value) {\n addValueReferences(item, itemType, references);\n }\n } else {\n // At this point a JS array can only be a list type, but we silently\n // ignore when it's not.\n }\n return;\n }\n\n if (isListType(type)) {\n // Note that GraphQL spec coerces non-list items into single-element lists.\n return addValueReferences(value, type.ofType, references);\n }\n\n if (typeof value === 'object') {\n if (isInputObjectType(type)) {\n // Silently ignore object keys that aren't in the input object.\n for (const field of type.fields()) {\n const fieldValue = value[field.name];\n if (fieldValue !== undefined) {\n references.push(field);\n addValueReferences(fieldValue, field.type!, references);\n } else {\n // Silently ignore when required input fields are omitted.\n }\n }\n } else {\n // At this point a JS object can only be an input object type, but we\n // silently ignore when it's not.\n }\n return;\n }\n\n if (typeof value === 'string') {\n if (isEnumType(type)) {\n const enumValue = type.value(value);\n if (enumValue !== undefined) {\n references.push(enumValue);\n } else {\n // Silently ignore enum values that aren't in the enum type.\n }\n } else {\n // At this point a JS string can only be an enum type, but we silently\n // ignore when it's not.\n }\n return;\n }\n\n // This should be unreachable code, but we silently ignore when it's not.\n return;\n}\n\n// Determine whether a given schema element has a built-in's name. Note that\n// this is not the same as the isBuiltIn flag, due to shadowing definitions\n// (which will not have the flag set).\nfunction hasBuiltInName(element: NamedType | DirectiveDefinition): boolean {\n const schema = element.schema();\n if (\n (element instanceof ObjectType) ||\n (element instanceof InterfaceType) ||\n (element instanceof UnionType) ||\n (element instanceof ScalarType) ||\n (element instanceof EnumType) ||\n (element instanceof InputObjectType)\n ) {\n return schema.builtInTypes(true).some((type) =>\n type.name === element.name\n );\n } else if (element instanceof DirectiveDefinition) {\n return schema.builtInDirectives(true).some((directive) =>\n directive.name === element.name\n );\n }\n assert(false, \"Unreachable code, element is of unknown type.\")\n}\n\n// Remove schema elements marked with @inaccessible in the schema, assuming the\n// schema has been validated with validateInaccessibleElements().\n//\n// Note the schema that results from this may not necessarily be valid GraphQL\n// until core feature definitions have been removed by removeFeatureElements().\nfunction removeInaccessibleElementsAssumingValid(\n schema: Schema,\n inaccessibleDirective: DirectiveDefinition,\n): void {\n function isInaccessible(element: SchemaElement): boolean {\n return element.hasAppliedDirective(inaccessibleDirective);\n }\n\n for (const type of schema.types()) {\n if (isInaccessible(type)) {\n type.remove();\n } else {\n if ((type instanceof ObjectType) || (type instanceof InterfaceType)) {\n for (const field of type.fields()) {\n if (isInaccessible(field)) {\n field.remove();\n } else {\n for (const argument of field.arguments()) {\n if (isInaccessible(argument)) {\n argument.remove();\n }\n }\n }\n }\n } else if (type instanceof InputObjectType) {\n for (const inputField of type.fields()) {\n if (isInaccessible(inputField)) {\n inputField.remove();\n }\n }\n } else if (type instanceof EnumType) {\n for (const enumValue of type.values) {\n if (isInaccessible(enumValue)) {\n enumValue.remove();\n }\n }\n }\n }\n }\n\n for (const directive of schema.directives()) {\n for (const argument of directive.arguments()) {\n if (isInaccessible(argument)) {\n argument.remove();\n }\n }\n }\n}\n", "import {\n ArgumentDefinition,\n Directive,\n DirectiveDefinition,\n EnumType,\n EnumValue,\n ExtendableElement,\n Extension,\n FieldDefinition,\n InputFieldDefinition,\n InputObjectType,\n InterfaceImplementation,\n InterfaceType,\n NamedType,\n ObjectType,\n RootType,\n ScalarType,\n Schema,\n SchemaDefinition,\n SchemaElement,\n SchemaRootKind,\n UnionMember,\n UnionType\n} from \"./definitions\";\nimport { assert } from \"./utils\";\nimport { valueToString } from \"./values\";\n\nexport type PrintOptions = {\n indentString: string;\n definitionsOrder: ('schema' | 'types' | 'directives')[],\n rootTypesOrder: SchemaRootKind[],\n typeCompareFn?: (t1: NamedType, t2: NamedType) => number;\n implementedInterfaceCompareFn?: (t1: InterfaceImplementation, t2: InterfaceImplementation) => number;\n fieldCompareFn?: (t1: FieldDefinition, t2: FieldDefinition) => number;\n unionMemberCompareFn?: (t1: UnionMember, t2: UnionMember) => number;\n enumValueCompareFn?: (t1: EnumValue, t2: EnumValue) => number;\n inputObjectFieldCompareFn?: (t1: InputFieldDefinition, t2: InputFieldDefinition) => number;\n directiveCompareFn?: (d1: DirectiveDefinition, d2: DirectiveDefinition) => number;\n mergeTypesAndExtensions: boolean;\n showAllBuiltIns: boolean;\n noDescriptions: boolean;\n directiveDefinitionFilter?: (d: DirectiveDefinition) => boolean,\n typeFilter: (t: NamedType) => boolean,\n fieldFilter: (f: FieldDefinition) => boolean,\n directiveApplicationFilter: (d: Directive) => boolean,\n}\n\nexport const defaultPrintOptions: PrintOptions = {\n indentString: \" \",\n definitionsOrder: ['schema', 'directives', 'types'],\n rootTypesOrder: ['query', 'mutation', 'subscription'],\n mergeTypesAndExtensions: false,\n showAllBuiltIns: false,\n noDescriptions: false,\n typeFilter: () => true,\n fieldFilter: () => true,\n directiveApplicationFilter: () => true,\n}\n\nexport function orderPrintedDefinitions(options: PrintOptions): PrintOptions {\n return {\n ...options,\n typeCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n implementedInterfaceCompareFn: (t1, t2) => t1.interface.name.localeCompare(t2.interface.name),\n fieldCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n unionMemberCompareFn: (t1, t2) => t1.type.name.localeCompare(t2.type.name),\n enumValueCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n inputObjectFieldCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n directiveCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n };\n}\n\nexport function shallowOrderPrintedDefinitions(options: PrintOptions): PrintOptions {\n return {\n ...options,\n typeCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n directiveCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n };\n}\n\nfunction isDefinitionOrderValid(options: PrintOptions): boolean {\n return options.definitionsOrder.length === 3\n && options.definitionsOrder.indexOf('schema') >= 0\n && options.definitionsOrder.indexOf('types') >= 0\n && options.definitionsOrder.indexOf('directives') >= 0;\n}\n\nfunction validateOptions(options: PrintOptions) {\n if (!isDefinitionOrderValid(options)) {\n throw new Error(`'definitionsOrder' should be a 3-element array containing 'schema', 'types' and 'directives' in the desired order (got: [${options.definitionsOrder.join(', ')}])`);\n }\n}\n\nexport function printSchema(schema: Schema, options: PrintOptions = defaultPrintOptions): string {\n validateOptions(options);\n let directives = options.showAllBuiltIns ? schema.allDirectives() : schema.directives();\n if (options.directiveDefinitionFilter) {\n directives = directives.filter(options.directiveDefinitionFilter);\n }\n if (options.directiveCompareFn) {\n directives = directives.concat().sort(options.directiveCompareFn);\n }\n let types = options.showAllBuiltIns ? schema.allTypes() : schema.types();\n if (options.typeFilter) {\n types = types.filter(options.typeFilter);\n }\n if (options.typeCompareFn) {\n types = types.concat().sort(options.typeCompareFn);\n }\n const definitions: string[][] = new Array(3);\n definitions[options.definitionsOrder.indexOf('schema')] = printSchemaDefinitionAndExtensions(schema.schemaDefinition, options);\n definitions[options.definitionsOrder.indexOf('directives')] = directives.map(directive => printDirectiveDefinition(directive, options));\n definitions[options.definitionsOrder.indexOf('types')] = types.flatMap(type => printTypeDefinitionAndExtensions(type, options));\n return definitions.flat().join('\\n\\n');\n}\n\nfunction definitionAndExtensions(element: {extensions(): readonly Extension[]}, options: PrintOptions): (Extension | null | undefined)[] {\n return options.mergeTypesAndExtensions ? [undefined] : [null, ...element.extensions()];\n}\n\nfunction printSchemaDefinitionAndExtensions(schemaDefinition: SchemaDefinition, options: PrintOptions): string[] {\n return printDefinitionAndExtensions(schemaDefinition, options, printSchemaDefinitionOrExtension);\n}\n\nfunction printDefinitionAndExtensions[]}>(\n t: T,\n options: PrintOptions,\n printer: (t: T, options: PrintOptions, extension?: Extension | null) => string | undefined\n): string[] {\n return definitionAndExtensions(t, options)\n .map(ext => printer(t, options, ext))\n .filter(v => v !== undefined) as string[];\n}\n\nfunction printIsExtension(extension?: Extension | null): string {\n return extension ? 'extend ' : '';\n}\n\nfunction forExtension | undefined}>(ts: readonly T[], extension?: Extension |null): readonly T[] {\n if (extension === undefined) {\n return ts;\n }\n return ts.filter(r => (r.ofExtension() ?? null) === extension);\n}\n\nfunction orderRoots(roots: readonly RootType[], options: PrintOptions): RootType[] {\n return roots.concat().sort((r1, r2) => options.rootTypesOrder.indexOf(r1.rootKind) - options.rootTypesOrder.indexOf(r2.rootKind));\n}\n\nfunction appliedDirectives(\n element: SchemaElement,\n options: PrintOptions,\n extension?: Extension | null,\n): readonly Directive[] {\n let directives = forExtension(element.appliedDirectives, extension);\n if (options.directiveApplicationFilter) {\n directives = directives.filter(options.directiveApplicationFilter);\n }\n return directives;\n}\n\nfunction printSchemaDefinitionOrExtension(\n schemaDefinition: SchemaDefinition,\n options: PrintOptions,\n extension?: Extension | null\n): string | undefined {\n const roots = forExtension(schemaDefinition.roots(), extension);\n const directives = appliedDirectives(schemaDefinition, options, extension);\n\n if (!roots.length && !directives.length) {\n return undefined;\n }\n if (!extension && !directives.length && isSchemaOfCommonNames(schemaDefinition)) {\n return undefined;\n }\n const rootEntries = orderRoots(roots, options).map((rootType) => `${options.indentString}${rootType.rootKind}: ${rootType.type}`);\n // Note that that the description is never written with the extension as `extend schema` doesn _not_ support descriptions\n return printDescription(schemaDefinition, options, extension)\n + printIsExtension(extension)\n + 'schema'\n + printAppliedDirectives(directives, options, true, rootEntries.length !== 0)\n + (directives.length === 0 ? ' ' : '')\n + (rootEntries.length === 0 ? '' : '{\\n' + rootEntries.join('\\n') + '\\n}');\n}\n\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * schema {\n * query: Query\n * mutation: Mutation\n * }\n *\n * When using this naming convention, the schema description can be omitted.\n */\nfunction isSchemaOfCommonNames(schema: SchemaDefinition): boolean {\n return !schema.description && schema.roots().every(r => r.isDefaultRootName());\n}\n\n/**\n * Convenience function that assumes `printTypeDefinitionAndExtensions` returns a single result and return that result.\n * Throw an error if there `printTypeDefinitionAndExtensions` returns multiple results.\n */\nexport function printType(type: NamedType, options: PrintOptions = defaultPrintOptions): string {\n const definitionAndExtensions = printTypeDefinitionAndExtensions(type, options);\n assert(definitionAndExtensions.length == 1, `Type ${type} is built from more than 1 definition or extension`);\n return definitionAndExtensions[0];\n}\n\nexport function printTypeDefinitionAndExtensions(type: NamedType, options: PrintOptions = defaultPrintOptions): string[] {\n switch (type.kind) {\n case 'ScalarType': return printDefinitionAndExtensions(type, options, printScalarDefinitionOrExtension);\n case 'ObjectType': return printDefinitionAndExtensions(type, options, (t, options, ext) => printFieldBasedTypeDefinitionOrExtension('type', t, options, ext));\n case 'InterfaceType': return printDefinitionAndExtensions(type, options, (t, options, ext) => printFieldBasedTypeDefinitionOrExtension('interface', t, options, ext));\n case 'UnionType': return printDefinitionAndExtensions(type, options, printUnionDefinitionOrExtension);\n case 'EnumType': return printDefinitionAndExtensions(type, options, printEnumDefinitionOrExtension);\n case 'InputObjectType': return printDefinitionAndExtensions(type, options, printInputDefinitionOrExtension);\n }\n}\n\nexport function printDirectiveDefinition(directive: DirectiveDefinition, options: PrintOptions = defaultPrintOptions): string {\n const locations = directive.locations.join(' | ');\n return `${printDescription(directive, options, null)}directive ${directive}${printArgs(directive.arguments(), options)}${directive.repeatable ? ' repeatable' : ''} on ${locations}`;\n}\n\nfunction printAppliedDirectives(\n appliedDirectives: readonly Directive[],\n options: PrintOptions,\n onNewLines: boolean = false,\n endWithNewLine: boolean = onNewLines\n): string {\n if (appliedDirectives.length == 0) {\n return \"\";\n }\n const joinStr = onNewLines ? '\\n' + options.indentString : ' ';\n const directives = appliedDirectives.map(d => d.toString()).join(joinStr);\n return onNewLines ? '\\n' + options.indentString + directives + (endWithNewLine ? '\\n' : '') : ' ' + directives;\n}\n\nfunction printDescription(\n element: SchemaElement,\n options: PrintOptions,\n extension: Extension | undefined | null,\n indentation: string = '',\n firstInBlock: boolean = true\n): string {\n // Note that extensions cannot have descriptions (it's not syntactically valid)\n if (extension || element.description === undefined || options.noDescriptions) {\n return '';\n }\n\n const preferMultipleLines = element.description.length > 70;\n const blockString = printBlockString(element.description, '', preferMultipleLines);\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n\n return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n\nfunction printScalarDefinitionOrExtension(type: ScalarType, options: PrintOptions, extension?: Extension | null): string | undefined {\n const directives = appliedDirectives(type, options, extension);\n if (extension && !directives.length) {\n return undefined;\n }\n return `${printDescription(type, options, extension)}${printIsExtension(extension)}scalar ${type.name}${printAppliedDirectives(directives, options, true, false)}`\n}\n\nfunction printImplementedInterfaces(implementations: readonly InterfaceImplementation[]): string {\n return implementations.length\n ? ' implements ' + implementations.map(i => i.interface.name).join(' & ')\n : '';\n}\n\nfunction printFieldBasedTypeDefinitionOrExtension(kind: string, type: ObjectType | InterfaceType, options: PrintOptions, extension?: Extension | null): string | undefined {\n const directives = appliedDirectives(type, options, extension);\n let interfaces = forExtension>(type.interfaceImplementations(), extension);\n let fields = forExtension>(type.fields(), extension);\n if (options.fieldFilter) {\n fields = fields.filter(options.fieldFilter);\n }\n if (!directives.length && !interfaces.length && !fields.length && (extension || !type.preserveEmptyDefinition)) {\n return undefined;\n }\n if (options.implementedInterfaceCompareFn) {\n interfaces = interfaces.concat().sort(options.implementedInterfaceCompareFn);\n }\n if (options.fieldCompareFn) {\n fields = fields.concat().sort(options.fieldCompareFn);\n }\n return printDescription(type, options, extension)\n + printIsExtension(extension)\n + kind + ' ' + type\n + printImplementedInterfaces(interfaces)\n + printAppliedDirectives(directives, options, true, fields.length > 0)\n + (directives.length === 0 && fields.length > 0 ? ' ' : '')\n + printFields(fields, options);\n}\n\nfunction printUnionDefinitionOrExtension(type: UnionType, options: PrintOptions, extension?: Extension | null): string | undefined {\n const directives = appliedDirectives(type, options, extension);\n let members = forExtension(type.members(), extension);\n if (!directives.length && !members.length && (extension || !type.preserveEmptyDefinition)) {\n return undefined;\n }\n if (options.unionMemberCompareFn) {\n members = members.concat().sort(options.unionMemberCompareFn);\n }\n const possibleTypes = members.length ? ' = ' + members.map(m => m.type).join(' | ') : '';\n return printDescription(type, options, extension)\n + printIsExtension(extension)\n + 'union ' + type\n + printAppliedDirectives(directives, options, true, members.length > 0)\n + possibleTypes;\n}\n\nfunction printEnumDefinitionOrExtension(type: EnumType, options: PrintOptions, extension?: Extension | null): string | undefined {\n const directives = appliedDirectives(type, options, extension);\n let values = forExtension(type.values, extension);\n if (!directives.length && !values.length && (extension || !type.preserveEmptyDefinition)) {\n return undefined;\n }\n if (options.enumValueCompareFn) {\n values = values.concat().sort(options.enumValueCompareFn);\n }\n const vals = values.map((v, i) =>\n printDescription(v, options, extension, options.indentString, !i)\n + options.indentString\n + v\n + printAppliedDirectives(v.appliedDirectives, options));\n return printDescription(type, options, extension)\n + printIsExtension(extension)\n + 'enum ' + type\n + printAppliedDirectives(directives, options, true, vals.length > 0)\n + (directives.length === 0 && vals.length > 0 ? ' ' : '')\n + printBlock(vals);\n}\n\nfunction printInputDefinitionOrExtension(type: InputObjectType, options: PrintOptions, extension?: Extension | null): string | undefined {\n const directives = appliedDirectives(type, options, extension);\n let fields = forExtension(type.fields(), extension);\n if (!directives.length && !fields.length && (extension || !type.preserveEmptyDefinition)) {\n return undefined;\n }\n if (options.inputObjectFieldCompareFn) {\n fields = fields.concat().sort(options.inputObjectFieldCompareFn);\n }\n return printDescription(type, options, extension)\n + printIsExtension(extension)\n + 'input ' + type\n + printAppliedDirectives(directives, options, true, fields.length > 0)\n + (directives.length === 0 && fields.length > 0 ? ' ' : '')\n + printFields(fields, options);\n}\n\nfunction printFields(fields: readonly (FieldDefinition | InputFieldDefinition)[], options: PrintOptions): string {\n return printBlock(fields.map((f, i) =>\n printDescription(f, options, undefined, options.indentString, !i)\n + options.indentString\n + printField(f, options)\n + printAppliedDirectives(appliedDirectives(f, options), options)));\n}\n\nfunction printField(field: FieldDefinition | InputFieldDefinition, options: PrintOptions): string {\n const args = field.kind == 'FieldDefinition' ? printArgs(field.arguments(), options, options.indentString) : '';\n const defaultValue = field.kind === 'InputFieldDefinition' && field.defaultValue !== undefined\n ? ' = ' + valueToString(field.defaultValue, field.type)\n : '';\n return `${field.name}${args}: ${field.type}${defaultValue}`;\n}\n\nfunction printArgs(args: readonly ArgumentDefinition[], options: PrintOptions, indentation = '') {\n if (args.length === 0) {\n return '';\n }\n\n // If every arg does not have a description, print them on one line.\n // Note: this line means that, for args, we skip empty descriptions (because the empty string is falsy). This is inconsistent with\n // `printDescription` where we print such description in other places. _However_, this is what graphQL-js does as well, and for now,\n // we'd rather not have things diverge because of just that.\n if (args.every(arg => !arg.description)) {\n return '(' + args.map(arg => printArg(arg, options)).join(', ') + ')';\n }\n\n const formattedArgs = args\n .map((arg, i) => printDescription(arg, options, null, ' ' + indentation, !i) + ' ' + indentation + printArg(arg, options))\n .join('\\n');\n return `(\\n${formattedArgs}\\n${indentation})`;\n}\n\nfunction printArg(arg: ArgumentDefinition, options: PrintOptions) {\n return `${arg}${printAppliedDirectives(appliedDirectives(arg, options), options)}`;\n}\n\nfunction printBlock(items: string[]): string {\n return items.length !== 0 ? '{\\n' + items.join('\\n') + '\\n}' : '';\n}\n\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nfunction printBlockString(\n value: string,\n indentation: string = '',\n preferMultipleLines: boolean = false,\n): string {\n const isSingleLine = value.indexOf('\\n') === -1;\n const hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n const hasTrailingQuote = value[value.length - 1] === '\"';\n const hasTrailingSlash = value[value.length - 1] === '\\\\';\n const printAsMultipleLines =\n !isSingleLine ||\n hasTrailingQuote ||\n hasTrailingSlash ||\n preferMultipleLines;\n\n let result = '';\n // Format a multi-line block quote to account for leading space.\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n", "import { DirectiveLocation } from \"graphql\";\nimport { EnumType, FieldDefinition, ListType, NonNullType, ObjectType, Schema } from \"./definitions\";\n\nexport const introspectionFieldNames = [ '__schema', '__type' ];\nexport const introspectionTypeNames = [\n '__Schema',\n '__Directive',\n '__DirectiveLocation',\n '__Type',\n '__Field',\n '__InputValue',\n '__EnumValue',\n '__TypeKind',\n]\n\nexport function isIntrospectionName(name: string): boolean {\n return name.startsWith('__');\n}\n\nexport function addIntrospectionFields(schema: Schema) {\n if (schema.type('__Schema')) {\n return;\n }\n const typeKindEnum = schema.addType(new EnumType('__TypeKind', true));\n typeKindEnum.addValue('SCALAR');\n typeKindEnum.addValue('OBJECT');\n typeKindEnum.addValue('INTERFACE');\n typeKindEnum.addValue('UNION');\n typeKindEnum.addValue('ENUM');\n typeKindEnum.addValue('INPUT_OBJECT');\n typeKindEnum.addValue('LIST');\n typeKindEnum.addValue('NON_NULL');\n\n const inputValueType = schema.addType(new ObjectType('__InputValue', true));\n const fieldType = schema.addType(new ObjectType('__Field', true));\n const typeType = schema.addType(new ObjectType('__Type', true));\n const enumValueType = schema.addType(new ObjectType('__EnumValue', true));\n\n typeType.addField('kind', new NonNullType(typeKindEnum));\n typeType.addField('name', schema.stringType());\n typeType.addField('description', schema.stringType());\n typeType.addField('fields', new ListType(new NonNullType(fieldType)))\n .addArgument('includeDeprecated', schema.booleanType(), false);\n typeType.addField('interfaces', new ListType(new NonNullType(typeType)));\n typeType.addField('possibleTypes', new ListType(new NonNullType(typeType)));\n typeType.addField('enumValues', new ListType(new NonNullType(enumValueType)))\n .addArgument('includeDeprecated', schema.booleanType(), false);\n typeType.addField('inputFields', new ListType(new NonNullType(inputValueType)))\n .addArgument('includeDeprecated', schema.booleanType(), false);\n typeType.addField('ofType', typeType);\n typeType.addField('specifiedByURL', schema.stringType());\n\n fieldType.addField('name', new NonNullType(schema.stringType()));\n fieldType.addField('description', schema.stringType());\n fieldType.addField('args', new NonNullType(new ListType(new NonNullType(inputValueType))))\n .addArgument('includeDeprecated', schema.booleanType(), false);\n fieldType.addField('type', new NonNullType(typeType));\n fieldType.addField('isDeprecated', new NonNullType(schema.booleanType()));\n fieldType.addField('deprecationReason', schema.stringType());\n\n inputValueType.addField('name', new NonNullType(schema.stringType()));\n inputValueType.addField('description', schema.stringType());\n inputValueType.addField('type', new NonNullType(typeType));\n inputValueType.addField('defaultValue', schema.stringType());\n inputValueType.addField('isDeprecated', new NonNullType(schema.booleanType()));\n inputValueType.addField('deprecationReason', schema.stringType());\n\n enumValueType.addField('name', new NonNullType(schema.stringType()));\n enumValueType.addField('description', schema.stringType());\n enumValueType.addField('isDeprecated', new NonNullType(schema.booleanType()));\n enumValueType.addField('deprecationReason', schema.stringType());\n\n const directiveLocationEnum = schema.addType(new EnumType('__DirectiveLocation', true));\n for (const location of Object.values(DirectiveLocation)) {\n directiveLocationEnum.addValue(location);\n }\n\n const directiveType = schema.addType(new ObjectType('__Directive', true));\n directiveType.addField('name', new NonNullType(schema.stringType()));\n directiveType.addField('description', schema.stringType());\n directiveType.addField('locations', new NonNullType(new ListType(new NonNullType(directiveLocationEnum))));\n directiveType.addField('args', new NonNullType(new ListType(new NonNullType(inputValueType))))\n .addArgument('includeDeprecated', schema.booleanType(), false);\n directiveType.addField('isRepeatable', new NonNullType(schema.booleanType()));\n\n const schemaType = schema.addType(new ObjectType('__Schema', true));\n schemaType.addField('description', schema.stringType());\n schemaType.addField('types', new NonNullType(new ListType(new NonNullType(typeType))));\n schemaType.addField('queryType', new NonNullType(typeType));\n schemaType.addField('mutationType', new NonNullType(typeType));\n schemaType.addField('subscriptionType', new NonNullType(typeType));\n schemaType.addField('directives', new NonNullType(new ListType(new NonNullType(directiveType))));\n\n let queryRoot = schema.schemaDefinition.rootType('query');\n if (!queryRoot) {\n queryRoot = schema.addType(new ObjectType('Query'));\n schema.schemaDefinition.setRoot('query', queryRoot);\n }\n\n queryRoot.addField(new FieldDefinition('__schema', true), new NonNullType(schemaType));\n queryRoot.addField(new FieldDefinition('__type', true), typeType)\n .addArgument('name', new NonNullType(schema.stringType()));\n}\n", "import {\n ArgumentDefinition,\n Directive,\n DirectiveDefinition,\n EnumType,\n InputFieldDefinition,\n InputObjectType,\n InterfaceType,\n isInputObjectType,\n isNonNullType,\n isScalarType,\n NamedSchemaElement,\n ObjectType,\n Schema,\n sourceASTs,\n Type,\n UnionType,\n VariableDefinitions\n} from \"./definitions\";\nimport { assertName, ASTNode, GraphQLError, GraphQLErrorOptions } from \"graphql\";\nimport { isValidValue, valueToString, isValidValueApplication } from \"./values\";\nimport { introspectionTypeNames, isIntrospectionName } from \"./introspection\";\nimport { isSubtype, sameType } from \"./types\";\nimport { ERRORS } from \"./error\";\n\n// Note really meant to be called manually as it is part of `Schema.validate`, but separated for core-organization reasons.\n// This mostly apply the validations that graphQL-js does in `validateSchema` which we don't reuse because it applies to\n// a `GraphQLSchema` (but note that the bulk of the validation is done by `validateSDL` which we _do_ reuse in `Schema.validate`).\nexport function validateSchema(schema: Schema): GraphQLError[] {\n return new Validator(schema).validate();\n}\n\nclass InputObjectCircularRefsValidator {\n private readonly visitedTypes = new Set();\n // Array of types nodes used to produce meaningful errors\n private readonly fieldPath: InputFieldDefinition[] = [];\n // Position in the field path\n private readonly fieldPathIndexByTypeName = new Map();\n\n constructor(private readonly onError: (message: string, options: GraphQLErrorOptions) => void) {\n }\n\n detectCycles(type: InputObjectType) {\n if (this.visitedTypes.has(type.name)) {\n return;\n }\n\n this.visitedTypes.add(type.name);\n this.fieldPathIndexByTypeName.set(type.name, this.fieldPath.length);\n\n for (const field of type.fields()) {\n if (isNonNullType(field.type!) && isInputObjectType(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = this.fieldPathIndexByTypeName.get(fieldType.name);\n\n this.fieldPath.push(field);\n if (cycleIndex === undefined) {\n this.detectCycles(fieldType);\n } else {\n const cyclePath = this.fieldPath.slice(cycleIndex);\n const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n this.onError(\n `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n { nodes: sourceASTs(...cyclePath) },\n );\n }\n this.fieldPath.pop();\n }\n }\n this.fieldPathIndexByTypeName.delete(type.name);\n }\n}\n\nclass Validator {\n private readonly emptyVariables = new VariableDefinitions();\n private hasMissingTypes: boolean = false;\n private readonly errors: GraphQLError[] = [];\n\n constructor(readonly schema: Schema) {}\n\n validate(): GraphQLError[] {\n for (const type of this.schema.types()) {\n\n if (!introspectionTypeNames.includes(type.name)) {\n this.validateName(type);\n }\n switch (type.kind) {\n case 'ObjectType':\n case 'InterfaceType':\n this.validateObjectOrInterfaceType(type);\n break;\n case 'InputObjectType':\n this.validateInputObjectType(type);\n break;\n case 'UnionType':\n this.validateUnionType(type);\n break;\n case 'EnumType':\n this.validateEnumType(type);\n break;\n }\n }\n\n for (const directive of this.schema.allDirectives()) {\n this.validateName(directive);\n for (const arg of directive.arguments()) {\n this.validateArg(arg);\n }\n for (const application of directive.applications()) {\n this.validateDirectiveApplication(directive, application)\n }\n }\n\n // We do the interface implementation and input object cycles validation after we've validated\n // all types, because both of those checks reach into other types than the one directly checked\n // so we want to make sure all types are properly set. That is also why we skip those checks if\n // we found any type missing (in which case, there will be some errors and users should fix those\n // first).\n if (!this.hasMissingTypes) {\n const refsValidator = new InputObjectCircularRefsValidator((msg, opts) => this.addError(msg, opts));\n for (const type of this.schema.types()) {\n switch (type.kind) {\n case 'ObjectType':\n case 'InterfaceType':\n this.validateImplementedInterfaces(type);\n break;\n case 'InputObjectType':\n refsValidator.detectCycles(type);\n break;\n }\n }\n }\n\n return this.errors;\n }\n\n private addError(message: string, options: GraphQLErrorOptions) {\n this.errors.push(ERRORS.INVALID_GRAPHQL.err(message, options));\n }\n\n private validateHasType(elt: { type?: Type, coordinate: string, sourceAST?: ASTNode }): boolean {\n // Note that this error can't happen if you parse the schema since it wouldn't be valid syntax, but it can happen for\n // programmatically constructed schema.\n if (!elt.type) {\n this.addError(`Element ${elt.coordinate} does not have a type set`, { nodes: elt.sourceAST });\n this.hasMissingTypes = false;\n }\n return !!elt.type;\n }\n\n private validateName(elt: { name: string, sourceAST?: ASTNode}) {\n if (isIntrospectionName(elt.name)) {\n this.addError(\n `Name \"${elt.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n elt.sourceAST ? { nodes: elt.sourceAST } : {}\n );\n return;\n }\n try {\n assertName(elt.name);\n } catch (e) {\n this.addError(e.message, elt.sourceAST ? { nodes: elt.sourceAST } : {});\n }\n }\n\n private validateObjectOrInterfaceType(type: ObjectType | InterfaceType) {\n if (!type.hasFields()) {\n this.addError(`Type ${type.name} must define one or more fields.`, { nodes: type.sourceAST });\n }\n for (const field of type.fields()) {\n this.validateName(field);\n this.validateHasType(field);\n for (const arg of field.arguments()) {\n this.validateArg(arg);\n }\n }\n }\n\n private validateImplementedInterfaces(type: ObjectType | InterfaceType) {\n if (type.implementsInterface(type.name)) {\n this.addError(\n `Type ${type} cannot implement itself because it would create a circular reference.`,\n { nodes: sourceASTs(type, type.interfaceImplementation(type.name)!) },\n );\n }\n\n for (const itf of type.interfaces()) {\n for (const itfField of itf.fields()) {\n const field = type.field(itfField.name);\n if (!field) {\n this.addError(\n `Interface field ${itfField.coordinate} expected but ${type} does not provide it.`,\n { nodes: sourceASTs(itfField, type) },\n );\n continue;\n }\n // Note that we may not have validated the interface yet, so making sure we have a meaningful error\n // if the type is not set, even if that means a bit of cpu wasted since we'll re-check later (and\n // as many type as the interface is implemented); it's a cheap check anyway.\n if (this.validateHasType(itfField) && !isSubtype(itfField.type!, field.type!)) {\n this.addError(\n `Interface field ${itfField.coordinate} expects type ${itfField.type} but ${field.coordinate} of type ${field.type} is not a proper subtype.`,\n { nodes: sourceASTs(itfField, field) },\n );\n }\n\n for (const itfArg of itfField.arguments()) {\n const arg = field.argument(itfArg.name);\n if (!arg) {\n this.addError(\n `Interface field argument ${itfArg.coordinate} expected but ${field.coordinate} does not provide it.`,\n { nodes: sourceASTs(itfArg, field) },\n );\n continue;\n }\n // Note that we could use contra-variance but as graphQL-js currently doesn't allow it, we mimic that.\n if (this.validateHasType(itfArg) && !sameType(itfArg.type!, arg.type!)) {\n this.addError(\n `Interface field argument ${itfArg.coordinate} expects type ${itfArg.type} but ${arg.coordinate} is type ${arg.type}.`,\n { nodes: sourceASTs(itfArg, arg) },\n );\n }\n }\n\n for (const arg of field.arguments()) {\n // Now check arguments on the type field that are not in the interface. They should not be required.\n if (itfField.argument(arg.name)) {\n continue;\n }\n if (arg.isRequired()) {\n this.addError(\n `Field ${field.coordinate} includes required argument ${arg.name} that is missing from the Interface field ${itfField.coordinate}.`,\n { nodes: sourceASTs(arg, itfField) },\n );\n }\n }\n }\n\n // Now check that this type also declare implementations of all the interfaces of its interface.\n for (const itfOfItf of itf.interfaces()) {\n if (!type.implementsInterface(itfOfItf)) {\n if (itfOfItf === type) {\n this.addError(\n `Type ${type} cannot implement ${itf} because it would create a circular reference.`,\n { nodes: sourceASTs(type, itf) },\n );\n } else {\n this.addError(\n `Type ${type} must implement ${itfOfItf} because it is implemented by ${itf}.`,\n { nodes: sourceASTs(type, itf, itfOfItf) },\n );\n }\n }\n }\n }\n }\n\n private validateInputObjectType(type: InputObjectType) {\n if (!type.hasFields()) {\n this.addError(`Input Object type ${type.name} must define one or more fields.`, { nodes: type.sourceAST });\n }\n for (const field of type.fields()) {\n this.validateName(field);\n if (!this.validateHasType(field)) {\n continue;\n }\n if (field.isRequired() && field.isDeprecated()) {\n this.addError(\n `Required input field ${field.coordinate} cannot be deprecated.`,\n { nodes: sourceASTs(field.appliedDirectivesOf('deprecated')[0], field) },\n );\n }\n if (field.defaultValue !== undefined && !isValidValue(field.defaultValue, field, new VariableDefinitions())) {\n this.addError(\n `Invalid default value (got: ${valueToString(field.defaultValue)}) provided for input field ${field.coordinate} of type ${field.type}.`,\n { nodes: sourceASTs(field) },\n );\n }\n }\n }\n\n private validateArg(arg: ArgumentDefinition) {\n this.validateName(arg);\n if (!this.validateHasType(arg)) {\n return;\n }\n if (arg.isRequired() && arg.isDeprecated()) {\n this.addError(\n `Required argument ${arg.coordinate} cannot be deprecated.`,\n { nodes: sourceASTs(arg.appliedDirectivesOf('deprecated')[0], arg) },\n );\n }\n if (arg.defaultValue !== undefined && !isValidValue(arg.defaultValue, arg, new VariableDefinitions())) {\n // don't error if custom scalar is shadowing a builtin scalar\n const builtInScalar = this.schema.builtInScalarTypes().find((t) => arg.type && isScalarType(arg.type) && t.name === arg.type.name);\n if (!builtInScalar || !isValidValueApplication(arg.defaultValue, builtInScalar, arg.defaultValue, new VariableDefinitions())) {\n this.addError(\n `Invalid default value (got: ${valueToString(arg.defaultValue)}) provided for argument ${arg.coordinate} of type ${arg.type}.`,\n { nodes: sourceASTs(arg) },\n );\n }\n }\n }\n\n private validateUnionType(type: UnionType) {\n if (type.membersCount() === 0) {\n this.addError(`Union type ${type.coordinate} must define one or more member types.`, { nodes: type.sourceAST });\n }\n }\n\n private validateEnumType(type: EnumType) {\n if (type.values.length === 0) {\n this.addError(`Enum type ${type.coordinate} must define one or more values.`, { nodes: type.sourceAST });\n }\n for (const value of type.values) {\n this.validateName(value);\n if (value.name === 'true' || value.name === 'false' || value.name === 'null') {\n this.addError(\n `Enum type ${type.coordinate} cannot include value: ${value}.`,\n { nodes: value.sourceAST },\n );\n }\n }\n }\n\n private validateDirectiveApplication(definition: DirectiveDefinition, application: Directive) {\n // Note that graphQL `validateSDL` method will already have validated that we only have\n // known arguments and that that we don't miss a required argument. What remains is to\n // ensure each provided value if valid for the argument type.\n for (const argument of definition.arguments()) {\n const value = application.arguments()[argument.name];\n if (!value) {\n // Again, that implies that value is not required.\n continue;\n }\n // Note that we validate if the definition argument has a type set separatly\n // and log an error if necesary, but we just want to avoid calling\n // `isValidValue` if there is not type as it may throw.\n if (argument.type && !isValidValue(value, argument, this.emptyVariables)) {\n const parent = application.parent;\n // The only non-named SchemaElement is the `schema` definition.\n const parentDesc = parent instanceof NamedSchemaElement\n ? parent.coordinate\n : 'schema';\n this.addError(\n `Invalid value for \"${argument.coordinate}\" of type \"${argument.type}\" in application of \"${definition.coordinate}\" to \"${parentDesc}\".`,\n { nodes: sourceASTs(application, argument) },\n );\n }\n }\n }\n}\n", "import {\n ConstArgumentNode,\n ASTNode,\n buildASTSchema as buildGraphqlSchemaFromAST,\n DirectiveLocation,\n ConstDirectiveNode,\n ConstValueNode,\n DocumentNode,\n GraphQLError,\n GraphQLSchema,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n parse,\n TypeNode,\n VariableDefinitionNode,\n VariableNode,\n SchemaDefinitionNode,\n TypeDefinitionNode,\n DefinitionNode,\n DirectiveDefinitionNode,\n DirectiveNode,\n} from \"graphql\";\nimport {\n CoreImport,\n CoreOrLinkDirectiveArgs,\n CoreSpecDefinition,\n extractCoreFeatureImports,\n FeatureUrl,\n FeatureVersion,\n findCoreSpecVersion,\n isCoreSpecDirectiveApplication,\n removeAllCoreFeatures,\n} from \"./specs/coreSpec\";\nimport { assert, mapValues, MapWithCachedArrays, removeArrayElement } from \"./utils\";\nimport {\n withDefaultValues,\n valueEquals,\n valueToString,\n valueToAST,\n valueFromAST,\n valueNodeToConstValueNode,\n argumentsEquals,\n collectVariablesInValue\n} from \"./values\";\nimport { removeInaccessibleElements } from \"./specs/inaccessibleSpec\";\nimport { printDirectiveDefinition, printSchema } from './print';\nimport { sameType } from './types';\nimport { addIntrospectionFields, introspectionFieldNames, isIntrospectionName } from \"./introspection\";\nimport { validateSDL } from \"graphql/validation/validate\";\nimport { SDLValidationRule } from \"graphql/validation/ValidationContext\";\nimport { specifiedSDLRules } from \"graphql/validation/specifiedRules\";\nimport { validateSchema } from \"./validate\";\nimport { createDirectiveSpecification, createScalarTypeSpecification, DirectiveSpecification, TypeSpecification } from \"./directiveAndTypeSpecification\";\nimport { didYouMean, suggestionList } from \"./suggestions\";\nimport { aggregateError, ERRORS, withModifiedErrorMessage } from \"./error\";\nimport { coreFeatureDefinitionIfKnown } from \"./knownCoreFeatures\";\n\nconst validationErrorCode = 'GraphQLValidationFailed';\nconst DEFAULT_VALIDATION_ERROR_MESSAGE = 'The schema is not a valid GraphQL schema.';\n\nconst EMPTY_SET = new Set();\n\nexport const ErrGraphQLValidationFailed = (causes: GraphQLError[], message: string = DEFAULT_VALIDATION_ERROR_MESSAGE) =>\n aggregateError(validationErrorCode, message, causes);\n\nconst apiSchemaValidationErrorCode = 'GraphQLAPISchemaValidationFailed';\n\nexport const ErrGraphQLAPISchemaValidationFailed = (causes: GraphQLError[]) =>\n aggregateError(apiSchemaValidationErrorCode, 'The supergraph schema failed to produce a valid API schema', causes);\n\nexport const typenameFieldName = '__typename';\n\nexport type QueryRootKind = 'query';\nexport type MutationRootKind = 'mutation';\nexport type SubscriptionRootKind = 'subscription';\nexport type SchemaRootKind = QueryRootKind | MutationRootKind | SubscriptionRootKind;\n\nexport const allSchemaRootKinds: SchemaRootKind[] = ['query', 'mutation', 'subscription'];\n\nexport function defaultRootName(rootKind: SchemaRootKind): string {\n return rootKind.charAt(0).toUpperCase() + rootKind.slice(1);\n}\n\nfunction checkDefaultSchemaRoot(type: NamedType): SchemaRootKind | undefined {\n if (type.kind !== 'ObjectType') {\n return undefined;\n }\n switch (type.name) {\n case 'Query': return 'query';\n case 'Mutation': return 'mutation';\n case 'Subscription': return 'subscription';\n default: return undefined;\n }\n}\n\nexport function isSchemaRootType(type: NamedType): boolean {\n return isObjectType(type) && type.isRootType();\n}\n\nexport type Type = NamedType | WrapperType;\nexport type NamedType = ScalarType | ObjectType | InterfaceType | UnionType | EnumType | InputObjectType;\nexport type OutputType = ScalarType | ObjectType | InterfaceType | UnionType | EnumType | ListType | NonNullType;\nexport type InputType = ScalarType | EnumType | InputObjectType | ListType | NonNullType;\nexport type WrapperType = ListType | NonNullType;\nexport type AbstractType = InterfaceType | UnionType;\nexport type CompositeType = ObjectType | InterfaceType | UnionType;\n\nexport type OutputTypeReferencer = FieldDefinition;\nexport type InputTypeReferencer = InputFieldDefinition | ArgumentDefinition;\nexport type ObjectTypeReferencer = OutputTypeReferencer | UnionType | SchemaDefinition;\nexport type InterfaceTypeReferencer = OutputTypeReferencer | ObjectType | InterfaceType;\n\nexport type NullableType = NamedType | ListType;\n\nexport type NamedTypeKind = NamedType['kind'];\n\nexport function isNamedType(type: Type): type is NamedType {\n return type instanceof BaseNamedType;\n}\n\nexport function isWrapperType(type: Type): type is WrapperType {\n return isListType(type) || isNonNullType(type);\n}\n\nexport function isListType(type: Type): type is ListType {\n return type.kind == 'ListType';\n}\n\nexport function isNonNullType(type: Type): type is NonNullType {\n return type.kind == 'NonNullType';\n}\n\nexport function isScalarType(type: Type): type is ScalarType {\n return type.kind == 'ScalarType';\n}\n\nexport function isCustomScalarType(type: Type): boolean {\n return isScalarType(type) && !graphQLBuiltInTypes.includes(type.name);\n}\n\nexport function isIntType(type: Type): boolean {\n return type === type.schema().intType();\n}\n\nexport function isStringType(type: Type): boolean {\n return type === type.schema().stringType();\n}\n\nexport function isFloatType(type: Type): boolean {\n return type === type.schema().floatType();\n}\n\nexport function isBooleanType(type: Type): boolean {\n return type === type.schema().booleanType();\n}\n\nexport function isIDType(type: Type): boolean {\n return type === type.schema().idType();\n}\n\nexport function isObjectType(type: Type): type is ObjectType {\n return type.kind == 'ObjectType';\n}\n\nexport function isInterfaceType(type: Type): type is InterfaceType {\n return type.kind == 'InterfaceType';\n}\n\nexport function isEnumType(type: Type): type is EnumType {\n return type.kind == 'EnumType';\n}\n\nexport function isUnionType(type: Type): type is UnionType {\n return type.kind == 'UnionType';\n}\n\nexport function isInputObjectType(type: Type): type is InputObjectType {\n return type.kind == 'InputObjectType';\n}\n\nexport function isOutputType(type: Type): type is OutputType {\n switch (baseType(type).kind) {\n case 'ScalarType':\n case 'ObjectType':\n case 'UnionType':\n case 'EnumType':\n case 'InterfaceType':\n return true;\n default:\n return false;\n }\n}\n\nexport function isInputType(type: Type): type is InputType {\n switch (baseType(type).kind) {\n case 'ScalarType':\n case 'EnumType':\n case 'InputObjectType':\n return true;\n default:\n return false;\n }\n}\n\nexport function isTypeOfKind(type: Type, kind: T['kind']): type is T {\n return type.kind === kind;\n}\n\nexport function filterTypesOfKind(types: readonly Type[], kind: T['kind']): T[] {\n return types.reduce(\n (acc: T[], type: Type) => {\n if (isTypeOfKind(type, kind)) {\n acc.push(type);\n }\n return acc;\n },\n [],\n );\n}\n\nexport function baseType(type: Type): NamedType {\n return isWrapperType(type) ? type.baseType() : type;\n}\n\nexport function isNullableType(type: Type): boolean {\n return !isNonNullType(type);\n}\n\nexport function isAbstractType(type: Type): type is AbstractType {\n return isInterfaceType(type) || isUnionType(type);\n}\n\nexport function isCompositeType(type: Type): type is CompositeType {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\nexport function possibleRuntimeTypes(type: CompositeType): readonly ObjectType[] {\n switch (type.kind) {\n case 'InterfaceType': return type.possibleRuntimeTypes();\n case 'UnionType': return type.types();\n case 'ObjectType': return [type];\n }\n}\n\nexport function runtimeTypesIntersects(t1: CompositeType, t2: CompositeType): boolean {\n if (t1 === t2) {\n return true;\n }\n\n const rt1 = possibleRuntimeTypes(t1);\n const rt2 = possibleRuntimeTypes(t2);\n for (const obj1 of rt1) {\n if (rt2.some(obj2 => obj1.name === obj2.name)) {\n return true;\n }\n }\n return false;\n}\n\nexport function supertypes(type: CompositeType): readonly CompositeType[] {\n switch (type.kind) {\n case 'InterfaceType': return type.interfaces();\n case 'UnionType': return [];\n case 'ObjectType': return (type.interfaces() as CompositeType[]).concat(type.unionsWhereMember());\n }\n}\n\nexport function isConditionalDirective(directive: Directive | DirectiveDefinition): boolean {\n return ['include', 'skip'].includes(directive.name);\n}\n\nexport const executableDirectiveLocations: DirectiveLocation[] = [\n DirectiveLocation.QUERY,\n DirectiveLocation.MUTATION,\n DirectiveLocation.SUBSCRIPTION,\n DirectiveLocation.FIELD,\n DirectiveLocation.FRAGMENT_DEFINITION,\n DirectiveLocation.FRAGMENT_SPREAD,\n DirectiveLocation.INLINE_FRAGMENT,\n DirectiveLocation.VARIABLE_DEFINITION,\n];\n\nconst executableDirectiveLocationsSet = new Set(executableDirectiveLocations);\n\nexport function isExecutableDirectiveLocation(loc: DirectiveLocation): boolean {\n return executableDirectiveLocationsSet.has(loc);\n}\n\nexport const typeSystemDirectiveLocations: DirectiveLocation[] = [\n DirectiveLocation.SCHEMA,\n DirectiveLocation.SCALAR,\n DirectiveLocation.OBJECT,\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.ARGUMENT_DEFINITION,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.UNION,\n DirectiveLocation.ENUM,\n DirectiveLocation.ENUM_VALUE,\n DirectiveLocation.INPUT_OBJECT,\n DirectiveLocation.INPUT_FIELD_DEFINITION,\n];\n\nconst typeSystemDirectiveLocationsSet = new Set(typeSystemDirectiveLocations);\n\nexport function isTypeSystemDirectiveLocation(loc: DirectiveLocation): boolean {\n return typeSystemDirectiveLocationsSet.has(loc);\n}\n\n/**\n * Converts a type to an AST of a \"reference\" to that type, one corresponding to the type `toString()` (and thus never a type definition).\n *\n * To print a type definition, see the `printTypeDefinitionAndExtensions` method.\n */\nexport function typeToAST(type: Type): TypeNode {\n switch (type.kind) {\n case 'ListType':\n return {\n kind: Kind.LIST_TYPE,\n type: typeToAST(type.ofType)\n };\n case 'NonNullType':\n return {\n kind: Kind.NON_NULL_TYPE,\n type: typeToAST(type.ofType) as NamedTypeNode | ListTypeNode\n };\n default:\n return {\n kind: Kind.NAMED_TYPE,\n name: { kind: Kind.NAME, value: type.name }\n };\n }\n}\n\nexport function typeFromAST(schema: Schema, node: TypeNode): Type {\n switch (node.kind) {\n case Kind.LIST_TYPE:\n return new ListType(typeFromAST(schema, node.type));\n case Kind.NON_NULL_TYPE:\n return new NonNullType(typeFromAST(schema, node.type) as NullableType);\n default:\n const type = schema.type(node.name.value);\n if (!type) {\n throw ERRORS.INVALID_GRAPHQL.err(`Unknown type \"${node.name.value}\"`, { nodes: node });\n }\n return type;\n }\n}\n\nexport type LeafType = ScalarType | EnumType;\n\nexport function isLeafType(type: Type): type is LeafType {\n return isScalarType(type) || isEnumType(type);\n}\n\nexport interface Named {\n readonly name: string;\n}\n\nexport type ExtendableElement = SchemaDefinition | NamedType;\n\nexport class DirectiveTargetElement> {\n readonly appliedDirectives: Directive[];\n\n constructor(\n private readonly _schema: Schema,\n directives: readonly Directive[] = [],\n ) {\n this.appliedDirectives = directives.map((d) => this.attachDirective(d));\n }\n\n schema(): Schema {\n return this._schema;\n }\n\n private attachDirective(directive: Directive): Directive {\n // if the directive is not attached, we can assume we're fine just attaching it to use. Otherwise, we're \"copying\" it.\n const toAdd = directive.isAttached()\n ? new Directive(directive.name, directive.arguments())\n : directive;\n\n Element.prototype['setParent'].call(toAdd, this);\n return toAdd;\n }\n\n appliedDirectivesOf(nameOrDefinition: string | DirectiveDefinition): Directive[] {\n const directiveName = typeof nameOrDefinition === 'string' ? nameOrDefinition : nameOrDefinition.name;\n return this.appliedDirectives.filter(d => d.name == directiveName) as Directive[];\n }\n\n hasAppliedDirective(nameOrDefinition: string | DirectiveDefinition): boolean {\n const directiveName = typeof nameOrDefinition === 'string' ? nameOrDefinition : nameOrDefinition.name;\n return this.appliedDirectives.some(d => d.name == directiveName);\n }\n\n appliedDirectivesToDirectiveNodes() : ConstDirectiveNode[] | undefined {\n return directivesToDirectiveNodes(this.appliedDirectives);\n }\n\n appliedDirectivesToString(): string {\n return directivesToString(this.appliedDirectives);\n }\n\n collectVariablesInAppliedDirectives(collector: VariableCollector) {\n for (const applied of this.appliedDirectives) {\n collector.collectInArguments(applied.arguments());\n }\n }\n}\n\nexport function sourceASTs(...elts: ({ sourceAST?: TNode } | undefined)[]): TNode[] {\n return elts.map(elt => elt?.sourceAST).filter((elt): elt is TNode => elt !== undefined);\n}\n\n// Not exposed: mostly about avoid code duplication between SchemaElement and Directive (which is not a SchemaElement as it can't\n// have applied directives or a description\nabstract class Element | Schema | DirectiveTargetElement> {\n protected _parent?: TParent;\n sourceAST?: ASTNode;\n\n schema(): Schema {\n const schema = this.schemaInternal();\n assert(schema, 'requested schema does not exist. Probably because the element is unattached');\n return schema;\n }\n\n // this function exists because sometimes we can have an element that will be attached soon even though the current state is unattached\n // (mainly for callbacks). Sometimes these intermediate states need to get the schema if it exists, but it may not.\n // all external clients should use schema()\n protected schemaInternal(): Schema | undefined {\n if (!this._parent) {\n return undefined;\n } else if (this._parent instanceof Schema) {\n // Note: at the time of this writing, it seems like typescript type-checking breaks a bit around generics.\n // At this point of the code, `this._parent` is typed as 'TParent & Schema', but for some reason this is\n // \"not assignable to type 'Schema | undefined'\" (which sounds wrong: if my type theory is not too broken,\n // 'A & B' should always be assignable to both 'A' and 'B').\n return this._parent as any;\n } else if (this._parent instanceof SchemaElement) {\n return this._parent.schemaInternal();\n } else if (this._parent instanceof DirectiveTargetElement) {\n return this._parent.schema();\n }\n assert(false, 'unreachable code. parent is of unknown type');\n }\n\n get parent(): TParent {\n assert(this._parent, 'trying to access non-existent parent');\n return this._parent;\n }\n\n isAttached(): boolean {\n return !!this._parent;\n }\n\n // Accessed only through Element.prototype['setParent'] (so we don't mark it protected as an override wouldn't be properly called).\n private setParent(parent: TParent) {\n assert(!this._parent, \"Cannot set parent of an already attached element\");\n this._parent = parent;\n this.onAttached();\n }\n\n protected onAttached() {\n // Nothing by default, but can be overriden.\n }\n\n protected checkUpdate() {\n // Allowing to add element to a detached element would get hairy. Because that would mean that when you do attach an element,\n // you have to recurse within that element to all children elements to check whether they are attached or not and to which\n // schema. And if they aren't attached, attaching them as side-effect could be surprising (think that adding a single field\n // to a schema could bring a whole hierarchy of types and directives for instance). If they are attached, it only work if\n // it's to the same schema, but you have to check.\n // Overall, it's simpler to force attaching elements before you add other elements to them.\n assert(this.isAttached(), () => `Cannot modify detached element ${this}`);\n }\n}\n\nexport class Extension {\n protected _extendedElement?: TElement;\n sourceAST?: ASTNode;\n\n get extendedElement(): TElement | undefined {\n return this._extendedElement;\n }\n\n private setExtendedElement(element: TElement) {\n assert(!this._extendedElement, \"Cannot attached already attached extension\");\n this._extendedElement = element;\n }\n}\n\ntype UnappliedDirective = {\n nameOrDef: DirectiveDefinition> | string,\n args: Record,\n extension?: Extension,\n directive: DirectiveNode,\n};\n\n// TODO: ideally, we should hide the ctor of this class as we rely in places on the fact the no-one external defines new implementations.\nexport abstract class SchemaElement, TParent extends SchemaElement | Schema> extends Element {\n protected _appliedDirectives: Directive[] | undefined;\n protected _unappliedDirectives: UnappliedDirective[] | undefined;\n description?: string;\n\n addUnappliedDirective({ nameOrDef, args, extension, directive }: UnappliedDirective) {\n const toAdd = {\n nameOrDef,\n args: args ?? {},\n extension,\n directive,\n };\n if (this._unappliedDirectives) {\n this._unappliedDirectives.push(toAdd);\n } else {\n this._unappliedDirectives = [toAdd];\n }\n }\n\n processUnappliedDirectives() {\n for (const { nameOrDef, args, extension, directive } of this._unappliedDirectives ?? []) {\n const d = this.applyDirective(nameOrDef, args);\n d.setOfExtension(extension);\n d.sourceAST = directive;\n }\n this._unappliedDirectives = undefined;\n }\n\n get appliedDirectives(): readonly Directive[] {\n return this._appliedDirectives ?? [];\n }\n\n appliedDirectivesOf(nameOrDefinition: string | DirectiveDefinition): Directive[] {\n const directiveName = typeof nameOrDefinition === 'string' ? nameOrDefinition : nameOrDefinition.name;\n return this.appliedDirectives.filter(d => d.name == directiveName) as Directive[];\n }\n\n hasAppliedDirective(nameOrDefinition: string | DirectiveDefinition): boolean {\n // From the type-system point of view, there is no `appliedDirectivesOf(_: string | DirectiveDefinition)` function, but rather 2 overloads, neither of\n // which can take 'string | DirectiveDefinition', hence the need for this surprisingly looking code. And we don't really want to remove the overloading\n // on `appliedDirectivesOf` because that would lose us the type-checking of arguments in the case where we pass a definition (or rather, we could\n // preserve it, but it would make is a bit too easy to mess up calls with the 'string' argument).\n return (typeof nameOrDefinition === 'string'\n ? this.appliedDirectivesOf(nameOrDefinition)\n : this.appliedDirectivesOf(nameOrDefinition)\n ).length !== 0;\n }\n\n applyDirective(\n nameOrDef: DirectiveDefinition | string,\n args?: TApplicationArgs,\n asFirstDirective: boolean = false,\n ): Directive {\n let toAdd: Directive;\n if (typeof nameOrDef === 'string') {\n this.checkUpdate();\n toAdd = new Directive(nameOrDef, args ?? Object.create(null));\n const def = this.schema().directive(nameOrDef) ?? this.schema().blueprint.onMissingDirectiveDefinition(this.schema(), toAdd);\n if (!def) {\n throw this.schema().blueprint.onGraphQLJSValidationError(\n this.schema(),\n ERRORS.INVALID_GRAPHQL.err(`Unknown directive \"@${nameOrDef}\".`)\n );\n }\n if (Array.isArray(def)) {\n throw ErrGraphQLValidationFailed(def);\n }\n } else {\n this.checkUpdate(nameOrDef);\n toAdd = new Directive(nameOrDef.name, args ?? Object.create(null));\n }\n Element.prototype['setParent'].call(toAdd, this);\n // TODO: we should typecheck arguments or our TApplicationArgs business is just a lie.\n if (this._appliedDirectives) {\n if (asFirstDirective) {\n this._appliedDirectives.unshift(toAdd);\n } else {\n this._appliedDirectives.push(toAdd);\n }\n } else {\n this._appliedDirectives = [toAdd];\n }\n DirectiveDefinition.prototype['addReferencer'].call(toAdd.definition!, toAdd);\n this.onModification();\n return toAdd;\n }\n\n protected removeAppliedDirectives() {\n // We copy the array because this._appliedDirectives is modified in-place by `directive.remove()`\n if (!this._appliedDirectives) {\n return;\n }\n const applied = this._appliedDirectives.concat();\n applied.forEach(d => d.remove());\n }\n\n protected onModification() {\n const schema = this.schemaInternal();\n if (schema) {\n Schema.prototype['onModification'].call(schema);\n }\n }\n\n protected isElementBuiltIn(): boolean {\n return false;\n }\n\n protected removeTypeReferenceInternal(type: BaseNamedType) {\n // This method is a bit of a hack: we don't want to expose it and we call it from an other class, so we call it though\n // `SchemaElement.prototype`, but we also want this to abstract as it can only be implemented by each concrete subclass.\n // As we can't have both at the same time, this method just delegate to `remoteTypeReference` which is genuinely\n // abstract. This also allow to work around the typing issue that the type checker cannot tell that every BaseNamedType\n // is a NamedType (because in theory, someone could extend BaseNamedType without listing it in NamedType; but as\n // BaseNamedType is not exported and we don't plan to make that mistake ...).\n this.removeTypeReference(type as any);\n }\n\n protected abstract removeTypeReference(type: NamedType): void;\n\n protected checkRemoval() {\n assert(!this.isElementBuiltIn() || Schema.prototype['canModifyBuiltIn'].call(this.schema()), () => `Cannot modify built-in ${this}`);\n // We allow removals even on detached element because that doesn't particularly create issues (and we happen to do such\n // removals on detached internally; though of course we could refactor the code if we wanted).\n }\n\n protected checkUpdate(addedElement?: { schema(): Schema, isAttached(): boolean }) {\n super.checkUpdate();\n if (!Schema.prototype['canModifyBuiltIn'].call(this.schema())) {\n // Ensure this element (the modified one), is not a built-in, or part of one.\n let thisElement: SchemaElement | Schema | undefined = this;\n while (thisElement && thisElement instanceof SchemaElement) {\n assert(!thisElement.isElementBuiltIn(), () => `Cannot modify built-in (or part of built-in) ${this}`);\n thisElement = thisElement.parent;\n }\n }\n if (addedElement && addedElement.isAttached()) {\n const thatSchema = addedElement.schema();\n assert(!thatSchema || thatSchema === this.schema(), () => `Cannot add element ${addedElement} to ${this} as it is attached to another schema`);\n }\n }\n}\n\n// TODO: ideally, we should hide the ctor of this class as we rely in places on the fact the no-one external defines new implementations.\nexport abstract class NamedSchemaElement, TParent extends NamedSchemaElement | Schema, TReferencer> extends SchemaElement implements Named {\n // We want to be able to rename some elements, but we prefer offering that through a `rename`\n // method rather than exposing a name setter, as this feel more explicit (but that's arguably debatable).\n // We also currently only offer renames on types (because that's the only one we currently need),\n // though we could expand that.\n protected _name: string;\n\n constructor(name: string) {\n super();\n this._name = name;\n }\n\n get name(): string {\n return this._name;\n }\n\n abstract coordinate: string;\n\n abstract remove(): TReferencer[];\n}\n\nabstract class BaseNamedType> extends NamedSchemaElement {\n protected _referencers?: Set;\n protected _extensions?: Extension[];\n public preserveEmptyDefinition: boolean = false;\n\n constructor(name: string, readonly isBuiltIn: boolean = false) {\n super(name);\n }\n\n private addReferencer(referencer: TReferencer) {\n this._referencers ??= new Set();\n this._referencers.add(referencer);\n }\n\n private removeReferencer(referencer: TReferencer) {\n this._referencers?.delete(referencer)\n }\n\n get coordinate(): string {\n return this.name;\n }\n\n *allChildElements(): Generator, void, undefined> {\n // Overriden by those types that do have children\n }\n\n extensions(): readonly Extension[] {\n return this._extensions ?? [];\n }\n\n hasExtension(extension: Extension): boolean {\n return this._extensions?.includes(extension) ?? false;\n }\n\n newExtension(): Extension {\n return this.addExtension(new Extension());\n }\n\n addExtension(extension: Extension): Extension {\n this.checkUpdate();\n // Let's be nice and not complaint if we add an extension already added.\n if (this.hasExtension(extension)) {\n return extension;\n }\n assert(!extension.extendedElement, () => `Cannot add extension to type ${this}: it is already added to another type`);\n if (this._extensions) {\n this._extensions.push(extension);\n } else {\n this._extensions = [ extension ];\n }\n Extension.prototype['setExtendedElement'].call(extension, this);\n this.onModification();\n return extension;\n }\n\n removeExtensions() {\n if (!this._extensions) {\n return;\n }\n\n this._extensions = undefined;\n for (const directive of this.appliedDirectives) {\n directive.removeOfExtension();\n }\n this.removeInnerElementsExtensions();\n }\n\n isIntrospectionType(): boolean {\n return isIntrospectionName(this.name);\n }\n\n hasExtensionElements(): boolean {\n return !!this._extensions;\n }\n\n hasNonExtensionElements(): boolean {\n return this.preserveEmptyDefinition\n || this.appliedDirectives.some(d => d.ofExtension() === undefined)\n || this.hasNonExtensionInnerElements();\n }\n\n protected abstract hasNonExtensionInnerElements(): boolean;\n protected abstract removeInnerElementsExtensions(): void;\n\n protected isElementBuiltIn(): boolean {\n return this.isBuiltIn;\n }\n\n rename(newName: string) {\n // Mostly called to ensure we don't rename built-in types. It does mean we can't renamed detached\n // types while this wouldn't be dangerous, but it's probably not a big deal (the API is designed\n // in such a way that you probably should avoid reusing detached elements).\n this.checkUpdate();\n const oldName = this._name;\n this._name = newName;\n Schema.prototype['renameTypeInternal'].call(this._parent, oldName, newName);\n this.onModification();\n }\n\n /**\n * Removes this type definition from its parent schema.\n *\n * After calling this method, this type will be \"detached\": it will have no parent, schema, fields,\n * values, directives, etc...\n *\n * Note that it is always allowed to remove a type, but this may make a valid schema\n * invalid, and in particular any element that references this type will, after this call, have an undefined\n * reference.\n *\n * @returns an array of all the elements in the schema of this type (before the removal) that were\n * referencing this type (and have thus now an undefined reference).\n */\n remove(): TReferencer[] {\n if (!this._parent) {\n return [];\n }\n this.checkRemoval();\n this.onModification();\n // Remove this type's children.\n this.sourceAST = undefined;\n this.removeAppliedDirectives();\n this.removeInnerElements();\n // Remove this type's references.\n const toReturn: TReferencer[] = [];\n this._referencers?.forEach(r => {\n SchemaElement.prototype['removeTypeReferenceInternal'].call(r, this);\n toReturn.push(r);\n });\n this._referencers = undefined;\n // Remove this type from its parent schema.\n Schema.prototype['removeTypeInternal'].call(this._parent, this);\n this._parent = undefined;\n return toReturn;\n }\n\n /**\n * Removes this this definition _and_, recursively, any other elements that references this type and would be invalid\n * after the removal.\n *\n * Note that contrarily to `remove()` (which this method essentially call recursively), this method leaves the schema\n * valid (assuming it was valid beforehand) _unless_ all the schema ends up being removed through recursion (in which\n * case this leaves an empty schema, and that is not technically valid).\n *\n * Also note that this method does _not_ necessarily remove all the elements that reference this type: for instance,\n * if this type is an interface, objects implementing it will _not_ be removed, they will simply stop implementing\n * the interface. In practice, this method mainly remove fields that were using the removed type (in either argument or\n * return type), but it can also remove object/input object/interface if through such field removal some type ends up\n * empty, and it can remove unions if through that removal process and union becomes empty.\n */\n removeRecursive(): void {\n this.remove().forEach(ref => this.removeReferenceRecursive(ref));\n }\n\n protected abstract removeReferenceRecursive(ref: TReferencer): void;\n\n referencers(): ReadonlySet {\n return this._referencers ?? EMPTY_SET;\n }\n\n isReferenced(): boolean {\n return !!this._referencers;\n }\n\n protected abstract removeInnerElements(): void;\n\n toString(): string {\n return this.name;\n }\n}\n\n// TODO: ideally, we should hide the ctor of this class as we rely in places on the fact the no-one external defines new implementations.\nexport abstract class NamedSchemaElementWithType, P extends NamedSchemaElement | Schema, Referencer> extends NamedSchemaElement {\n private _type?: TType;\n\n get type(): TType | undefined {\n return this._type;\n }\n\n set type(type: TType | undefined) {\n if (type) {\n this.checkUpdate(type);\n } else {\n this.checkRemoval();\n }\n if (this._type) {\n removeReferenceToType(this, this._type);\n }\n this._type = type;\n if (type) {\n addReferenceToType(this, type);\n }\n }\n\n protected removeTypeReference(type: NamedType) {\n // We shouldn't have been listed as a reference if we're not one, so make it sure.\n assert(this._type && baseType(this._type) === type, () => `Cannot remove reference to type ${type} on ${this} as its type is ${this._type}`);\n this._type = undefined;\n }\n}\n\nabstract class BaseExtensionMember extends Element {\n private _extension?: Extension;\n\n ofExtension(): Extension | undefined {\n return this._extension;\n }\n\n removeOfExtension() {\n this._extension = undefined;\n }\n\n setOfExtension(extension: Extension | undefined) {\n this.checkUpdate();\n assert(!extension || this._parent?.hasExtension(extension), () => `Cannot set object as part of the provided extension: it is not an extension of parent ${this.parent}`);\n this._extension = extension;\n }\n\n remove() {\n this.removeInner();\n Schema.prototype['onModification'].call(this.schema());\n this._extension = undefined;\n this._parent = undefined;\n }\n\n protected abstract removeInner(): void;\n}\n\nexport class SchemaBlueprint {\n onMissingDirectiveDefinition(_schema: Schema, _directive: Directive): DirectiveDefinition | GraphQLError[] | undefined {\n // No-op by default, but used for federation.\n return undefined;\n }\n\n onDirectiveDefinitionAndSchemaParsed(_: Schema): GraphQLError[] {\n // No-op by default, but used for federation.\n return [];\n }\n\n ignoreParsedField(_type: NamedType, _fieldName: string): boolean {\n // No-op by default, but used for federation.\n return false;\n }\n\n onConstructed(_: Schema) {\n // No-op by default, but used for federation.\n }\n\n onAddedCoreFeature(_schema: Schema, _feature: CoreFeature) {\n // No-op by default, but used for federation.\n }\n\n onInvalidation(_: Schema) {\n // No-op by default, but used for federation.\n }\n\n onValidation(_schema: Schema): GraphQLError[] {\n // No-op by default, but used for federation.\n return []\n }\n\n validationRules(): readonly SDLValidationRule[] {\n return specifiedSDLRules;\n }\n\n /**\n * Allows to intercept some graphQL-js error messages when we can provide additional guidance to users.\n */\n onGraphQLJSValidationError(schema: Schema, error: GraphQLError): GraphQLError {\n // For now, the main additional guidance we provide is around directives, where we could provide additional help in 2 main ways:\n // - if a directive name is likely misspelled (somehow, graphQL-js has methods to offer suggestions on likely mispelling, but don't use this (at the\n // time of this writting) for directive names).\n // - for fed 2 schema, if a federation directive is refered under it's \"default\" naming but is not properly imported (not enforced\n // in the method but rather in the `FederationBlueprint`).\n //\n // Note that intercepting/parsing error messages to modify them is never ideal, but pragmatically, it's probably better than rewriting the relevant\n // rules entirely (in that later case, our \"copied\" rule would stop getting any potential graphQL-js made improvements for instance). And while such\n // parsing is fragile, in that it'll break if the original message change, we have unit tests to surface any such breakage so it's not really a risk.\n const matcher = /^Unknown directive \"@(?[_A-Za-z][_0-9A-Za-z]*)\"\\.$/.exec(error.message);\n const name = matcher?.groups?.directive;\n if (!name) {\n return error;\n }\n\n const allDefinedDirectiveNames = schema.allDirectives().map((d) => d.name);\n const suggestions = suggestionList(name, allDefinedDirectiveNames);\n if (suggestions.length === 0) {\n return this.onUnknownDirectiveValidationError(schema, name, error);\n } else {\n return withModifiedErrorMessage(error, `${error.message}${didYouMean(suggestions.map((s) => '@' + s))}`);\n }\n }\n\n onUnknownDirectiveValidationError(_schema: Schema, _unknownDirectiveName: string, error: GraphQLError): GraphQLError {\n return error;\n }\n\n applyDirectivesAfterParsing() {\n return false;\n }\n}\n\nexport const defaultSchemaBlueprint = new SchemaBlueprint();\n\nexport class CoreFeature {\n constructor(\n readonly url: FeatureUrl,\n readonly nameInSchema: string,\n readonly directive: Directive,\n readonly imports: CoreImport[],\n readonly purpose?: string,\n ) {\n }\n\n isFeatureDefinition(element: NamedType | DirectiveDefinition): boolean {\n const importName = element.kind === 'DirectiveDefinition'\n ? '@' + element.name\n : element.name;\n return element.name.startsWith(this.nameInSchema + '__')\n || (element.kind === 'DirectiveDefinition' && element.name === this.nameInSchema)\n || !!this.imports.find((i) => importName === (i.as ?? i.name));\n }\n\n directiveNameInSchema(name: string): string {\n return CoreFeature.directiveNameInSchemaForCoreArguments(\n this.url,\n this.nameInSchema,\n this.imports,\n name,\n );\n }\n\n static directiveNameInSchemaForCoreArguments(\n specUrl: FeatureUrl,\n specNameInSchema: string,\n imports: CoreImport[],\n directiveNameInSpec: string,\n ): string {\n const elementImport = imports.find((i) =>\n i.name.charAt(0) === '@' && i.name.slice(1) === directiveNameInSpec\n );\n return elementImport\n ? (elementImport.as?.slice(1) ?? directiveNameInSpec)\n : (directiveNameInSpec === specUrl.name\n ? specNameInSchema\n : specNameInSchema + '__' + directiveNameInSpec\n );\n }\n\n typeNameInSchema(name: string): string {\n const elementImport = this.imports.find((i) => i.name === name);\n return elementImport ? (elementImport.as ?? name) : this.nameInSchema + '__' + name;\n }\n\n minimumFederationVersion(): FeatureVersion | undefined {\n return coreFeatureDefinitionIfKnown(this.url)?.minimumFederationVersion;\n }\n}\n\nexport class CoreFeatures {\n readonly coreDefinition: CoreSpecDefinition;\n private readonly byAlias: Map = new Map();\n private readonly byIdentity: Map = new Map();\n\n constructor(readonly coreItself: CoreFeature) {\n this.add(coreItself);\n const coreDef = findCoreSpecVersion(coreItself.url);\n if (!coreDef) {\n throw ERRORS.UNKNOWN_LINK_VERSION.err(`Schema uses unknown version ${coreItself.url.version} of the ${coreItself.url.name} spec`);\n }\n this.coreDefinition = coreDef;\n }\n\n getByIdentity(identity: string): CoreFeature | undefined {\n return this.byIdentity.get(identity);\n }\n\n allFeatures(): IterableIterator {\n return this.byIdentity.values();\n }\n\n private removeFeature(featureIdentity: string) {\n const feature = this.byIdentity.get(featureIdentity);\n if (feature) {\n this.byIdentity.delete(featureIdentity);\n this.byAlias.delete(feature.nameInSchema);\n }\n }\n\n private maybeAddFeature(directive: Directive): CoreFeature | undefined {\n if (directive.definition?.name !== this.coreItself.nameInSchema) {\n return undefined;\n }\n const typedDirective = directive as Directive\n const args = typedDirective.arguments();\n const url = this.coreDefinition.extractFeatureUrl(args);\n const existing = this.byIdentity.get(url.identity);\n if (existing) {\n // TODO: we may want to lossen that limitation at some point. Including the same feature for 2 different major versions should be ok.\n throw ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(`Duplicate inclusion of feature ${url.identity}`);\n }\n const imports = extractCoreFeatureImports(url, typedDirective);\n const feature = new CoreFeature(url, args.as ?? url.name, directive, imports, args.for);\n this.add(feature);\n directive.schema().blueprint.onAddedCoreFeature(directive.schema(), feature);\n return feature;\n }\n\n private add(feature: CoreFeature) {\n this.byAlias.set(feature.nameInSchema, feature);\n this.byIdentity.set(feature.url.identity, feature);\n }\n\n sourceFeature(element: DirectiveDefinition | Directive | NamedType): { feature: CoreFeature, nameInFeature: string, isImported: boolean } | undefined {\n const isDirective = element instanceof DirectiveDefinition || element instanceof Directive;\n const splitted = element.name.split('__');\n if (splitted.length > 1) {\n const feature = this.byAlias.get(splitted[0]);\n return feature ? {\n feature,\n nameInFeature: splitted.slice(1).join('__'),\n isImported: false,\n } : undefined;\n } else {\n // Let's first see if it's an import, as this would take precedence over directive implicitely named like their feature.\n const importName = isDirective ? '@' + element.name : element.name;\n const allFeatures = [this.coreItself, ...this.byIdentity.values()];\n for (const feature of allFeatures) {\n for (const { as, name } of feature.imports) {\n if ((as ?? name) === importName) {\n return {\n feature,\n nameInFeature: isDirective ? name.slice(1) : name,\n isImported: true,\n };\n }\n }\n }\n\n // Otherwise, this may be the special directive having the same name as its feature.\n const directFeature = this.byAlias.get(element.name);\n if (directFeature && isDirective) {\n return {\n feature: directFeature,\n nameInFeature: element.name,\n isImported: false,\n };\n }\n\n return undefined;\n }\n }\n}\n\nconst graphQLBuiltInTypes: readonly string[] = [ 'Int', 'Float', 'String', 'Boolean', 'ID' ];\nconst graphQLBuiltInTypesSpecifications: readonly TypeSpecification[] = graphQLBuiltInTypes.map((name) => createScalarTypeSpecification({ name }));\n\nconst graphQLBuiltInDirectivesSpecifications: readonly DirectiveSpecification[] = [\n createDirectiveSpecification({\n name: 'include',\n locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: [{ name: 'if', type: (schema) => new NonNullType(schema.booleanType()) }],\n }),\n createDirectiveSpecification({\n name: 'skip',\n locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: [{ name: 'if', type: (schema) => new NonNullType(schema.booleanType()) }],\n }),\n createDirectiveSpecification({\n name: 'deprecated',\n locations: [DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.ENUM_VALUE, DirectiveLocation.ARGUMENT_DEFINITION, DirectiveLocation.INPUT_FIELD_DEFINITION],\n args: [{ name: 'reason', type: (schema) => schema.stringType(), defaultValue: 'No longer supported' }],\n }),\n createDirectiveSpecification({\n name: 'specifiedBy',\n locations: [DirectiveLocation.SCALAR],\n args: [{ name: 'url', type: (schema) => new NonNullType(schema.stringType()) }],\n }),\n // Note that @defer and @stream are unconditionally added to `Schema` even if they are technically \"optional\" built-in. _But_,\n // the `Schema#toGraphQLJSSchema` method has an option to decide if @defer/@stream should be included or not in the resulting\n // schema, which is how the gateway and router can, at runtime, decide to include or not include them based on actual support.\n createDirectiveSpecification({\n name: 'defer',\n locations: [DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: [\n { name: 'label', type: (schema) => schema.stringType() },\n { name: 'if', type: (schema) => new NonNullType(schema.booleanType()), defaultValue: true },\n ],\n }),\n // Adding @stream too so that it's know and we don't error out if it is queries. It feels like it would be weird to do so for @stream but not\n // @defer when both are defined in the same spec. That said, that does *not* mean we currently _implement_ @stream, we don't, and so putting\n // it in a query will be a no-op at the moment (which technically is valid according to the spec so ...).\n createDirectiveSpecification({\n name: 'stream',\n locations: [DirectiveLocation.FIELD],\n args: [\n { name: 'label', type: (schema) => schema.stringType() },\n { name: 'initialCount', type: (schema) => schema.intType(), defaultValue: 0 },\n { name: 'if', type: (schema) => new NonNullType(schema.booleanType()), defaultValue: true },\n ],\n }),\n];\n\nexport type DeferDirectiveArgs = {\n label?: string,\n if?: boolean | Variable,\n}\n\nexport type StreamDirectiveArgs = {\n label?: string,\n initialCount: number,\n if?: boolean,\n}\n\n\n// A coordinate is up to 3 \"graphQL name\" ([_A-Za-z][_0-9A-Za-z]*).\nconst coordinateRegexp = /^@?[_A-Za-z][_0-9A-Za-z]*(\\.[_A-Za-z][_0-9A-Za-z]*)?(\\([_A-Za-z][_0-9A-Za-z]*:\\))?$/;\n\nexport type SchemaConfig = {\n cacheAST?: boolean,\n}\n\nexport class Schema {\n private _schemaDefinition: SchemaDefinition;\n private readonly _builtInTypes = new MapWithCachedArrays();\n private readonly _types = new MapWithCachedArrays();\n private readonly _builtInDirectives = new MapWithCachedArrays();\n private readonly _directives = new MapWithCachedArrays();\n private _coreFeatures?: CoreFeatures;\n private isConstructed: boolean = false;\n public isValidated: boolean = false;\n\n private cachedDocument?: DocumentNode;\n private apiSchema?: Schema;\n\n constructor(\n readonly blueprint: SchemaBlueprint = defaultSchemaBlueprint,\n readonly config: SchemaConfig = {},\n ) {\n this._schemaDefinition = new SchemaDefinition();\n Element.prototype['setParent'].call(this._schemaDefinition, this);\n graphQLBuiltInTypesSpecifications.forEach((spec) => spec.checkOrAdd(this, undefined, true));\n graphQLBuiltInDirectivesSpecifications.forEach((spec) => spec.checkOrAdd(this, undefined, true));\n blueprint.onConstructed(this);\n this.isConstructed = true;\n }\n\n private canModifyBuiltIn(): boolean {\n return !this.isConstructed;\n }\n\n private runWithBuiltInModificationAllowed(fct: () => void) {\n const wasConstructed = this.isConstructed;\n this.isConstructed = false;\n fct();\n this.isConstructed = wasConstructed;\n }\n\n private renameTypeInternal(oldName: string, newName: string) {\n this._types.set(newName, this._types.get(oldName)!);\n this._types.delete(oldName);\n }\n\n private removeTypeInternal(type: BaseNamedType) {\n this._types.delete(type.name);\n }\n\n private removeDirectiveInternal(definition: DirectiveDefinition) {\n this._directives.delete(definition.name);\n }\n\n private markAsCoreSchema(coreItself: CoreFeature) {\n this._coreFeatures = new CoreFeatures(coreItself);\n }\n\n private unmarkAsCoreSchema() {\n this._coreFeatures = undefined;\n }\n\n private onModification() {\n // The only stuffs that are added while !isConstructed are built-in, and those shouldn't invalidate everything.\n if (this.isConstructed) {\n this.invalidate();\n this.cachedDocument = undefined;\n this.apiSchema = undefined;\n }\n }\n\n isCoreSchema(): boolean {\n return this.coreFeatures !== undefined;\n }\n\n get coreFeatures(): CoreFeatures | undefined {\n return this._coreFeatures;\n }\n\n toAST(): DocumentNode {\n if (!this.cachedDocument) {\n // As we're not building the document from a file, having locations info might be more confusing that not.\n const ast = parse(printSchema(this), { noLocation: true });\n const shouldCache = this.config.cacheAST ?? false;\n if (!shouldCache) {\n return ast;\n }\n this.cachedDocument = ast;\n }\n return this.cachedDocument!;\n }\n\n toAPISchema(): Schema {\n if (!this.apiSchema) {\n this.validate();\n\n const apiSchema = this.clone(undefined, false);\n\n // As we compute the API schema of a supergraph, we want to ignore explicit definitions of `@defer` and `@stream` because\n // those correspond to the merging of potential definitions from the subgraphs, but whether the supergraph API schema\n // supports defer or not is unrelated to the subgraph capacity. As far as gateway/router support goes, whether the defer/stream\n // definitions end up being provided or not will depend on the runtime `config` argument of the `toGraphQLJSSchema` that\n // is the called on the API schema (the schema resulting from that method).\n for (const toRemoveIfCustom of ['defer', 'stream']) {\n const directive = apiSchema.directive(toRemoveIfCustom);\n if (directive && !directive.isBuiltIn) {\n directive.removeRecursive();\n }\n }\n\n removeInaccessibleElements(apiSchema);\n removeAllCoreFeatures(apiSchema);\n assert(!apiSchema.isCoreSchema(), \"The API schema shouldn't be a core schema\")\n apiSchema.validate();\n this.apiSchema = apiSchema;\n }\n return this.apiSchema;\n }\n\n private emptyASTDefinitionsForExtensionsWithoutDefinition(): DefinitionNode[] {\n const nodes = [];\n if (this.schemaDefinition.hasExtensionElements() && !this.schemaDefinition.hasNonExtensionElements()) {\n const node: SchemaDefinitionNode = { kind: Kind.SCHEMA_DEFINITION, operationTypes: [] };\n nodes.push(node);\n }\n for (const type of this.types()) {\n if (type.hasExtensionElements() && !type.hasNonExtensionElements()) {\n const node: TypeDefinitionNode = {\n kind: type.astDefinitionKind,\n name: { kind: Kind.NAME, value: type.name },\n };\n nodes.push(node);\n }\n }\n return nodes;\n }\n\n toGraphQLJSSchema(config?: { includeDefer?: boolean, includeStream?: boolean }): GraphQLSchema {\n const includeDefer = config?.includeDefer ?? false;\n const includeStream = config?.includeStream ?? false;\n\n let ast = this.toAST();\n\n // Note that AST generated by `this.toAST()` may not be fully graphQL valid because, in federation subgraphs, we accept\n // extensions that have no corresponding definitions. This won't fly however if we try to build a `GraphQLSchema`, so\n // we need to \"fix\" that problem. For that, we add empty definitions for every element that has extensions without\n // definitions (which is also what `fed1` was effectively doing).\n const additionalNodes = this.emptyASTDefinitionsForExtensionsWithoutDefinition();\n if (includeDefer) {\n additionalNodes.push(this.deferDirective().toAST());\n }\n if (includeStream) {\n additionalNodes.push(this.streamDirective().toAST());\n }\n if (additionalNodes.length > 0) {\n ast = {\n kind: Kind.DOCUMENT,\n definitions: ast.definitions.concat(additionalNodes),\n }\n }\n\n const graphQLSchema = buildGraphqlSchemaFromAST(ast);\n if (additionalNodes.length > 0) {\n // As mentionned, if we have extensions without definition, we _have_ to add an empty definition to be able to\n // build a `GraphQLSchema` object. But that also mean that we lose the information doing so, as we cannot\n // distinguish anymore that we have no definition. A method like `graphQLSchemaToAST` for instance, would\n // include a definition in particular, and that could a bit surprised (and could lead to an hard-to-find bug\n // in the worst case if you were expecting it that something like `graphQLSchemaToAST(buildSchema(defs).toGraphQLJSSchema())`\n // gives you back the original `defs`).\n // So to avoid this, we manually delete the definition `astNode` post-construction on the created schema if\n // we had not definition. This should break users of the resulting schema since `astNode` is allowed to be `undefined`,\n // but it allows `graphQLSchemaToAST` to make the proper distinction in general.\n for (const node of additionalNodes) {\n switch (node.kind) {\n case Kind.SCHEMA_DEFINITION:\n graphQLSchema.astNode = undefined;\n break;\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n const type = graphQLSchema.getType(node.name.value);\n if (type) {\n type.astNode = undefined;\n }\n }\n }\n }\n return graphQLSchema;\n }\n\n get schemaDefinition(): SchemaDefinition {\n return this._schemaDefinition;\n }\n\n /**\n * All the types defined on this schema, excluding the built-in types.\n */\n types(): readonly NamedType[] {\n return this._types.values();\n }\n\n interfaceTypes(): readonly InterfaceType[] {\n return filterTypesOfKind(this.types(), 'InterfaceType');\n }\n\n objectTypes(): readonly ObjectType[] {\n return filterTypesOfKind(this.types(), 'ObjectType');\n }\n\n unionTypes(): readonly UnionType[] {\n return filterTypesOfKind(this.types(), 'UnionType');\n }\n\n scalarTypes(): readonly ScalarType[] {\n return filterTypesOfKind(this.types(), 'ScalarType');\n }\n\n inputTypes(): readonly InputObjectType[] {\n return filterTypesOfKind(this.types(), 'InputObjectType');\n }\n\n enumTypes(): readonly EnumType[] {\n return filterTypesOfKind(this.types(), 'EnumType');\n }\n\n /**\n * All the built-in types for this schema (those that are not displayed when printing the schema).\n */\n builtInTypes(includeShadowed: boolean = false): readonly NamedType[] {\n const allBuiltIns = this._builtInTypes.values();\n return includeShadowed\n ? allBuiltIns\n : allBuiltIns.filter(t => !this.isShadowedBuiltInType(t));\n }\n\n private isShadowedBuiltInType(type: NamedType) {\n return type.isBuiltIn && this._types.has(type.name);\n }\n\n /**\n * All the types, including the built-in ones.\n */\n allTypes(): readonly NamedType[] {\n return this.builtInTypes().concat(this.types());\n }\n\n /**\n * The type of the provide name in this schema if one is defined or if it is the name of a built-in.\n */\n type(name: string): NamedType | undefined {\n const type = this._types.get(name);\n return type ? type : this._builtInTypes.get(name);\n }\n\n typeOfKind(name: string, kind: T['kind']): T | undefined {\n const type = this.type(name);\n return type && type.kind === kind ? type as T : undefined;\n }\n\n intType(): ScalarType {\n return this._builtInTypes.get('Int')! as ScalarType;\n }\n\n floatType(): ScalarType {\n return this._builtInTypes.get('Float')! as ScalarType;\n }\n\n stringType(): ScalarType {\n return this._builtInTypes.get('String')! as ScalarType;\n }\n\n booleanType(): ScalarType {\n return this._builtInTypes.get('Boolean')! as ScalarType;\n }\n\n idType(): ScalarType {\n return this._builtInTypes.get('ID')! as ScalarType;\n }\n\n builtInScalarTypes(): ScalarType[] {\n return [\n this.intType(),\n this.floatType(),\n this.stringType(),\n this.booleanType(),\n this.idType(),\n ];\n }\n\n addType(type: T): T {\n const existing = this.type(type.name);\n if (existing) {\n // Like for directive, we let user shadow built-in types, but the definition must be valid.\n assert(existing.isBuiltIn, () => `Type ${type} already exists in this schema`);\n }\n if (type.isAttached()) {\n // For convenience, let's not error out on adding an already added type.\n assert(type.parent == this, () => `Cannot add type ${type} to this schema; it is already attached to another schema`);\n return type;\n }\n if (type.isBuiltIn) {\n assert(!this.isConstructed, `Cannot add built-in ${type} to this schema (built-ins can only be added at schema construction time)`);\n this._builtInTypes.set(type.name, type);\n } else {\n this._types.set(type.name, type);\n }\n Element.prototype['setParent'].call(type, this);\n // If a type is the default name of a root, it \"becomes\" that root automatically,\n // unless some other root has already been set.\n const defaultSchemaRoot = checkDefaultSchemaRoot(type);\n if (defaultSchemaRoot && !this.schemaDefinition.root(defaultSchemaRoot)) {\n // Note that checkDefaultSchemaRoot guarantees us type is an ObjectType\n this.schemaDefinition.setRoot(defaultSchemaRoot, type as ObjectType);\n }\n this.onModification();\n return type;\n }\n\n /**\n * All the directive defined on this schema, excluding the built-in directives.\n */\n directives(): readonly DirectiveDefinition[] {\n return this._directives.values();\n }\n\n /**\n * All the built-in directives for this schema (those that are not displayed when printing the schema).\n */\n builtInDirectives(includeShadowed: boolean = false): readonly DirectiveDefinition[] {\n return includeShadowed\n ? this._builtInDirectives.values()\n : this._builtInDirectives.values().filter(d => !this.isShadowedBuiltInDirective(d));\n }\n\n allDirectives(): readonly DirectiveDefinition[] {\n return this.builtInDirectives().concat(this.directives());\n }\n\n private isShadowedBuiltInDirective(directive: DirectiveDefinition) {\n return directive.isBuiltIn && this._directives.has(directive.name);\n }\n\n directive(name: string): DirectiveDefinition | undefined {\n const directive = this._directives.get(name);\n return directive ? directive : this.builtInDirective(name);\n }\n\n builtInDirective(name: string): DirectiveDefinition | undefined {\n return this._builtInDirectives.get(name);\n }\n\n *allNamedSchemaElement(): Generator, void, undefined> {\n for (const type of this.types()) {\n yield type;\n yield* type.allChildElements();\n }\n for (const directive of this.directives()) {\n yield directive;\n yield* directive.arguments();\n }\n }\n\n *allSchemaElement(): Generator, void, undefined> {\n yield this._schemaDefinition;\n yield* this.allNamedSchemaElement();\n }\n\n addDirectiveDefinition(name: string): DirectiveDefinition;\n addDirectiveDefinition(directive: DirectiveDefinition): DirectiveDefinition;\n addDirectiveDefinition(directiveOrName: string | DirectiveDefinition): DirectiveDefinition {\n const definition = typeof directiveOrName === 'string' ? new DirectiveDefinition(directiveOrName) : directiveOrName;\n const existing = this.directive(definition.name);\n // Note that we allow the schema to define a built-in manually (and the manual definition will shadow the\n // built-in one). It's just that validation will ensure the definition ends up the one expected.\n assert(!existing || existing.isBuiltIn, () => `Directive ${definition} already exists in this schema`);\n if (definition.isAttached()) {\n // For convenience, let's not error out on adding an already added directive.\n assert(definition.parent == this, () => `Cannot add directive ${definition} to this schema; it is already attached to another schema`);\n return definition;\n }\n if (definition.isBuiltIn) {\n assert(!this.isConstructed, () => `Cannot add built-in ${definition} to this schema (built-ins can only be added at schema construction time)`);\n this._builtInDirectives.set(definition.name, definition);\n } else {\n this._directives.set(definition.name, definition);\n }\n Element.prototype['setParent'].call(definition, this);\n this.onModification();\n return definition;\n }\n\n invalidate() {\n if (this.isValidated) {\n this.blueprint.onInvalidation(this);\n }\n this.isValidated = false;\n }\n\n /**\n * Marks the schema as validated _without running actual validation_.\n * Should obviously only be called when we know the built schema must be valid.\n *\n * Note that if `validate` is called after this, then it will exit immediately without validation as\n * the schema will have been marked as validated. However, if this schema is further modified, then\n * `invalidate` will be called, after which `validate` would run validation again.\n */\n assumeValid() {\n this.runWithBuiltInModificationAllowed(() => {\n addIntrospectionFields(this);\n });\n\n this.isValidated = true;\n }\n\n validate() {\n if (this.isValidated) {\n return;\n }\n\n this.runWithBuiltInModificationAllowed(() => {\n addIntrospectionFields(this);\n });\n\n // TODO: we check that all types are properly set (aren't undefined) in `validateSchema`, but `validateSDL` will error out beforehand. We should\n // probably extract that part of `validateSchema` and run `validateSDL` conditionally on that first check.\n let errors = validateSDL(this.toAST(), undefined, this.blueprint.validationRules()).map((e) => this.blueprint.onGraphQLJSValidationError(this, e));\n errors = errors.concat(validateSchema(this));\n\n // We avoid adding federation-specific validations if the base schema is not proper graphQL as the later can easily trigger\n // the former (for instance, someone mistyping the 'fields' argument name of a @key).\n if (errors.length === 0) {\n this.runWithBuiltInModificationAllowed(() => {\n errors = this.blueprint.onValidation(this);\n });\n }\n\n if (errors.length > 0) {\n throw ErrGraphQLValidationFailed(errors as GraphQLError[]);\n }\n\n this.isValidated = true;\n }\n\n clone(builtIns?: SchemaBlueprint, cloneJoinDirectives: boolean = true): Schema {\n const cloned = new Schema(builtIns ?? this.blueprint);\n copy(this, cloned, cloneJoinDirectives);\n if (this.isValidated) {\n cloned.assumeValid();\n }\n return cloned;\n }\n\n private getBuiltInDirective(\n name: string\n ): DirectiveDefinition {\n const directive = this.directive(name);\n assert(directive, `The provided schema has not be built with the ${name} directive built-in`);\n return directive as DirectiveDefinition;\n }\n\n includeDirective(): DirectiveDefinition<{if: boolean | Variable}> {\n return this.getBuiltInDirective('include');\n }\n\n skipDirective(): DirectiveDefinition<{if: boolean | Variable}> {\n return this.getBuiltInDirective('skip');\n }\n\n deprecatedDirective(): DirectiveDefinition<{reason?: string}> {\n return this.getBuiltInDirective('deprecated');\n }\n\n specifiedByDirective(): DirectiveDefinition<{url: string}> {\n return this.getBuiltInDirective('specifiedBy');\n }\n\n deferDirective(): DirectiveDefinition {\n return this.getBuiltInDirective('defer');\n }\n\n streamDirective(): DirectiveDefinition {\n return this.getBuiltInDirective('stream');\n }\n\n /**\n * Gets an element of the schema given its \"schema coordinate\".\n *\n * Note that the syntax for schema coordinates is the one from the upcoming GraphQL spec: https://github.com/graphql/graphql-spec/pull/794.\n */\n elementByCoordinate(coordinate: string): NamedSchemaElement | undefined {\n if (!coordinate.match(coordinateRegexp)) {\n // To be fair, graphQL coordinate is not yet officially part of the spec but well...\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n }\n\n const argStartIdx = coordinate.indexOf('(');\n const start = argStartIdx < 0 ? coordinate : coordinate.slice(0, argStartIdx);\n // Argument syntax is `foo(argName:)`, so the arg name start after the open parenthesis and go until the final ':)'.\n const argName = argStartIdx < 0 ? undefined : coordinate.slice(argStartIdx + 1, coordinate.length - 2);\n const splittedStart = start.split('.');\n const typeOrDirectiveName = splittedStart[0];\n const fieldOrEnumName = splittedStart[1];\n const isDirective = typeOrDirectiveName.startsWith('@');\n if (isDirective) {\n if (fieldOrEnumName) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n }\n const directive = this.directive(typeOrDirectiveName.slice(1));\n return argName ? directive?.argument(argName) : directive;\n } else {\n const type = this.type(typeOrDirectiveName);\n if (!type || !fieldOrEnumName) {\n return type;\n }\n switch (type.kind) {\n case 'ObjectType':\n case 'InterfaceType':\n const field = type.field(fieldOrEnumName);\n return argName ? field?.argument(argName) : field;\n case 'InputObjectType':\n if (argName) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n }\n return type.field(fieldOrEnumName);\n case 'EnumType':\n if (argName) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n }\n return type.value(fieldOrEnumName);\n default:\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n }\n }\n }\n}\n\nexport class RootType extends BaseExtensionMember {\n constructor(readonly rootKind: SchemaRootKind, readonly type: ObjectType) {\n super();\n }\n\n isDefaultRootName() {\n return defaultRootName(this.rootKind) == this.type.name;\n }\n\n protected removeInner() {\n SchemaDefinition.prototype['removeRootType'].call(this._parent, this);\n }\n}\n\nexport class SchemaDefinition extends SchemaElement {\n readonly kind = 'SchemaDefinition' as const;\n protected readonly _roots = new MapWithCachedArrays();\n protected _extensions: Extension[] | undefined;\n public preserveEmptyDefinition: boolean = false;\n\n roots(): readonly RootType[] {\n return this._roots.values();\n }\n\n applyDirective(\n nameOrDef: DirectiveDefinition | string,\n args?: TApplicationArgs,\n asFirstDirective: boolean = false,\n ): Directive {\n const applied = super.applyDirective(nameOrDef, args, asFirstDirective) as Directive;\n const schema = this.schema();\n const coreFeatures = schema.coreFeatures;\n if (isCoreSpecDirectiveApplication(applied)) {\n if (coreFeatures) {\n throw ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(`Invalid duplicate application of @core/@link`);\n }\n const schemaDirective = applied as Directive;\n const args = schemaDirective.arguments();\n const url = FeatureUrl.parse((args.url ?? args.feature)!);\n const imports = extractCoreFeatureImports(url, schemaDirective);\n const core = new CoreFeature(url, args.as ?? url.name, schemaDirective, imports, args.for);\n Schema.prototype['markAsCoreSchema'].call(schema, core);\n // We also any core features that may have been added before we saw the @link for link itself\n this.appliedDirectives\n .filter((a) => a !== applied)\n .forEach((other) => CoreFeatures.prototype['maybeAddFeature'].call(schema.coreFeatures, other));\n } else if (coreFeatures) {\n CoreFeatures.prototype['maybeAddFeature'].call(coreFeatures, applied);\n }\n this.onModification();\n return applied;\n }\n\n root(rootKind: SchemaRootKind): RootType | undefined {\n return this._roots.get(rootKind);\n }\n\n rootType(rootKind: SchemaRootKind): ObjectType | undefined {\n return this.root(rootKind)?.type;\n }\n\n setRoot(rootKind: SchemaRootKind, nameOrType: ObjectType | string): RootType {\n let toSet: RootType;\n if (typeof nameOrType === 'string') {\n this.checkUpdate();\n const obj = this.schema().type(nameOrType);\n if (!obj) {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot set schema ${rootKind} root to unknown type ${nameOrType}`);\n } else if (obj.kind != 'ObjectType') {\n throw ERRORS.INVALID_GRAPHQL.err(`${defaultRootName(rootKind)} root type must be an Object type${rootKind === 'query' ? '' : ' if provided'}, it cannot be set to ${nameOrType} (an ${obj.kind}).`);\n }\n toSet = new RootType(rootKind, obj);\n } else {\n this.checkUpdate(nameOrType);\n toSet = new RootType(rootKind, nameOrType);\n }\n const prevRoot = this._roots.get(rootKind);\n if (prevRoot) {\n removeReferenceToType(this, prevRoot.type);\n }\n this._roots.set(rootKind, toSet);\n Element.prototype['setParent'].call(toSet, this);\n addReferenceToType(this, toSet.type);\n this.onModification();\n return toSet;\n }\n\n extensions(): Extension[] {\n return this._extensions ?? [];\n }\n\n hasExtension(extension: Extension): boolean {\n return this._extensions?.includes(extension) ?? false;\n }\n\n newExtension(): Extension {\n return this.addExtension(new Extension());\n }\n\n addExtension(extension: Extension): Extension {\n this.checkUpdate();\n // Let's be nice and not complaint if we add an extension already added.\n if (this.hasExtension(extension)) {\n return extension;\n }\n assert(!extension.extendedElement, 'Cannot add extension to this schema: extension is already added to another schema');\n if (this._extensions) {\n this._extensions.push(extension);\n } else {\n this._extensions = [extension];\n }\n Extension.prototype['setExtendedElement'].call(extension, this);\n this.onModification();\n return extension;\n }\n\n hasExtensionElements(): boolean {\n return !!this._extensions;\n }\n\n hasNonExtensionElements(): boolean {\n return this.preserveEmptyDefinition\n || this.appliedDirectives.some((d) => d.ofExtension() === undefined)\n || this.roots().some((r) => r.ofExtension() === undefined);\n }\n\n private removeRootType(rootType: RootType) {\n this._roots.delete(rootType.rootKind);\n removeReferenceToType(this, rootType.type);\n }\n\n protected removeTypeReference(toRemove: NamedType) {\n for (const rootType of this.roots()) {\n if (rootType.type == toRemove) {\n this._roots.delete(rootType.rootKind);\n }\n }\n }\n\n toString() {\n return `schema[${this._roots.keys().join(', ')}]`;\n }\n}\n\nexport class ScalarType extends BaseNamedType {\n readonly kind = 'ScalarType' as const;\n readonly astDefinitionKind = Kind.SCALAR_TYPE_DEFINITION;\n\n protected removeTypeReference(type: NamedType) {\n assert(false, `Scalar type ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n }\n\n protected hasNonExtensionInnerElements(): boolean {\n return false; // No inner elements\n }\n\n protected removeInnerElementsExtensions(): void {\n // No inner elements\n }\n\n protected removeInnerElements(): void {\n // No inner elements\n }\n\n protected removeReferenceRecursive(ref: OutputTypeReferencer | InputTypeReferencer): void {\n ref.remove();\n }\n}\n\nexport class InterfaceImplementation extends BaseExtensionMember {\n readonly interface: InterfaceType\n\n // Note: typescript complains if a parameter is named 'interface'. This is why we don't just declare the `readonly interface`\n // field within the constructor.\n constructor(itf: InterfaceType) {\n super();\n this.interface = itf;\n }\n\n protected removeInner() {\n FieldBasedType.prototype['removeInterfaceImplementation'].call(this._parent, this.interface);\n }\n\n toString() {\n return `'implements ${this.interface}'`;\n }\n}\n\n// Abstract class for ObjectType and InterfaceType as they share most of their structure. Note that UnionType also\n// technically has one field (__typename), but because it's only one, it is special cased and UnionType is not a\n// subclass of this class.\nabstract class FieldBasedType, R> extends BaseNamedType {\n // Note that we only keep one InterfaceImplementation per interface name, and so each `implements X` belong\n // either to the main type definition _or_ to a single extension. In theory, a document could have `implements X`\n // in both of those places (or on 2 distinct extensions). We don't preserve that level of detail, but this\n // feels like a very minor limitation with little practical impact, and it avoids additional complexity.\n private _interfaceImplementations: MapWithCachedArrays> | undefined;\n private readonly _fields: MapWithCachedArrays> = new MapWithCachedArrays();\n private _cachedNonBuiltInFields?: readonly FieldDefinition[];\n\n protected onAttached() {\n // Note that we can only add the __typename built-in field when we're attached, because we need access to the\n // schema string type. Also, we're effectively modifying a built-in (to add the type), so we\n // need to let the schema accept it.\n Schema.prototype['runWithBuiltInModificationAllowed'].call(this.schema(), () => {\n this.addField(new FieldDefinition(typenameFieldName, true), new NonNullType(this.schema().stringType()));\n });\n }\n\n private removeFieldInternal(field: FieldDefinition) {\n this._fields.delete(field.name);\n this._cachedNonBuiltInFields = undefined;\n }\n\n interfaceImplementations(): readonly InterfaceImplementation[] {\n return this._interfaceImplementations?.values() ?? [];\n }\n\n interfaceImplementation(type: string | InterfaceType): InterfaceImplementation | undefined {\n return this._interfaceImplementations ? this._interfaceImplementations.get(typeof type === 'string' ? type : type.name) : undefined;\n }\n\n interfaces(): readonly InterfaceType[] {\n return this.interfaceImplementations().map(impl => impl.interface);\n }\n\n implementsInterface(type: string | InterfaceType): boolean {\n return this._interfaceImplementations?.has(typeof type === 'string' ? type : type.name) ?? false;\n }\n\n addImplementedInterface(nameOrItfOrItfImpl: InterfaceImplementation | InterfaceType | string): InterfaceImplementation {\n let toAdd: InterfaceImplementation;\n if (nameOrItfOrItfImpl instanceof InterfaceImplementation) {\n this.checkUpdate(nameOrItfOrItfImpl);\n toAdd = nameOrItfOrItfImpl;\n } else {\n let itf: InterfaceType;\n if (typeof nameOrItfOrItfImpl === 'string') {\n this.checkUpdate();\n const maybeItf = this.schema().type(nameOrItfOrItfImpl);\n if (!maybeItf) {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot implement unknown type ${nameOrItfOrItfImpl}`);\n } else if (maybeItf.kind != 'InterfaceType') {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot implement non-interface type ${nameOrItfOrItfImpl} (of type ${maybeItf.kind})`);\n }\n itf = maybeItf;\n } else {\n itf = nameOrItfOrItfImpl;\n }\n toAdd = new InterfaceImplementation(itf);\n }\n const existing = this._interfaceImplementations?.get(toAdd.interface.name);\n if (!existing) {\n if (!this._interfaceImplementations) {\n this._interfaceImplementations = new MapWithCachedArrays();\n }\n this._interfaceImplementations.set(toAdd.interface.name, toAdd);\n addReferenceToType(this, toAdd.interface);\n Element.prototype['setParent'].call(toAdd, this);\n this.onModification();\n return toAdd;\n } else {\n return existing;\n }\n }\n\n /**\n * All the fields of this type, excluding the built-in ones.\n */\n fields(): readonly FieldDefinition[] {\n if (!this._cachedNonBuiltInFields) {\n this._cachedNonBuiltInFields = this._fields.values().filter(f => !f.isBuiltIn);\n }\n return this._cachedNonBuiltInFields;\n }\n\n hasFields(): boolean {\n return this.fields().length > 0;\n }\n\n /**\n * All the built-in fields for this type (those that are not displayed when printing the schema).\n */\n builtInFields(): FieldDefinition[] {\n return this.allFields().filter(f => f.isBuiltIn);\n }\n\n /**\n * All the fields of this type, including the built-in ones.\n */\n allFields(): readonly FieldDefinition[] {\n return this._fields.values();\n }\n\n field(name: string): FieldDefinition | undefined {\n return this._fields.get(name);\n }\n\n /**\n * A shortcut to access the __typename field.\n *\n * Note that an _attached_ (field-based) type will always have this field, but _detached_ types won't, so this method\n * will only return `undefined` on detached objects.\n */\n typenameField(): FieldDefinition | undefined {\n return this.field(typenameFieldName);\n }\n\n addField(nameOrField: string | FieldDefinition, type?: Type): FieldDefinition {\n let toAdd: FieldDefinition;\n if (typeof nameOrField === 'string') {\n this.checkUpdate();\n toAdd = new FieldDefinition(nameOrField);\n } else {\n this.checkUpdate(nameOrField);\n toAdd = nameOrField;\n }\n if (this.field(toAdd.name)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Field ${toAdd.name} already exists on ${this}`);\n }\n if (type && !isOutputType(type)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid input type ${type} for field ${toAdd.name}: object and interface field types should be output types.`);\n }\n this._fields.set(toAdd.name, toAdd);\n this._cachedNonBuiltInFields = undefined;\n Element.prototype['setParent'].call(toAdd, this);\n // Note that we need to wait we have attached the field to set the type.\n if (type) {\n toAdd.type = type;\n }\n this.onModification();\n return toAdd;\n }\n\n *allChildElements(): Generator, void, undefined> {\n for (const field of this._fields.values()) {\n yield field;\n yield* field.arguments();\n }\n }\n\n private removeInterfaceImplementation(itf: InterfaceType) {\n this._interfaceImplementations?.delete(itf.name);\n removeReferenceToType(this, itf);\n }\n\n protected removeTypeReference(type: NamedType) {\n this._interfaceImplementations?.delete(type.name);\n }\n\n protected removeInnerElements(): void {\n for (const interfaceImpl of this.interfaceImplementations()) {\n interfaceImpl.remove();\n }\n for (const field of this.allFields()) {\n if (field.isBuiltIn) {\n // Calling remove on a built-in (think _typename) throws, with reason (we don't want\n // to allow removing _typename from a type in general). So all we do for built-in is\n // detach the parent.\n FieldDefinition.prototype['removeParent'].call(field);\n } else {\n field.remove();\n }\n }\n }\n\n protected hasNonExtensionInnerElements(): boolean {\n return this.interfaceImplementations().some(itf => itf.ofExtension() === undefined)\n || this.fields().some(f => f.ofExtension() === undefined);\n }\n\n protected removeInnerElementsExtensions(): void {\n this.interfaceImplementations().forEach(itf => itf.removeOfExtension());\n this.fields().forEach(f => f.removeOfExtension());\n }\n}\n\nexport class ObjectType extends FieldBasedType {\n readonly kind = 'ObjectType' as const;\n readonly astDefinitionKind = Kind.OBJECT_TYPE_DEFINITION;\n\n /**\n * Whether this type is one of the schema root type (will return false if the type is detached).\n */\n isRootType(): boolean {\n const schema = this.schema();\n return schema.schemaDefinition.roots().some(rt => rt.type == this);\n }\n\n /**\n * Whether this type is the \"query\" root type of the schema (will return false if the type is detached).\n */\n isQueryRootType(): boolean {\n const schema = this.schema();\n return schema.schemaDefinition.root('query')?.type === this;\n }\n\n /**\n * Whether this type is the \"subscription\" root type of the schema (will return false if the type is detached).\n */\n isSubscriptionRootType(): boolean {\n const schema = this.schema();\n return schema.schemaDefinition.root('subscription')?.type === this;\n }\n\n protected removeReferenceRecursive(ref: ObjectTypeReferencer): void {\n // Note that the ref can also be a`SchemaDefinition`, but don't have anything to do then.\n switch (ref.kind) {\n case 'FieldDefinition':\n ref.removeRecursive();\n break;\n case 'UnionType':\n if (ref.membersCount() === 0) {\n ref.removeRecursive();\n }\n break;\n }\n }\n\n unionsWhereMember(): readonly UnionType[] {\n const unions: UnionType[] = [];\n this._referencers?.forEach((r) => {\n if (r instanceof BaseNamedType && isUnionType(r)) {\n unions.push(r);\n }\n });\n return unions;\n }\n}\n\nexport class InterfaceType extends FieldBasedType {\n readonly kind = 'InterfaceType' as const;\n readonly astDefinitionKind = Kind.INTERFACE_TYPE_DEFINITION;\n\n allImplementations(): (ObjectType | InterfaceType)[] {\n const implementations: (ObjectType | InterfaceType)[] = [];\n this.referencers().forEach(ref => {\n if (ref.kind === 'ObjectType' || ref.kind === 'InterfaceType') {\n implementations.push(ref);\n }\n });\n return implementations;\n }\n\n possibleRuntimeTypes(): readonly ObjectType[] {\n // Note that object types in GraphQL needs to reference directly all the interfaces they implement, and cannot rely on transitivity.\n return this.allImplementations().filter(impl => impl.kind === 'ObjectType') as ObjectType[];\n }\n\n isPossibleRuntimeType(type: string | NamedType): boolean {\n const typeName = typeof type === 'string' ? type : type.name;\n return this.possibleRuntimeTypes().some(t => t.name == typeName);\n }\n\n protected removeReferenceRecursive(ref: InterfaceTypeReferencer): void {\n // Note that an interface can be referenced by an object/interface that implements it, but after remove(), said object/interface\n // will simply not implement \"this\" anymore and we have nothing more to do.\n if (ref.kind === 'FieldDefinition') {\n ref.removeRecursive();\n }\n }\n}\n\nexport class UnionMember extends BaseExtensionMember {\n constructor(readonly type: ObjectType) {\n super();\n }\n\n protected removeInner() {\n UnionType.prototype['removeMember'].call(this._parent, this.type);\n }\n}\n\nexport class UnionType extends BaseNamedType {\n readonly kind = 'UnionType' as const;\n readonly astDefinitionKind = Kind.UNION_TYPE_DEFINITION;\n protected readonly _members: MapWithCachedArrays = new MapWithCachedArrays();\n private _typenameField?: FieldDefinition;\n\n protected onAttached() {\n // Note that we can only create the __typename built-in field when we're attached, because we need access to the\n // schema string type. Also, we're effectively modifying a built-in (to add the type), so we\n // need to let the schema accept it.\n Schema.prototype['runWithBuiltInModificationAllowed'].call(this.schema(), () => {\n this._typenameField = new FieldDefinition(typenameFieldName, true);\n Element.prototype['setParent'].call(this._typenameField, this);\n this._typenameField.type = new NonNullType(this.schema().stringType());\n });\n }\n\n types(): ObjectType[] {\n return this.members().map(m => m.type);\n }\n\n members(): readonly UnionMember[] {\n return this._members.values();\n }\n\n membersCount(): number {\n return this._members.size;\n }\n\n hasTypeMember(type: string | ObjectType) {\n return this._members.has(typeof type === 'string' ? type : type.name);\n }\n\n addType(nameOrTypeOrMember: ObjectType | string | UnionMember): UnionMember {\n let toAdd: UnionMember;\n if (nameOrTypeOrMember instanceof UnionMember) {\n this.checkUpdate(nameOrTypeOrMember);\n toAdd = nameOrTypeOrMember;\n } else {\n let obj: ObjectType;\n if (typeof nameOrTypeOrMember === 'string') {\n this.checkUpdate();\n const maybeObj = this.schema().type(nameOrTypeOrMember);\n if (!maybeObj) {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot add unknown type ${nameOrTypeOrMember} as member of union type ${this.name}`);\n } else if (maybeObj.kind != 'ObjectType') {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot add non-object type ${nameOrTypeOrMember} (of type ${maybeObj.kind}) as member of union type ${this.name}`);\n }\n obj = maybeObj;\n } else {\n this.checkUpdate(nameOrTypeOrMember);\n obj = nameOrTypeOrMember;\n }\n toAdd = new UnionMember(obj);\n }\n const existing = this._members.get(toAdd.type.name);\n if (!existing) {\n this._members.set(toAdd.type.name, toAdd);\n Element.prototype['setParent'].call(toAdd, this);\n addReferenceToType(this, toAdd.type);\n this.onModification();\n return toAdd;\n } else {\n return existing;\n }\n }\n\n clearTypes() {\n for (const type of this.types()) {\n this.removeMember(type);\n }\n this.onModification();\n }\n\n /**\n * Access a field of the union by name.\n * As the only field that can be accessed on an union is the __typename one, this method will always return undefined unless called\n * on \"__typename\". However, this exists to allow code working on CompositeType to be more generic.\n */\n field(name: string): FieldDefinition | undefined {\n if (name === typenameFieldName && this._typenameField) {\n return this._typenameField;\n }\n return undefined;\n }\n\n /**\n * The __typename field (and only field of a union).\n *\n * Note that _attached_ unions always have this field, so this method will only return `undefined` on detached objects.\n */\n typenameField(): FieldDefinition | undefined {\n return this._typenameField;\n }\n\n private removeMember(type: ObjectType) {\n this._members.delete(type.name);\n removeReferenceToType(this, type);\n }\n\n protected removeTypeReference(type: NamedType) {\n this._members.delete(type.name);\n }\n\n protected removeInnerElements(): void {\n for (const member of this.members()) {\n member.remove();\n }\n }\n\n protected hasNonExtensionInnerElements(): boolean {\n return this.members().some(m => m.ofExtension() === undefined);\n }\n\n protected removeReferenceRecursive(ref: OutputTypeReferencer): void {\n ref.removeRecursive();\n }\n\n protected removeInnerElementsExtensions(): void {\n this.members().forEach(m => m.removeOfExtension());\n }\n}\n\nexport class EnumType extends BaseNamedType {\n readonly kind = 'EnumType' as const;\n readonly astDefinitionKind = Kind.ENUM_TYPE_DEFINITION;\n private _values = new Map();\n\n get values(): readonly EnumValue[] {\n // Because our abstractions are mutable, and removal is done by calling\n // `remove()` on the element to remove, it's not unlikely someone mauy\n // try to iterate on the result of this method and call `remove()` on\n // some of the return value based on some condition. But this will break\n // in an error-prone way if we don't copy, so we do.\n return Array.from(this._values.values());\n }\n \n value(name: string): EnumValue | undefined {\n return this._values.get(name);\n }\n\n addValue(value: EnumValue): EnumValue;\n addValue(name: string): EnumValue;\n addValue(nameOrValue: EnumValue | string): EnumValue {\n let toAdd: EnumValue;\n if (typeof nameOrValue === 'string') {\n this.checkUpdate();\n toAdd = new EnumValue(nameOrValue);\n } else {\n this.checkUpdate(nameOrValue);\n toAdd = nameOrValue;\n }\n const existing = this.value(toAdd.name);\n if (!existing) {\n this._values.set(toAdd.name, toAdd);\n Element.prototype['setParent'].call(toAdd, this);\n this.onModification();\n return toAdd;\n } else {\n return existing;\n }\n }\n\n protected removeTypeReference(type: NamedType) {\n assert(false, `Eum type ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n }\n\n private removeValueInternal(value: EnumValue) {\n this._values.delete(value.name);\n }\n\n protected removeInnerElements(): void {\n // Make a copy (indirectly), since EnumValue.remove() will modify this._values.\n const values = this.values;\n for (const value of values) {\n value.remove();\n }\n }\n\n protected hasNonExtensionInnerElements(): boolean {\n return Array.from(this._values.values()).some(v => v.ofExtension() === undefined);\n }\n\n protected removeReferenceRecursive(ref: OutputTypeReferencer): void {\n ref.removeRecursive();\n }\n\n protected removeInnerElementsExtensions(): void {\n for (const v of this._values.values()) {\n v.removeOfExtension();\n }\n }\n}\n\nexport class InputObjectType extends BaseNamedType {\n readonly kind = 'InputObjectType' as const;\n readonly astDefinitionKind = Kind.INPUT_OBJECT_TYPE_DEFINITION;\n private readonly _fields: Map = new Map();\n private _cachedFieldsArray?: InputFieldDefinition[];\n\n /**\n * All the fields of this input type.\n */\n fields(): InputFieldDefinition[] {\n if (!this._cachedFieldsArray) {\n this._cachedFieldsArray = mapValues(this._fields);\n }\n return this._cachedFieldsArray;\n }\n\n field(name: string): InputFieldDefinition | undefined {\n return this._fields.get(name);\n }\n\n addField(field: InputFieldDefinition): InputFieldDefinition;\n addField(name: string, type?: Type): InputFieldDefinition;\n addField(nameOrField: string | InputFieldDefinition, type?: Type): InputFieldDefinition {\n const toAdd = typeof nameOrField === 'string' ? new InputFieldDefinition(nameOrField) : nameOrField;\n this.checkUpdate(toAdd);\n if (this.field(toAdd.name)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Field ${toAdd.name} already exists on ${this}`);\n }\n if (type && !isInputType(type)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid output type ${type} for field ${toAdd.name}: input field types should be input types.`);\n }\n this._fields.set(toAdd.name, toAdd);\n this._cachedFieldsArray = undefined;\n Element.prototype['setParent'].call(toAdd, this);\n // Note that we need to wait we have attached the field to set the type.\n if (typeof nameOrField === 'string' && type) {\n toAdd.type = type;\n }\n this.onModification();\n return toAdd;\n }\n\n hasFields(): boolean {\n return this._fields.size > 0;\n }\n\n *allChildElements(): Generator, void, undefined> {\n yield* this._fields.values();\n }\n\n protected removeTypeReference(type: NamedType) {\n assert(false, `Input Object type ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n }\n\n protected removeInnerElements(): void {\n // Not that we modify the type during iteration, but the reference we get from `this.fields()` will not change\n for (const field of this.fields()) {\n field.remove();\n }\n }\n\n private removeFieldInternal(field: InputFieldDefinition) {\n this._fields.delete(field.name);\n this._cachedFieldsArray = undefined;\n }\n\n protected hasNonExtensionInnerElements(): boolean {\n return this.fields().some(f => f.ofExtension() === undefined);\n }\n\n protected removeReferenceRecursive(ref: InputTypeReferencer): void {\n if (ref.kind === 'ArgumentDefinition') {\n // Not only do we want to remove the argument, but we want to remove its parent. Technically, only removing the argument would\n // leave the schema in a valid state so it would be an option, but this feel a bit too weird of a behaviour in practice for a\n // method calling `removeRecursive`. And in particular, it would mean that if the argument is a directive definition one,\n // we'd also have to update each of the directive application to remove the correspond argument. Removing the full directive\n // definition (and all its applications) feels a bit more predictable.\n ref.parent().removeRecursive();\n } else {\n ref.removeRecursive();\n }\n }\n\n protected removeInnerElementsExtensions(): void {\n this.fields().forEach(f => f.removeOfExtension());\n }\n}\n\nclass BaseWrapperType {\n protected constructor(protected _type: T) {\n assert(this._type, 'Cannot wrap an undefined/null type');\n }\n\n schema(): Schema {\n return this.baseType().schema();\n }\n\n isAttached(): boolean {\n return this.baseType().isAttached();\n }\n\n get ofType(): T {\n return this._type;\n }\n\n baseType(): NamedType {\n return baseType(this._type);\n }\n}\n\nexport class ListType extends BaseWrapperType {\n readonly kind = 'ListType' as const;\n\n constructor(type: T) {\n super(type);\n }\n\n toString(): string {\n return `[${this.ofType}]`;\n }\n}\n\nexport class NonNullType extends BaseWrapperType {\n readonly kind = 'NonNullType' as const;\n\n constructor(type: T) {\n super(type);\n }\n\n toString(): string {\n return `${this.ofType}!`;\n }\n}\n\nexport class FieldDefinition extends NamedSchemaElementWithType, TParent, never> {\n readonly kind = 'FieldDefinition' as const;\n private _args: MapWithCachedArrays>> | undefined;\n private _extension?: Extension;\n\n constructor(name: string, readonly isBuiltIn: boolean = false) {\n super(name);\n }\n\n protected isElementBuiltIn(): boolean {\n return this.isBuiltIn;\n }\n\n get coordinate(): string {\n const parent = this._parent;\n return `${parent == undefined ? '' : parent.coordinate}.${this.name}`;\n }\n\n hasArguments(): boolean {\n return !!this._args && this._args.size > 0;\n }\n\n arguments(): readonly ArgumentDefinition>[] {\n return this._args?.values() ?? [];\n }\n\n argument(name: string): ArgumentDefinition> | undefined {\n return this._args?.get(name);\n }\n\n addArgument(arg: ArgumentDefinition>): ArgumentDefinition>;\n addArgument(name: string, type?: Type, defaultValue?: any): ArgumentDefinition>;\n addArgument(nameOrArg: string | ArgumentDefinition>, type?: Type, defaultValue?: any): ArgumentDefinition> {\n let toAdd: ArgumentDefinition>;\n if (typeof nameOrArg === 'string') {\n this.checkUpdate();\n toAdd = new ArgumentDefinition>(nameOrArg);\n toAdd.defaultValue = defaultValue;\n } else {\n this.checkUpdate(nameOrArg);\n toAdd = nameOrArg;\n }\n const existing = this.argument(toAdd.name);\n if (existing) {\n // For some reason (bad codegen, maybe?), some users have field where a arg is defined more than one. And this doesn't seem rejected by\n // graphQL (?). So we accept it, but ensure the types/default values are the same.\n if (type && existing.type && !sameType(type, existing.type)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Argument ${toAdd.name} already exists on field ${this.name} with a different type (${existing.type})`);\n }\n if (defaultValue && (!existing.defaultValue || !valueEquals(defaultValue, existing.defaultValue))) {\n throw ERRORS.INVALID_GRAPHQL.err(`Argument ${toAdd.name} already exists on field ${this.name} with a different default value (${valueToString(existing.defaultValue)})`);\n }\n return existing;\n }\n if (type && !isInputType(type)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid output type ${type} for argument ${toAdd.name} of ${this}: arguments should be input types.`);\n }\n if (!this._args) {\n this._args = new MapWithCachedArrays();\n }\n this._args.set(toAdd.name, toAdd);\n Element.prototype['setParent'].call(toAdd, this);\n if (typeof nameOrArg === 'string') {\n toAdd.type = type;\n }\n this.onModification();\n return toAdd;\n }\n\n ofExtension(): Extension | undefined {\n return this._extension;\n }\n\n removeOfExtension() {\n this._extension = undefined;\n }\n\n setOfExtension(extension: Extension | undefined) {\n this.checkUpdate();\n assert(\n !extension || this._parent?.hasExtension(extension),\n () => `Cannot mark field ${this.name} as part of the provided extension: it is not an extension of field parent type ${this.parent}`\n );\n this._extension = extension;\n this.onModification();\n }\n\n isIntrospectionField(): boolean {\n return isIntrospectionName(this.name);\n }\n\n isSchemaIntrospectionField(): boolean {\n return introspectionFieldNames.includes(this.name);\n }\n\n private removeArgumentInternal(name: string) {\n if (this._args) {\n this._args.delete(name);\n }\n }\n\n // Only called through the prototype from FieldBasedType.removeInnerElements because we don't want to expose it.\n private removeParent() {\n this._parent = undefined;\n }\n\n isDeprecated(): boolean {\n return this.hasAppliedDirective('deprecated');\n }\n\n /**\n * Removes this field definition from its parent type.\n *\n * After calling this method, this field definition will be \"detached\": it will have no parent, schema, type,\n * arguments, or directives.\n */\n remove(): never[] {\n if (!this._parent) {\n return [];\n }\n this.checkRemoval();\n this.onModification();\n // Remove this field's children.\n this.sourceAST = undefined;\n this.type = undefined;\n this.removeAppliedDirectives();\n for (const arg of this.arguments()) {\n arg.remove();\n }\n // Note that we don't track field references outside of parents, so no\n // removal needed there.\n //\n // TODO: One could consider interface fields as references to implementing\n // object/interface fields, in the sense that removing an implementing\n // object/interface field breaks the validity of the implementing\n // interface field. Being aware that an object/interface field is being\n // referenced in such a way would be useful for understanding breakages\n // that need to be resolved as a consequence of removal.\n //\n // Remove this field from its parent object/interface type.\n FieldBasedType.prototype['removeFieldInternal'].call(this._parent, this);\n this._parent = undefined;\n this._extension = undefined;\n return [];\n }\n\n /**\n * Like `remove()`, but if this field was the last field of its parent type, the parent type is removed through its `removeRecursive` method.\n */\n removeRecursive(): void {\n const parent = this._parent;\n this.remove();\n // Note that we exclude the union type here because it doesn't have the `fields()` method, but the only field unions can have is the __typename\n // one and it cannot be removed, so remove() above will actually throw in practice before reaching this.\n if (parent && !isUnionType(parent) && parent.fields().length === 0) {\n parent.removeRecursive();\n }\n }\n\n toString(): string {\n const args = this.hasArguments()\n ? '(' + this.arguments().map(arg => arg.toString()).join(', ') + ')'\n : \"\";\n return `${this.name}${args}: ${this.type}`;\n }\n}\n\nexport class InputFieldDefinition extends NamedSchemaElementWithType {\n readonly kind = 'InputFieldDefinition' as const;\n private _extension?: Extension;\n defaultValue?: any\n\n get coordinate(): string {\n const parent = this._parent;\n return `${parent == undefined ? '' : parent.coordinate}.${this.name}`;\n }\n\n isRequired(): boolean {\n return isNonNullType(this.type!) && this.defaultValue === undefined;\n }\n\n ofExtension(): Extension | undefined {\n return this._extension;\n }\n\n removeOfExtension() {\n this._extension = undefined;\n }\n\n setOfExtension(extension: Extension | undefined) {\n this.checkUpdate();\n assert(\n !extension || this._parent?.hasExtension(extension),\n () => `Cannot mark field ${this.name} as part of the provided extension: it is not an extension of field parent type ${this.parent}`,\n );\n this._extension = extension;\n this.onModification();\n }\n\n isDeprecated(): boolean {\n return this.hasAppliedDirective('deprecated');\n }\n\n /**\n * Removes this input field definition from its parent type.\n *\n * After calling this method, this input field definition will be \"detached\": it will have no parent, schema,\n * type, default value, or directives.\n */\n remove(): never[] {\n if (!this._parent) {\n return [];\n }\n this.checkRemoval();\n this.onModification();\n // Remove this input field's children.\n this.sourceAST = undefined;\n this.type = undefined;\n this.defaultValue = undefined;\n this.removeAppliedDirectives();\n // Note that we don't track input field references outside of parents, so no\n // removal needed there.\n //\n // TODO: One could consider default values (in field arguments, input\n // fields, or directive definitions) as references to input fields they\n // use, in the sense that removing the input field breaks the validity of\n // the default value. Being aware that an input field is being referenced\n // in such a way would be useful for understanding breakages that need to\n // be resolved as a consequence of removal. (The reference is indirect\n // though, as input field usages are currently represented as strings\n // within GraphQL values).\n //\n // Remove this input field from its parent input object type.\n InputObjectType.prototype['removeFieldInternal'].call(this._parent, this);\n this._parent = undefined;\n this._extension = undefined;\n return [];\n }\n\n /**\n * Like `remove()`, but if this field was the last field of its parent type, the parent type is removed through its `removeRecursive` method.\n */\n removeRecursive(): void {\n const parent = this._parent;\n this.remove();\n if (parent && parent.fields().length === 0) {\n parent.removeRecursive();\n }\n }\n\n toString(): string {\n const defaultStr = this.defaultValue === undefined ? \"\" : ` = ${valueToString(this.defaultValue, this.type)}`;\n return `${this.name}: ${this.type}${defaultStr}`;\n }\n}\n\nexport class ArgumentDefinition | DirectiveDefinition> extends NamedSchemaElementWithType, TParent, never> {\n readonly kind = 'ArgumentDefinition' as const;\n defaultValue?: any\n\n constructor(name: string) {\n super(name);\n }\n\n get coordinate(): string {\n const parent = this._parent;\n return `${parent == undefined ? '' : parent.coordinate}(${this.name}:)`;\n }\n\n isRequired(): boolean {\n return isNonNullType(this.type!) && this.defaultValue === undefined;\n }\n\n isDeprecated(): boolean {\n return this.hasAppliedDirective('deprecated');\n }\n\n /**\n * Removes this argument definition from its parent element (field or directive).\n *\n * After calling this method, this argument definition will be \"detached\": it will have no parent, schema, type,\n * default value, or directives.\n */\n remove(): never[] {\n if (!this._parent) {\n return [];\n }\n this.checkRemoval();\n this.onModification();\n // Remove this argument's children.\n this.sourceAST = undefined;\n this.type = undefined;\n this.defaultValue = undefined;\n this.removeAppliedDirectives();\n // Note that we don't track argument references outside of parents, so no\n // removal needed there.\n //\n // TODO: One could consider the arguments of directive applications as\n // references to the arguments of directive definitions, in the sense that\n // removing a directive definition argument can break the validity of the\n // directive application. Being aware that a directive definition argument\n // is being referenced in such a way would be useful for understanding\n // breakages that need to be resolved as a consequence of removal. (You\n // could make a similar claim about interface field arguments being\n // references to object field arguments.)\n //\n // Remove this argument from its parent field or directive definition.\n if (this._parent instanceof FieldDefinition) {\n FieldDefinition.prototype['removeArgumentInternal'].call(this._parent, this.name);\n } else {\n DirectiveDefinition.prototype['removeArgumentInternal'].call(this._parent, this.name);\n }\n this._parent = undefined;\n return [];\n }\n\n toString() {\n const defaultStr = this.defaultValue === undefined ? \"\" : ` = ${valueToString(this.defaultValue, this.type)}`;\n return `${this.name}: ${this.type}${defaultStr}`;\n }\n}\n\nexport class EnumValue extends NamedSchemaElement {\n readonly kind = 'EnumValue' as const;\n private _extension?: Extension;\n\n get coordinate(): string {\n const parent = this._parent;\n return `${parent == undefined ? '' : parent.coordinate}.${this.name}`;\n }\n\n ofExtension(): Extension | undefined {\n return this._extension;\n }\n\n removeOfExtension() {\n this._extension = undefined;\n }\n\n setOfExtension(extension: Extension | undefined) {\n this.checkUpdate();\n assert(\n !extension || this._parent?.hasExtension(extension),\n () => `Cannot mark field ${this.name} as part of the provided extension: it is not an extension of enum value parent type ${this.parent}`,\n );\n this._extension = extension;\n this.onModification();\n }\n\n isDeprecated(): boolean {\n return this.hasAppliedDirective('deprecated');\n }\n\n /**\n * Removes this enum value definition from its parent type.\n *\n * After calling this method, this enum value definition will be \"detached\": it will have no parent, schema, type,\n * arguments, or directives.\n */\n remove(): never[] {\n if (!this._parent) {\n return [];\n }\n this.checkRemoval();\n this.onModification();\n // Remove this enum value's children.\n this.sourceAST = undefined;\n this.removeAppliedDirectives();\n // Note that we don't track enum value references outside of parents, so no\n // removal needed there.\n //\n // TODO: One could consider default values (in field arguments, input\n // fields, or directive definitions) as references to enum values they\n // use, in the sense that removing the enum value breaks the validity of\n // the default value. Being aware that an enum value is being referenced\n // in such a way would be useful for understanding breakages that need to\n // be resolved as a consequence of removal. (The reference is indirect\n // though, as enum value usages are currently represented as strings\n // within GraphQL values).\n //\n // Remove this enum value from its parent enum type.\n EnumType.prototype['removeValueInternal'].call(this._parent, this);\n this._parent = undefined;\n this._extension = undefined;\n return [];\n }\n\n protected removeTypeReference(type: NamedType) {\n assert(false, `Enum value ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n }\n\n toString(): string {\n return `${this.name}`;\n }\n}\n\nexport class DirectiveDefinition extends NamedSchemaElement, Schema, Directive> {\n readonly kind = 'DirectiveDefinition' as const;\n\n private _args?: MapWithCachedArrays>;\n repeatable: boolean = false;\n private readonly _locations: DirectiveLocation[] = [];\n private _referencers?: Set, TApplicationArgs>>;\n\n constructor(name: string, readonly isBuiltIn: boolean = false) {\n super(name);\n }\n\n get coordinate(): string {\n return `@${this.name}`;\n }\n\n arguments(): readonly ArgumentDefinition[] {\n return this._args?.values() ?? [];\n }\n\n argument(name: string): ArgumentDefinition | undefined {\n return this._args?.get(name);\n }\n\n addArgument(arg: ArgumentDefinition): ArgumentDefinition;\n addArgument(name: string, type?: InputType, defaultValue?: any): ArgumentDefinition;\n addArgument(nameOrArg: string | ArgumentDefinition, type?: InputType, defaultValue?: any): ArgumentDefinition {\n let toAdd: ArgumentDefinition;\n if (typeof nameOrArg === 'string') {\n this.checkUpdate();\n toAdd = new ArgumentDefinition(nameOrArg);\n toAdd.defaultValue = defaultValue;\n } else {\n this.checkUpdate(nameOrArg);\n toAdd = nameOrArg;\n }\n if (this.argument(toAdd.name)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Argument ${toAdd.name} already exists on field ${this.name}`);\n }\n if (!this._args) {\n this._args = new MapWithCachedArrays();\n }\n this._args.set(toAdd.name, toAdd);\n Element.prototype['setParent'].call(toAdd, this);\n if (typeof nameOrArg === 'string') {\n toAdd.type = type;\n }\n this.onModification();\n return toAdd;\n }\n\n private removeArgumentInternal(name: string) {\n this._args?.delete(name);\n }\n\n get locations(): readonly DirectiveLocation[] {\n return this._locations;\n }\n\n addLocations(...locations: DirectiveLocation[]): DirectiveDefinition {\n let modified = false;\n for (const location of locations) {\n if (!this._locations.includes(location)) {\n this._locations.push(location);\n modified = true;\n }\n }\n if (modified) {\n this.onModification();\n }\n return this;\n }\n\n addAllLocations(): DirectiveDefinition {\n return this.addLocations(...Object.values(DirectiveLocation));\n }\n\n /**\n * Adds the subset of type system locations that correspond to type definitions.\n */\n addAllTypeLocations(): DirectiveDefinition {\n return this.addLocations(\n DirectiveLocation.SCALAR,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.UNION,\n DirectiveLocation.ENUM,\n DirectiveLocation.INPUT_OBJECT,\n );\n }\n\n removeLocations(...locations: DirectiveLocation[]): DirectiveDefinition {\n let modified = false;\n for (const location of locations) {\n modified ||= removeArrayElement(location, this._locations);\n }\n if (modified) {\n this.onModification();\n }\n return this;\n }\n\n hasExecutableLocations(): boolean {\n return this.locations.some((loc) => isExecutableDirectiveLocation(loc));\n }\n\n hasTypeSystemLocations(): boolean {\n return this.locations.some((loc) => isTypeSystemDirectiveLocation(loc));\n }\n\n applications(): ReadonlySet, TApplicationArgs>> {\n this._referencers ??= new Set();\n return this._referencers;\n }\n\n private addReferencer(referencer: Directive, TApplicationArgs>) {\n assert(referencer, 'Referencer should exists');\n this._referencers ??= new Set();\n this._referencers.add(referencer);\n }\n\n private removeReferencer(referencer: Directive, TApplicationArgs>) {\n this._referencers?.delete(referencer);\n }\n\n protected removeTypeReference(type: NamedType) {\n assert(false, `Directive definition ${this} can't reference other types (it's arguments can); shouldn't be asked to remove reference to ${type}`);\n }\n\n /**\n * Removes this directive definition from its parent schema.\n *\n * After calling this method, this directive definition will be \"detached\": it will have no parent, schema, or\n * arguments.\n */\n remove(): Directive[] {\n if (!this._parent) {\n return [];\n }\n this.checkRemoval();\n this.onModification();\n // Remove this directive definition's children.\n this.sourceAST = undefined;\n assert(!this._appliedDirectives || this._appliedDirectives.length === 0, \"Directive definition should not have directive applied to it\");\n for (const arg of this.arguments()) {\n arg.remove();\n }\n // Remove this directive definition's references.\n //\n // Note that while a directive application references its definition, it\n // doesn't store a link to that definition. Instead, we fetch the definition\n // from the schema when requested. So we don't have to do anything on the\n // referencers other than clear them (and return the pre-cleared set).\n const toReturn = Array.from(this._referencers ?? []);\n this._referencers = undefined;\n // Remove this directive definition from its parent schema.\n Schema.prototype['removeDirectiveInternal'].call(this._parent, this);\n this._parent = undefined;\n return toReturn;\n }\n\n /**\n * Removes this this directive definition _and_ all its applications.\n */\n removeRecursive(): void {\n this.remove().forEach(ref => ref.remove());\n }\n\n toAST(): DirectiveDefinitionNode {\n const doc = parse(printDirectiveDefinition(this));\n return doc.definitions[0] as DirectiveDefinitionNode;\n }\n\n toString(): string {\n return `@${this.name}`;\n }\n}\n\nexport class Directive<\n TParent extends SchemaElement | DirectiveTargetElement = SchemaElement,\n TArgs extends {[key: string]: any} = {[key: string]: any}\n> extends Element implements Named {\n // Note that _extension will only be set for directive directly applied to an extendable element. Meaning that if a directive is\n // applied to a field that is part of an extension, the field will have its extension set, but not the underlying directive.\n private _extension?: Extension;\n\n constructor(readonly name: string, private _args: TArgs = Object.create(null)) {\n super();\n }\n\n schema(): Schema {\n return this.parent.schema();\n }\n\n get definition(): DirectiveDefinition | undefined {\n if (!this.isAttached()) {\n return undefined;\n }\n const doc = this.schema();\n return doc.directive(this.name);\n }\n\n arguments(includeDefaultValues: boolean = false) : Readonly {\n if (!includeDefaultValues) {\n return this._args;\n }\n const definition = this.definition;\n assert(definition, () => `Cannot include default values for arguments: cannot find directive definition for ${this.name}`);\n const updated = Object.create(null);\n for (const argDef of definition.arguments()) {\n const argValue = withDefaultValues(this._args[argDef.name], argDef);\n // Note that argValue could be '0' or something falsy here, so we must explicitly check === undefined\n if (argValue !== undefined) {\n updated[argDef.name] = argValue;\n }\n }\n return updated;\n }\n\n private onModification() {\n if (this.isAttachedToSchemaElement()) {\n Schema.prototype['onModification'].call(this.schema());\n }\n }\n\n private isAttachedToSchemaElement(): boolean {\n return this.isAttached();\n }\n\n setArguments(args: TArgs) {\n this._args = args;\n this.onModification();\n }\n\n argumentType(name: string): InputType | undefined {\n return this.definition?.argument(name)?.type;\n }\n\n matchArguments(expectedArgs: Record): boolean {\n const entries = Object.entries(this._args);\n if (entries.length !== Object.keys(expectedArgs).length) {\n return false;\n }\n for (const [key, val] of entries) {\n if (!(key in expectedArgs)) {\n return false;\n }\n const expectedVal = expectedArgs[key];\n if (!valueEquals(expectedVal, val)) {\n return false;\n }\n }\n return true;\n }\n\n ofExtension(): Extension | undefined {\n return this._extension;\n }\n\n removeOfExtension() {\n this._extension = undefined;\n }\n\n setOfExtension(extension: Extension | undefined) {\n this.checkUpdate();\n if (extension) {\n const parent = this.parent;\n assert(\n parent instanceof SchemaDefinition || parent instanceof BaseNamedType,\n 'Can only mark directive parts of extensions when directly apply to type or schema definition.'\n );\n assert(parent.hasExtension(extension), () => `Cannot mark directive ${this.name} as part of the provided extension: it is not an extension of parent ${parent}`);\n }\n this._extension = extension;\n this.onModification();\n }\n\n argumentsToAST(): ConstArgumentNode[] | undefined {\n const entries = Object.entries(this._args);\n if (entries.length === 0) {\n return undefined;\n }\n\n const definition = this.definition;\n assert(definition, () => `Cannot convert arguments of detached directive ${this}`);\n return entries.map(([n, v]) => {\n return {\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: n },\n value: valueToAST(v, definition.argument(n)!.type!)! as ConstValueNode,\n };\n });\n }\n\n /**\n * Removes this directive application from its parent type.\n *\n * @returns whether the directive was actually removed, that is whether it had a parent.\n */\n remove(): boolean {\n if (!this._parent) {\n return false;\n }\n this.onModification();\n const coreFeatures = this.schema().coreFeatures;\n if (coreFeatures && this.name === coreFeatures.coreItself.nameInSchema) {\n // We're removing a @core/@link directive application, so we remove it from the list of core features. And\n // if it is @core itself, we clean all features (to avoid having things too inconsistent).\n const url = FeatureUrl.parse(this._args[coreFeatures.coreDefinition.urlArgName()]!);\n if (url.identity === coreFeatures.coreItself.url.identity) {\n // Note that we unmark first because the loop after that will nuke our parent.\n Schema.prototype['unmarkAsCoreSchema'].call(this.schema());\n for (const d of this.schema().schemaDefinition.appliedDirectivesOf(coreFeatures.coreItself.nameInSchema)) {\n d.removeInternal();\n }\n // The loop above will already have call removeInternal on this instance, so we can return\n return true;\n } else {\n CoreFeatures.prototype['removeFeature'].call(coreFeatures, url.identity);\n }\n }\n return this.removeInternal();\n }\n\n private removeInternal(): boolean {\n if (!this._parent) {\n return false;\n }\n // Remove this directive application's reference to its definition.\n const definition = this.definition;\n if (definition && this.isAttachedToSchemaElement()) {\n DirectiveDefinition.prototype['removeReferencer'].call(definition, this as Directive>);\n }\n // Remove this directive application from its parent schema element.\n const parentDirectives = this._parent.appliedDirectives as Directive[];\n const removed = removeArrayElement(this, parentDirectives);\n assert(removed, () => `Directive ${this} lists ${this._parent} as parent, but that parent doesn't list it as applied directive`);\n this._parent = undefined;\n this._extension = undefined;\n return true;\n }\n\n toString(): string {\n const entries = Object.entries(this._args).filter(([_, v]) => v !== undefined);\n const args = entries.length == 0 ? '' : '(' + entries.map(([n, v]) => `${n}: ${valueToString(v, this.argumentType(n))}`).join(', ') + ')';\n return `@${this.name}${args}`;\n }\n}\n\n/**\n * Formats a Directive array as a string (with a leading space, if present).\n */\nexport function directivesToString(directives?: readonly Directive[])\n : string\n{\n return (!directives || directives.length == 0)\n ? ''\n : ' ' + directives.join(' ');\n}\n\n/**\n * Converts a Directive array into DirectiveNode array.\n */\nexport function directivesToDirectiveNodes(directives?: readonly Directive[])\n : ConstDirectiveNode[] | undefined\n{\n return (!directives || directives.length === 0)\n ? undefined\n : directives.map(directive => {\n return {\n kind: Kind.DIRECTIVE,\n name: {\n kind: Kind.NAME,\n value: directive.name,\n },\n arguments: directive.argumentsToAST()\n };\n });\n}\n\n/**\n * Checks if 2 directive applications should be considered equal.\n *\n * By default, 2 directive applications are considered equal if they are for the same directive and are passed the same values to\n * the same arguments. However, some special directive can be excluded so that no 2 applications are ever consider equal. By default,\n * this is the case of @defer, as never want to merge @defer applications so that each create its own \"deferred block\".\n */\nexport function sameDirectiveApplication(\n application1: Directive,\n application2: Directive,\n directivesNeverEqualToThemselves: string[] = [ 'defer' ],\n): boolean {\n // Note: we check name equality first because this method is most often called with directive that are simply not the same\n // name and this ensure we exit cheaply more often than not.\n return application1.name === application2.name\n && !directivesNeverEqualToThemselves.includes(application1.name)\n && !directivesNeverEqualToThemselves.includes(application2.name)\n && argumentsEquals(application1.arguments(), application2.arguments());\n}\n\n/**\n * Checks whether the 2 provided \"set\" of directive applications are the same (same applications, regardless or order).\n */\nexport function sameDirectiveApplications(\n applications1: readonly Directive[],\n applications2: readonly Directive[],\n directivesNeverEqualToThemselves: string[] = [ 'defer' ],\n): boolean {\n if (applications1.length !== applications2.length) {\n return false;\n }\n\n for (const directive1 of applications1) {\n if (!applications2.some(directive2 => sameDirectiveApplication(directive1, directive2, directivesNeverEqualToThemselves))) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Checks whether a given array of directive applications (`maybeSubset`) is a sub-set of another array of directive applications (`applications`).\n *\n * Sub-set here means that all of the applications in `maybeSubset` appears in `applications`.\n */\nexport function isDirectiveApplicationsSubset(applications: readonly Directive[], maybeSubset: readonly Directive[]): boolean {\n if (maybeSubset.length > applications.length) {\n return false;\n }\n\n for (const directive1 of maybeSubset) {\n if (!applications.some(directive2 => sameDirectiveApplication(directive1, directive2))) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Computes the difference between the set of directives applications `baseApplications` and the `toRemove` one.\n */\nexport function directiveApplicationsSubstraction(baseApplications: readonly Directive[], toRemove: readonly Directive[]): Directive[] {\n return baseApplications.filter((application) => !toRemove.some((other) => sameDirectiveApplication(application, other)));\n}\n\nexport class Variable {\n constructor(readonly name: string) {}\n\n toVariableNode(): VariableNode {\n return {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: this.name },\n }\n }\n\n toString(): string {\n return '$' + this.name;\n }\n}\n\nexport type Variables = readonly Variable[];\n\nexport class VariableCollector {\n private readonly _variables = new Map();\n\n add(variable: Variable) {\n this._variables.set(variable.name, variable);\n }\n\n addAll(variables: Variables) {\n for (const variable of variables) {\n this.add(variable);\n }\n }\n\n collectInArguments(args: {[key: string]: any}) {\n for (const value of Object.values(args)) {\n collectVariablesInValue(value, this);\n }\n }\n\n variables() {\n return mapValues(this._variables);\n }\n\n toString(): string {\n return this.variables().toString();\n }\n}\n\nexport function isVariable(v: any): v is Variable {\n return v instanceof Variable;\n}\n\nexport class VariableDefinition extends DirectiveTargetElement {\n constructor(\n schema: Schema,\n readonly variable: Variable,\n readonly type: InputType,\n readonly defaultValue?: any,\n ) {\n super(schema);\n }\n\n toVariableDefinitionNode(): VariableDefinitionNode {\n const ast = valueToAST(this.defaultValue, this.type);\n\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.variable.toVariableNode(),\n type: typeToAST(this.type),\n defaultValue: (ast !== undefined) ? valueNodeToConstValueNode(ast) : undefined,\n directives: this.appliedDirectivesToDirectiveNodes(),\n }\n }\n\n toString() {\n let base = this.variable + ': ' + this.type;\n if (this.defaultValue !== undefined) {\n base = base + ' = ' + valueToString(this.defaultValue, this.type);\n }\n return base + this.appliedDirectivesToString();\n }\n}\n\nexport class VariableDefinitions {\n private readonly _definitions: MapWithCachedArrays = new MapWithCachedArrays();\n\n add(definition: VariableDefinition): boolean {\n if (this._definitions.has(definition.variable.name)) {\n return false;\n }\n this._definitions.set(definition.variable.name, definition);\n return true;\n }\n\n addAll(definitions: VariableDefinitions) {\n for (const definition of definitions._definitions.values()) {\n this.add(definition);\n }\n }\n\n definition(variable: Variable | string): VariableDefinition | undefined {\n const varName = typeof variable === 'string' ? variable : variable.name;\n return this._definitions.get(varName);\n }\n\n isEmpty(): boolean {\n return this._definitions.size === 0;\n }\n\n definitions(): readonly VariableDefinition[] {\n return this._definitions.values();\n }\n\n filter(variables: Variables): VariableDefinitions {\n if (variables.length === 0) {\n return new VariableDefinitions();\n }\n\n const newDefs = new VariableDefinitions();\n for (const variable of variables) {\n const def = this.definition(variable);\n if (!def) {\n throw new Error(`Cannot find variable ${variable} in definitions ${this}`);\n }\n newDefs.add(def);\n }\n return newDefs;\n }\n\n toVariableDefinitionNodes(): readonly VariableDefinitionNode[] | undefined {\n if (this._definitions.size === 0) {\n return undefined;\n }\n\n return this.definitions().map(def => def.toVariableDefinitionNode());\n }\n\n toString() {\n return '(' + this.definitions().join(', ') + ')';\n }\n}\n\nexport function variableDefinitionsFromAST(schema: Schema, definitionNodes: readonly VariableDefinitionNode[]): VariableDefinitions {\n const definitions = new VariableDefinitions();\n for (const definitionNode of definitionNodes) {\n if (!definitions.add(variableDefinitionFromAST(schema, definitionNode))) {\n const name = definitionNode.variable.name.value;\n throw ERRORS.INVALID_GRAPHQL.err(`Duplicate definition for variable ${name}`, { nodes: definitionNodes.filter(n => n.variable.name.value === name) });\n }\n }\n return definitions;\n}\n\nexport function variableDefinitionFromAST(schema: Schema, definitionNode: VariableDefinitionNode): VariableDefinition {\n const variable = new Variable(definitionNode.variable.name.value);\n const type = typeFromAST(schema, definitionNode.type);\n if (!isInputType(type)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid type \"${type}\" for variable $${variable}: not an input type`, { nodes: definitionNode.type });\n }\n const def = new VariableDefinition(\n schema,\n variable,\n type,\n definitionNode.defaultValue ? valueFromAST(definitionNode.defaultValue, type) : undefined\n );\n return def;\n}\n\nfunction addReferenceToType(referencer: SchemaElement, type: Type) {\n switch (type.kind) {\n case 'ListType':\n addReferenceToType(referencer, type.baseType());\n break;\n case 'NonNullType':\n addReferenceToType(referencer, type.baseType());\n break;\n default:\n BaseNamedType.prototype['addReferencer'].call(type, referencer);\n break;\n }\n}\n\nfunction removeReferenceToType(referencer: SchemaElement, type: Type) {\n switch (type.kind) {\n case 'ListType':\n removeReferenceToType(referencer, type.baseType());\n break;\n case 'NonNullType':\n removeReferenceToType(referencer, type.baseType());\n break;\n default:\n BaseNamedType.prototype['removeReferencer'].call(type, referencer);\n break;\n }\n}\n\nexport function newNamedType(kind: NamedTypeKind, name: string): NamedType {\n switch (kind) {\n case 'ScalarType':\n return new ScalarType(name);\n case 'ObjectType':\n return new ObjectType(name);\n case 'InterfaceType':\n return new InterfaceType(name);\n case 'UnionType':\n return new UnionType(name);\n case 'EnumType':\n return new EnumType(name);\n case 'InputObjectType':\n return new InputObjectType(name);\n default:\n assert(false, `Unhandled kind ${kind} for type ${name}`);\n }\n}\n\nfunction *typesToCopy(source: Schema, dest: Schema): Generator {\n for (const type of source.builtInTypes()) {\n if (!type.isIntrospectionType() && !dest.type(type.name)?.isBuiltIn) {\n yield type;\n }\n }\n yield* source.types();\n}\n\nfunction *directivesToCopy(source: Schema, dest: Schema): Generator {\n for (const directive of source.builtInDirectives()) {\n if (!dest.directive(directive.name)?.isBuiltIn) {\n yield directive;\n }\n }\n yield* source.directives();\n}\n\n/**\n * Creates, in the provided schema, a directive definition equivalent to the provided one.\n *\n * Note that this method assumes that:\n * - the provided schema does not already have a directive with the name of the definition to copy.\n * - if the copied definition has arguments, then the provided schema has existing types with\n * names matching any type used in copied definition.\n */\nexport function copyDirectiveDefinitionToSchema({\n definition,\n schema,\n copyDirectiveApplicationsInArguments = true,\n locationFilter,\n}: {\n definition: DirectiveDefinition,\n schema: Schema,\n copyDirectiveApplicationsInArguments: boolean,\n locationFilter?: (loc: DirectiveLocation) => boolean,\n}\n) {\n copyDirectiveDefinitionInner(\n definition,\n schema.addDirectiveDefinition(definition.name),\n copyDirectiveApplicationsInArguments,\n locationFilter,\n );\n}\n\nfunction copy(source: Schema, dest: Schema, cloneJoinDirectives: boolean) {\n // We shallow copy types first so any future reference to any of them can be dereferenced.\n for (const type of typesToCopy(source, dest)) {\n dest.addType(newNamedType(type.kind, type.name));\n }\n // Directives can use other directives in their arguments. So, like types, we first shallow copy\n // directives so future references to any of them can be dereferenced. We'll copy the actual\n // definition later after all directives are defined.\n for (const directive of directivesToCopy(source, dest)) {\n dest.addDirectiveDefinition(directive.name);\n }\n for (const directive of directivesToCopy(source, dest)) {\n copyDirectiveDefinitionInner(directive, dest.directive(directive.name)!);\n }\n\n copySchemaDefinitionInner(source.schemaDefinition, dest.schemaDefinition);\n for (const type of typesToCopy(source, dest)) {\n copyNamedTypeInner(type, dest.type(type.name)!, cloneJoinDirectives);\n }\n}\n\nfunction copyExtensions(source: T, dest: T): Map, Extension> {\n const extensionMap = new Map, Extension>();\n for (const sourceExtension of source.extensions()) {\n const destExtension = new Extension();\n dest.addExtension(destExtension as any);\n extensionMap.set(sourceExtension as any, destExtension);\n }\n return extensionMap;\n}\n\nfunction copyOfExtension(\n extensionsMap: Map, Extension>,\n source: { ofExtension(): Extension | undefined },\n dest: { setOfExtension(ext: Extension | undefined):any }\n) {\n const toCopy = source.ofExtension();\n if (toCopy) {\n dest.setOfExtension(extensionsMap.get(toCopy));\n }\n}\n\nfunction copySchemaDefinitionInner(source: SchemaDefinition, dest: SchemaDefinition) {\n dest.preserveEmptyDefinition = source.preserveEmptyDefinition;\n const extensionsMap = copyExtensions(source, dest);\n for (const rootType of source.roots()) {\n copyOfExtension(extensionsMap, rootType, dest.setRoot(rootType.rootKind, rootType.type.name));\n }\n // Same as copyAppliedDirectives, but as the directive applies to the schema definition, we need to remember if the application\n // is for the extension or not.\n for (const directive of source.appliedDirectives) {\n copyOfExtension(extensionsMap, directive, copyAppliedDirective(directive, dest));\n }\n dest.description = source.description;\n dest.sourceAST = source.sourceAST;\n}\n\nfunction copyNamedTypeInner(source: NamedType, dest: NamedType, cloneJoinDirectives: boolean) {\n dest.preserveEmptyDefinition = source.preserveEmptyDefinition;\n const extensionsMap = copyExtensions(source, dest);\n // Same as copyAppliedDirectives, but as the directive applies to the type, we need to remember if the application\n // is for the extension or not.\n for (const directive of source.appliedDirectives) {\n copyOfExtension(extensionsMap, directive, copyAppliedDirective(directive, dest));\n }\n dest.description = source.description;\n dest.sourceAST = source.sourceAST;\n switch (source.kind) {\n case 'ObjectType':\n case 'InterfaceType':\n const destFieldBasedType = dest as FieldBasedType;\n for (const sourceField of source.fields()) {\n const destField = destFieldBasedType.addField(new FieldDefinition(sourceField.name));\n copyOfExtension(extensionsMap, sourceField, destField);\n copyFieldDefinitionInner(sourceField, destField, cloneJoinDirectives);\n }\n for (const sourceImpl of source.interfaceImplementations()) {\n const destImpl = destFieldBasedType.addImplementedInterface(sourceImpl.interface.name);\n copyOfExtension(extensionsMap, sourceImpl, destImpl);\n }\n break;\n case 'UnionType':\n const destUnionType = dest as UnionType;\n for (const sourceType of source.members()) {\n const destType = destUnionType.addType(sourceType.type.name);\n copyOfExtension(extensionsMap, sourceType, destType);\n }\n break;\n case 'EnumType':\n const destEnumType = dest as EnumType;\n for (const sourceValue of source.values) {\n const destValue = destEnumType.addValue(sourceValue.name);\n destValue.description = sourceValue.description;\n copyOfExtension(extensionsMap, sourceValue, destValue);\n copyAppliedDirectives(sourceValue, destValue, cloneJoinDirectives);\n }\n break\n case 'InputObjectType':\n const destInputType = dest as InputObjectType;\n for (const sourceField of source.fields()) {\n const destField = destInputType.addField(new InputFieldDefinition(sourceField.name));\n copyOfExtension(extensionsMap, sourceField, destField);\n copyInputFieldDefinitionInner(sourceField, destField, cloneJoinDirectives);\n }\n }\n}\n\nfunction copyAppliedDirectives(source: SchemaElement, dest: SchemaElement, cloneJoinDirectives: boolean) {\n source.appliedDirectives.filter(d => cloneJoinDirectives || !d.name.startsWith('join__')).forEach((d) => copyAppliedDirective(d, dest));\n}\n\nfunction copyAppliedDirective(source: Directive, dest: SchemaElement): Directive {\n const res = dest.applyDirective(source.name, { ...source.arguments() });\n res.sourceAST = source.sourceAST\n return res;\n}\n\nfunction copyFieldDefinitionInner

(source: FieldDefinition

, dest: FieldDefinition

, cloneJoinDirectives: boolean) {\n const type = copyWrapperTypeOrTypeRef(source.type, dest.schema()) as OutputType;\n dest.type = type;\n for (const arg of source.arguments()) {\n const argType = copyWrapperTypeOrTypeRef(arg.type, dest.schema());\n copyArgumentDefinitionInner({\n source: arg, \n dest: dest.addArgument(arg.name, argType as InputType),\n cloneJoinDirectives,\n });\n }\n copyAppliedDirectives(source, dest, cloneJoinDirectives);\n dest.description = source.description;\n dest.sourceAST = source.sourceAST;\n}\n\nfunction copyInputFieldDefinitionInner(source: InputFieldDefinition, dest: InputFieldDefinition, cloneJoinDirectives: boolean) {\n const type = copyWrapperTypeOrTypeRef(source.type, dest.schema()) as InputType;\n dest.type = type;\n dest.defaultValue = source.defaultValue;\n copyAppliedDirectives(source, dest, cloneJoinDirectives);\n dest.description = source.description;\n dest.sourceAST = source.sourceAST;\n}\n\nfunction copyWrapperTypeOrTypeRef(source: Type | undefined, destParent: Schema): Type | undefined {\n if (!source) {\n return undefined;\n }\n switch (source.kind) {\n case 'ListType':\n return new ListType(copyWrapperTypeOrTypeRef(source.ofType, destParent)!);\n case 'NonNullType':\n return new NonNullType(copyWrapperTypeOrTypeRef(source.ofType, destParent)! as NullableType);\n default:\n return destParent.type(source.name)!;\n }\n}\n\nfunction copyArgumentDefinitionInner

| DirectiveDefinition>({\n source,\n dest,\n copyDirectiveApplications = true,\n cloneJoinDirectives,\n}: {\n source: ArgumentDefinition

,\n dest: ArgumentDefinition

,\n copyDirectiveApplications?: boolean,\n cloneJoinDirectives: boolean,\n}) {\n const type = copyWrapperTypeOrTypeRef(source.type, dest.schema()) as InputType;\n dest.type = type;\n dest.defaultValue = source.defaultValue;\n if (copyDirectiveApplications) {\n copyAppliedDirectives(source, dest, cloneJoinDirectives);\n }\n dest.description = source.description;\n dest.sourceAST = source.sourceAST;\n}\n\nfunction copyDirectiveDefinitionInner(\n source: DirectiveDefinition,\n dest: DirectiveDefinition,\n copyDirectiveApplicationsInArguments: boolean = true,\n locationFilter?: (loc: DirectiveLocation) => boolean,\n) {\n let locations = source.locations;\n if (locationFilter) {\n locations = locations.filter((loc) => locationFilter(loc));\n }\n if (locations.length === 0) {\n return;\n }\n\n for (const arg of source.arguments()) {\n const type = copyWrapperTypeOrTypeRef(arg.type, dest.schema());\n copyArgumentDefinitionInner({\n source: arg,\n dest: dest.addArgument(arg.name, type as InputType),\n copyDirectiveApplications: copyDirectiveApplicationsInArguments,\n cloneJoinDirectives: true,\n });\n }\n dest.repeatable = source.repeatable;\n dest.addLocations(...locations);\n dest.sourceAST = source.sourceAST;\n dest.description = source.description;\n}\n\nexport function isFieldDefinition(elem: SchemaElement): elem is FieldDefinition {\n return elem instanceof FieldDefinition;\n}\n", "import {\n DefinitionNode,\n DirectiveDefinitionNode,\n DirectiveLocation,\n DirectiveNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLError,\n InputValueDefinitionNode,\n parse,\n SchemaDefinitionNode,\n Source,\n TypeNode,\n ValueNode,\n NamedTypeNode,\n ArgumentNode,\n StringValueNode,\n ASTNode,\n SchemaExtensionNode,\n parseType,\n Kind,\n TypeDefinitionNode,\n TypeExtensionNode,\n EnumTypeExtensionNode,\n EnumTypeDefinitionNode,\n} from \"graphql\";\nimport { Maybe } from \"graphql/jsutils/Maybe\";\nimport { valueFromASTUntyped } from \"./values\";\nimport {\n SchemaBlueprint,\n Schema,\n newNamedType,\n NamedTypeKind,\n NamedType,\n SchemaDefinition,\n SchemaElement,\n ObjectType,\n InterfaceType,\n FieldDefinition,\n Type,\n ListType,\n OutputType,\n isOutputType,\n isInputType,\n InputType,\n NonNullType,\n ArgumentDefinition,\n InputFieldDefinition,\n DirectiveDefinition,\n UnionType,\n InputObjectType,\n EnumType,\n Extension,\n ErrGraphQLValidationFailed,\n NamedSchemaElement,\n} from \"./definitions\";\nimport { ERRORS, errorCauses, withModifiedErrorNodes } from \"./error\";\nimport { introspectionTypeNames } from \"./introspection\";\n\nfunction buildValue(value?: ValueNode): any {\n return value ? valueFromASTUntyped(value) : undefined;\n}\n\nexport type BuildSchemaOptions = {\n blueprint?: SchemaBlueprint,\n validate?: boolean,\n}\n\nexport function buildSchema(source: string | Source, options?: BuildSchemaOptions): Schema {\n return buildSchemaFromAST(parse(source), options);\n}\n\nexport function buildSchemaFromAST(\n documentNode: DocumentNode,\n options?: BuildSchemaOptions,\n): Schema {\n const errors: GraphQLError[] = [];\n const schema = new Schema(options?.blueprint);\n\n // Building schema has to proceed in a particular order due to 2 main constraints:\n // 1. some elements can refer other elements even if the definition of those referenced elements appear later in the AST.\n // And in fact, definitions can be cyclic (a type having field whose type is themselves for instance). Which we\n // deal with by first adding empty definition for every type and directive name, because handling any of their content.\n // 2. we accept \"incomplete\" schema due to `@link` (incomplete in the sense of the graphQL spec). Indeed, `@link` is all\n // about importing definitions, but that mean that some element may be _reference_ in the AST without their _definition_\n // being in the AST. So we need to ensure we \"import\" those definitions before we try to \"build\" references to them.\n\n\n // We do a first pass to add all empty types and directives definition. This ensure any reference on one of\n // those can be resolved in the 2nd pass, regardless of the order of the definitions in the AST.\n const {\n directiveDefinitions,\n typeDefinitions,\n typeExtensions,\n schemaDefinitions,\n schemaExtensions,\n } = buildNamedTypeAndDirectivesShallow(documentNode, schema, errors);\n\n // We then build the content of enum types, but excluding their directive _applications. The reason we do this\n // is that:\n // 1. we can (enum values are self-contained and cannot reference anything that may need to be imported first; this\n // is also why we skip directive applications at that point, as those _may_ reference something that hasn't been imported yet)\n // 2. this allows the code to handle better the case where the `link__Purpose` enum is provided in the AST despite the `@link`\n // _definition_ not being provided. And the reason that is true is that as we later _add_ the `@link` definition, we\n // will need to check if `link_Purpose` needs to be added or not, but when it is already present, we check it's definition\n // is the expected, but that check will unexpected fail if we haven't finished \"building\" said type definition.\n // Do note that we can only do that \"early building\" for scalar and enum types (and it happens that there is nothing to do\n // for scalar because they are the only types whose \"content\" don't reference other types (and again, for definitions\n // referencing other types, we need to import `@link`-ed definition first). Thankfully, the `@link` directive definition\n // only rely on a scalar (`Import`) and an enum (`Purpose`) type (if that ever changes, we may have to something more here\n // to be resilient to weirdly incomplete schema).\n for (const typeNode of typeDefinitions) {\n if (typeNode.kind === Kind.ENUM_TYPE_DEFINITION) {\n buildEnumTypeValuesWithoutDirectiveApplications(typeNode, schema.type(typeNode.name.value) as EnumType);\n }\n }\n for (const typeExtensionNode of typeExtensions) {\n if (typeExtensionNode.kind === Kind.ENUM_TYPE_EXTENSION) {\n const toExtend = schema.type(typeExtensionNode.name.value)!;\n const extension = toExtend.newExtension();\n extension.sourceAST = typeExtensionNode;\n buildEnumTypeValuesWithoutDirectiveApplications(typeExtensionNode, schema.type(typeExtensionNode.name.value) as EnumType, extension);\n }\n }\n\n // We then deal with directive definition first. This is mainly for the sake of core schemas: the core schema\n // handling in `Schema` detects that the schema is a core one when it see the application of `@core(feature: \".../core/...\")`\n // to the schema element. But that detection necessitates that the corresponding directive definition has been fully\n // populated (and at this point, we don't really know the name of the `@core` directive since it can be renamed, so\n // we just handle all directives).\n // Note that one subtlety is that we skip, for now, directive _applications_ within those directive definitions (we can\n // have such applications on the arguments). The reason is again core schema related: we haven't yet properly detected\n // if the schema if a core-schema yet, and for federation subgraphs, we haven't yet \"imported\" federation definitions.\n // So if one of those directive application was relying on that \"importing\", it would fail at this point. Which is why\n // directive application is delayed to later in that method.\n for (const directiveDefinitionNode of directiveDefinitions) {\n buildDirectiveDefinitionInnerWithoutDirectiveApplications(directiveDefinitionNode, schema.directive(directiveDefinitionNode.name.value)!, errors);\n }\n for (const schemaDefinition of schemaDefinitions) {\n buildSchemaDefinitionInner(schemaDefinition, schema.schemaDefinition, errors);\n }\n for (const schemaExtension of schemaExtensions) {\n buildSchemaDefinitionInner(schemaExtension, schema.schemaDefinition, errors, schema.schemaDefinition.newExtension());\n }\n\n // The following is a no-op for \"standard\" schema, but for federation subgraphs, this is where we handle the auto-addition\n // of imported federation directive definitions. That is why we have avoid looking at directive applications within\n // directive definition earlier: if one of those application was of an imported federation directive, the definition\n // wouldn't be presence before this point and we'd have triggered an error. After this, we can handle any directive\n // application safely.\n errors.push(...schema.blueprint.onDirectiveDefinitionAndSchemaParsed(schema));\n\n for (const directiveDefinitionNode of directiveDefinitions) {\n buildDirectiveApplicationsInDirectiveDefinition(directiveDefinitionNode, schema.directive(directiveDefinitionNode.name.value)!, errors);\n }\n\n for (const typeNode of typeDefinitions) {\n buildNamedTypeInner(typeNode, schema.type(typeNode.name.value)!, schema.blueprint, errors);\n }\n for (const typeExtensionNode of typeExtensions) {\n const toExtend = schema.type(typeExtensionNode.name.value)!;\n const extension = toExtend.newExtension();\n extension.sourceAST = typeExtensionNode;\n buildNamedTypeInner(typeExtensionNode, toExtend, schema.blueprint, errors, extension);\n }\n\n // Note: we could try calling `schema.validate()` regardless of errors building the schema and merge the resulting\n // errors, and there is some subset of cases where this be a tad more convenient (as the user would get all the errors\n // at once), but in most cases a bunch of the errors thrown by `schema.validate()` would actually be consequences of\n // the schema not be properly built in the first place and those errors would be confusing to the user. And avoiding\n // confusing users probably trumps a rare minor convenience.\n if (errors.length > 0) {\n throw ErrGraphQLValidationFailed(errors);\n }\n\n if (options?.validate ?? true) {\n schema.validate();\n }\n\n return schema;\n}\n\nfunction buildNamedTypeAndDirectivesShallow(documentNode: DocumentNode, schema: Schema, errors: GraphQLError[]): {\n directiveDefinitions: DirectiveDefinitionNode[],\n typeDefinitions: TypeDefinitionNode[],\n typeExtensions: TypeExtensionNode[],\n schemaDefinitions: SchemaDefinitionNode[],\n schemaExtensions: SchemaExtensionNode[],\n} {\n const directiveDefinitions = [];\n const typeDefinitions = [];\n const typeExtensions = [];\n const schemaDefinitions = [];\n const schemaExtensions = [];\n for (const definitionNode of documentNode.definitions) {\n switch (definitionNode.kind) {\n case 'OperationDefinition':\n case 'FragmentDefinition':\n errors.push(ERRORS.INVALID_GRAPHQL.err(\"Invalid executable definition found while building schema\", { nodes: definitionNode }));\n continue;\n case 'SchemaDefinition':\n schemaDefinitions.push(definitionNode);\n schema.schemaDefinition.preserveEmptyDefinition = true;\n break;\n case 'SchemaExtension':\n schemaExtensions.push(definitionNode);\n break;\n case 'ScalarTypeDefinition':\n case 'ObjectTypeDefinition':\n case 'InterfaceTypeDefinition':\n case 'UnionTypeDefinition':\n case 'EnumTypeDefinition':\n case 'InputObjectTypeDefinition':\n // Like graphql-js, we just silently ignore definitions for introspection types\n if (introspectionTypeNames.includes(definitionNode.name.value)) {\n continue;\n }\n typeDefinitions.push(definitionNode);\n let type = schema.type(definitionNode.name.value);\n // Note that the type may already exists due to an extension having been processed first, but we know we\n // have seen 2 definitions (which is invalid) if the definition has `preserverEmptyDefnition` already set\n // since it's only set for definitions, not extensions.\n // Also note that we allow to redefine built-ins.\n if (!type || type.isBuiltIn) {\n type = schema.addType(newNamedType(withoutTrailingDefinition(definitionNode.kind), definitionNode.name.value));\n } else if (type.preserveEmptyDefinition) {\n // Note: we reuse the same error message than graphQL-js would output\n throw ERRORS.INVALID_GRAPHQL.err(`There can be only one type named \"${definitionNode.name.value}\"`);\n }\n // It's possible for the type definition to be empty, because it is valid graphQL to have:\n // type Foo\n //\n // extend type Foo {\n // bar: Int\n // }\n // and we need a way to distinguish between the case above, and the case where only an extension is provided.\n // `preserveEmptyDefinition` serves that purpose.\n // Note that we do this even if the type was already existing because an extension could have been processed\n // first and have created the definition, but we still want to remember that the definition _does_ exists.\n type.preserveEmptyDefinition = true;\n break;\n case 'ScalarTypeExtension':\n case 'ObjectTypeExtension':\n case 'InterfaceTypeExtension':\n case 'UnionTypeExtension':\n case 'EnumTypeExtension':\n case 'InputObjectTypeExtension':\n // Like graphql-js, we just silently ignore definitions for introspection types\n if (introspectionTypeNames.includes(definitionNode.name.value)) {\n continue;\n }\n typeExtensions.push(definitionNode);\n const existing = schema.type(definitionNode.name.value);\n // In theory, graphQL does not let you have an extension without a corresponding definition. However,\n // 1) this is validated later, so there is no real reason to do it here and\n // 2) we actually accept it for federation subgraph (due to federation 1 mostly as it's not strictly needed\n // for federation 22, but it is still supported to ease migration there too).\n // So if the type exists, we simply create it. However, we don't set `preserveEmptyDefinition` since it\n // is _not_ a definition.\n if (!existing) {\n schema.addType(newNamedType(withoutTrailingDefinition(definitionNode.kind), definitionNode.name.value));\n } else if (existing.isBuiltIn) {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot extend built-in type \"${definitionNode.name.value}\"`);\n }\n break;\n case 'DirectiveDefinition':\n directiveDefinitions.push(definitionNode);\n schema.addDirectiveDefinition(definitionNode.name.value);\n break;\n }\n }\n return {\n directiveDefinitions,\n typeDefinitions,\n typeExtensions,\n schemaDefinitions,\n schemaExtensions,\n }\n}\n\ntype NodeWithDirectives = {directives?: ReadonlyArray};\ntype NodeWithDescription = {description?: Maybe};\ntype NodeWithArguments = {arguments?: ReadonlyArray};\n\nfunction withoutTrailingDefinition(str: string): NamedTypeKind {\n const endString = str.endsWith('Definition') ? 'Definition' : 'Extension';\n return str.slice(0, str.length - endString.length) as NamedTypeKind;\n}\n\nfunction getReferencedType(node: NamedTypeNode, schema: Schema): NamedType {\n const type = schema.type(node.name.value);\n if (!type) {\n throw ERRORS.INVALID_GRAPHQL.err(`Unknown type ${node.name.value}`, { nodes: node });\n }\n return type;\n}\n\nfunction withNodeAttachedToError(operation: () => void, node: ASTNode, errors: GraphQLError[]) {\n try {\n operation();\n } catch (e) {\n const causes = errorCauses(e);\n if (causes) {\n for (const cause of causes) {\n const allNodes: ASTNode | ASTNode[] = cause.nodes ? [node, ...cause.nodes] : node;\n errors.push(withModifiedErrorNodes(cause, allNodes));\n }\n } else {\n throw e;\n }\n }\n}\n\nfunction buildSchemaDefinitionInner(\n schemaNode: SchemaDefinitionNode | SchemaExtensionNode,\n schemaDefinition: SchemaDefinition,\n errors: GraphQLError[],\n extension?: Extension\n) {\n for (const opTypeNode of schemaNode.operationTypes ?? []) {\n withNodeAttachedToError(\n () => schemaDefinition.setRoot(opTypeNode.operation, opTypeNode.type.name.value).setOfExtension(extension),\n opTypeNode,\n errors,\n );\n }\n schemaDefinition.sourceAST = schemaNode;\n if ('description' in schemaNode) {\n schemaDefinition.description = schemaNode.description?.value;\n }\n buildAppliedDirectives(schemaNode, schemaDefinition, errors, extension);\n}\n\nfunction buildAppliedDirectives(\n elementNode: NodeWithDirectives,\n element: SchemaElement,\n errors: GraphQLError[],\n extension?: Extension\n) {\n for (const directive of elementNode.directives ?? []) {\n withNodeAttachedToError(\n () => {\n /**\n * If we are at the schemaDefinition level of a federation schema, it's possible that some directives\n * will not be added until after the federation calls completeSchema. In that case, we want to wait\n * until after completeSchema is called before we try to apply those directives.\n */\n if (element !== element.schema().schemaDefinition || directive.name.value === 'link' || !element.schema().blueprint.applyDirectivesAfterParsing()) {\n const d = element.applyDirective(directive.name.value, buildArgs(directive));\n d.setOfExtension(extension);\n d.sourceAST = directive;\n } else {\n element.addUnappliedDirective({\n extension,\n directive,\n args: buildArgs(directive),\n nameOrDef: directive.name.value,\n });\n }\n },\n directive,\n errors,\n );\n }\n}\n\nfunction buildArgs(argumentsNode: NodeWithArguments): Record {\n const args = Object.create(null);\n for (const argNode of argumentsNode.arguments ?? []) {\n args[argNode.name.value] = buildValue(argNode.value);\n }\n return args;\n}\n\nfunction buildNamedTypeInner(\n definitionNode: DefinitionNode & NodeWithDirectives & NodeWithDescription,\n type: NamedType,\n blueprint: SchemaBlueprint,\n errors: GraphQLError[],\n extension?: Extension,\n) {\n switch (definitionNode.kind) {\n case 'EnumTypeDefinition':\n case 'EnumTypeExtension':\n // We built enum values earlier in the `buildEnumTypeValuesWithoutDirectiveApplications`, but as the name\n // of that method implies, we just need to finish building directive applications.\n const enumType = type as EnumType;\n for (const enumVal of definitionNode.values ?? []) {\n buildAppliedDirectives(enumVal, enumType.value(enumVal.name.value)!, errors);\n }\n break;\n case 'ObjectTypeDefinition':\n case 'ObjectTypeExtension':\n case 'InterfaceTypeDefinition':\n case 'InterfaceTypeExtension':\n const fieldBasedType = type as ObjectType | InterfaceType;\n for (const fieldNode of definitionNode.fields ?? []) {\n if (blueprint.ignoreParsedField(type, fieldNode.name.value)) {\n continue;\n }\n const field = fieldBasedType.addField(fieldNode.name.value);\n field.setOfExtension(extension);\n buildFieldDefinitionInner(fieldNode, field, errors);\n }\n for (const itfNode of definitionNode.interfaces ?? []) {\n withNodeAttachedToError(\n () => {\n const itfName = itfNode.name.value;\n if (fieldBasedType.implementsInterface(itfName)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Type \"${type}\" can only implement \"${itfName}\" once.`);\n }\n fieldBasedType.addImplementedInterface(itfName).setOfExtension(extension);\n },\n itfNode,\n errors,\n );\n }\n break;\n case 'UnionTypeDefinition':\n case 'UnionTypeExtension':\n const unionType = type as UnionType;\n for (const namedType of definitionNode.types ?? []) {\n withNodeAttachedToError(\n () => {\n const name = namedType.name.value;\n if (unionType.hasTypeMember(name)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Union type \"${unionType}\" can only include type \"${name}\" once.`);\n }\n unionType.addType(name).setOfExtension(extension);\n },\n namedType,\n errors,\n );\n }\n break;\n case 'InputObjectTypeDefinition':\n case 'InputObjectTypeExtension':\n const inputObjectType = type as InputObjectType;\n for (const fieldNode of definitionNode.fields ?? []) {\n const field = inputObjectType.addField(fieldNode.name.value);\n field.setOfExtension(extension);\n buildInputFieldDefinitionInner(fieldNode, field, errors);\n }\n break;\n }\n buildAppliedDirectives(definitionNode, type, errors, extension);\n buildDescriptionAndSourceAST(definitionNode, type);\n}\n\nfunction buildEnumTypeValuesWithoutDirectiveApplications(\n definitionNode: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n type: EnumType,\n extension?: Extension,\n) {\n const enumType = type as EnumType;\n for (const enumVal of definitionNode.values ?? []) {\n const v = enumType.addValue(enumVal.name.value);\n if (enumVal.description) {\n v.description = enumVal.description.value;\n }\n v.setOfExtension(extension);\n }\n buildDescriptionAndSourceAST(definitionNode, type);\n}\n\nfunction buildDescriptionAndSourceAST>(\n definitionNode: DefinitionNode & NodeWithDescription,\n dest: T,\n) {\n if (definitionNode.description) {\n dest.description = definitionNode.description.value;\n }\n dest.sourceAST = definitionNode;\n}\n\nfunction buildFieldDefinitionInner(\n fieldNode: FieldDefinitionNode,\n field: FieldDefinition,\n errors: GraphQLError[],\n) {\n const type = buildTypeReferenceFromAST(fieldNode.type, field.schema());\n field.type = validateOutputType(type, field.coordinate, fieldNode, errors);\n for (const inputValueDef of fieldNode.arguments ?? []) {\n buildArgumentDefinitionInner(inputValueDef, field.addArgument(inputValueDef.name.value), errors, true);\n }\n buildAppliedDirectives(fieldNode, field, errors);\n field.description = fieldNode.description?.value;\n field.sourceAST = fieldNode;\n}\n\nfunction validateOutputType(type: Type, what: string, node: ASTNode, errors: GraphQLError[]): OutputType | undefined {\n if (isOutputType(type)) {\n return type;\n } else {\n errors.push(ERRORS.INVALID_GRAPHQL.err(`The type of \"${what}\" must be Output Type but got \"${type}\", a ${type.kind}.`, { nodes: node }));\n return undefined;\n }\n}\n\nfunction validateInputType(type: Type, what: string, node: ASTNode, errors: GraphQLError[]): InputType | undefined {\n if (isInputType(type)) {\n return type;\n } else {\n errors.push(ERRORS.INVALID_GRAPHQL.err(`The type of \"${what}\" must be Input Type but got \"${type}\", a ${type.kind}.`, { nodes: node }));\n return undefined;\n }\n}\n\nexport function builtTypeReference(encodedType: string, schema: Schema): Type {\n return buildTypeReferenceFromAST(parseType(encodedType), schema);\n}\n\nfunction buildTypeReferenceFromAST(typeNode: TypeNode, schema: Schema): Type {\n switch (typeNode.kind) {\n case Kind.LIST_TYPE:\n return new ListType(buildTypeReferenceFromAST(typeNode.type, schema));\n case Kind.NON_NULL_TYPE:\n const wrapped = buildTypeReferenceFromAST(typeNode.type, schema);\n if (wrapped.kind == Kind.NON_NULL_TYPE) {\n throw ERRORS.INVALID_GRAPHQL.err(`Cannot apply the non-null operator (!) twice to the same type`, { nodes: typeNode });\n }\n return new NonNullType(wrapped);\n default:\n return getReferencedType(typeNode, schema);\n }\n}\n\nfunction buildArgumentDefinitionInner(\n inputNode: InputValueDefinitionNode,\n arg: ArgumentDefinition,\n errors: GraphQLError[],\n includeDirectiveApplication: boolean,\n) {\n const type = buildTypeReferenceFromAST(inputNode.type, arg.schema());\n arg.type = validateInputType(type, arg.coordinate, inputNode, errors);\n arg.defaultValue = buildValue(inputNode.defaultValue);\n if (includeDirectiveApplication) {\n buildAppliedDirectives(inputNode, arg, errors);\n }\n arg.description = inputNode.description?.value;\n arg.sourceAST = inputNode;\n}\n\nfunction buildInputFieldDefinitionInner(\n fieldNode: InputValueDefinitionNode,\n field: InputFieldDefinition,\n errors: GraphQLError[],\n) {\n const type = buildTypeReferenceFromAST(fieldNode.type, field.schema());\n field.type = validateInputType(type, field.coordinate, fieldNode, errors);\n field.defaultValue = buildValue(fieldNode.defaultValue);\n buildAppliedDirectives(fieldNode, field, errors);\n field.description = fieldNode.description?.value;\n field.sourceAST = fieldNode;\n}\n\nfunction buildDirectiveDefinitionInnerWithoutDirectiveApplications(\n directiveNode: DirectiveDefinitionNode,\n directive: DirectiveDefinition,\n errors: GraphQLError[],\n) {\n for (const inputValueDef of directiveNode.arguments ?? []) {\n buildArgumentDefinitionInner(inputValueDef, directive.addArgument(inputValueDef.name.value), errors, false);\n }\n directive.repeatable = directiveNode.repeatable;\n const locations = directiveNode.locations.map(({ value }) => value as DirectiveLocation);\n directive.addLocations(...locations);\n buildDescriptionAndSourceAST(directiveNode, directive);\n}\n\nfunction buildDirectiveApplicationsInDirectiveDefinition(\n directiveNode: DirectiveDefinitionNode,\n directive: DirectiveDefinition,\n errors: GraphQLError[],\n) {\n for (const inputValueDef of directiveNode.arguments ?? []) {\n buildAppliedDirectives(inputValueDef, directive.argument(inputValueDef.name.value)!, errors);\n }\n}\n", "import { ASTNode, ASTVisitor, GraphQLError, introspectionTypes, isTypeDefinitionNode, isTypeExtensionNode, isTypeSystemDefinitionNode, isTypeSystemExtensionNode, specifiedScalarTypes, ValidationContext } from \"graphql\";\nimport { SDLValidationContext } from \"graphql/validation/ValidationContext\";\nimport { didYouMean, suggestionList } from \"../suggestions\";\n\n/**\n * Modified version of the 'Known type names' GraphQL-js rule that allows types to only be defined as \"extensions\".\n */\nexport function KnownTypeNamesInFederationRule(\n context: ValidationContext | SDLValidationContext,\n): ASTVisitor {\n const schema = context.getSchema();\n const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n\n const definedTypes = Object.create(null);\n for (const def of context.getDocument().definitions) {\n // Note: this is the one change compared to the original GraphQL-js rule: we recore type extensions names as well.\n if (isTypeDefinitionNode(def) || isTypeExtensionNode(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n const typeNames = Object.keys(existingTypesMap).concat(\n Object.keys(definedTypes),\n );\n\n return {\n NamedType(node, _1, parent, _2, ancestors) {\n const typeName = node.name.value;\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n const definitionNode = ancestors[2] ?? parent;\n const isSDL = definitionNode != null && isSDLNode(definitionNode);\n if (isSDL && isStandardTypeName(typeName)) {\n return;\n }\n\n const suggestedTypes = suggestionList(\n typeName,\n isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n );\n context.reportError(\n new GraphQLError(\n `Unknown type \"${typeName}\".` + didYouMean(suggestedTypes),\n { nodes: node },\n ),\n );\n }\n },\n };\n}\n\nconst standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map(\n (type) => type.name,\n);\n\nfunction isStandardTypeName(typeName: string): boolean {\n return standardTypeNames.indexOf(typeName) !== -1;\n}\n\nfunction isSDLNode(value: ASTNode | readonly ASTNode[]): boolean {\n return (\n !Array.isArray(value) &&\n (isTypeSystemDefinitionNode(value as ASTNode) || isTypeSystemExtensionNode(value as ASTNode))\n );\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }", "import {\n ArgumentNode,\n ASTNode,\n DefinitionNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n Kind,\n OperationDefinitionNode,\n parse,\n SelectionNode,\n SelectionSetNode,\n OperationTypeNode,\n NameNode,\n} from \"graphql\";\nimport {\n baseType,\n Directive,\n DirectiveTargetElement,\n FieldDefinition,\n isCompositeType,\n isInterfaceType,\n isNullableType,\n runtimeTypesIntersects,\n Schema,\n SchemaRootKind,\n VariableCollector,\n VariableDefinitions,\n variableDefinitionsFromAST,\n CompositeType,\n typenameFieldName,\n sameDirectiveApplications,\n isConditionalDirective,\n isDirectiveApplicationsSubset,\n isAbstractType,\n DeferDirectiveArgs,\n Variable,\n possibleRuntimeTypes,\n Type,\n sameDirectiveApplication,\n isLeafType,\n Variables,\n isObjectType,\n NamedType,\n isUnionType,\n directivesToString,\n directivesToDirectiveNodes,\n} from \"./definitions\";\nimport { federationMetadata, isFederationDirectiveDefinedInSchema, isInterfaceObjectType } from \"./federation\";\nimport { ERRORS } from \"./error\";\nimport { isSubtype, sameType, typesCanBeMerged } from \"./types\";\nimport { assert, mapKeys, mapValues, MapWithCachedArrays, MultiMap, SetMultiMap } from \"./utils\";\nimport { argumentsEquals, argumentsFromAST, isValidValue, valueToAST, valueToString } from \"./values\";\nimport { v1 as uuidv1 } from 'uuid';\n\nexport const DEFAULT_MIN_USAGES_TO_OPTIMIZE = 2;\n\nfunction validate(condition: any, message: () => string, sourceAST?: ASTNode): asserts condition {\n if (!condition) {\n throw ERRORS.INVALID_GRAPHQL.err(message(), { nodes: sourceAST });\n }\n}\n\nfunction haveSameDirectives(op1: TElement, op2: TElement): boolean {\n return sameDirectiveApplications(op1.appliedDirectives, op2.appliedDirectives);\n}\n\nabstract class AbstractOperationElement> extends DirectiveTargetElement {\n private attachments?: Map;\n\n constructor(\n schema: Schema,\n directives?: readonly Directive[],\n ) {\n super(schema, directives);\n }\n\n collectVariables(collector: VariableCollector) {\n this.collectVariablesInElement(collector);\n this.collectVariablesInAppliedDirectives(collector);\n }\n\n abstract key(): string;\n\n abstract asPathElement(): string | undefined;\n\n abstract rebaseOn(args: { parentType: CompositeType, errorIfCannotRebase: boolean }): T | undefined;\n\n rebaseOnOrError(parentType: CompositeType): T {\n return this.rebaseOn({ parentType, errorIfCannotRebase: true })!;\n }\n\n abstract withUpdatedDirectives(newDirectives: readonly Directive[]): T;\n\n protected abstract collectVariablesInElement(collector: VariableCollector): void;\n\n addAttachment(key: string, value: string) {\n if (!this.attachments) {\n this.attachments = new Map();\n }\n this.attachments.set(key, value);\n }\n\n getAttachment(key: string): string | undefined {\n return this.attachments?.get(key);\n }\n\n protected copyAttachmentsTo(elt: AbstractOperationElement) {\n if (this.attachments) {\n for (const [k, v] of this.attachments.entries()) {\n elt.addAttachment(k, v);\n }\n }\n }\n\n protected keyForDirectives(): string {\n return this.appliedDirectives.map((d) => keyForDirective(d)).join(' ');\n }\n}\n\nexport class Field extends AbstractOperationElement> {\n readonly kind = 'Field' as const;\n\n constructor(\n readonly definition: FieldDefinition,\n readonly args?: TArgs,\n directives?: readonly Directive[],\n readonly alias?: string,\n ) {\n super(definition.schema(), directives);\n }\n\n protected collectVariablesInElement(collector: VariableCollector): void {\n if (this.args) {\n collector.collectInArguments(this.args);\n }\n }\n\n get name(): string {\n return this.definition.name;\n }\n\n argumentValue(name: string): any {\n return this.args ? this.args[name] : undefined;\n }\n\n responseName(): string {\n return this.alias ? this.alias : this.name;\n }\n\n key(): string {\n return this.responseName() + this.keyForDirectives();\n }\n\n asPathElement(): string {\n return this.responseName();\n }\n\n get parentType(): CompositeType {\n return this.definition.parent;\n }\n\n isLeafField(): boolean {\n return isLeafType(this.baseType());\n }\n\n baseType(): NamedType {\n return baseType(this.definition.type!);\n }\n\n copy(): Field {\n const newField = new Field(\n this.definition,\n this.args,\n this.appliedDirectives,\n this.alias,\n );\n this.copyAttachmentsTo(newField);\n return newField;\n }\n \n withUpdatedArguments(newArgs: TArgs): Field {\n const newField = new Field(\n this.definition,\n { ...this.args, ...newArgs },\n this.appliedDirectives,\n this.alias,\n );\n this.copyAttachmentsTo(newField);\n return newField;\n }\n\n withUpdatedDefinition(newDefinition: FieldDefinition): Field {\n const newField = new Field(\n newDefinition,\n this.args,\n this.appliedDirectives,\n this.alias,\n );\n this.copyAttachmentsTo(newField);\n return newField;\n }\n\n withUpdatedAlias(newAlias: string | undefined): Field {\n const newField = new Field(\n this.definition,\n this.args,\n this.appliedDirectives,\n newAlias,\n );\n this.copyAttachmentsTo(newField);\n return newField;\n }\n\n withUpdatedDirectives(newDirectives: readonly Directive[]): Field {\n const newField = new Field(\n this.definition,\n this.args,\n newDirectives,\n this.alias,\n );\n this.copyAttachmentsTo(newField);\n return newField;\n }\n\n argumentsToNodes(): ArgumentNode[] | undefined {\n if (!this.args) {\n return undefined;\n }\n\n const entries = Object.entries(this.args);\n if (entries.length === 0) {\n return undefined;\n }\n\n return entries.map(([n, v]) => {\n return {\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: n },\n value: valueToAST(v, this.definition.argument(n)!.type!)!,\n };\n });\n }\n \n selects(\n definition: FieldDefinition,\n assumeValid: boolean = false,\n variableDefinitions?: VariableDefinitions,\n contextualArguments?: string[],\n ): boolean {\n assert(assumeValid || variableDefinitions, 'Must provide variable definitions if validation is needed');\n\n // We've already validated that the field selects the definition on which it was built.\n if (definition === this.definition) {\n return true;\n }\n\n // This code largely mirrors validate, so we could generalize that and return false on exception, but this\n // method is called fairly often and that has been shown to impact performance quite a lot. So a little\n // bit of code duplication is ok.\n if (this.name !== definition.name) {\n return false;\n }\n\n // We need to make sure the field has valid values for every non-optional argument.\n for (const argDef of definition.arguments()) {\n const appliedValue = this.argumentValue(argDef.name);\n if (appliedValue === undefined) {\n if (argDef.defaultValue === undefined && !isNullableType(argDef.type!) && (!contextualArguments || !contextualArguments?.includes(argDef.name))) {\n return false;\n }\n } else {\n if (!assumeValid && !isValidValue(appliedValue, argDef, variableDefinitions!)) {\n return false;\n }\n }\n }\n\n // We also make sure the field application does not have non-null values for field that are not part of the definition.\n if (!assumeValid && this.args) {\n for (const [name, value] of Object.entries(this.args)) {\n if (value !== null && definition.argument(name) === undefined) {\n return false\n }\n }\n }\n return true;\n }\n\n validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean) {\n validate(this.name === this.definition.name, () => `Field name \"${this.name}\" cannot select field \"${this.definition.coordinate}: name mismatch\"`);\n \n \n // We need to make sure the field has valid values for every non-optional argument.\n for (const argDef of this.definition.arguments()) {\n const appliedValue = this.argumentValue(argDef.name);\n\n let isContextualArg = false;\n const schema = this.definition.schema();\n const fromContextDirective = federationMetadata(schema)?.fromContextDirective();\n if (fromContextDirective && isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n isContextualArg = argDef.appliedDirectivesOf(fromContextDirective).length > 0;\n }\n\n if (appliedValue === undefined) {\n validate(\n (isContextualArg && !validateContextualArgs) || argDef.defaultValue !== undefined || isNullableType(argDef.type!),\n () => `Missing mandatory value for argument \"${argDef.name}\" of field \"${this.definition.coordinate}\" in selection \"${this}\"`);\n } else {\n validate(\n (isContextualArg && !validateContextualArgs) || isValidValue(appliedValue, argDef, variableDefinitions),\n () => `Invalid value ${valueToString(appliedValue)} for argument \"${argDef.coordinate}\" of type ${argDef.type}`)\n }\n }\n\n // We also make sure the field application does not have non-null values for field that are not part of the definition.\n if (this.args) {\n for (const [name, value] of Object.entries(this.args)) {\n validate(\n value === null || this.definition.argument(name) !== undefined,\n () => `Unknown argument \"${name}\" in field application of \"${this.name}\"`);\n }\n }\n }\n\n rebaseOn({ parentType, errorIfCannotRebase }: { parentType: CompositeType, errorIfCannotRebase: boolean }): Field | undefined {\n const fieldParent = this.definition.parent;\n if (parentType === fieldParent) {\n return this;\n }\n\n if (this.name === typenameFieldName) {\n if (possibleRuntimeTypes(parentType).some((runtimeType) => isInterfaceObjectType(runtimeType))) {\n validate(\n !errorIfCannotRebase,\n () => `Cannot add selection of field \"${this.definition.coordinate}\" to selection set of parent type \"${parentType}\" that is potentially an interface object type at runtime`\n );\n return undefined;\n } else {\n return this.withUpdatedDefinition(parentType.typenameField()!);\n }\n }\n\n const fieldDef = parentType.field(this.name);\n const canRebase = this.canRebaseOn(parentType) && fieldDef;\n if (!canRebase) {\n validate(\n !errorIfCannotRebase,\n () => `Cannot add selection of field \"${this.definition.coordinate}\" to selection set of parent type \"${parentType}\"`\n );\n return undefined;\n }\n\n return this.withUpdatedDefinition(fieldDef);\n }\n\n private canRebaseOn(parentType: CompositeType) {\n const fieldParentType = this.definition.parent\n // There is 2 valid cases we want to allow:\n // 1. either `selectionParent` and `fieldParent` are the same underlying type (same name) but from different underlying schema. Typically,\n // happens when we're building subgraph queries but using selections from the original query which is against the supergraph API schema.\n // 2. or they are not the same underlying type, but the field parent type is from an interface (or an interface object, which is the same\n // here), in which case we may be rebasing an interface field on one of the implementation type, which is ok. Note that we don't verify\n // that `parentType` is indeed an implementation of `fieldParentType` because it's possible that this implementation relationship exists\n // in the supergraph, but not in any of the subgraph schema involved here. So we just let it be. Not that `rebaseOn` will complain anyway\n // if the field name simply does not exists in `parentType`.\n return parentType.name === fieldParentType.name\n || isInterfaceType(fieldParentType)\n || isInterfaceObjectType(fieldParentType);\n }\n\n typeIfAddedTo(parentType: CompositeType): Type | undefined {\n const fieldParentType = this.definition.parent;\n if (parentType == fieldParentType) {\n return this.definition.type;\n }\n\n if (this.name === typenameFieldName) {\n return parentType.typenameField()?.type;\n }\n \n const returnType = this.canRebaseOn(parentType)\n ? parentType.field(this.name)?.type\n : undefined;\n \n // If the field has an argument with fromContextDirective on it. We should not rebase it.\n const fromContextDirective = federationMetadata(parentType.schema())?.fromContextDirective();\n if (fromContextDirective && isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n const fieldInParent = parentType.field(this.name);\n if (fieldInParent && fieldInParent.arguments()\n .some(arg => arg.appliedDirectivesOf(fromContextDirective).length > 0 && (!this.args || this.args[arg.name] === undefined))\n ) {\n return undefined;\n } \n }\n\n return returnType;\n }\n\n hasDefer(): boolean {\n // @defer cannot be on field at the moment\n return false;\n }\n\n deferDirectiveArgs(): undefined {\n // @defer cannot be on field at the moment (but exists so we can call this method on any `OperationElement` conveniently)\n return undefined;\n }\n\n withoutDefer(): Field {\n // @defer cannot be on field at the moment\n return this;\n }\n\n equals(that: OperationElement): boolean {\n if (this === that) {\n return true;\n }\n return that.kind === 'Field'\n && this.name === that.name\n && this.alias === that.alias\n && (this.args ? that.args && argumentsEquals(this.args, that.args) : !that.args)\n && haveSameDirectives(this, that);\n }\n\n toString(): string {\n const alias = this.alias ? this.alias + ': ' : '';\n const entries = this.args ? Object.entries(this.args) : [];\n const args = entries.length === 0\n ? ''\n : '(' + entries.map(([n, v]) => `${n}: ${valueToString(v, this.definition.argument(n)?.type)}`).join(', ') + ')';\n return alias + this.name + args + this.appliedDirectivesToString();\n }\n}\n\n/**\n * Computes a string key representing a directive application, so that if 2 directive applications have the same key, then they\n * represent the same application.\n *\n * Note that this is mostly just the `toString` representation of the directive, but for 2 subtlety:\n * 1. for a handful of directives (really just `@defer` for now), we never want to consider directive applications the same, no\n * matter that the arguments of the directive match, and this for the same reason as documented on the `sameDirectiveApplications`\n * method in `definitions.ts`.\n * 2. we sort the argument (by their name) before converting them to string, since argument order does not matter in graphQL.\n */\nfunction keyForDirective(\n directive: Directive>,\n directivesNeverEqualToThemselves: string[] = [ 'defer' ],\n): string {\n if (directivesNeverEqualToThemselves.includes(directive.name)) {\n return uuidv1();\n }\n const entries = Object.entries(directive.arguments()).filter(([_, v]) => v !== undefined);\n entries.sort(([n1], [n2]) => n1.localeCompare(n2));\n const args = entries.length == 0 ? '' : '(' + entries.map(([n, v]) => `${n}: ${valueToString(v, directive.argumentType(n))}`).join(', ') + ')';\n return `@${directive.name}${args}`;\n}\n\nexport class FragmentElement extends AbstractOperationElement {\n readonly kind = 'FragmentElement' as const;\n readonly typeCondition?: CompositeType;\n private computedKey: string | undefined;\n\n constructor(\n private readonly sourceType: CompositeType,\n typeCondition?: string | CompositeType,\n directives?: readonly Directive[],\n ) {\n // TODO: we should do some validation here (remove the ! with proper error, and ensure we have some intersection between\n // the source type and the type condition)\n super(sourceType.schema(), directives);\n this.typeCondition = typeCondition !== undefined && typeof typeCondition === 'string'\n ? this.schema().type(typeCondition)! as CompositeType\n : typeCondition;\n }\n\n protected collectVariablesInElement(_: VariableCollector): void {\n // Cannot have variables in fragments\n }\n\n get parentType(): CompositeType {\n return this.sourceType;\n }\n\n key(): string {\n if (!this.computedKey) {\n // The key is such that 2 fragments with the same key within a selection set gets merged together. So the type-condition\n // is include, but so are the directives.\n this.computedKey = '...' + (this.typeCondition ? ' on ' + this.typeCondition.name : '') + this.keyForDirectives();\n }\n return this.computedKey;\n }\n\n castedType(): CompositeType {\n return this.typeCondition ? this.typeCondition : this.sourceType;\n }\n\n asPathElement(): string | undefined {\n const condition = this.typeCondition;\n return condition ? `... on ${condition}` : undefined;\n }\n\n withUpdatedSourceType(newSourceType: CompositeType): FragmentElement {\n return this.withUpdatedTypes(newSourceType, this.typeCondition);\n }\n\n withUpdatedCondition(newCondition: CompositeType | undefined): FragmentElement {\n return this.withUpdatedTypes(this.sourceType, newCondition);\n }\n\n withUpdatedTypes(newSourceType: CompositeType, newCondition: CompositeType | undefined): FragmentElement {\n // Note that we pass the type-condition name instead of the type itself, to ensure that if `newSourceType` was from a different\n // schema (typically, the supergraph) than `this.sourceType` (typically, a subgraph), then the new condition uses the\n // definition of the proper schema (the supergraph in such cases, instead of the subgraph).\n const newFragment = new FragmentElement(newSourceType, newCondition?.name, this.appliedDirectives);\n this.copyAttachmentsTo(newFragment);\n return newFragment;\n }\n\n withUpdatedDirectives(newDirectives: Directive[]): FragmentElement {\n const newFragment = new FragmentElement(this.sourceType, this.typeCondition, newDirectives);\n this.copyAttachmentsTo(newFragment);\n return newFragment;\n }\n\n rebaseOn({ parentType, errorIfCannotRebase }: { parentType: CompositeType, errorIfCannotRebase: boolean }): FragmentElement | undefined {\n const fragmentParent = this.parentType;\n const typeCondition = this.typeCondition;\n if (parentType === fragmentParent) {\n return this;\n }\n\n // This usually imply that the fragment is not from the same sugraph than then selection. So we need\n // to update the source type of the fragment, but also \"rebase\" the condition to the selection set\n // schema.\n const { canRebase, rebasedCondition } = this.canRebaseOn(parentType);\n if (!canRebase) {\n validate(\n !errorIfCannotRebase,\n () => `Cannot add fragment of condition \"${typeCondition}\" (runtimes: [${possibleRuntimeTypes(typeCondition!)}]) to parent type \"${parentType}\" (runtimes: ${possibleRuntimeTypes(parentType)})`\n );\n return undefined;\n }\n return this.withUpdatedTypes(parentType, rebasedCondition);\n }\n\n private canRebaseOn(parentType: CompositeType): { canRebase: boolean, rebasedCondition?: CompositeType } {\n if (!this.typeCondition) {\n return { canRebase: true, rebasedCondition: undefined };\n }\n\n const rebasedCondition = parentType.schema().type(this.typeCondition.name);\n if (!rebasedCondition || !isCompositeType(rebasedCondition) || !runtimeTypesIntersects(parentType, rebasedCondition)) {\n return { canRebase: false };\n }\n\n return { canRebase: true, rebasedCondition };\n }\n\n castedTypeIfAddedTo(parentType: CompositeType): CompositeType | undefined {\n if (parentType == this.parentType) {\n return this.castedType();\n }\n\n const { canRebase, rebasedCondition } = this.canRebaseOn(parentType);\n return canRebase ? (rebasedCondition ? rebasedCondition : parentType) : undefined;\n }\n\n hasDefer(): boolean {\n return this.hasAppliedDirective('defer');\n }\n\n hasStream(): boolean {\n return this.hasAppliedDirective('stream');\n }\n\n deferDirectiveArgs(): DeferDirectiveArgs | undefined {\n // Note: @defer is not repeatable, so the return array below is either empty, or has a single value.\n return this.appliedDirectivesOf(this.schema().deferDirective())[0]?.arguments();\n }\n\n /**\n * Returns this fragment element but with any @defer directive on it removed.\n *\n * This method will return `undefined` if, upon removing @defer, the fragment has no conditions nor\n * any remaining applied directives (meaning that it carries no information whatsoever and can be\n * ignored).\n */\n withoutDefer(): FragmentElement | undefined {\n const deferName = this.schema().deferDirective().name;\n const updatedDirectives = this.appliedDirectives.filter((d) => d.name !== deferName);\n if (!this.typeCondition && updatedDirectives.length === 0) {\n return undefined;\n }\n\n if (updatedDirectives.length === this.appliedDirectives.length) {\n return this;\n }\n\n const updated = new FragmentElement(this.sourceType, this.typeCondition, updatedDirectives);\n this.copyAttachmentsTo(updated);\n return updated;\n }\n\n /**\n * Returns this fragment element, but it is has a @defer directive, the element is returned with\n * the @defer \"normalized\".\n *\n * See `Operation.withNormalizedDefer` for details on our so-called @defer normalization.\n */\n withNormalizedDefer(normalizer: DeferNormalizer): FragmentElement | undefined {\n const deferArgs = this.deferDirectiveArgs();\n if (!deferArgs) {\n return this;\n }\n\n let newDeferArgs: DeferDirectiveArgs | undefined = undefined;\n let conditionVariable: Variable | undefined = undefined;\n if (deferArgs.if !== undefined) {\n if (typeof deferArgs.if === 'boolean') {\n if (deferArgs.if) {\n // Harcoded `if: true`, remove the `if`\n newDeferArgs = {\n ...deferArgs,\n if: undefined,\n }\n } else {\n // Harcoded `if: false`, remove the @defer altogether\n return this.withoutDefer();\n }\n } else {\n // `if` on a variable\n conditionVariable = deferArgs.if;\n }\n }\n\n let label = deferArgs.label;\n if (!label) {\n label = normalizer.newLabel();\n if (newDeferArgs) {\n newDeferArgs.label = label;\n } else {\n newDeferArgs = {\n ...deferArgs,\n label,\n }\n }\n }\n\n // Now that we are sure to have a label, if we had a (non-trivial) condition,\n // associate it to that label.\n if (conditionVariable) {\n normalizer.registerCondition(label, conditionVariable);\n }\n\n if (!newDeferArgs) {\n return this;\n }\n\n const deferDirective = this.schema().deferDirective();\n const updatedDirectives = this.appliedDirectives\n .filter((d) => d.name !== deferDirective.name)\n .concat(new Directive(deferDirective.name, newDeferArgs));\n\n const updated = new FragmentElement(this.sourceType, this.typeCondition, updatedDirectives);\n this.copyAttachmentsTo(updated);\n return updated;\n }\n\n equals(that: OperationElement): boolean {\n if (this === that) {\n return true;\n }\n return that.kind === 'FragmentElement'\n && this.typeCondition?.name === that.typeCondition?.name\n && haveSameDirectives(this, that);\n }\n\n toString(): string {\n return '...' + (this.typeCondition ? ' on ' + this.typeCondition : '') + this.appliedDirectivesToString();\n }\n}\n\nexport type OperationElement = Field | FragmentElement;\n\nexport type OperationPath = OperationElement[];\n\nexport function operationPathToStringPath(path: OperationPath): string[] {\n return path\n .filter((p) => !(p.kind === 'FragmentElement' && !p.typeCondition))\n .map((p) => p.kind === 'Field' ? p.responseName() : `... on ${p.typeCondition?.coordinate}`);\n}\n\nexport function sameOperationPaths(p1: OperationPath, p2: OperationPath): boolean {\n if (p1 === p2) {\n return true;\n }\n\n if (p1.length !== p2.length) {\n return false;\n }\n for (let i = 0; i < p1.length; i++) {\n if (!p1[i].equals(p2[i])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Returns all the \"conditional\" directive applications (`@skip` and `@include`) in the provided path.\n */\nexport function conditionalDirectivesInOperationPath(path: OperationPath): Directive[] {\n return path.map((e) => e.appliedDirectives).flat().filter((d) => isConditionalDirective(d));\n}\n\nexport function concatOperationPaths(head: OperationPath, tail: OperationPath): OperationPath {\n // While this is mainly a simple array concatenation, we optimize slightly by recognizing if the\n // tail path starts by a fragment selection that is useless given the end of the head path.\n if (head.length === 0) {\n return tail;\n }\n if (tail.length === 0) {\n return head;\n }\n const lastOfHead = head[head.length - 1];\n const conditionals = conditionalDirectivesInOperationPath(head);\n let firstOfTail = tail[0];\n // Note that in practice, we may be able to eliminate a few elements at the beginning of the path\n // due do conditionals ('@skip' and '@include'). Indeed, a (tail) path crossing multiple conditions\n // may start with: [ ... on X @include(if: $c1), ... on X @ksip(if: $c2), (...)], but if `head`\n // already ends on type `X` _and_ both the conditions on `$c1` and `$c2` are alredy found on `head`,\n // then we can remove both fragments in `tail`.\n while (firstOfTail && isUselessFollowupElement(lastOfHead, firstOfTail, conditionals)) {\n tail = tail.slice(1);\n firstOfTail = tail[0];\n }\n return head.concat(tail);\n}\n\nfunction isUselessFollowupElement(first: OperationElement, followup: OperationElement, conditionals: Directive[]): boolean {\n const typeOfFirst = first.kind === 'Field'\n ? first.baseType()\n : first.typeCondition;\n\n // The followup is useless if it's a fragment (with no directives we would want to preserve) whose type\n // is already that of the first element (or a supertype).\n return !!typeOfFirst\n && followup.kind === 'FragmentElement'\n && !!followup.typeCondition\n && (followup.appliedDirectives.length === 0 || isDirectiveApplicationsSubset(conditionals, followup.appliedDirectives))\n && isSubtype(followup.typeCondition, typeOfFirst);\n}\n\nexport type RootOperationPath = {\n rootKind: SchemaRootKind,\n path: OperationPath\n}\n\n// Computes for every fragment, which other fragments use it (so the reverse of it's dependencies, the other fragment it uses).\nfunction computeFragmentsDependents(fragments: NamedFragments): SetMultiMap {\n const reverseDeps = new SetMultiMap();\n for (const fragment of fragments.definitions()) {\n for (const dependency of fragment.fragmentUsages().keys()) {\n reverseDeps.add(dependency, fragment.name);\n }\n }\n return reverseDeps;\n}\n\nfunction clearKeptFragments(\n usages: Map,\n fragments: NamedFragments,\n minUsagesToOptimize: number\n) {\n // `toCheck` will contain only fragments that we know we want to keep (but haven't handled/removed from `usages` yet).\n let toCheck = Array.from(usages.entries()).filter(([_, count]) => count >= minUsagesToOptimize).map(([name, _]) => name);\n while (toCheck.length > 0) {\n const newToCheck = [];\n for (const name of toCheck) {\n // We \"keep\" that fragment so clear it.\n usages.delete(name);\n // But as it is used, bump the usage for every fragment it uses.\n const ownUsages = fragments.get(name)!.fragmentUsages();\n for (const [otherName, otherCount] of ownUsages.entries()) {\n const prevCount = usages.get(otherName);\n // We're interested in fragment not in `usages` anymore.\n if (prevCount !== undefined) {\n const newCount = prevCount + otherCount;\n usages.set(otherName, newCount);\n if (prevCount < minUsagesToOptimize && newCount >= minUsagesToOptimize) {\n newToCheck.push(otherName);\n }\n }\n }\n }\n toCheck = newToCheck;\n }\n}\n\n// Checks, in `selectionSet`, which fragments (of `fragments`) are used at least `minUsagesToOptimize` times.\n// Returns the updated set of fragments containing only the fragment definitions with usage above our threshold,\n// and `undefined` or `null` if no such fragment meets said threshold. When this method returns `null`, it\n// additionally means that no fragments are use at all in `selectionSet` (and so `undefined` means that\n// \"some\" fragments are used in `selectionSet`, but just none of them is used at least `minUsagesToOptimize`\n// times).\nfunction computeFragmentsToKeep(\n selectionSet: SelectionSet,\n fragments: NamedFragments,\n minUsagesToOptimize: number\n): NamedFragments | undefined | null {\n // We start by collecting the usages within the selection set.\n const usages = new Map();\n selectionSet.collectUsedFragmentNames(usages);\n\n // If we have no fragment in the selection set, then it's simple, we just don't keep any fragments.\n if (usages.size === 0) {\n return null;\n }\n\n // We're going to remove fragments from usages as we categorize them as kept or expanded, so we\n // first ensure that it has entries for every fragment, default to 0.\n for (const fragment of fragments.definitions()) {\n if (usages.get(fragment.name) === undefined) {\n usages.set(fragment.name, 0);\n }\n }\n\n // At this point, `usages` contains the usages of fragments \"in the selection\". From that, we want\n // to decide which fragment to \"keep\", and which to re-expand. But there is 2 subtlety:\n // 1. when we decide to keep some fragment F, then we should could it's own usages of other fragments. That\n // is, if a fragment G is use once in the selection, but also use once in a fragment F that we\n // keep, then the usages for G is really 2 (but if F is unused, then we don't want to count\n // it's usage of G for instance).\n // 2. when we decide to expand a fragment, then this also impact the usages of other fragments it\n // uses, as those gets \"inlined\" into the selection. But that also mean we have to be careful\n // of the order in which we pick fragments to expand. Say we have:\n // ```graphql\n // query {\n // ...F1\n // }\n //\n // fragment F1 {\n // a { ...F2 }\n // b { ...F2 }\n // }\n //\n // fragment F2 {\n // // something\n // }\n // ```\n // then at this point where we've only counted usages in the query selection, `usages` will be\n // `{ F1: 1, F2: 0 }`. But we do not want to expand _both_ F1 and F2. Instead, we want to expand\n // F1 first, and then realize that this increases F2 usages to 2, which means we stop there and keep F2.\n // Generalizing this, it means we want to first pick up fragments to expand that are _not_ used by any\n // other fragments that may be expanded.\n const reverseDependencies = computeFragmentsDependents(fragments);\n // We'll add to `toExpand` fragment we will definitively expand.\n const toExpand = new Set;\n let shouldContinue = true;\n while (shouldContinue) {\n // We'll do an iteration, but if we make no progress, we won't continue (we don't want to loop forever).\n shouldContinue = false;\n clearKeptFragments(usages, fragments, minUsagesToOptimize);\n for (const name of mapKeys(usages)) {\n // Note that we modify `usages` as we iterate it, so 1) we use `mapKeys` above which copy into a list and 2)\n // we get the `count` manually instead of relying on (possibly outdated) entries.\n const count = usages.get(name)!;\n // A unused fragment is not technically expanded, it is just removed and we can ignore for now (it's count\n // count increase later but ...).\n if (count === 0) {\n continue;\n }\n\n // If we find a fragment to keep, it means some fragment we expanded earlier in this iteration bump this\n // one count. We unsure `shouldContinue` is set so `clearKeptFragments` is called again, but let that\n // method deal with it otherwise.\n if (count >= minUsagesToOptimize) {\n shouldContinue = true;\n break;\n }\n\n const fragmentsUsingName = reverseDependencies.get(name);\n if (!fragmentsUsingName || [...fragmentsUsingName].every((fragName) => toExpand.has(fragName) || !usages.get(fragName))) {\n // This fragment is not used enough, and is only used by fragments we keep, so we\n // are guaranteed that expanding another fragment will not increase its usage. So\n // we definitively expand it.\n toExpand.add(name);\n usages.delete(name);\n\n // We've added to `toExpand`, so it's worth redoing another iteration\n // after that to see if something changes.\n shouldContinue = true;\n\n // Now that we expand it, we should bump the usage for every fragment it uses.\n const nameUsages = fragments.get(name)!.fragmentUsages();\n for (const [otherName, otherCount] of nameUsages.entries()) {\n const prev = usages.get(otherName);\n // Note that if `otherName` is not part of usages, it means it's a fragment we\n // already decided to keep/expand, so we just ignore it.\n if (prev !== undefined) {\n usages.set(otherName, prev + count * otherCount);\n }\n }\n }\n }\n }\n\n // Finally, we know that to expand, which is `toExpand` plus whatever remains in `usage` (typically\n // genuinely unused fragments).\n for (const name of usages.keys()) {\n toExpand.add(name);\n }\n\n return toExpand.size === 0 ? fragments : fragments.filter((f) => !toExpand.has(f.name));\n}\n\nexport class Operation extends DirectiveTargetElement {\n constructor(\n schema: Schema,\n readonly rootKind: SchemaRootKind,\n readonly selectionSet: SelectionSet,\n readonly variableDefinitions: VariableDefinitions,\n readonly fragments?: NamedFragments,\n readonly name?: string,\n directives: readonly Directive[] = []) {\n super(schema, directives);\n }\n\n // Returns a copy of this operation with the provided updated selection set.\n // Note that this method assumes that the existing `this.fragments` is still appropriate.\n private withUpdatedSelectionSet(newSelectionSet: SelectionSet): Operation {\n if (this.selectionSet === newSelectionSet) {\n return this;\n }\n\n return new Operation(\n this.schema(),\n this.rootKind,\n newSelectionSet,\n this.variableDefinitions,\n this.fragments,\n this.name,\n this.appliedDirectives,\n );\n }\n \n private collectUndefinedVariablesFromFragments(fragments: NamedFragments): Variable[] {\n const collector = new VariableCollector();\n for (const namedFragment of fragments.definitions()) {\n namedFragment.selectionSet.usedVariables().forEach(v => {\n if (!this.variableDefinitions.definition(v)) {\n collector.add(v);\n }\n });\n }\n return collector.variables();\n }\n\n // Returns a copy of this operation with the provided updated selection set and fragments.\n private withUpdatedSelectionSetAndFragments(\n newSelectionSet: SelectionSet,\n newFragments: NamedFragments | undefined,\n allAvailableVariables?: VariableDefinitions,\n ): Operation {\n if (this.selectionSet === newSelectionSet && newFragments === this.fragments) {\n return this;\n }\n \n let newVariableDefinitions = this.variableDefinitions;\n if (allAvailableVariables && newFragments) {\n const undefinedVariables = this.collectUndefinedVariablesFromFragments(newFragments);\n if (undefinedVariables.length > 0) {\n newVariableDefinitions = new VariableDefinitions();\n newVariableDefinitions.addAll(this.variableDefinitions);\n newVariableDefinitions.addAll(allAvailableVariables.filter(undefinedVariables));\n }\n }\n\n return new Operation(\n this.schema(),\n this.rootKind,\n newSelectionSet,\n newVariableDefinitions,\n newFragments,\n this.name,\n this.appliedDirectives,\n );\n }\n\n optimize(\n fragments?: NamedFragments,\n minUsagesToOptimize: number = DEFAULT_MIN_USAGES_TO_OPTIMIZE,\n allAvailableVariables?: VariableDefinitions,\n ): Operation {\n assert(minUsagesToOptimize >= 1, `Expected 'minUsagesToOptimize' to be at least 1, but got ${minUsagesToOptimize}`)\n if (!fragments || fragments.isEmpty()) {\n return this;\n }\n\n let optimizedSelection = this.selectionSet.optimize(fragments);\n if (optimizedSelection === this.selectionSet) {\n return this;\n }\n\n let finalFragments = computeFragmentsToKeep(optimizedSelection, fragments, minUsagesToOptimize);\n\n // If there is fragment usages and we're not keeping all fragments, we need to expand fragments.\n if (finalFragments !== null && finalFragments?.size !== fragments.size) {\n // Note that optimizing all fragments to potentially re-expand some is not entirely optimal, but it's unclear\n // how to do otherwise, and it probably don't matter too much in practice (we only call this optimization\n // on the final computed query plan, so not a very hot path; plus in most cases we won't even reach that\n // point either because there is no fragment, or none will have been optimized away so we'll exit above).\n optimizedSelection = optimizedSelection.expandFragments(finalFragments);\n\n // Expanding fragments could create some \"inefficiencies\" that we wouldn't have if we hadn't re-optimized\n // the fragments to de-optimize it later, so we do a final \"normalize\" pass to remove those.\n optimizedSelection = optimizedSelection.normalize({ parentType: optimizedSelection.parentType });\n\n // And if we've expanded some fragments but kept others, then it's not 100% impossible that some\n // fragment was used multiple times in some expanded fragment(s), but that post-expansion all of\n // it's usages are \"dead\" branches that are removed by the final `normalize`. In that case though,\n // we need to ensure we don't include the now-unused fragment in the final list of fragments.\n // TODO: remark that the same reasoning could leave a single instance of a fragment usage, so if\n // we really really want to never have less than `minUsagesToOptimize`, we could do some loop of\n // `expand then normalize` unless all fragments are provably used enough. We don't bother, because\n // leaving this is not a huge deal and it's not worth the complexity, but it could be that we can\n // refactor all this later to avoid this case without additional complexity.\n if (finalFragments) {\n // Note that removing a fragment might lead to another fragment being unused, so we need to iterate\n // until there is nothing more to remove, or we're out of fragments.\n let beforeRemoval: NamedFragments;\n do {\n beforeRemoval = finalFragments;\n const usages = new Map();\n // Collecting all usages, both in the selection and within other fragments.\n optimizedSelection.collectUsedFragmentNames(usages);\n finalFragments.collectUsedFragmentNames(usages);\n finalFragments = finalFragments.filter((f) => (usages.get(f.name) ?? 0) > 0);\n } while (finalFragments && finalFragments.size < beforeRemoval.size);\n }\n }\n\n return this.withUpdatedSelectionSetAndFragments(\n optimizedSelection,\n finalFragments ?? undefined,\n allAvailableVariables,\n );\n }\n\n generateQueryFragments(): Operation {\n const [minimizedSelectionSet, fragments] = this.selectionSet.minimizeSelectionSet();\n \n return new Operation(\n this.schema(),\n this.rootKind,\n minimizedSelectionSet,\n this.variableDefinitions,\n fragments,\n this.name,\n this.appliedDirectives,\n );\n }\n\n expandAllFragments(): Operation {\n // We clear up the fragments since we've expanded all.\n // Also note that expanding fragment usually generate unecessary fragments/inefficient selections, so it\n // basically always make sense to normalize afterwards. Besides, fragment reuse (done by `optimize`) rely\n // on the fact that its input is normalized to work properly, so all the more reason to do it here.\n const expanded = this.selectionSet.expandFragments();\n return this.withUpdatedSelectionSetAndFragments(expanded.normalize({ parentType: expanded.parentType }), undefined);\n }\n\n normalize(): Operation {\n return this.withUpdatedSelectionSet(this.selectionSet.normalize({ parentType: this.selectionSet.parentType }));\n }\n\n /**\n * Returns this operation but potentially modified so all/some of the @defer applications have been removed.\n *\n * @param labelsToRemove - If provided, then only the `@defer` applications with labels in the provided\n * set will be remove. Other `@defer` applications will be untouched. If `undefined`, then all `@defer`\n * applications are removed.\n */\n withoutDefer(labelsToRemove?: Set): Operation {\n return this.withUpdatedSelectionSet(this.selectionSet.withoutDefer(labelsToRemove));\n }\n\n /**\n * Returns this operation but modified to \"normalize\" all the @defer applications.\n *\n * \"Normalized\" in this context means that all the `@defer` application in the\n * resulting operation will:\n * - have a (unique) label. Which imply that this method generates label for\n * any `@defer` not having a label.\n * - have a non-trivial `if` condition, if any. By non-trivial, we mean that\n * the condition will be a variable and not an hard-coded `true` or `false`.\n * To do this, this method will remove the condition of any `@defer` that\n * has `if: true`, and will completely remove any `@defer` application that\n * has `if: false`.\n */\n withNormalizedDefer(): {\n operation: Operation,\n hasDefers: boolean,\n assignedDeferLabels: Set,\n deferConditions: SetMultiMap,\n } {\n const normalizer = new DeferNormalizer();\n const { hasDefers, hasNonLabelledOrConditionalDefers } = normalizer.init(this.selectionSet);\n let updatedOperation: Operation = this;\n if (hasNonLabelledOrConditionalDefers) {\n updatedOperation = this.withUpdatedSelectionSet(this.selectionSet.withNormalizedDefer(normalizer));\n }\n return {\n operation: updatedOperation,\n hasDefers,\n assignedDeferLabels: normalizer.assignedLabels,\n deferConditions: normalizer.deferConditions,\n };\n }\n\n collectDefaultedVariableValues(): Record {\n const defaultedVariableValues: Record = {};\n for (const { variable, defaultValue } of this.variableDefinitions.definitions()) {\n if (defaultValue !== undefined) {\n defaultedVariableValues[variable.name] = defaultValue;\n }\n }\n return defaultedVariableValues;\n }\n\n toString(expandFragments: boolean = false, prettyPrint: boolean = true): string {\n return this.selectionSet.toOperationString(this.rootKind, this.variableDefinitions, this.fragments, this.name, this.appliedDirectives, expandFragments, prettyPrint);\n }\n}\n\nexport type FragmentRestrictionAtType = { selectionSet: SelectionSet, validator?: FieldsConflictValidator };\n\nexport class NamedFragmentDefinition extends DirectiveTargetElement {\n private _selectionSet: SelectionSet | undefined;\n\n // Lazily computed cache of the expanded selection set.\n private _expandedSelectionSet: SelectionSet | undefined;\n\n private _fragmentUsages: Map | undefined;\n private _includedFragmentNames: Set | undefined;\n\n private readonly expandedSelectionSetsAtTypesCache = new Map();\n\n constructor(\n schema: Schema,\n readonly name: string,\n readonly typeCondition: CompositeType,\n directives?: Directive[],\n ) {\n super(schema, directives);\n }\n\n setSelectionSet(selectionSet: SelectionSet): NamedFragmentDefinition {\n assert(!this._selectionSet, 'Attempting to set the selection set of a fragment definition already built')\n // We set the selection set post-construction to simplify the handling of fragments that use other fragments,\n // but let's make sure we've properly used the fragment type condition as parent type of the selection set, as we should.\n assert(selectionSet.parentType === this.typeCondition, `Fragment selection set parent is ${selectionSet.parentType} differs from the fragment condition type ${this.typeCondition}`);\n this._selectionSet = selectionSet;\n return this;\n }\n\n get selectionSet(): SelectionSet {\n assert(this._selectionSet, () => `Trying to access fragment definition ${this.name} before it is fully built`);\n return this._selectionSet;\n }\n\n withUpdatedSelectionSet(newSelectionSet: SelectionSet): NamedFragmentDefinition {\n return new NamedFragmentDefinition(this.schema(), this.name, this.typeCondition).setSelectionSet(newSelectionSet);\n }\n\n fragmentUsages(): ReadonlyMap {\n if (!this._fragmentUsages) {\n this._fragmentUsages = new Map();\n this.selectionSet.collectUsedFragmentNames(this._fragmentUsages);\n }\n return this._fragmentUsages;\n }\n\n collectUsedFragmentNames(collector: Map) {\n const usages = this.fragmentUsages();\n for (const [name, count] of usages.entries()) {\n const prevCount = collector.get(name);\n collector.set(name, prevCount ? prevCount + count : count);\n }\n }\n\n collectVariables(collector: VariableCollector) {\n this.selectionSet.collectVariables(collector);\n this.collectVariablesInAppliedDirectives(collector);\n }\n\n toFragmentDefinitionNode() : FragmentDefinitionNode {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: {\n kind: Kind.NAME,\n value: this.name\n },\n typeCondition: {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: this.typeCondition.name\n }\n },\n selectionSet: this.selectionSet.toSelectionSetNode()\n };\n }\n\n /**\n * Whether this fragment may apply _directly_ at the provided type, meaning that the fragment sub-selection\n * (_without_ the fragment condition, hence the \"directly\") can be normalized at `type` and this without\n * \"widening\" the runtime types to types that do not intersect the fragment condition.\n *\n * For that to be true, we need one of this to be true:\n * 1. the runtime types of the fragment condition must be at least as general as those of the provided `type`.\n * Otherwise, putting it at `type` without its condition would \"generalize\" more than the fragment meant to (and\n * so we'd \"widen\" the runtime types more than what the query meant to.\n * 2. either `type` and `this.typeCondition` are equal, or `type` is an object or `this.typeCondition` is a union\n * The idea is that, assuming our 1st point, then:\n * - if both are equal, things works trivially.\n * - if `type` is an object, `this.typeCondition` is either the same object, or a union/interface for which\n * type is a valid runtime. In all case, anything valid on `this.typeCondition` would apply to `type` too.\n * - if `this.typeCondition` is a union, then it's selection can only have fragments at top-level\n * (no fields save for `__typename`), and normalising is always fine with top-level fragments.\n * But in any other case, both types must be abstract (if `this.typeCondition` is an object, the 1st condition\n * imply `type` can only be the same type) and we're in one of:\n * - `type` and `this.typeCondition` are both different interfaces (that intersect but are different).\n * - `type` is aunion and `this.typeCondition` an interface.\n * And in both cases, since `this.typeCondition` is an interface, the fragment selection set may have field selections\n * on that interface, and those fields may not be valid for `type`.\n *\n * @param type - the type at which we're looking at applying the fragment\n */\n canApplyDirectlyAtType(type: CompositeType): boolean {\n if (sameType(type, this.typeCondition)) {\n return true;\n }\n\n // No point computing runtime types if the condition is an object (it can never cover all of\n // the runtimes of `type` unless it's the same type, which is already covered).\n if (!isAbstractType(this.typeCondition)) {\n return false;\n }\n\n const conditionRuntimes = possibleRuntimeTypes(this.typeCondition);\n const typeRuntimes = possibleRuntimeTypes(type);\n // The fragment condition must be at least as general as the provided type (in other words, all of the\n // runtimes of `type` must be in `conditionRuntimes`).\n // Note: the `length` test is technically redundant, but just avoid the more costly sub-set check if we\n // can cheaply show it's unnecessary.\n if (conditionRuntimes.length < typeRuntimes.length\n || !typeRuntimes.every((t1) => conditionRuntimes.some((t2) => sameType(t1, t2)))) {\n return false;\n }\n\n return isObjectType(type) || isUnionType(this.typeCondition);\n }\n\n private expandedSelectionSet(): SelectionSet {\n if (!this._expandedSelectionSet) {\n this._expandedSelectionSet = this.selectionSet.expandFragments();\n }\n return this._expandedSelectionSet;\n }\n\n /**\n * This methods *assumes* that `this.canApplyDirectlyAtType(type)` is `true` (and may crash if this is not true), and returns\n * a version fo this named fragment selection set that corresponds to the \"expansion\" of this named fragment at `type`\n *\n * The overall idea here is that if we have an interface I with 2 implementations T1 and T2, and we have a fragment like:\n * ```graphql\n * fragment X on I {\n * ... on T1 {\n * \n * }\n * ... on T2 {\n * \n * }\n * }\n * ```\n * then if the current type is `T1`, then all we care about matching for this fragment is the `... on T1` part, and this method gives\n * us that part.\n */\n expandedSelectionSetAtType(type: CompositeType): FragmentRestrictionAtType {\n let cached = this.expandedSelectionSetsAtTypesCache.get(type.name);\n if (!cached) {\n cached = this.computeExpandedSelectionSetAtType(type);\n this.expandedSelectionSetsAtTypesCache.set(type.name, cached);\n }\n return cached;\n }\n\n private computeExpandedSelectionSetAtType(type: CompositeType): FragmentRestrictionAtType {\n const expandedSelectionSet = this.expandedSelectionSet();\n const selectionSet = expandedSelectionSet.normalize({ parentType: type });\n\n if (!isObjectType(this.typeCondition)) {\n // When the type condition of the fragment is not an object type, the `FieldsInSetCanMerge` rule is more\n // restrictive and any fields can create conflicts. Thus, we have to use the full validator in this case.\n // (see https://github.com/graphql/graphql-spec/issues/1085 for details.)\n const validator = FieldsConflictValidator.build(expandedSelectionSet);\n return { selectionSet, validator };\n }\n\n // Note that `trimmed` is the difference of 2 selections that may not have been normalized on the same parent type,\n // so in practice, it is possible that `trimmed` contains some of the selections that `selectionSet` contains, but\n // that they have been simplified in `selectionSet` in such a way that the `minus` call does not see it. However,\n // it is not trivial to deal with this, and it is fine given that we use trimmed to create the validator because\n // we know the non-trimmed parts cannot create field conflict issues so we're trying to build a smaller validator,\n // but it's ok if trimmed is not as small as it theoretically can be.\n const trimmed = expandedSelectionSet.minus(selectionSet);\n const validator = trimmed.isEmpty() ? undefined : FieldsConflictValidator.build(trimmed);\n return { selectionSet, validator };\n }\n\n /**\n * Whether this fragment fully includes `otherFragment`.\n * Note that this is slightly different from `this` \"using\" `otherFragment` in that this essentially checks\n * if the full selection set of `otherFragment` is contained by `this`, so this only look at \"top-level\" usages.\n *\n * Note that this is guaranteed to return `false` if passed `this` name.\n */\n includes(otherFragment: string): boolean {\n if (this.name === otherFragment) {\n return false;\n }\n\n if (!this._includedFragmentNames) {\n this._includedFragmentNames = this.computeIncludedFragmentNames();\n }\n return this._includedFragmentNames.has(otherFragment);\n }\n\n private computeIncludedFragmentNames(): Set {\n const included = new Set();\n for (const selection of this.selectionSet.selections()) {\n if (selection instanceof FragmentSpreadSelection) {\n included.add(selection.namedFragment.name);\n }\n }\n return included;\n }\n\n toString(indent?: string): string {\n return `fragment ${this.name} on ${this.typeCondition}${this.appliedDirectivesToString()} ${this.selectionSet.toString(false, true, indent)}`;\n }\n}\n\n\nexport class NamedFragments {\n private readonly fragments = new MapWithCachedArrays();\n\n isEmpty(): boolean {\n return this.size === 0;\n }\n\n get size(): number {\n return this.fragments.size;\n }\n\n names(): readonly string[] {\n return this.fragments.keys();\n }\n\n add(fragment: NamedFragmentDefinition) {\n if (this.fragments.has(fragment.name)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Duplicate fragment name '${fragment}'`);\n }\n this.fragments.set(fragment.name, fragment);\n }\n\n addIfNotExist(fragment: NamedFragmentDefinition) {\n if (!this.fragments.has(fragment.name)) {\n this.fragments.set(fragment.name, fragment);\n }\n }\n\n maybeApplyingDirectlyAtType(type: CompositeType): NamedFragmentDefinition[] {\n return this.fragments.values().filter(f => f.canApplyDirectlyAtType(type));\n }\n\n get(name: string): NamedFragmentDefinition | undefined {\n return this.fragments.get(name);\n }\n\n has(name: string): boolean {\n return this.fragments.has(name);\n }\n\n definitions(): readonly NamedFragmentDefinition[] {\n return this.fragments.values();\n }\n\n /**\n * Collect the usages of fragments that are used within the selection of other fragments.\n */\n collectUsedFragmentNames(collector: Map) {\n for (const fragment of this.definitions()) {\n fragment.collectUsedFragmentNames(collector);\n }\n }\n\n map(mapper: (def: NamedFragmentDefinition) => NamedFragmentDefinition): NamedFragments {\n const mapped = new NamedFragments();\n for (const def of this.fragments.values()) {\n mapped.fragments.set(def.name, mapper(def));\n }\n return mapped;\n }\n\n /**\n * The mapper is called on every fragment definition (`fragment` argument), but in such a way that if a fragment A uses another fragment B,\n * then the mapper is guaranteed to be called on B _before_ being called on A. Further, the `newFragments` argument is a new `NamedFragments`\n * containing all the previously mapped definition (minus those for which the mapper returned `undefined`). So if A uses B (and the mapper\n * on B do not return undefined), then when mapper is called on A `newFragments` will have the mapped value for B.\n */\n mapInDependencyOrder(\n mapper: (fragment: NamedFragmentDefinition, newFragments: NamedFragments) => NamedFragmentDefinition | undefined\n ): NamedFragments | undefined {\n type FragmentDependencies = {\n fragment: NamedFragmentDefinition,\n dependsOn: string[],\n };\n const fragmentsMap = new Map();\n for (const fragment of this.definitions()) {\n fragmentsMap.set(fragment.name, {\n fragment,\n dependsOn: Array.from(fragment.fragmentUsages().keys()),\n });\n }\n\n const removedFragments = new Set();\n const mappedFragments = new NamedFragments();\n while (fragmentsMap.size > 0) {\n for (const [name, info] of fragmentsMap) {\n // Note that graphQL specifies that named fragments cannot have cycles (https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles)\n // and so we're guaranteed that on every iteration, at least one element of the map is removed (so the `while` loop will terminate).\n if (info.dependsOn.every((n) => mappedFragments.has(n) || removedFragments.has(n))) {\n const mapped = mapper(info.fragment, mappedFragments);\n fragmentsMap.delete(name);\n if (!mapped) {\n removedFragments.add(name);\n } else {\n mappedFragments.add(mapped);\n }\n // We just deleted from `fragmentsMap` so continuing our current `for` iteration is dangerous,\n // so we break to the `while` loop (besides, there is no reason why continuing the inner iteration\n // would be better than restarting it right away).\n break;\n }\n }\n }\n\n return mappedFragments.isEmpty() ? undefined : mappedFragments;\n }\n\n /**\n * This method:\n * - expands all nested fragments,\n * - applies the provided mapper to the selection set of the fragments,\n * - and finally re-fragments the nested fragments.\n */\n mapToExpandedSelectionSets(\n mapper: (selectionSet: SelectionSet) => SelectionSet | undefined,\n ): NamedFragments | undefined {\n return this.mapInDependencyOrder((fragment, newFragments) => {\n const mappedSelectionSet = mapper(fragment.selectionSet.expandFragments().normalize({ parentType: fragment.typeCondition }));\n if (!mappedSelectionSet) {\n return undefined;\n }\n const reoptimizedSelectionSet = mappedSelectionSet.optimize(newFragments);\n return fragment.withUpdatedSelectionSet(reoptimizedSelectionSet);\n });\n }\n\n rebaseOn(schema: Schema): NamedFragments | undefined {\n return this.mapInDependencyOrder((fragment, newFragments) => {\n const rebasedType = schema.type(fragment.selectionSet.parentType.name);\n if (!rebasedType || !isCompositeType(rebasedType)) {\n return undefined;\n }\n\n let rebasedSelection = fragment.selectionSet.rebaseOn({ parentType: rebasedType, fragments: newFragments, errorIfCannotRebase: false });\n // Rebasing can leave some inefficiencies in some case (particularly when a spread has to be \"expanded\", see `FragmentSpreadSelection.rebaseOn`),\n // so we do a top-level normalization to keep things clean.\n rebasedSelection = rebasedSelection.normalize({ parentType: rebasedType });\n return rebasedSelection.isWorthUsing()\n ? new NamedFragmentDefinition(schema, fragment.name, rebasedType).setSelectionSet(rebasedSelection)\n : undefined;\n });\n }\n\n filter(predicate: (fragment: NamedFragmentDefinition) => boolean): NamedFragments | undefined {\n return this.mapInDependencyOrder((fragment, newFragments) => {\n if (predicate(fragment)) {\n // We want to keep that fragment. But that fragment might use a fragment we remove, and if so,\n // we need to expand that removed fragment. Note that because we're running in\n // dependency order, we know that `newFragments` will have every fragments that should be\n // kept/not expanded.\n const updatedSelectionSet = fragment.selectionSet.expandFragments(newFragments);\n // Note that if we did expanded some fragments (the updated selection is not the original one), then the\n // results may not be fully normalized, so we do it to be sure.\n return updatedSelectionSet === fragment.selectionSet\n ? fragment\n : fragment.withUpdatedSelectionSet(updatedSelectionSet.normalize({ parentType: updatedSelectionSet.parentType}));\n } else {\n return undefined;\n }\n });\n }\n\n validate(variableDefinitions: VariableDefinitions) {\n for (const fragment of this.fragments.values()) {\n fragment.selectionSet.validate(variableDefinitions);\n }\n }\n\n toFragmentDefinitionNodes() : FragmentDefinitionNode[] {\n return this.definitions().map(f => f.toFragmentDefinitionNode());\n }\n\n toString(indent?: string) {\n return this.definitions().map(f => f.toString(indent)).join('\\n\\n');\n }\n}\n\n/**\n * Utility class used to handle \"normalizing\" the @defer in an operation.\n *\n * See `Operation.withNormalizedDefer` for details on what we mean by normalizing in\n * this context.\n */\nclass DeferNormalizer {\n private index = 0;\n readonly assignedLabels = new Set();\n readonly deferConditions = new SetMultiMap();\n private readonly usedLabels = new Set();\n\n /**\n * Initializes the \"labeller\" with all the labels used in the provided selections set.\n *\n * @return - whether `selectionSet` has any non-labeled @defer.\n */\n init(selectionSet: SelectionSet): { hasDefers: boolean, hasNonLabelledOrConditionalDefers: boolean } {\n let hasNonLabelledOrConditionalDefers = false;\n let hasDefers = false;\n const stack: Selection[] = selectionSet.selections().concat();\n while (stack.length > 0) {\n const selection = stack.pop()!;\n if (selection.kind === 'FragmentSelection') {\n const deferArgs = selection.element.deferDirectiveArgs();\n if (deferArgs) {\n hasDefers = true;\n if (!deferArgs.label || deferArgs.if !== undefined) {\n hasNonLabelledOrConditionalDefers = true;\n }\n if (deferArgs.label) {\n this.usedLabels.add(deferArgs.label);\n }\n }\n }\n if (selection.selectionSet) {\n selection.selectionSet.selections().forEach((s) => stack.push(s));\n }\n }\n return { hasDefers, hasNonLabelledOrConditionalDefers };\n }\n\n private nextLabel(): string {\n return `qp__${this.index++}`;\n }\n\n newLabel(): string {\n let candidate = this.nextLabel();\n // It's unlikely that auto-generated label would conflict an existing one, but\n // not taking any chances.\n while (this.usedLabels.has(candidate)) {\n candidate = this.nextLabel();\n }\n this.assignedLabels.add(candidate);\n return candidate;\n }\n\n registerCondition(label: string, condition: Variable): void {\n this.deferConditions.add(condition.name, label);\n }\n}\n\nexport enum ContainsResult {\n // Note: enum values are numbers in the end, and 0 means false in JS, so we should keep `NOT_CONTAINED` first\n // so that using the result of `contains` as a boolean works.\n NOT_CONTAINED,\n STRICTLY_CONTAINED,\n EQUAL,\n}\n\nexport type CollectedFieldsInSet = { path: string[], field: FieldSelection }[];\n\nexport class SelectionSet {\n private readonly _keyedSelections: Map;\n private readonly _selections: readonly Selection[];\n\n constructor(\n readonly parentType: CompositeType,\n keyedSelections: Map = new Map(),\n ) {\n this._keyedSelections = keyedSelections;\n this._selections = mapValues(keyedSelections);\n }\n\n /**\n * Takes a selection set and extracts inline fragments into named fragments,\n * reusing generated named fragments when possible.\n */\n minimizeSelectionSet(\n namedFragments: NamedFragments = new NamedFragments(),\n seenSelections: Map = new Map(),\n ): [SelectionSet, NamedFragments] {\n const minimizedSelectionSet = this.lazyMap((selection) => {\n if (selection.kind === 'FragmentSelection' && selection.element.typeCondition && selection.element.appliedDirectives.length === 0\n && selection.selectionSet && selection.selectionSet.isWorthUsing() ) {\n // No proper hash code, so we use a unique enough number that's cheap to\n // compute and handle collisions as necessary.\n const mockHashCode = `on${selection.element.typeCondition}` + selection.selectionSet.selections().length;\n const equivalentSelectionSetCandidates = seenSelections.get(mockHashCode);\n\n if (equivalentSelectionSetCandidates) {\n // See if any candidates have an equivalent selection set, i.e. {x y} and {y x}.\n const match = equivalentSelectionSetCandidates.find(([candidateSet]) => candidateSet.equals(selection.selectionSet!));\n if (match) {\n // If we found a match, we can reuse the fragment (but we still need\n // to create a new FragmentSpread since parent types may differ).\n return new FragmentSpreadSelection(this.parentType, namedFragments, match[1], []);\n }\n }\n\n // No match, so we need to create a new fragment. First, we minimize the\n // selection set before creating the fragment with it.\n const [minimizedSelectionSet] = selection.selectionSet.minimizeSelectionSet(namedFragments, seenSelections);\n const updatedEquivalentSelectionSetCandidates = seenSelections.get(mockHashCode); // may have changed after previous statement\n const fragmentDefinition = new NamedFragmentDefinition(\n this.parentType.schema(),\n `_generated_${mockHashCode}_${updatedEquivalentSelectionSetCandidates?.length ?? 0}`,\n selection.element.typeCondition\n ).setSelectionSet(minimizedSelectionSet);\n namedFragments.add(fragmentDefinition);\n\n // Create a new \"hash code\" bucket or add to the existing one.\n if (updatedEquivalentSelectionSetCandidates) {\n updatedEquivalentSelectionSetCandidates.push([selection.selectionSet, fragmentDefinition]);\n } else {\n seenSelections.set(mockHashCode, [[selection.selectionSet, fragmentDefinition]]);\n }\n\n return new FragmentSpreadSelection(this.parentType, namedFragments, fragmentDefinition, []);\n }\n\n if (selection.selectionSet) {\n selection = selection.withUpdatedSelectionSet(selection.selectionSet.minimizeSelectionSet(namedFragments, seenSelections)[0]);\n }\n return selection;\n });\n\n return [minimizedSelectionSet, namedFragments];\n }\n\n selectionsInReverseOrder(): readonly Selection[] {\n const length = this._selections.length;\n const reversed = new Array(length);\n for (let i = 0; i < length; i++) {\n reversed[i] = this._selections[length - i - 1];\n }\n return reversed;\n }\n\n selections(): readonly Selection[] {\n return this._selections;\n }\n\n // Returns whether the selection contains a _non-aliased_ selection of __typename.\n hasTopLevelTypenameField(): boolean {\n return this._keyedSelections.has(typenameFieldName);\n }\n\n withoutTopLevelTypenameField(): SelectionSet {\n if (!this.hasTopLevelTypenameField) {\n return this;\n }\n\n const newKeyedSelections = new Map();\n for (const [key, selection] of this._keyedSelections) {\n if (key !== typenameFieldName) {\n newKeyedSelections.set(key, selection);\n }\n }\n return new SelectionSet(this.parentType, newKeyedSelections);\n }\n\n fieldsInSet(): CollectedFieldsInSet {\n const fields = new Array<{ path: string[], field: FieldSelection }>();\n for (const selection of this.selections()) {\n if (selection.kind === 'FieldSelection') {\n fields.push({ path: [], field: selection });\n } else {\n const condition = selection.element.typeCondition;\n const header = condition ? [`... on ${condition}`] : [];\n for (const { path, field } of selection.selectionSet.fieldsInSet()) {\n fields.push({ path: header.concat(path), field});\n }\n }\n }\n return fields;\n }\n\n fieldsByResponseName(): MultiMap {\n const byResponseName = new MultiMap();\n this.collectFieldsByResponseName(byResponseName);\n return byResponseName;\n }\n\n private collectFieldsByResponseName(collector: MultiMap) {\n for (const selection of this.selections()) {\n if (selection.kind === 'FieldSelection') {\n collector.add(selection.element.responseName(), selection);\n } else {\n selection.selectionSet.collectFieldsByResponseName(collector);\n }\n }\n }\n\n usedVariables(): Variables {\n const collector = new VariableCollector();\n this.collectVariables(collector);\n return collector.variables();\n }\n\n collectVariables(collector: VariableCollector) {\n for (const selection of this.selections()) {\n selection.collectVariables(collector);\n }\n }\n\n collectUsedFragmentNames(collector: Map) {\n for (const selection of this.selections()) {\n selection.collectUsedFragmentNames(collector);\n }\n }\n\n optimize(fragments?: NamedFragments): SelectionSet {\n if (!fragments || fragments.isEmpty()) {\n return this;\n }\n\n // Calling optimizeSelections() will not match a fragment that would have expanded at top-level.\n // That is, say we have the selection set `{ x y }` for a top-level `Query`, and we have a fragment\n // ```\n // fragment F on Query {\n // x\n // y\n // }\n // ```\n // then calling `this.optimizeSelections(fragments)` would only apply check if F apply to `x` and\n // then `y`.\n //\n // To ensure the fragment match in this case, we \"wrap\" the selection into a trivial fragment of\n // the selection parent, so in the example above, we create selection `... on Query { x y}`.\n // With that, `optimizeSelections` will correctly match on the `on Query` fragment; after which\n // we can unpack the final result.\n const wrapped = new InlineFragmentSelection(new FragmentElement(this.parentType, this.parentType), this);\n const validator = FieldsConflictMultiBranchValidator.ofInitial(FieldsConflictValidator.build(this));\n const optimized = wrapped.optimize(fragments, validator);\n\n // Now, it's possible we matched a full fragment, in which case `optimized` will be just the named fragment,\n // and in that case we return a singleton selection with just that. Otherwise, it's our wrapping inline fragment\n // with the sub-selections optimized, and we just return that subselection.\n return optimized instanceof FragmentSpreadSelection\n ? selectionSetOf(this.parentType, optimized)\n : optimized.selectionSet;\n }\n\n // Tries to match fragments inside each selections of this selection set, and this recursively. However, note that this\n // may not match fragments that would apply at top-level, so you should usually use `optimize` instead (this exists mostly\n // for the recursion).\n optimizeSelections(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): SelectionSet {\n return this.lazyMap((selection) => selection.optimize(fragments, validator));\n }\n\n expandFragments(updatedFragments?: NamedFragments): SelectionSet {\n return this.lazyMap((selection) => selection.expandFragments(updatedFragments));\n }\n\n /**\n * Applies some normalization rules to this selection set in the context of the provided `parentType`.\n *\n * Normalization mostly removes unecessary/redundant inline fragments, so that for instance, with\n * schema:\n * ```graphql\n * type Query {\n * t1: T1\n * i: I\n * }\n *\n * interface I {\n * id: ID!\n * }\n *\n * type T1 implements I {\n * id: ID!\n * v1: Int\n * }\n *\n * type T2 implements I {\n * id: ID!\n * v2: Int\n * }\n * ```\n *\n * ```\n * normalize({\n * t1 {\n * ... on I {\n * id\n * }\n * }\n * i {\n * ... on T1 {\n * ... on I {\n * ... on T1 {\n * v1\n * }\n * ... on T2 {\n * v2\n * }\n * }\n * }\n * ... on T2 {\n * ... on I {\n * id\n * }\n * }\n * }\n * }) === {\n * t1 {\n * id\n * }\n * i {\n * ... on T1 {\n * v1\n * }\n * ... on T2 {\n * id\n * }\n * }\n * }\n * ```\n *\n * For this operation to be valid (to not throw), `parentType` must be such that every field selection in\n * this selection set is such that the field parent type intersects `parentType` (there is no limitation\n * on the fragment selections, though any fragment selections whose condition do not intersects `parentType`\n * will be discarded). Note that `this.normalize(this.parentType)` is always valid and useful, but it is\n * also possible to pass a `parentType` that is more \"restrictive\" than the selection current parent type\n * (as long as the top-level fields of this selection set can be rebased on that type).\n *\n * Passing the option `recursive == false` makes the normalization only apply at the top-level, removing\n * any unecessary top-level inline fragments, possibly multiple layers of them, but we never recurse\n * inside the sub-selection of an selection that is not removed by the normalization.\n */\n normalize({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): SelectionSet {\n return this.lazyMap((selection) => selection.normalize({ parentType, recursive }), { parentType });\n }\n\n /**\n * Returns the result of mapping the provided `mapper` to all the selection of this selection set.\n *\n * This method assumes that the `mapper` may often return it's argument directly, meaning that only\n * a small subset of selection actually need any modifications, and will avoid re-creating new\n * objects when that is the case. This does mean that the resulting selection set may be `this`\n * directly, or may alias some of the sub-selection in `this`.\n */\n lazyMap(\n mapper: (selection: Selection) => Selection | readonly Selection[] | SelectionSet | undefined,\n options?: {\n parentType?: CompositeType,\n }\n ): SelectionSet {\n const selections = this.selections();\n let updatedSelections: SelectionSetUpdates | undefined = undefined;\n for (let i = 0; i < selections.length; i++) {\n const selection = selections[i];\n const updated = mapper(selection);\n if (updated !== selection && !updatedSelections) {\n updatedSelections = new SelectionSetUpdates();\n for (let j = 0; j < i; j++) {\n updatedSelections.add(selections[j]);\n }\n }\n if (!!updated && updatedSelections) {\n updatedSelections.add(updated);\n }\n }\n if (!updatedSelections) {\n return this;\n }\n return updatedSelections.toSelectionSet(options?.parentType ?? this.parentType);\n }\n\n withoutDefer(labelsToRemove?: Set): SelectionSet {\n return this.lazyMap((selection) => selection.withoutDefer(labelsToRemove));\n }\n\n withNormalizedDefer(normalizer: DeferNormalizer): SelectionSet {\n return this.lazyMap((selection) => selection.withNormalizedDefer(normalizer));\n }\n\n hasDefer(): boolean {\n return this.selections().some((s) => s.hasDefer());\n }\n\n /**\n * Returns the selection set resulting from filtering out any of the top-level selection that does not match the provided predicate.\n *\n * Please that this method does not recurse within sub-selections.\n */\n filter(predicate: (selection: Selection) => boolean): SelectionSet {\n return this.lazyMap((selection) => predicate(selection) ? selection : undefined);\n }\n\n /**\n * Returns the selection set resulting from \"recursively\" filtering any selection that does not match the provided predicate.\n * This method calls `predicate` on every selection of the selection set, not just top-level ones, and apply a \"depth-first\"\n * strategy, meaning that when the predicate is call on a given selection, the it is guaranteed that filtering has happened\n * on all the selections of its sub-selection.\n */\n filterRecursiveDepthFirst(predicate: (selection: Selection) => boolean): SelectionSet {\n return this.lazyMap((selection) => selection.filterRecursiveDepthFirst(predicate));\n }\n\n withoutEmptyBranches(): SelectionSet | undefined {\n const updated = this.filterRecursiveDepthFirst((selection) => selection.selectionSet?.isEmpty() !== true);\n return updated.isEmpty() ? undefined : updated;\n }\n\n rebaseOn({\n parentType,\n fragments,\n errorIfCannotRebase,\n }: {\n parentType: CompositeType,\n fragments: NamedFragments | undefined\n errorIfCannotRebase: boolean,\n }): SelectionSet {\n if (this.parentType === parentType) {\n return this;\n }\n\n const newSelections = new Map();\n for (const selection of this.selections()) {\n const rebasedSelection = selection.rebaseOn({ parentType, fragments, errorIfCannotRebase });\n if (rebasedSelection) {\n newSelections.set(selection.key(), rebasedSelection);\n }\n }\n\n return new SelectionSet(parentType, newSelections);\n }\n\n equals(that: SelectionSet): boolean {\n if (this === that) {\n return true;\n }\n\n if (this._selections.length !== that._selections.length) {\n return false;\n }\n\n for (const [key, thisSelection] of this._keyedSelections) {\n const thatSelection = that._keyedSelections.get(key);\n if (!thatSelection || !thisSelection.equals(thatSelection)) {\n return false;\n }\n }\n return true;\n }\n\n contains(that: SelectionSet, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n const ignoreMissingTypename = options?.ignoreMissingTypename ?? false;\n if (that._selections.length > this._selections.length) {\n // If `that` has more selections but we're ignoring missing __typename, then in the case where\n // `that` has a __typename but `this` does not, then we need the length of `that` to be at\n // least 2 more than that of `this` to be able to conclude there is no contains.\n if (!ignoreMissingTypename || that._selections.length > this._selections.length + 1 || this.hasTopLevelTypenameField() || !that.hasTopLevelTypenameField()) {\n return ContainsResult.NOT_CONTAINED;\n }\n }\n\n let isEqual = true;\n let didIgnoreTypename = false;\n for (const [key, thatSelection] of that._keyedSelections) {\n if (key === typenameFieldName && ignoreMissingTypename) {\n if (!this._keyedSelections.has(typenameFieldName)) {\n didIgnoreTypename = true;\n }\n continue;\n }\n\n const thisSelection = this._keyedSelections.get(key);\n const selectionResult = thisSelection?.contains(thatSelection, options);\n if (selectionResult === undefined || selectionResult === ContainsResult.NOT_CONTAINED) {\n return ContainsResult.NOT_CONTAINED;\n }\n isEqual &&= selectionResult === ContainsResult.EQUAL;\n }\n\n return isEqual && that._selections.length === (this._selections.length + (didIgnoreTypename ? 1 : 0))\n ? ContainsResult.EQUAL\n : ContainsResult.STRICTLY_CONTAINED;\n }\n\n containsTopLevelField(field: Field): boolean {\n const selection = this._keyedSelections.get(field.key());\n return !!selection && selection.element.equals(field);\n }\n\n /**\n * Returns a selection set that correspond to this selection set but where any of the selections in the\n * provided selection set have been remove.\n */\n minus(that: SelectionSet): SelectionSet {\n const updated = new SelectionSetUpdates();\n\n for (const [key, thisSelection] of this._keyedSelections) {\n const thatSelection = that._keyedSelections.get(key);\n if (thatSelection) {\n const remainder = thisSelection.minus(thatSelection);\n if (remainder) {\n updated.add(remainder);\n }\n } else {\n updated.add(thisSelection);\n }\n }\n return updated.toSelectionSet(this.parentType);\n }\n\n intersectionWith(that: SelectionSet): SelectionSet {\n if (this.isEmpty()) {\n return this;\n }\n if (that.isEmpty()) {\n return that;\n }\n\n const intersection = new SelectionSetUpdates();\n for (const [key, thisSelection] of this._keyedSelections) {\n const thatSelection = that._keyedSelections.get(key);\n if (thatSelection) {\n const selection = thisSelection.intersectionWith(thatSelection);\n if (selection) {\n intersection.add(selection);\n }\n }\n }\n\n return intersection.toSelectionSet(this.parentType);\n }\n\n canRebaseOn(parentTypeToTest: CompositeType): boolean {\n return this.selections().every((selection) => selection.canAddTo(parentTypeToTest));\n }\n\n validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean = false) {\n validate(!this.isEmpty(), () => `Invalid empty selection set`);\n for (const selection of this.selections()) {\n selection.validate(variableDefinitions, validateContextualArgs);\n }\n }\n\n isEmpty(): boolean {\n return this._selections.length === 0;\n }\n\n toSelectionSetNode(): SelectionSetNode {\n // In theory, for valid operations, we shouldn't have empty selection sets (field selections whose type is a leaf will\n // have an undefined selection set, not an empty one). We do \"abuse\" this a bit however when create query \"witness\"\n // during composition validation where, to make it easier for users to locate the issue, we want the created witness\n // query to stop where the validation problem lies, even if we're not on a leaf type. To make this look nice and\n // explicit, we handle that case by create a fake selection set that just contains an ellipsis, indicate there is\n // supposed to be more but we elided it for clarity. And yes, the whole thing is a bit of a hack, albeit a convenient\n // one.\n if (this.isEmpty()) {\n return {\n kind: Kind.SELECTION_SET,\n selections: [{\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: '...',\n },\n }]\n }\n }\n return {\n kind: Kind.SELECTION_SET,\n selections: Array.from(this.selectionsInPrintOrder(), s => s.toSelectionNode())\n }\n }\n\n private selectionsInPrintOrder(): readonly Selection[] {\n // By default, we will print the selection the order in which things were added to it.\n // If __typename is selected however, we put it first. It's a detail but as __typename is a bit special it looks better,\n // and it happens to mimic prior behavior on the query plan side so it saves us from changing tests for no good reasons.\n const isPlainTypenameSelection = (s: Selection) => s.kind === 'FieldSelection' && s.isPlainTypenameField();\n const typenameSelection = this._selections.find((s) => isPlainTypenameSelection(s));\n if (typenameSelection) {\n return [typenameSelection].concat(this.selections().filter(s => !isPlainTypenameSelection(s)));\n } else {\n return this._selections;\n }\n }\n\n toOperationPaths(): OperationPath[] {\n return this.toOperationPathsInternal([]);\n }\n\n private toOperationPathsInternal(parentPaths: OperationPath[]): OperationPath[] {\n return this.selections().flatMap((selection) => {\n const updatedPaths = parentPaths.map(path => path.concat(selection.element));\n return selection.selectionSet\n ? selection.selectionSet.toOperationPathsInternal(updatedPaths)\n : updatedPaths;\n });\n }\n\n /**\n * Calls the provided callback on all the \"elements\" (including nested ones) of this selection set.\n * The order of traversal is that of the selection set.\n */\n forEachElement(callback: (elt: OperationElement) => void) {\n // Note: we reverse to preserve ordering (since the stack re-reverse).\n const stack = this.selectionsInReverseOrder().concat();\n while (stack.length > 0) {\n const selection = stack.pop()!;\n callback(selection.element);\n selection.selectionSet?.selectionsInReverseOrder().forEach((s) => stack.push(s));\n }\n }\n\n /**\n * Returns true if any of the element in this selection set matches the provided predicate.\n */\n some(predicate: (elt: OperationElement) => boolean): boolean {\n for (const selection of this.selections()) {\n if (predicate(selection.element) || (selection.selectionSet && selection.selectionSet.some(predicate))) {\n return true;\n }\n }\n return false;\n }\n\n toOperationString(\n rootKind: SchemaRootKind,\n variableDefinitions: VariableDefinitions,\n fragments: NamedFragments | undefined,\n operationName?: string,\n directives?: readonly Directive[],\n expandFragments: boolean = false,\n prettyPrint: boolean = true\n ): string {\n const indent = prettyPrint ? '' : undefined;\n const fragmentsDefinitions = !expandFragments && fragments && !fragments.isEmpty()\n ? fragments.toString(indent) + \"\\n\\n\"\n : \"\";\n if (rootKind == \"query\" && !operationName && variableDefinitions.isEmpty()) {\n return fragmentsDefinitions + this.toString(expandFragments, true, indent);\n }\n const nameAndVariables = operationName\n ? \" \" + (operationName + (variableDefinitions.isEmpty() ? \"\" : variableDefinitions.toString()))\n : (variableDefinitions.isEmpty() ? \"\" : \" \" + variableDefinitions.toString());\n const directives_str = directivesToString(directives);\n return fragmentsDefinitions + rootKind + nameAndVariables + directives_str + \" \" + this.toString(expandFragments, true, indent);\n }\n\n /**\n * The string representation of this selection set.\n *\n * By default, this expand all fragments so that the returned string is self-contained. You can\n * use the `expandFragments` boolean to force fragments to not be expanded but the fragments\n * definitions will _not_ be included in the returned string. If you want a representation of\n * this selection set with fragments definitions included, use `toOperationString` instead.\n */\n toString(\n expandFragments: boolean = true,\n includeExternalBrackets: boolean = true,\n indent?: string\n ): string {\n if (this.isEmpty()) {\n return '{}';\n }\n\n if (indent === undefined) {\n const selectionsToString = this.selections().map(s => s.toString(expandFragments)).join(' ');\n return includeExternalBrackets ? '{ ' + selectionsToString + ' }' : selectionsToString;\n } else {\n const selectionIndent = includeExternalBrackets ? indent + \" \" : indent;\n const selectionsToString = this.selections().map(s => s.toString(expandFragments, selectionIndent)).join('\\n');\n return includeExternalBrackets\n ? '{\\n' + selectionsToString + '\\n' + indent + '}'\n : selectionsToString;\n }\n }\n\n // `isWorthUsing` method is used to determine whether we want to factor out\n // given selection set into a named fragment so it can be reused across the query.\n // Currently, it is used in these cases:\n // 1) to reuse existing named fragments in subgraph queries (when reuseQueryFragments is on)\n // 2) to factor selection sets into named fragments (when generateQueryFragments is on).\n //\n // When we rebase named fragments on a subgraph schema, only a subset of what the fragment handles may belong\n // to that particular subgraph. And there are a few sub-cases where that subset is such that we basically need or\n // want to consider to ignore the fragment for that subgraph, and that is when:\n // 1. the subset that apply is actually empty. The fragment wouldn't be valid in this case anyway.\n // 2. the subset is a single leaf field: in that case, using the one field directly is just shorter than using\n // the fragment, so we consider the fragment don't really apply to that subgraph. Technically, using the\n // fragment could still be of value if the fragment name is a lot smaller than the one field name, but it's\n // enough of a niche case that we ignore it. Note in particular that one sub-case of this rule that is likely\n // to be common is when the subset ends up being just `__typename`: this would basically mean the fragment\n // don't really apply to the subgraph, and that this will ensure this is the case.\n isWorthUsing(): boolean {\n const selections = this.selections();\n if (selections.length === 0) {\n return false;\n }\n if (selections.length === 1) {\n const s = selections[0];\n return !(s.kind === 'FieldSelection' && s.element.isLeafField());\n }\n return true;\n }\n}\n\ntype PathBasedUpdate = { path: OperationPath, selections?: Selection | SelectionSet | readonly Selection[] };\ntype SelectionUpdate = Selection | PathBasedUpdate;\n\n/**\n * Accumulates updates in order to build a new `SelectionSet`.\n */\nexport class SelectionSetUpdates {\n private readonly keyedUpdates = new MultiMap;\n\n isEmpty(): boolean {\n return this.keyedUpdates.size === 0;\n }\n\n /**\n * Adds the provided selections to those updates.\n */\n add(selections: Selection | SelectionSet | readonly Selection[]): SelectionSetUpdates {\n addToKeyedUpdates(this.keyedUpdates, selections);\n return this;\n }\n\n /**\n * Adds a path, and optional some selections following that path, to those updates.\n *\n * The final selections are optional (for instance, if `path` ends on a leaf field, then no followup selections would\n * make sense), but when some are provided, uncesssary fragments will be automaticaly removed at the junction between\n * the path and those final selections. For instance, suppose that we have:\n * - a `path` argument that is `a::b::c`, where the type of the last field `c` is some object type `C`.\n * - a `selections` argument that is `{ ... on C { d } }`.\n * Then the resulting built selection set will be: `{ a { b { c { d } } }`, and in particular the `... on C` fragment\n * will be eliminated since it is unecesasry (since again, `c` is of type `C`).\n */\n addAtPath(path: OperationPath, selections?: Selection | SelectionSet | readonly Selection[]): SelectionSetUpdates {\n if (path.length === 0) {\n if (selections) {\n addToKeyedUpdates(this.keyedUpdates, selections)\n }\n } else {\n if (path.length === 1 && !selections) {\n const element = path[0];\n if (element.kind === 'Field' && element.isLeafField()) {\n // This is a somewhat common case (when we deal with @key \"conditions\", those are often trivial and end up here),\n // so we unpack it directly instead of creating unecessary temporary objects (not that we only do it for leaf\n // field; for non-leaf ones, we'd have to create an empty sub-selectionSet, and that may have to get merged\n // with other entries of this `SleectionSetUpdates`, so we wouldn't really save work).\n const selection = selectionOfElement(element);\n this.keyedUpdates.add(selection.key(), selection);\n return this;\n }\n }\n // We store the provided update \"as is\" (we don't convert it to a `Selection` just yet) and process everything\n // when we build the final `SelectionSet`. This is done because multipe different updates can intersect in various\n // ways, and the work to build a `Selection` now could be largely wasted due to followup updates.\n this.keyedUpdates.add(path[0].key(), { path, selections });\n }\n return this;\n }\n\n clone(): SelectionSetUpdates {\n const cloned = new SelectionSetUpdates();\n for (const [key, values] of this.keyedUpdates.entries()) {\n cloned.keyedUpdates.set(key, Array.from(values));\n }\n return cloned;\n }\n\n clear() {\n this.keyedUpdates.clear();\n }\n\n toSelectionSet(parentType: CompositeType, fragments?: NamedFragments): SelectionSet {\n return makeSelectionSet(parentType, this.keyedUpdates, fragments);\n }\n\n toString() {\n return '{\\n'\n + [...this.keyedUpdates.entries()].map(([k, updates]) => {\n const updStr = updates.map((upd) =>\n upd instanceof AbstractSelection\n ? upd.toString()\n : `${upd.path} -> ${upd.selections}`\n );\n return ` - ${k}: ${updStr}`;\n }).join('\\n')\n +'\\n\\}'\n }\n}\n\nfunction addToKeyedUpdates(keyedUpdates: MultiMap, selections: Selection | SelectionSet | readonly Selection[]) {\n if (selections instanceof AbstractSelection) {\n addOneToKeyedUpdates(keyedUpdates, selections);\n } else {\n const toAdd = selections instanceof SelectionSet ? selections.selections() : selections;\n for (const selection of toAdd) {\n addOneToKeyedUpdates(keyedUpdates, selection);\n }\n }\n}\n\nfunction addOneToKeyedUpdates(keyedUpdates: MultiMap, selection: Selection) {\n // Keys are such that for a named fragment, only a selection of the same fragment with same directives can have the same key.\n // But if we end up with multiple spread of the same named fragment, we don't want to try to \"merge\" the sub-selections of\n // each, as it would expand the fragments and make things harder. So we essentially special case spreads to avoid having\n // to deal with multiple time the exact same one.\n if (selection instanceof FragmentSpreadSelection) {\n keyedUpdates.set(selection.key(), [selection]);\n } else {\n keyedUpdates.add(selection.key(), selection);\n }\n}\n\nfunction maybeRebaseOnSchema(toRebase: CompositeType, schema: Schema): CompositeType {\n if (toRebase.schema() === schema) {\n return toRebase;\n }\n\n const rebased = schema.type(toRebase.name);\n assert(rebased && isCompositeType(rebased), () => `Expected ${toRebase} to exists and be composite in the rebased schema, but got ${rebased?.kind}`);\n return rebased;\n}\n\nfunction isUnecessaryFragment(parentType: CompositeType, fragment: FragmentSelection): boolean {\n return fragment.element.appliedDirectives.length === 0\n && (!fragment.element.typeCondition || isSubtype(maybeRebaseOnSchema(fragment.element.typeCondition, parentType.schema()), parentType));\n}\n\nfunction withUnecessaryFragmentsRemoved(\n parentType: CompositeType,\n selections: Selection | SelectionSet | readonly Selection[],\n): Selection | readonly Selection[] {\n if (selections instanceof AbstractSelection) {\n if (selections.kind !== 'FragmentSelection' || !isUnecessaryFragment(parentType, selections)) {\n return selections;\n }\n return withUnecessaryFragmentsRemoved(parentType, selections.selectionSet);\n }\n\n const toCheck = selections instanceof SelectionSet ? selections.selections() : selections;\n const filtered: Selection[] = [];\n for (const selection of toCheck) {\n if (selection.kind === 'FragmentSelection' && isUnecessaryFragment(parentType, selection)) {\n const subSelections = withUnecessaryFragmentsRemoved(parentType, selection.selectionSet);\n if (subSelections instanceof AbstractSelection) {\n filtered.push(subSelections);\n } else {\n for (const subSelection of subSelections) {\n filtered.push(subSelection);\n }\n }\n } else {\n filtered.push(selection);\n }\n }\n return filtered;\n}\n\nfunction makeSelection(parentType: CompositeType, updates: SelectionUpdate[], fragments?: NamedFragments): Selection {\n assert(updates.length > 0, 'Should not be called without any updates');\n const first = updates[0];\n\n // Optimize for the simple case of a single selection, as we don't have to do anything complex to merge the sub-selections.\n if (updates.length === 1 && first instanceof AbstractSelection) {\n return first.rebaseOnOrError({ parentType, fragments });\n }\n\n const element = updateElement(first).rebaseOnOrError(parentType);\n const subSelectionParentType = element.kind === 'Field' ? element.baseType() : element.castedType();\n if (!isCompositeType(subSelectionParentType)) {\n // This is a leaf, so all updates should correspond ot the same field and we just use the first.\n return selectionOfElement(element);\n }\n\n const subSelectionKeyedUpdates = new MultiMap();\n for (const update of updates) {\n if (update instanceof AbstractSelection) {\n if (update.selectionSet) {\n addToKeyedUpdates(subSelectionKeyedUpdates, update.selectionSet);\n }\n } else {\n addSubpathToKeyUpdates(subSelectionKeyedUpdates, subSelectionParentType, update);\n }\n }\n return selectionOfElement(element, makeSelectionSet(subSelectionParentType, subSelectionKeyedUpdates, fragments));\n}\n\nfunction updateElement(update: SelectionUpdate): OperationElement {\n return update instanceof AbstractSelection ? update.element : update.path[0];\n}\n\nfunction addSubpathToKeyUpdates(\n keyedUpdates: MultiMap,\n subSelectionParentType: CompositeType,\n pathUpdate: PathBasedUpdate\n) {\n if (pathUpdate.path.length === 1) {\n if (!pathUpdate.selections) {\n return;\n }\n addToKeyedUpdates(keyedUpdates, withUnecessaryFragmentsRemoved(subSelectionParentType, pathUpdate.selections!));\n } else {\n keyedUpdates.add(pathUpdate.path[1].key(), { path: pathUpdate.path.slice(1), selections: pathUpdate.selections });\n }\n}\n\nfunction makeSelectionSet(parentType: CompositeType, keyedUpdates: MultiMap, fragments?: NamedFragments): SelectionSet {\n const selections = new Map();\n for (const [key, updates] of keyedUpdates.entries()) {\n selections.set(key, makeSelection(parentType, updates, fragments));\n }\n return new SelectionSet(parentType, selections);\n}\n\n/**\n * A simple wrapper over a `SelectionSetUpdates` that allows to conveniently build a selection set, then add some more updates and build it again, etc...\n */\nexport class MutableSelectionSet {\n private computed: SelectionSet | undefined;\n private _memoized: TMemoizedValue | undefined;\n\n private constructor(\n readonly parentType: CompositeType,\n private readonly _updates: SelectionSetUpdates,\n private readonly memoizer: (s: SelectionSet) => TMemoizedValue,\n ) {\n }\n\n static empty(parentType: CompositeType): MutableSelectionSet {\n return this.emptyWithMemoized(parentType, () => ({}));\n }\n\n static emptyWithMemoized(\n parentType: CompositeType,\n memoizer: (s: SelectionSet) => TMemoizedValue,\n ): MutableSelectionSet {\n return new MutableSelectionSet( parentType, new SelectionSetUpdates(), memoizer);\n }\n\n\n static of(selectionSet: SelectionSet): MutableSelectionSet {\n return this.ofWithMemoized(selectionSet, () => ({}));\n }\n\n static ofWithMemoized(\n selectionSet: SelectionSet,\n memoizer: (s: SelectionSet) => TMemoizedValue,\n ): MutableSelectionSet {\n const s = new MutableSelectionSet(selectionSet.parentType, new SelectionSetUpdates(), memoizer);\n s._updates.add(selectionSet);\n // Avoids needing to re-compute `selectionSet` until there is new updates.\n s.computed = selectionSet;\n return s;\n }\n\n isEmpty(): boolean {\n return this._updates.isEmpty();\n }\n\n get(): SelectionSet {\n if (!this.computed) {\n this.computed = this._updates.toSelectionSet(this.parentType);\n // But now, we clear the updates an re-add the selections from computed. Of course, we could also\n // not clear updates at all, but that would mean that the computations going on for merging selections\n // would be re-done every time and that would be a lot less efficient.\n this._updates.clear();\n this._updates.add(this.computed);\n }\n return this.computed;\n }\n\n updates(): SelectionSetUpdates {\n // We clear our cached version since we're about to add more updates and so this cached version won't\n // represent the mutable set properly anymore.\n this.computed = undefined;\n this._memoized = undefined;\n return this._updates;\n }\n\n clone(): MutableSelectionSet {\n const cloned = new MutableSelectionSet(this.parentType, this._updates.clone(), this.memoizer);\n // Until we have more updates, we can share the computed values (if any).\n cloned.computed = this.computed;\n cloned._memoized = this._memoized;\n return cloned;\n }\n\n rebaseOn(parentType: CompositeType): MutableSelectionSet {\n const rebased = new MutableSelectionSet(parentType, new SelectionSetUpdates(), this.memoizer);\n // Note that updates are always rebased on their parentType, so we won't have to call `rebaseOn` manually on `this.get()`.\n rebased._updates.add(this.get());\n return rebased;\n }\n\n memoized(): TMemoizedValue {\n if (!this._memoized) {\n this._memoized = this.memoizer(this.get());\n }\n return this._memoized;\n }\n\n toString() {\n return this.get().toString();\n }\n}\n\nexport function allFieldDefinitionsInSelectionSet(selection: SelectionSet): FieldDefinition[] {\n const stack = Array.from(selection.selections());\n const allFields: FieldDefinition[] = [];\n while (stack.length > 0) {\n const selection = stack.pop()!;\n if (selection.kind === 'FieldSelection') {\n allFields.push(selection.element.definition);\n }\n if (selection.selectionSet) {\n stack.push(...selection.selectionSet.selections());\n }\n }\n return allFields;\n}\n\nexport function selectionSetOf(parentType: CompositeType, selection: Selection): SelectionSet {\n const map = new Map()\n map.set(selection.key(), selection);\n return new SelectionSet(parentType, map);\n}\n\nexport function selectionSetOfElement(element: OperationElement, subSelection?: SelectionSet): SelectionSet {\n return selectionSetOf(element.parentType, selectionOfElement(element, subSelection));\n}\n\nexport function selectionOfElement(element: OperationElement, subSelection?: SelectionSet): Selection {\n // TODO: validate that the subSelection is ok for the element\n return element.kind === 'Field' ? new FieldSelection(element, subSelection) : new InlineFragmentSelection(element, subSelection!);\n}\n\nexport type Selection = FieldSelection | FragmentSelection;\nabstract class AbstractSelection> {\n constructor(\n readonly element: TElement,\n ) {\n // TODO: we should do validate the type of the selection set matches the element.\n }\n\n abstract get selectionSet(): SelectionSet | TIsLeaf;\n\n protected abstract us(): TOwnType;\n\n abstract key(): string;\n\n abstract optimize(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): Selection;\n\n abstract toSelectionNode(): SelectionNode;\n\n abstract validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean): void;\n\n abstract rebaseOn(args: { parentType: CompositeType, fragments: NamedFragments | undefined, errorIfCannotRebase: boolean}): TOwnType | undefined;\n\n rebaseOnOrError({ parentType, fragments }: { parentType: CompositeType, fragments: NamedFragments | undefined }): TOwnType {\n return this.rebaseOn({ parentType, fragments, errorIfCannotRebase: true})!;\n }\n\n get parentType(): CompositeType {\n return this.element.parentType;\n }\n\n isTypenameField(): boolean {\n // Overridden where appropriate\n return false;\n }\n\n collectVariables(collector: VariableCollector) {\n this.element.collectVariables(collector);\n this.selectionSet?.collectVariables(collector)\n }\n\n collectUsedFragmentNames(collector: Map) {\n this.selectionSet?.collectUsedFragmentNames(collector);\n }\n\n abstract withUpdatedComponents(element: TElement, selectionSet: SelectionSet | TIsLeaf): TOwnType;\n\n withUpdatedSelectionSet(selectionSet: SelectionSet | TIsLeaf): TOwnType {\n return this.withUpdatedComponents(this.element, selectionSet);\n }\n\n withUpdatedElement(element: TElement): TOwnType {\n return this.withUpdatedComponents(element, this.selectionSet);\n }\n\n mapToSelectionSet(mapper: (s: SelectionSet) => SelectionSet): TOwnType {\n if (!this.selectionSet) {\n return this.us();\n }\n\n const updatedSelectionSet = mapper(this.selectionSet);\n return updatedSelectionSet === this.selectionSet\n ? this.us()\n : this.withUpdatedSelectionSet(updatedSelectionSet);\n }\n\n abstract withoutDefer(labelsToRemove?: Set): TOwnType | SelectionSet;\n\n abstract withNormalizedDefer(normalizer: DeferNormalizer): TOwnType | SelectionSet;\n\n abstract hasDefer(): boolean;\n\n abstract expandFragments(updatedFragments: NamedFragments | undefined): TOwnType | readonly Selection[];\n\n abstract normalize(args: { parentType: CompositeType, recursive? : boolean }): TOwnType | SelectionSet | undefined;\n\n isFragmentSpread(): boolean {\n return false;\n }\n\n minus(that: Selection): TOwnType | undefined {\n // If there is a subset, then we compute the diff of the subset and add that (if not empty).\n // Otherwise, we have no diff.\n if (this.selectionSet && that.selectionSet) {\n const updatedSubSelectionSet = this.selectionSet.minus(that.selectionSet);\n if (!updatedSubSelectionSet.isEmpty()) {\n return this.withUpdatedSelectionSet(updatedSubSelectionSet);\n }\n }\n return undefined;\n }\n\n intersectionWith(that: Selection): TOwnType | undefined {\n // If there is a subset, then we compute the intersection add that (if not empty).\n // Otherwise, the intersection is this element.\n if (this.selectionSet && that.selectionSet) {\n const subSelectionSetIntersection = this.selectionSet.intersectionWith(that.selectionSet);\n if (subSelectionSetIntersection.isEmpty()) {\n return undefined;\n } else {\n return this.withUpdatedSelectionSet(subSelectionSetIntersection);\n }\n } else {\n return this.us();\n }\n }\n\n protected tryOptimizeSubselectionWithFragments({\n parentType,\n subSelection,\n fragments,\n validator,\n canUseFullMatchingFragment,\n }: {\n parentType: CompositeType,\n subSelection: SelectionSet,\n fragments: NamedFragments,\n validator: FieldsConflictMultiBranchValidator,\n canUseFullMatchingFragment: (match: NamedFragmentDefinition) => boolean,\n }): SelectionSet | NamedFragmentDefinition {\n // We limit to fragments whose selection could be applied \"directly\" at `parentType`, meaning without taking the fragment condition\n // into account. The idea being that if the fragment condition would be needed inside `parentType`, then that condition will not\n // have been \"normalized away\" and so we want for this very call to be called on the fragment whose type _is_ the fragment condition (at\n // which point, this `maybeApplyingDirectlyAtType` method will apply.\n // Also note that this is because we have this restriction that calling `expandedSelectionSetAtType` is ok.\n const candidates = fragments.maybeApplyingDirectlyAtType(parentType);\n if (candidates.length === 0) {\n return subSelection;\n }\n\n // First, we check which of the candidates do apply inside `subSelection`, if any.\n // If we find a candidate that applies to the whole `subSelection`, then we stop and only return\n // that one candidate. Otherwise, we cumulate in `applyingFragments` the list of fragments that\n // applies to a subset of `subSelection`.\n const applyingFragments: { fragment: NamedFragmentDefinition, atType: FragmentRestrictionAtType }[] = [];\n for (const candidate of candidates) {\n const atType = candidate.expandedSelectionSetAtType(parentType);\n // It's possible that while the fragment technically applies at `parentType`, it's \"rebasing\" on\n // `parentType` is empty, or contains only `__typename`. For instance, suppose we have\n // a union `U = A | B | C`, and then a fragment:\n // ```graphql\n // fragment F on U {\n // ... on A {\n // x\n // }\n // ... on b {\n // y\n // }\n // }\n // ```\n // It is then possible to apply `F` when the parent type is `C`, but this ends up selecting\n // nothing at all.\n //\n // Using `F` in those cases is, while not 100% incorrect, at least not productive, and so we\n // skip it that case. This is essentially an optimisation.\n if (atType.selectionSet.isEmpty() || (atType.selectionSet.selections().length === 1 && atType.selectionSet.selections()[0].isTypenameField())) {\n continue;\n }\n\n // As we check inclusion, we ignore the case where the fragment queries __typename but the subSelection does not.\n // The rational is that querying `__typename` unecessarily is mostly harmless (it always works and it's super cheap)\n // so we don't want to not use a fragment just to save querying a `__typename` in a few cases. But the underlying\n // context of why this matters is that the query planner always requests __typename for abstract type, and will do\n // so in fragments too, but we can have a field that _does_ return an abstract type within a fragment, but that\n // _does not_ end up returning an abstract type when applied in a \"more specific\" context (think a fragment on\n // an interface I1 where a inside field returns another interface I2, but applied in the context of a implementation\n // type of I1 where that particular field returns an implementation of I2 rather than I2 directly; we would have\n // added __typename to the fragment (because it's all interfaces), but the selection itself, which only deals\n // with object type, may not have __typename requested; using the fragment might still be a good idea, and\n // querying __typename needlessly is a very small price to pay for that).\n const res = subSelection.contains(atType.selectionSet, { ignoreMissingTypename: true });\n\n if (res === ContainsResult.EQUAL) {\n if (canUseFullMatchingFragment(candidate)) {\n if (!validator.checkCanReuseFragmentAndTrackIt(atType)) {\n // We cannot use it at all, so no point in adding to `applyingFragments`.\n continue;\n }\n return candidate;\n }\n // If we're not going to replace the full thing, then same reasoning a below.\n if (candidate.appliedDirectives.length === 0) {\n applyingFragments.push({ fragment: candidate, atType});\n }\n // Note that if a fragment applies to only a subset of the subSelection, then we really only can use\n // it if that fragment is defined _without_ directives.\n } else if (res === ContainsResult.STRICTLY_CONTAINED && candidate.appliedDirectives.length === 0) {\n applyingFragments.push({ fragment: candidate, atType });\n }\n }\n\n if (applyingFragments.length === 0) {\n return subSelection;\n }\n\n // We have found the list of fragments that applies to some subset of `subSelection`. In general, we\n // want to now produce the selection set with spread for those fragments plus any selection that is not\n // covered by any of the fragments. For instance, suppose that `subselection` is `{ a b c d e }`\n // and we have found that `fragment F1 on X { a b c }` and `fragment F2 on X { c d }` applies, then\n // we will generate `{ ...F1 ...F2 e }`.\n //\n // In that example, `c` is covered by both fragments. And this is fine in this example as it is\n // worth using both fragments in general. A special case of this however is if a fragment is entirely\n // included into another. That is, consider that we now have `fragment F1 on X { a ...F2 }` and\n // `fragment F2 on X { b c }`. In that case, the code above would still match both `F1 and `F2`,\n // but as `F1` includes `F2` already, we really want to only use `F1`. So in practice, we filter\n // away any fragment spread that is known to be included in another one that applies.\n //\n // TODO: note that the logic used for this is theoretically a bit sub-optimial. That is, we only\n // check if one of the fragment happens to directly include a spread for another fragment at\n // top-level as in the example above. We do this because it is cheap to check and is likely the\n // most common case of this kind of inclusion. But in theory, we would have\n // `fragment F1 on X { a b c }` and `fragment F2 on X { b c }`, in which case `F2` is still\n // included in `F1`, but we'd have to work harder to figure this out and it's unclear it's\n // a good tradeoff. And while you could argue that it's on the user to define its fragments\n // a bit more optimally, it's actually a tad more complex because we're looking at fragments\n // in a particular context/parent type. Consider an interface `I` and:\n // ```graphql\n // fragment F3 on I {\n // ... on X {\n // a\n // }\n // ... on Y {\n // b\n // c\n // }\n // }\n //\n // fragment F4 on I {\n // ... on Y {\n // c\n // }\n // ... on Z {\n // d\n // }\n // }\n // ```\n // In that case, neither fragment include the other per-se. But what if we have sub-selection\n // `{ b c }` but where parent type is `Y`. In that case, both `F3` and `F4` applies, and in that\n // particular context, `F3` is fully included in `F4`. Long story short, we'll currently\n // return `{ ...F3 ...F4 }` in that case, but it would be technically better to return only `F4`.\n // However, this feels niche, and it might be costly to verify such inclusions, so not doing it\n // for now.\n const filteredApplyingFragments = applyingFragments.filter(({ fragment }) => !applyingFragments.some((o) => o.fragment.includes(fragment.name)))\n\n let notCoveredByFragments = subSelection;\n const optimized = new SelectionSetUpdates();\n for (const { fragment, atType } of filteredApplyingFragments) {\n if (!validator.checkCanReuseFragmentAndTrackIt(atType)) {\n continue;\n }\n const notCovered = subSelection.minus(atType.selectionSet);\n notCoveredByFragments = notCoveredByFragments.intersectionWith(notCovered);\n optimized.add(new FragmentSpreadSelection(parentType, fragments, fragment, []));\n }\n\n return optimized.add(notCoveredByFragments).toSelectionSet(parentType, fragments)\n }\n}\n\nclass FieldsConflictMultiBranchValidator {\n private usedSpreadTrimmedPartAtLevel?: FieldsConflictValidator[];\n\n constructor(\n private readonly validators: FieldsConflictValidator[],\n ) {\n }\n\n static ofInitial(validator: FieldsConflictValidator): FieldsConflictMultiBranchValidator {\n return new FieldsConflictMultiBranchValidator([validator]);\n }\n\n forField(field: Field): FieldsConflictMultiBranchValidator {\n const forAllBranches = this.validators.flatMap((vs) => vs.forField(field));\n // As this is called on (non-leaf) field from the same query on which we have build the initial validators, we\n // should find at least one validator.\n assert(forAllBranches.length > 0, `Shoud have found at least one validator for ${field}`);\n return new FieldsConflictMultiBranchValidator(forAllBranches);\n }\n\n // At this point, we known that the fragment, restricted to the current parent type, matches a subset of the\n // sub-selection. However, there is still one case we we cannot use it that we need to check, and this is\n // if using the fragment would create a field \"conflict\" (in the sense of the graphQL spec\n // [`FieldsInSetCanMerge`](https://spec.graphql.org/draft/#FieldsInSetCanMerge())) and thus create an\n // invalid selection. To be clear, `atType.selectionSet` cannot create a conflict, since it is a subset\n // of `subSelection` and `subSelection` is valid. *But* there may be some part of the fragment that\n // is not `atType.selectionSet` due to being \"dead branches\" for type `parentType`. And while those\n // branches _are_ \"dead\" as far as execution goes, the `FieldsInSetCanMerge` validation does not take\n // this into account (it's 1st step says \"including visiting fragments and inline fragments\" but has\n // no logic regarding ignoring any fragment that may not apply due to the intersection of runtimes\n // between multiple fragment being empty).\n checkCanReuseFragmentAndTrackIt(fragment: FragmentRestrictionAtType): boolean {\n // No validator means that everything in the fragment selection was part of the selection we're optimizing\n // away (by using the fragment), and we know the original selection was ok, so nothing to check.\n const validator = fragment.validator;\n if (!validator) {\n return true;\n }\n\n if (!this.validators.every((v) => v.doMergeWith(validator))) {\n return false;\n }\n\n // We need to make sure the trimmed parts of `fragment` merges with the rest of the selection,\n // but also that it merge with any of the trimmed parts of any fragment we have added already.\n // Note: this last condition means that if 2 fragment conflict on their \"trimmed\" parts,\n // then the choice of which is used can be based on the fragment ordering and selection order,\n // which may not be optimal. This feels niche enough that we keep it simple for now, but we\n // can revisit this decision if we run into real cases that justify it (but making it optimal\n // would be a involved in general, as in theory you could have complex dependencies of fragments\n // that conflict, even cycles, and you need to take the size of fragments into account to know\n // what's best; and even then, this could even depend on overall usage, as it can be better to\n // reuse a fragment that is used in other places, than to use one for which it's the only usage.\n // Adding to all that the fact that conflict can happen in sibling branches).\n if (this.usedSpreadTrimmedPartAtLevel) {\n if (!this.usedSpreadTrimmedPartAtLevel.every((t) => validator.doMergeWith(t))) {\n return false;\n }\n } else {\n this.usedSpreadTrimmedPartAtLevel = [];\n }\n\n // We're good, but track the fragment\n this.usedSpreadTrimmedPartAtLevel.push(validator);\n return true;\n }\n}\n\nclass FieldsConflictValidator {\n private constructor(\n private readonly byResponseName: Map>,\n ) {\n }\n\n static build(s: SelectionSet): FieldsConflictValidator {\n return FieldsConflictValidator.forLevel(s.fieldsInSet());\n }\n\n private static forLevel(level: CollectedFieldsInSet): FieldsConflictValidator {\n const atLevel = new Map>();\n\n for (const { field } of level) {\n const responseName = field.element.responseName();\n let atResponseName = atLevel.get(responseName);\n if (!atResponseName) {\n atResponseName = new Map();\n atLevel.set(responseName, atResponseName);\n }\n if (field.selectionSet) {\n // It's unlikely that we've seen the same `field.element` as we don't particularly \"intern\" `Field` object (so even if the exact same field\n // is used in 2 parts of a selection set, it will probably be a different `Field` object), so the `get` below will probably mostly return `undefined`,\n // but it wouldn't be incorrect to re-use a `Field` object multiple side, so no reason not to handle that correctly.\n const forField = atResponseName.get(field.element) ?? [];\n atResponseName.set(field.element, forField.concat(field.selectionSet.fieldsInSet()));\n } else {\n // Note that whether a `FieldSelection` has `selectionSet` or not is entirely determined by whether the field type is a composite type\n // or not, so even if we've seen a previous version of `field.element` before, we know it's guarantee to have had no `selectionSet`.\n // So the `set` below may overwrite a previous entry, but it would be a `null` so no harm done.\n atResponseName.set(field.element, null);\n }\n }\n\n const byResponseName = new Map>();\n for (const [name, level] of atLevel.entries()) {\n const atResponseName = new Map();\n for (const [field, collectedFields] of level) {\n const validator = collectedFields ? FieldsConflictValidator.forLevel(collectedFields) : null;\n atResponseName.set(field, validator);\n }\n byResponseName.set(name, atResponseName);\n }\n return new FieldsConflictValidator(byResponseName);\n }\n\n forField(field: Field): FieldsConflictValidator[] {\n const byResponseName = this.byResponseName.get(field.responseName());\n if (!byResponseName) {\n return [];\n }\n return mapValues(byResponseName).filter((v): v is FieldsConflictValidator => !!v);\n }\n\n doMergeWith(that: FieldsConflictValidator): boolean {\n for (const [responseName, thisFields] of this.byResponseName.entries()) {\n const thatFields = that.byResponseName.get(responseName);\n if (!thatFields) {\n continue;\n }\n\n // We're basically checking [FieldsInSetCanMerge](https://spec.graphql.org/draft/#FieldsInSetCanMerge()),\n // but from 2 set of fields (`thisFields` and `thatFields`) of the same response that we know individually\n // merge already.\n for (const [thisField, thisValidator] of thisFields.entries()) {\n for (const [thatField, thatValidator] of thatFields.entries()) {\n // The `SameResponseShape` test that all fields must pass.\n if (!typesCanBeMerged(thisField.definition.type!, thatField.definition.type!)) {\n return false;\n }\n\n const p1 = thisField.parentType;\n const p2 = thatField.parentType;\n if (sameType(p1, p2) || !isObjectType(p1) || !isObjectType(p2)) {\n // Additional checks of `FieldsInSetCanMerge` when same parent type or one isn't object\n if (thisField.name !== thatField.name\n || !argumentsEquals(thisField.args ?? {}, thatField.args ?? {})\n || (thisValidator && thatValidator && !thisValidator.doMergeWith(thatValidator))\n ) {\n return false;\n }\n } else {\n // Otherwise, the sub-selection must pass [SameResponseShape](https://spec.graphql.org/draft/#SameResponseShape()).\n if (thisValidator && thatValidator && !thisValidator.hasSameResponseShapeThan(thatValidator)) {\n return false;\n }\n }\n }\n }\n }\n return true;\n }\n\n hasSameResponseShapeThan(that: FieldsConflictValidator): boolean {\n for (const [responseName, thisFields] of this.byResponseName.entries()) {\n const thatFields = that.byResponseName.get(responseName);\n if (!thatFields) {\n continue;\n }\n\n for (const [thisField, thisValidator] of thisFields.entries()) {\n for (const [thatField, thatValidator] of thatFields.entries()) {\n if (!typesCanBeMerged(thisField.definition.type!, thatField.definition.type!)\n || (thisValidator && thatValidator && !thisValidator.hasSameResponseShapeThan(thatValidator))) {\n return false;\n }\n }\n }\n }\n return true;\n }\n\n toString(indent: string = ''): string {\n // For debugging/testing ...\n return '{\\n'\n + [...this.byResponseName.entries()].map(([name, byFields]) => {\n const innerIndent = indent + ' ';\n return `${innerIndent}${name}: [\\n`\n + [...byFields.entries()]\n .map(([field, next]) => `${innerIndent} ${field.parentType}.${field}${next ? next.toString(innerIndent + ' '): ''}`)\n .join('\\n')\n + `\\n${innerIndent}]`;\n }).join('\\n')\n + `\\n${indent}}`\n }\n}\n\nexport class FieldSelection extends AbstractSelection, undefined, FieldSelection> {\n readonly kind = 'FieldSelection' as const;\n\n constructor(\n field: Field,\n private readonly _selectionSet?: SelectionSet,\n ) {\n super(field);\n }\n\n get selectionSet(): SelectionSet | undefined {\n return this._selectionSet;\n }\n\n protected us(): FieldSelection {\n return this;\n }\n\n isTypenameField(): boolean {\n return this.element.definition.name === typenameFieldName;\n }\n\n // Is this a plain simple __typename without any directive or alias?\n isPlainTypenameField(): boolean {\n return this.element.definition.name === typenameFieldName\n && this.element.appliedDirectives.length == 0\n && !this.element.alias;\n }\n\n withAttachment(key: string, value: string): FieldSelection {\n const updatedField = this.element.copy();\n updatedField.addAttachment(key, value);\n return this.withUpdatedElement(updatedField);\n }\n\n withUpdatedComponents(field: Field, selectionSet: SelectionSet | undefined): FieldSelection {\n if (this.element === field && this.selectionSet === selectionSet) {\n return this;\n }\n return new FieldSelection(field, selectionSet);\n }\n\n key(): string {\n return this.element.key();\n }\n\n optimize(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): Selection {\n const fieldBaseType = baseType(this.element.definition.type!);\n if (!isCompositeType(fieldBaseType) || !this.selectionSet) {\n return this;\n }\n\n const fieldValidator = validator.forField(this.element);\n\n // First, see if we can reuse fragments for the selection of this field.\n const optimized = this.tryOptimizeSubselectionWithFragments({\n parentType: fieldBaseType,\n subSelection: this.selectionSet,\n fragments,\n validator: fieldValidator,\n // We can never apply a fragments that has directives on it at the field level.\n canUseFullMatchingFragment: (fragment) => fragment.appliedDirectives.length === 0,\n });\n\n let optimizedSelection;\n if (optimized instanceof NamedFragmentDefinition) {\n optimizedSelection = selectionSetOf(fieldBaseType, new FragmentSpreadSelection(fieldBaseType, fragments, optimized, []));\n } else {\n optimizedSelection = optimized;\n }\n\n // Then, recurse inside the field sub-selection (note that if we matched some fragments above,\n // this recursion will \"ignore\" those as `FragmentSpreadSelection.optimize()` is a no-op).\n optimizedSelection = optimizedSelection.optimizeSelections(fragments, fieldValidator);\n\n return this.selectionSet === optimizedSelection\n ? this\n : this.withUpdatedSelectionSet(optimizedSelection);\n }\n\n filterRecursiveDepthFirst(predicate: (selection: Selection) => boolean): FieldSelection | undefined {\n if (!this.selectionSet) {\n return predicate(this) ? this : undefined;\n }\n\n const updatedSelectionSet = this.selectionSet.filterRecursiveDepthFirst(predicate);\n const thisWithFilteredSelectionSet = this.selectionSet === updatedSelectionSet\n ? this\n : new FieldSelection(this.element, updatedSelectionSet);\n return predicate(thisWithFilteredSelectionSet) ? thisWithFilteredSelectionSet : undefined;\n }\n\n validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean) {\n this.element.validate(variableDefinitions, validateContextualArgs);\n // Note that validation is kind of redundant since `this.selectionSet.validate()` will check that it isn't empty. But doing it\n // allow to provide much better error messages.\n validate(\n this.element.isLeafField() || (this.selectionSet && !this.selectionSet.isEmpty()),\n () => `Invalid empty selection set for field \"${this.element.definition.coordinate}\" of non-leaf type ${this.element.definition.type}`,\n this.element.definition.sourceAST\n );\n this.selectionSet?.validate(variableDefinitions);\n }\n\n /**\n * Returns a field selection \"equivalent\" to the one represented by this object, but such that its parent type\n * is the one provided as argument.\n *\n * Obviously, this operation will only succeed if this selection (both the field itself and its subselections)\n * make sense from the provided parent type. If this is not the case, this method will throw.\n */\n rebaseOn({\n parentType,\n fragments,\n errorIfCannotRebase,\n }: {\n parentType: CompositeType,\n fragments: NamedFragments | undefined,\n errorIfCannotRebase: boolean,\n }): FieldSelection | undefined {\n if (this.element.parentType === parentType) {\n return this;\n }\n\n const rebasedElement = this.element.rebaseOn({ parentType, errorIfCannotRebase });\n if (!rebasedElement) {\n return undefined;\n }\n\n if (!this.selectionSet) {\n return this.withUpdatedElement(rebasedElement);\n }\n\n const rebasedBase = rebasedElement.baseType();\n if (rebasedBase === this.selectionSet.parentType) {\n return this.withUpdatedElement(rebasedElement);\n }\n\n validate(isCompositeType(rebasedBase), () => `Cannot rebase field selection ${this} on ${parentType}: rebased field base return type ${rebasedBase} is not composite`);\n const rebasedSelectionSet = this.selectionSet.rebaseOn({ parentType: rebasedBase, fragments, errorIfCannotRebase });\n return rebasedSelectionSet.isEmpty() ? undefined : this.withUpdatedComponents(rebasedElement, rebasedSelectionSet);\n }\n\n /**\n * Essentially checks if `updateForAddingTo` would work on an selecion set of the provide parent type.\n */\n canAddTo(parentType: CompositeType): boolean {\n if (this.element.parentType === parentType) {\n return true;\n }\n\n const type = this.element.typeIfAddedTo(parentType);\n if (!type) {\n return false;\n }\n\n const base = baseType(type);\n if (this.selectionSet && this.selectionSet.parentType !== base) {\n assert(isCompositeType(base), () => `${this.element} should have a selection set as it's type is not a composite`);\n return this.selectionSet.selections().every((s) => s.canAddTo(base));\n }\n return true;\n }\n\n toSelectionNode(): FieldNode {\n const alias: NameNode | undefined = this.element.alias ? { kind: Kind.NAME, value: this.element.alias, } : undefined;\n return {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: this.element.name,\n },\n alias,\n arguments: this.element.argumentsToNodes(),\n directives: this.element.appliedDirectivesToDirectiveNodes(),\n selectionSet: this.selectionSet?.toSelectionSetNode()\n };\n }\n\n withoutDefer(labelsToRemove?: Set): FieldSelection {\n return this.mapToSelectionSet((s) => s.withoutDefer(labelsToRemove));\n }\n\n withNormalizedDefer(normalizer: DeferNormalizer): FieldSelection {\n return this.mapToSelectionSet((s) => s.withNormalizedDefer(normalizer));\n }\n\n hasDefer(): boolean {\n return !!this.selectionSet?.hasDefer();\n }\n\n normalize({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FieldSelection {\n // This could be an interface field, and if we're normalizing on one of the implementation of that\n // interface, we want to make sure we use the field of the implementation, as it may in particular\n // have a more specific type which should propagate to the recursive call to normalize.\n\n const definition = parentType === this.parentType\n ? this.element.definition\n : parentType.field(this.element.name);\n assert(definition, `Cannot normalize ${this.element} at ${parentType} which does not have that field`)\n\n const element = this.element.definition === definition ? this.element : this.element.withUpdatedDefinition(definition);\n if (!this.selectionSet) {\n return this.withUpdatedElement(element);\n }\n\n const base = element.baseType();\n assert(isCompositeType(base), () => `Field ${element} should not have a sub-selection`);\n const normalizedSubSelection = (recursive ?? true) ? this.selectionSet.normalize({ parentType: base }) : this.selectionSet;\n // In rare caes, it's possible that everything in the sub-selection was trimmed away and so the\n // sub-selection is empty. Which suggest something may be wrong with this part of the query\n // intent, but the query was valid while keeping an empty sub-selection isn't. So in that\n // case, we just add some \"non-included\" __typename field just to keep the query valid.\n if (normalizedSubSelection?.isEmpty()) {\n return this.withUpdatedComponents(\n element,\n selectionSetOfElement(\n new Field(\n base.typenameField()!,\n undefined,\n [new Directive('include', { 'if': false })],\n )\n )\n );\n } else {\n return this.withUpdatedComponents(element, normalizedSubSelection);\n }\n }\n\n expandFragments(updatedFragments?: NamedFragments): FieldSelection {\n return this.mapToSelectionSet((s) => s.expandFragments(updatedFragments));\n }\n\n equals(that: Selection): boolean {\n if (this === that) {\n return true;\n }\n\n if (!(that instanceof FieldSelection) || !this.element.equals(that.element)) {\n return false;\n }\n if (!this.selectionSet) {\n return !that.selectionSet;\n }\n return !!that.selectionSet && this.selectionSet.equals(that.selectionSet);\n }\n\n contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n if (!(that instanceof FieldSelection) || !this.element.equals(that.element)) {\n return ContainsResult.NOT_CONTAINED;\n }\n\n if (!this.selectionSet) {\n assert(!that.selectionSet, '`this` and `that` have the same element, so if one does not have a sub-selection, neither should the other one')\n return ContainsResult.EQUAL;\n }\n assert(that.selectionSet, '`this` and `that` have the same element, so if one has sub-selection, the other one should too')\n return this.selectionSet.contains(that.selectionSet, options);\n }\n\n toString(expandFragments: boolean = true, indent?: string): string {\n return (indent ?? '') + this.element + (this.selectionSet ? ' ' + this.selectionSet.toString(expandFragments, true, indent) : '');\n }\n}\n\nexport abstract class FragmentSelection extends AbstractSelection {\n readonly kind = 'FragmentSelection' as const;\n\n abstract canAddTo(parentType: CompositeType): boolean;\n\n protected us(): FragmentSelection {\n return this;\n }\n\n protected validateDeferAndStream() {\n if (this.element.hasDefer() || this.element.hasStream()) {\n const schemaDef = this.element.schema().schemaDefinition;\n const parentType = this.parentType;\n validate(\n schemaDef.rootType('mutation') !== parentType && schemaDef.rootType('subscription') !== parentType,\n () => `The @defer and @stream directives cannot be used on ${schemaDef.roots().filter((t) => t.type === parentType).pop()?.rootKind} root type \"${parentType}\"`,\n );\n }\n }\n\n filterRecursiveDepthFirst(predicate: (selection: Selection) => boolean): FragmentSelection | undefined {\n // Note that we essentially expand all fragments as part of this.\n const updatedSelectionSet = this.selectionSet.filterRecursiveDepthFirst(predicate);\n const thisWithFilteredSelectionSet = updatedSelectionSet === this.selectionSet\n ? this\n : new InlineFragmentSelection(this.element, updatedSelectionSet);\n\n return predicate(thisWithFilteredSelectionSet) ? thisWithFilteredSelectionSet : undefined;\n }\n\n hasDefer(): boolean {\n return this.element.hasDefer() || this.selectionSet.hasDefer();\n }\n\n abstract equals(that: Selection): boolean;\n\n abstract contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult;\n\n normalize({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FragmentSelection | SelectionSet | undefined {\n const thisCondition = this.element.typeCondition;\n\n // This method assumes by contract that `parentType` runtimes intersects `this.parentType`'s, but `parentType`\n // runtimes may be a subset. So first check if the selection should not be discarded on that account (that\n // is, we should not keep the selection if its condition runtimes don't intersect at all with those of\n // `parentType` as that would ultimately make an invalid selection set).\n if (thisCondition && parentType !== this.parentType) {\n const conditionRuntimes = possibleRuntimeTypes(thisCondition);\n const typeRuntimes = possibleRuntimeTypes(parentType);\n if (!conditionRuntimes.some((t) => typeRuntimes.includes(t))) {\n return undefined;\n }\n }\n\n return this.normalizeKnowingItIntersects({ parentType, recursive });\n }\n\n protected abstract normalizeKnowingItIntersects({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FragmentSelection | SelectionSet | undefined;\n}\n\nclass InlineFragmentSelection extends FragmentSelection {\n constructor(\n fragment: FragmentElement,\n private readonly _selectionSet: SelectionSet,\n ) {\n super(fragment);\n }\n\n get selectionSet(): SelectionSet {\n return this._selectionSet;\n }\n\n key(): string {\n return this.element.key();\n }\n\n withUpdatedComponents(fragment: FragmentElement, selectionSet: SelectionSet): InlineFragmentSelection {\n if (fragment === this.element && selectionSet === this.selectionSet) {\n return this;\n }\n return new InlineFragmentSelection(fragment, selectionSet);\n }\n\n validate(variableDefinitions: VariableDefinitions) {\n this.validateDeferAndStream();\n // Note that validation is kind of redundant since `this.selectionSet.validate()` will check that it isn't empty. But doing it\n // allow to provide much better error messages.\n validate(\n !this.selectionSet.isEmpty(),\n () => `Invalid empty selection set for fragment \"${this.element}\"`\n );\n this.selectionSet.validate(variableDefinitions);\n }\n\n rebaseOn({\n parentType,\n fragments,\n errorIfCannotRebase,\n }: {\n parentType: CompositeType,\n fragments: NamedFragments | undefined,\n errorIfCannotRebase: boolean,\n }): FragmentSelection | undefined {\n if (this.parentType === parentType) {\n return this;\n }\n\n const rebasedFragment = this.element.rebaseOn({ parentType, errorIfCannotRebase });\n if (!rebasedFragment) {\n return undefined;\n }\n\n const rebasedCastedType = rebasedFragment.castedType();\n if (rebasedCastedType === this.selectionSet.parentType) {\n return this.withUpdatedElement(rebasedFragment);\n }\n\n const rebasedSelectionSet = this.selectionSet.rebaseOn({ parentType: rebasedCastedType, fragments, errorIfCannotRebase });\n return rebasedSelectionSet.isEmpty() ? undefined : this.withUpdatedComponents(rebasedFragment, rebasedSelectionSet);\n }\n\n canAddTo(parentType: CompositeType): boolean {\n if (this.element.parentType === parentType) {\n return true;\n }\n\n const type = this.element.castedTypeIfAddedTo(parentType);\n if (!type) {\n return false;\n }\n\n if (this.selectionSet.parentType !== type) {\n return this.selectionSet.selections().every((s) => s.canAddTo(type));\n }\n return true;\n }\n\n toSelectionNode(): InlineFragmentNode {\n const typeCondition = this.element.typeCondition;\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: typeCondition\n ? {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: typeCondition.name,\n },\n }\n : undefined,\n directives: this.element.appliedDirectivesToDirectiveNodes(),\n selectionSet: this.selectionSet.toSelectionSetNode()\n };\n }\n\n optimize(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): FragmentSelection {\n let optimizedSelection = this.selectionSet;\n\n // First, see if we can reuse fragments for the selection of this field.\n const typeCondition = this.element.typeCondition;\n if (typeCondition) {\n const optimized = this.tryOptimizeSubselectionWithFragments({\n parentType: typeCondition,\n subSelection: optimizedSelection,\n fragments,\n validator,\n canUseFullMatchingFragment: (fragment) => {\n // To be able to use a matching fragment, it needs to have either no directives, or if it has\n // some, then:\n // 1. all it's directives should also be on the current element.\n // 2. the directives of this element should be the fragment condition.\n // because if those 2 conditions are true, we can replace the whole current inline fragment\n // with the match spread and directives will still match.\n return fragment.appliedDirectives.length === 0\n || (\n sameType(typeCondition, fragment.typeCondition)\n && fragment.appliedDirectives.every((d) => this.element.appliedDirectives.some((s) => sameDirectiveApplication(d, s)))\n );\n },\n });\n\n if (optimized instanceof NamedFragmentDefinition) {\n // We're fully matching the sub-selection. If the fragment condition is also this element condition,\n // then we can replace the whole element by the spread (not just the sub-selection).\n if (sameType(typeCondition, optimized.typeCondition)) {\n // Note that `canUseFullMatchingFragment` above guarantees us that this element directives\n // are a superset of the fragment directives. But there can be additional directives, and in\n // that case they should be kept on the spread.\n let spreadDirectives = this.element.appliedDirectives;\n if (optimized.appliedDirectives) {\n spreadDirectives = spreadDirectives.filter(\n (s) => !optimized.appliedDirectives.some((d) => sameDirectiveApplication(d, s))\n );\n }\n return new FragmentSpreadSelection(this.parentType, fragments, optimized, spreadDirectives);\n } else {\n // Otherwise, we keep this element and use a sub-selection with just the spread.\n optimizedSelection = selectionSetOf(typeCondition, new FragmentSpreadSelection(typeCondition, fragments, optimized, []));\n }\n } else {\n optimizedSelection = optimized;\n }\n }\n\n // Then, recurse inside the field sub-selection (note that if we matched some fragments above,\n // this recursion will \"ignore\" those as `FragmentSpreadSelection.optimize()` is a no-op).\n optimizedSelection = optimizedSelection.optimizeSelections(fragments, validator);\n\n return this.selectionSet === optimizedSelection\n ? this\n : new InlineFragmentSelection(this.element, optimizedSelection);\n }\n\n withoutDefer(labelsToRemove?: Set): InlineFragmentSelection | SelectionSet {\n const newSelection = this.selectionSet.withoutDefer(labelsToRemove);\n const deferArgs = this.element.deferDirectiveArgs();\n const hasDeferToRemove = deferArgs && (!labelsToRemove || (deferArgs.label && labelsToRemove.has(deferArgs.label)));\n if (newSelection === this.selectionSet && !hasDeferToRemove) {\n return this;\n }\n const newElement = hasDeferToRemove ? this.element.withoutDefer() : this.element;\n if (!newElement) {\n return newSelection;\n }\n return this.withUpdatedComponents(newElement, newSelection);\n }\n\n withNormalizedDefer(normalizer: DeferNormalizer): InlineFragmentSelection | SelectionSet {\n const newElement = this.element.withNormalizedDefer(normalizer);\n const newSelection = this.selectionSet.withNormalizedDefer(normalizer)\n if (!newElement) {\n return newSelection;\n }\n return newElement === this.element && newSelection === this.selectionSet\n ? this\n : this.withUpdatedComponents(newElement, newSelection);\n }\n\n protected normalizeKnowingItIntersects({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FragmentSelection | SelectionSet | undefined {\n const thisCondition = this.element.typeCondition;\n\n // We know the condition is \"valid\", but it may not be useful. That said, if the condition has directives,\n // we preserve the fragment no matter what.\n if (this.element.appliedDirectives.length === 0) {\n // There is a number of cases where a fragment is not useful:\n // 1. if there is not conditions (remember it also has no directives).\n // 2. if it's the same type as the current type: it's not restricting types further.\n // 3. if the current type is an object more generally: because in that case too the condition\n // cannot be restricting things further (it's typically a less precise interface/union).\n if (!thisCondition || parentType === this.element.typeCondition || isObjectType(parentType)) {\n const normalized = this.selectionSet.normalize({ parentType, recursive });\n return normalized.isEmpty() ? undefined : normalized;\n }\n }\n\n // We preserve the current fragment, so we only recurse within the sub-selection if we're asked to be recusive.\n // (note that even if we're not recursive, we may still have some \"lifting\" to do)\n let normalizedSelectionSet: SelectionSet;\n if (recursive ?? true) {\n normalizedSelectionSet = this.selectionSet.normalize({ parentType: thisCondition ?? parentType });\n\n // It could be that everything was unsatisfiable.\n if (normalizedSelectionSet.isEmpty()) {\n if (this.element.appliedDirectives.length === 0) {\n return undefined;\n } else {\n return this.withUpdatedComponents(\n // We should be able to rebase, or there is a bug, so error if that is the case.\n this.element.rebaseOnOrError(parentType),\n selectionSetOfElement(\n new Field(\n (this.element.typeCondition ?? parentType).typenameField()!,\n undefined,\n [new Directive('include', { 'if': false })],\n )\n )\n );\n }\n }\n } else {\n normalizedSelectionSet = this.selectionSet;\n }\n\n // Second, we check if some of the sub-selection fragments can be \"lifted\" outside of this fragment. This can happen if:\n // 1. the current fragment is an abstract type,\n // 2. the sub-fragment is an object type,\n // 3. the sub-fragment type is a valid runtime of the current type.\n if (this.element.appliedDirectives.length === 0 && isAbstractType(thisCondition!)) {\n assert(!isObjectType(parentType), () => `Should not have got here if ${parentType} is an object type`);\n const currentRuntimes = possibleRuntimeTypes(parentType);\n const liftableSelections: Selection[] = [];\n for (const selection of normalizedSelectionSet.selections()) {\n if (selection.kind === 'FragmentSelection'\n && selection.element.typeCondition\n && isObjectType(selection.element.typeCondition)\n && currentRuntimes.includes(selection.element.typeCondition)\n ) {\n liftableSelections.push(selection);\n }\n }\n\n // If we can lift all selections, then that just mean we can get rid of the current fragment altogether\n if (liftableSelections.length === normalizedSelectionSet.selections().length) {\n return normalizedSelectionSet;\n }\n\n // Otherwise, if there is \"liftable\" selections, we must return a set comprised of those lifted selection,\n // and the current fragment _without_ those lifted selections.\n if (liftableSelections.length > 0) {\n const newSet = new SelectionSetUpdates();\n newSet.add(liftableSelections);\n newSet.add(this.withUpdatedSelectionSet(\n normalizedSelectionSet.filter((s) => !liftableSelections.includes(s)),\n ));\n return newSet.toSelectionSet(parentType);\n }\n }\n\n return this.parentType === parentType && this.selectionSet === normalizedSelectionSet\n ? this\n : this.withUpdatedComponents(this.element.rebaseOnOrError(parentType), normalizedSelectionSet);\n }\n\n expandFragments(updatedFragments: NamedFragments | undefined): FragmentSelection {\n return this.mapToSelectionSet((s) => s.expandFragments(updatedFragments));\n }\n\n equals(that: Selection): boolean {\n if (this === that) {\n return true;\n }\n\n return (that instanceof FragmentSelection)\n && this.element.equals(that.element)\n && this.selectionSet.equals(that.selectionSet);\n }\n\n contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n if (!(that instanceof FragmentSelection) || !this.element.equals(that.element)) {\n return ContainsResult.NOT_CONTAINED;\n }\n\n return this.selectionSet.contains(that.selectionSet, options);\n }\n\n toString(expandFragments: boolean = true, indent?: string): string {\n return (indent ?? '') + this.element + ' ' + this.selectionSet.toString(expandFragments, true, indent);\n }\n}\n\nclass FragmentSpreadSelection extends FragmentSelection {\n private computedKey: string | undefined;\n\n constructor(\n sourceType: CompositeType,\n private readonly fragments: NamedFragments,\n readonly namedFragment: NamedFragmentDefinition,\n private readonly spreadDirectives: readonly Directive[],\n ) {\n super(new FragmentElement(sourceType, namedFragment.typeCondition, namedFragment.appliedDirectives.concat(spreadDirectives)));\n }\n\n isFragmentSpread(): boolean {\n return true;\n }\n\n get selectionSet(): SelectionSet {\n return this.namedFragment.selectionSet;\n }\n\n key(): string {\n if (!this.computedKey) {\n this.computedKey = '...' + this.namedFragment.name + directivesToString(this.spreadDirectives);\n }\n return this.computedKey;\n }\n\n withUpdatedComponents(_fragment: FragmentElement, _selectionSet: SelectionSet): InlineFragmentSelection {\n assert(false, `Unsupported`);\n }\n\n normalizeKnowingItIntersects({ parentType }: { parentType: CompositeType }): FragmentSelection {\n // We must update the spread parent type if necessary since we're not going deeper,\n // or we'll be fundamentally losing context.\n assert(parentType.schema() === this.parentType.schema(), 'Should not try to normalize using a type from another schema');\n return this.rebaseOnOrError({ parentType, fragments: this.fragments });\n }\n\n validate(): void {\n this.validateDeferAndStream();\n\n validate(\n runtimeTypesIntersects(this.parentType, this.namedFragment.typeCondition),\n () => `Fragment \"${this.namedFragment.name}\" cannot be spread inside type ${this.parentType} as the runtime types do not intersect ${this.namedFragment.typeCondition}`\n );\n }\n\n toSelectionNode(): FragmentSpreadNode {\n const directiveNodes = directivesToDirectiveNodes(this.spreadDirectives);\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: { kind: Kind.NAME, value: this.namedFragment.name },\n directives: directiveNodes,\n };\n }\n\n optimize(_1: NamedFragments, _2: FieldsConflictMultiBranchValidator): FragmentSelection {\n return this;\n }\n\n rebaseOn({\n parentType,\n fragments,\n errorIfCannotRebase,\n }: {\n parentType: CompositeType,\n fragments: NamedFragments | undefined,\n errorIfCannotRebase: boolean,\n }): FragmentSelection | undefined {\n // We preserve the parent type here, to make sure we don't lose context, but we actually don't\n // want to expand the spread as that would compromise the code that optimize subgraph fetches to re-use named\n // fragments.\n //\n // This is a little bit iffy, because the fragment may not apply at this parent type, but we\n // currently leave it to the caller to ensure this is not a mistake. But most of the\n // QP code works on selections with fully expanded fragments, so this code (and that of `canAddTo`\n // on come into play in the code for reusing fragments, and that code calls those methods\n // appropriately.\n if (this.parentType === parentType) {\n return this;\n }\n\n // If we're rebasing on a _different_ schema, then we *must* have fragments, since reusing\n // `this.fragments` would be incorrect. If we're on the same schema though, we're happy to default\n // to `this.fragments`.\n const rebaseOnSameSchema = this.parentType.schema() === parentType.schema();\n assert(fragments || rebaseOnSameSchema, `Must provide fragments is rebasing on other schema`);\n const newFragments = fragments ?? this.fragments;\n const namedFragment = newFragments.get(this.namedFragment.name);\n // If we're rebasing on another schema (think a subgraph), then named fragments will have been rebased on that, and some\n // of them may not contain anything that is on that subgraph, in which case they will not have been included at all.\n // If so, then as long as we're not ask to error if we cannot rebase, then we're happy to skip that spread (since again,\n // it expands to nothing that apply on the schema).\n if (!namedFragment) {\n validate(!errorIfCannotRebase, () => `Cannot rebase ${this.toString(false)} if it isn't part of the provided fragments`);\n return undefined;\n }\n\n // Lastly, if we rebase on a different schema, it's possible the fragment type does not intersect the\n // parent type. For instance, the parent type could be some object type T while the fragment is an\n // interface I, and T may implement I in the supergraph, but not in a particular subgraph (of course,\n // if I don't exist at all in the subgraph, then we'll have exited above, but I may exist in the\n // subgraph, just not be implemented by T for some reason). In that case, we can't reuse the fragment\n // as its spread is essentially invalid in that position, so we have to replace it by the expansion\n // of that fragment, which we rebase on the parentType (which in turn, will remove anythings within\n // the fragment selection that needs removing, potentially everything).\n if (!rebaseOnSameSchema && !runtimeTypesIntersects(parentType, namedFragment.typeCondition)) {\n // Note that we've used the rebased `namedFragment` to check the type intersection because we needed to\n // compare runtime types \"for the schema we're rebasing into\". But now that we're deciding to not reuse\n // this rebased fragment, what we rebase is the selection set of the non-rebased fragment. And that's\n // important because the very logic we're hitting here may need to happen inside the rebase do the\n // fragment selection, but that logic would not be triggered if we used the rebased `namedFragment` since\n // `rebaseOnSameSchema` would then be 'true'.\n const expanded = this.namedFragment.selectionSet.rebaseOn({ parentType, fragments, errorIfCannotRebase });\n // In theory, we could return the selection set directly, but making `Selection.rebaseOn` sometimes\n // return a `SelectionSet` complicate things quite a bit. So instead, we encapsulate the selection set\n // in an \"empty\" inline fragment. This make for non-really-optimal selection sets in the (relatively\n // rare) case where this is triggered, but in practice this \"inefficiency\" is removed by future calls\n // to `normalize`.\n return expanded.isEmpty() ? undefined : new InlineFragmentSelection(new FragmentElement(parentType), expanded);\n }\n\n return new FragmentSpreadSelection(\n parentType,\n newFragments,\n namedFragment,\n this.spreadDirectives,\n );\n }\n\n canAddTo(_: CompositeType): boolean {\n // Since `rebaseOn` never fail, we copy the logic here and always return `true`. But as\n // mentioned in `rebaseOn`, this leave it a bit to the caller to know what he is doing.\n return true;\n }\n\n expandFragments(updatedFragments: NamedFragments | undefined): FragmentSelection | readonly Selection[] {\n // Note that this test will always fail if `updatedFragments` is `undefined`, making us expand everything.\n if (updatedFragments?.has(this.namedFragment.name)) {\n // This one is still there, it's not expanded.\n return this;\n }\n\n const expandedSubSelections = this.selectionSet.expandFragments(updatedFragments);\n return sameType(this.parentType, this.namedFragment.typeCondition) && this.element.appliedDirectives.length === 0\n ? expandedSubSelections.selections()\n : new InlineFragmentSelection(this.element, expandedSubSelections);\n }\n\n collectUsedFragmentNames(collector: Map): void {\n const usageCount = collector.get(this.namedFragment.name);\n collector.set(this.namedFragment.name, usageCount === undefined ? 1 : usageCount + 1);\n }\n\n withoutDefer(_labelsToRemove?: Set): FragmentSpreadSelection {\n assert(false, 'Unsupported, see `Operation.withAllDeferLabelled`');\n }\n\n withNormalizedDefer(_normalizer: DeferNormalizer): FragmentSpreadSelection {\n assert(false, 'Unsupported, see `Operation.withAllDeferLabelled`');\n }\n\n minus(that: Selection): undefined {\n assert(this.equals(that), () => `Invalid operation for ${this.toString(false)} and ${that.toString(false)}`);\n return undefined;\n }\n\n equals(that: Selection): boolean {\n if (this === that) {\n return true;\n }\n\n return (that instanceof FragmentSpreadSelection)\n && this.namedFragment.name === that.namedFragment.name\n && sameDirectiveApplications(this.spreadDirectives, that.spreadDirectives);\n }\n\n contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n if (this.equals(that)) {\n return ContainsResult.EQUAL;\n }\n\n if (!(that instanceof FragmentSelection) || !this.element.equals(that.element)) {\n return ContainsResult.NOT_CONTAINED;\n }\n\n return this.selectionSet.contains(that.selectionSet, options);\n }\n\n toString(expandFragments: boolean = true, indent?: string): string {\n if (expandFragments) {\n return (indent ?? '') + this.element + ' ' + this.selectionSet.toString(true, true, indent);\n } else {\n return (indent ?? '') + '...' + this.namedFragment.name + directivesToString(this.spreadDirectives);\n }\n }\n}\n\nfunction selectionSetOfNode(\n parentType: CompositeType,\n node: SelectionSetNode,\n variableDefinitions: VariableDefinitions,\n fragments: NamedFragments | undefined,\n fieldAccessor: (type: CompositeType, fieldName: string) => FieldDefinition | undefined = (type, name) => type.field(name)\n): SelectionSet {\n if (node.selections.length === 1) {\n return selectionSetOf(\n parentType,\n selectionOfNode(parentType, node.selections[0], variableDefinitions, fragments, fieldAccessor),\n );\n }\n\n const selections = new SelectionSetUpdates();\n for (const selectionNode of node.selections) {\n selections.add(selectionOfNode(parentType, selectionNode, variableDefinitions, fragments, fieldAccessor));\n }\n return selections.toSelectionSet(parentType, fragments);\n}\n\nfunction directiveOfNode>(schema: Schema, node: DirectiveNode): Directive {\n const directiveDef = schema.directive(node.name.value);\n validate(directiveDef, () => `Unknown directive \"@${node.name.value}\"`)\n return new Directive(directiveDef.name, argumentsFromAST(directiveDef.coordinate, node.arguments, directiveDef));\n}\n\nfunction directivesOfNodes>(schema: Schema, nodes: readonly DirectiveNode[] | undefined): Directive[] {\n return nodes?.map((n) => directiveOfNode(schema, n)) ?? [];\n}\n\nfunction selectionOfNode(\n parentType: CompositeType,\n node: SelectionNode,\n variableDefinitions: VariableDefinitions,\n fragments: NamedFragments | undefined,\n fieldAccessor: (type: CompositeType, fieldName: string) => FieldDefinition | undefined = (type, name) => type.field(name)\n): Selection {\n let selection: Selection;\n const directives = directivesOfNodes(parentType.schema(), node.directives);\n switch (node.kind) {\n case Kind.FIELD:\n const definition: FieldDefinition | undefined = fieldAccessor(parentType, node.name.value);\n validate(definition, () => `Cannot query field \"${node.name.value}\" on type \"${parentType}\".`, parentType.sourceAST);\n const type = baseType(definition.type!);\n const selectionSet = node.selectionSet\n ? selectionSetOfNode(type as CompositeType, node.selectionSet, variableDefinitions, fragments, fieldAccessor)\n : undefined;\n\n selection = new FieldSelection(\n new Field(definition, argumentsFromAST(definition.coordinate, node.arguments, definition), directives, node.alias?.value),\n selectionSet,\n );\n break;\n case Kind.INLINE_FRAGMENT:\n const element = new FragmentElement(parentType, node.typeCondition?.name.value, directives);\n selection = new InlineFragmentSelection(\n element,\n selectionSetOfNode(element.typeCondition ? element.typeCondition : element.parentType, node.selectionSet, variableDefinitions, fragments, fieldAccessor),\n );\n break;\n case Kind.FRAGMENT_SPREAD:\n const fragmentName = node.name.value;\n validate(fragments, () => `Cannot find fragment name \"${fragmentName}\" (no fragments were provided)`);\n const fragment = fragments.get(fragmentName);\n validate(fragment, () => `Cannot find fragment name \"${fragmentName}\" (provided fragments are: [${fragments.names().join(', ')}])`);\n selection = new FragmentSpreadSelection(parentType, fragments, fragment, directives);\n break;\n }\n return selection;\n}\n\nexport function operationFromDocument(\n schema: Schema,\n document: DocumentNode,\n options?: {\n operationName?: string,\n validate?: boolean,\n }\n) : Operation {\n let operation: OperationDefinitionNode | undefined;\n let operation_directives: Directive[] | undefined; // the directives on `operation`\n const operationName = options?.operationName;\n const fragments = new NamedFragments();\n // We do a first pass to collect the operation, and create all named fragment, but without their selection set yet.\n // This allow later to be able to access any fragment regardless of the order in which the fragments are defined.\n document.definitions.forEach(definition => {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n validate(!operation || operationName, () => 'Must provide operation name if query contains multiple operations.');\n if (!operationName || (definition.name && definition.name.value === operationName)) {\n operation = definition;\n operation_directives = directivesOfNodes(schema, definition.directives);\n }\n break;\n case Kind.FRAGMENT_DEFINITION:\n const name = definition.name.value;\n const typeName = definition.typeCondition.name.value;\n const typeCondition = schema.type(typeName);\n if (!typeCondition) {\n throw ERRORS.INVALID_GRAPHQL.err(`Unknown type \"${typeName}\" for fragment \"${name}\"`, { nodes: definition });\n }\n if (!isCompositeType(typeCondition)) {\n throw ERRORS.INVALID_GRAPHQL.err(`Invalid fragment \"${name}\" on non-composite type \"${typeName}\"`, { nodes: definition });\n }\n fragments.add(new NamedFragmentDefinition(schema, name, typeCondition, directivesOfNodes(schema, definition.directives)));\n break;\n }\n });\n\n validate(operation, () => operationName ? `Unknown operation named \"${operationName}\"` : 'No operation found in provided document.');\n // Note that we need the variables to handle the fragments, as they can be used there.\n const variableDefinitions = operation.variableDefinitions\n ? variableDefinitionsFromAST(schema, operation.variableDefinitions)\n : new VariableDefinitions();\n\n // We can now parse all fragments.\n document.definitions.forEach(definition => {\n switch (definition.kind) {\n case Kind.FRAGMENT_DEFINITION:\n const fragment = fragments.get(definition.name.value)!;\n fragment.setSelectionSet(selectionSetOfNode(fragment.typeCondition, definition.selectionSet, variableDefinitions, fragments));\n break;\n }\n });\n fragments.validate(variableDefinitions);\n return operationFromAST({schema, operation, operation_directives, variableDefinitions, fragments, validateInput: options?.validate});\n}\n\nfunction operationFromAST({\n schema,\n operation,\n operation_directives,\n variableDefinitions,\n fragments,\n validateInput,\n}:{\n schema: Schema,\n operation: OperationDefinitionNode,\n operation_directives?: Directive[],\n variableDefinitions: VariableDefinitions,\n fragments: NamedFragments,\n validateInput?: boolean,\n}) : Operation {\n const rootType = schema.schemaDefinition.root(operation.operation);\n validate(rootType, () => `The schema has no \"${operation.operation}\" root type defined`);\n const fragmentsIfAny = fragments.isEmpty() ? undefined : fragments;\n return new Operation(\n schema,\n operation.operation,\n parseSelectionSet({\n parentType: rootType.type,\n source: operation.selectionSet,\n variableDefinitions,\n fragments: fragmentsIfAny,\n validate: validateInput,\n }),\n variableDefinitions,\n fragmentsIfAny,\n operation.name?.value,\n operation_directives\n );\n}\n\nexport function parseOperation(\n schema: Schema,\n operation: string,\n options?: {\n operationName?: string,\n validate?: boolean,\n },\n): Operation {\n return operationFromDocument(schema, parse(operation), options);\n}\n\nexport function parseSelectionSet({\n parentType,\n source,\n variableDefinitions = new VariableDefinitions(),\n fragments,\n fieldAccessor,\n validate = true,\n}: {\n parentType: CompositeType,\n source: string | SelectionSetNode,\n variableDefinitions?: VariableDefinitions,\n fragments?: NamedFragments,\n fieldAccessor?: (type: CompositeType, fieldName: string) => (FieldDefinition | undefined),\n validate?: boolean,\n}): SelectionSet {\n // TODO: we should maybe allow the selection, when a string, to contain fragment definitions?\n const node = typeof source === 'string'\n ? parseOperationAST(source.trim().startsWith('{') ? source : `{${source}}`).selectionSet\n : source;\n const selectionSet = selectionSetOfNode(parentType, node, variableDefinitions ?? new VariableDefinitions(), fragments, fieldAccessor);\n if (validate)\n selectionSet.validate(variableDefinitions);\n return selectionSet;\n}\n\nexport function parseOperationAST(source: string): OperationDefinitionNode {\n const parsed = parse(source);\n validate(parsed.definitions.length === 1, () => 'Selections should contain a single definitions, found ' + parsed.definitions.length);\n const def = parsed.definitions[0];\n validate(def.kind === Kind.OPERATION_DEFINITION, () => 'Expected an operation definition but got a ' + def.kind);\n return def;\n}\n\nexport function operationToDocument(operation: Operation): DocumentNode {\n const operationAST: OperationDefinitionNode = {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation.rootKind as OperationTypeNode,\n name: operation.name ? { kind: Kind.NAME, value: operation.name } : undefined,\n selectionSet: operation.selectionSet.toSelectionSetNode(),\n variableDefinitions: operation.variableDefinitions.toVariableDefinitionNodes(),\n directives: directivesToDirectiveNodes(operation.appliedDirectives),\n };\n const fragmentASTs: DefinitionNode[] = operation.fragments\n ? operation.fragments?.toFragmentDefinitionNodes()\n : [];\n return {\n kind: Kind.DOCUMENT,\n definitions: [operationAST as DefinitionNode].concat(fragmentASTs),\n };\n}\n\nexport function hasSelectionWithPredicate(selectionSet: SelectionSet, predicate: (s: Selection) => boolean): boolean {\n for (const selection of selectionSet.selections()) {\n if (predicate(selection)) {\n return true;\n }\n if (selection.selectionSet) {\n if (hasSelectionWithPredicate(selection.selectionSet, predicate)) {\n return true;\n }\n }\n }\n return false;\n}\n", "import { DirectiveLocation, GraphQLError } from \"graphql\";\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport { DirectiveDefinition, NonNullType } from \"../definitions\";\nimport { createDirectiveSpecification, DirectiveSpecification } from \"../directiveAndTypeSpecification\";\nimport { ERRORS } from \"../error\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { sameType } from \"../types\";\n\nexport const tagIdentity = 'https://specs.apollo.dev/tag';\n\nexport class TagSpecDefinition extends FeatureDefinition {\n public readonly tagLocations: DirectiveLocation[];\n public readonly tagDirectiveSpec: DirectiveSpecification;\n private readonly printedTagDefinition: string;\n\n constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n super(new FeatureUrl(tagIdentity, 'tag', version), minimumFederationVersion);\n this.tagLocations = [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.UNION,\n ];\n this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION';\n if (!this.isV01()) {\n this.tagLocations.push(\n DirectiveLocation.ARGUMENT_DEFINITION,\n DirectiveLocation.SCALAR,\n DirectiveLocation.ENUM,\n DirectiveLocation.ENUM_VALUE,\n DirectiveLocation.INPUT_OBJECT,\n DirectiveLocation.INPUT_FIELD_DEFINITION,\n );\n this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION';\n if (!this.isV02()) {\n this.tagLocations.push(DirectiveLocation.SCHEMA);\n this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION | SCHEMA';\n }\n }\n this.tagDirectiveSpec = createDirectiveSpecification({\n name:'tag',\n locations: this.tagLocations,\n repeatable: true,\n args: [{ name: 'name', type: (schema) => new NonNullType(schema.stringType()) }],\n composes: true,\n supergraphSpecification: (fedVersion) => TAG_VERSIONS.getMinimumRequiredVersion(fedVersion),\n });\n this.registerDirective(this.tagDirectiveSpec);\n }\n\n private isV01() {\n return this.version.equals(new FeatureVersion(0, 1));\n }\n\n private isV02() {\n return this.version.equals(new FeatureVersion(0, 2))\n }\n\n checkCompatibleDirective(definition: DirectiveDefinition): GraphQLError | undefined {\n const hasUnknownArguments = Object.keys(definition.arguments()).length > 1;\n const nameArg = definition.argument('name');\n const hasValidNameArg = nameArg && sameType(nameArg.type!, new NonNullType(definition.schema().stringType()));\n const hasValidLocations = definition.locations.every(loc => this.tagLocations.includes(loc));\n if (hasUnknownArguments || !hasValidNameArg || !hasValidLocations) {\n return ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n `Found invalid @tag directive definition. Please ensure the directive definition in your schema's definitions matches the following:\\n\\t${this.printedTagDefinition}`,\n );\n }\n return undefined;\n }\n}\n\nexport const TAG_VERSIONS = new FeatureDefinitions(tagIdentity)\n .add(new TagSpecDefinition(new FeatureVersion(0, 1)))\n .add(new TagSpecDefinition(new FeatureVersion(0, 2)))\n .add(new TagSpecDefinition(new FeatureVersion(0, 3), new FeatureVersion(2, 0)));\n\nregisterKnownFeature(TAG_VERSIONS);\n", "import {\n assert,\n baseType,\n CompositeType,\n federationMetadata,\n FieldDefinition,\n collectTargetFields,\n Schema,\n isCompositeType,\n} from \".\";\n\nexport function computeShareables(schema: Schema): (field: FieldDefinition) => boolean {\n const metadata = federationMetadata(schema);\n assert(metadata, 'Schema should be a federation subgraph');\n\n const keyDirective = metadata.keyDirective();\n const providesDirective = metadata.providesDirective();\n // @shareable is only avalaible on fed2 schema, but the schema upgrader call this on fed1 schema as a shortcut to\n // identify key fields (because if we know nothing is marked @shareable, then the only fields that are shareable\n // by default are key fields).\n const shareableDirective = metadata.isFed2Schema() ? metadata.shareableDirective() : undefined;\n\n const shareableFields: Set = new Set();\n const addKeyFields = (type: CompositeType) => {\n for (const key of type.appliedDirectivesOf(keyDirective)) {\n collectTargetFields({\n parentType: type,\n directive: key,\n includeInterfaceFieldsImplementations: true,\n validate: false,\n }).forEach((f) => shareableFields.add(f.coordinate));\n }\n };\n\n for (const type of schema.objectTypes()) {\n addKeyFields(type);\n const shareablesOnType = shareableDirective ? type.appliedDirectivesOf(shareableDirective) : [];\n for (const field of type.fields()) {\n const fieldIsShareable = shareableDirective && field.hasAppliedDirective(shareableDirective)\n || (shareablesOnType.length > 0 && shareablesOnType.some((d) => field.ofExtension() === d.ofExtension()));\n if (fieldIsShareable) {\n shareableFields.add(field.coordinate);\n }\n for (const provides of field.appliedDirectivesOf(providesDirective)) {\n const parentType = baseType(field.type!);\n // It's never valid to put a @provides on a non-composite type, but things haven't been fully validated when this\n // code run and we just want to ignore non-sensical cases (this is also why we pass `validate: false` below).\n if (isCompositeType(parentType)) {\n collectTargetFields({\n parentType,\n directive: provides,\n includeInterfaceFieldsImplementations: true,\n validate: false,\n }).forEach((f) => {\n // Fed2 schema reject provides on non-external field, but fed1 doesn't (at least not always), and we actually\n // call this on fed1 schema upgrader. So let's make sure we do ignore non-external fields.\n if (metadata.isFieldExternal(f)) {\n shareableFields.add(f.coordinate);\n }\n });\n }\n }\n }\n }\n\n for (const type of schema.interfaceTypes()) {\n addKeyFields(type);\n }\n\n return (field) => shareableFields.has(field.coordinate);\n}\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n CorePurpose,\n FeatureDefinition,\n FeatureDefinitions,\n FeatureUrl,\n FeatureVersion,\n} from \"./coreSpec\";\nimport { createDirectiveSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\n\nexport class AuthenticatedSpecDefinition extends FeatureDefinition {\n public static readonly directiveName = \"authenticated\";\n public static readonly identity = `https://specs.apollo.dev/${AuthenticatedSpecDefinition.directiveName}`;\n\n constructor(version: FeatureVersion, minimumFederationVersion: FeatureVersion) {\n super(\n new FeatureUrl(\n AuthenticatedSpecDefinition.identity,\n AuthenticatedSpecDefinition.directiveName,\n version\n ),\n minimumFederationVersion,\n );\n\n this.registerDirective(createDirectiveSpecification({\n name: AuthenticatedSpecDefinition.directiveName,\n locations: [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.SCALAR,\n DirectiveLocation.ENUM,\n ],\n composes: true,\n supergraphSpecification: () => AUTHENTICATED_VERSIONS.latest(),\n }));\n }\n\n get defaultCorePurpose(): CorePurpose {\n return 'SECURITY';\n }\n}\n\nexport const AUTHENTICATED_VERSIONS =\n new FeatureDefinitions(\n AuthenticatedSpecDefinition.identity\n ).add(\n new AuthenticatedSpecDefinition(\n new FeatureVersion(0, 1),\n new FeatureVersion(2, 5),\n ),\n );\n\nregisterKnownFeature(AUTHENTICATED_VERSIONS);\n", "import { InputType, NonNullType, Schema, isListType, isNonNullType } from \"./definitions\"\nimport { sameType } from \"./types\";\nimport { valueEquals } from \"./values\";\n\ntype TypeSupportValidator = (schema: Schema, type: InputType) => { valid: boolean, supportedMsg?: string };\n\nexport type ArgumentCompositionStrategy = {\n name: string,\n isTypeSupported: TypeSupportValidator,\n mergeValues: (values: any[]) => any,\n}\n\nfunction supportFixedTypes(types: (schema: Schema) => InputType[]): TypeSupportValidator {\n return (schema, type) => {\n const supported = types(schema);\n return supported.some((t) => sameType(t, type))\n ? { valid: true }\n : { valid: false, supportedMsg: `type(s) ${supported.join(', ')}` };\n };\n}\n\nfunction supportAnyNonNullArray(): TypeSupportValidator {\n return (_, type) => isNonNullType(type) && isListType(type.ofType)\n ? { valid: true }\n : { valid: false, supportedMsg: 'non nullable list types of any type' }\n}\n\nfunction supportAnyArray(): TypeSupportValidator {\n return (_, type) => isListType(type) || (isNonNullType(type) && isListType(type.ofType))\n ? { valid: true }\n : { valid: false, supportedMsg: 'list types of any type' };\n}\n\n// NOTE: This function makes the assumption that for the directive argument\n// being merged, it is not \"nullable with non-null default\" in the supergraph\n// schema (this kind of type/default combo is confusing and should be avoided,\n// if possible). This assumption allows this function to replace null with\n// undefined, which makes for a cleaner supergraph schema.\nfunction mergeNullableValues(\n mergeValues: (values: T[]) => T\n): (values: (T | null | undefined)[]) => T | undefined {\n return (values: (T | null | undefined)[]) => {\n const nonNullValues = values.filter((v) => v !== null && v !== undefined) as T[];\n return nonNullValues.length > 0\n ? mergeValues(nonNullValues)\n : undefined;\n };\n}\n\nfunction unionValues(values: any[]): any {\n return values.reduce((acc, next) => {\n const newValues = next.filter((v1: any) => !acc.some((v2: any) => valueEquals(v1, v2)));\n return acc.concat(newValues);\n }, []);\n}\n\nexport const ARGUMENT_COMPOSITION_STRATEGIES = {\n MAX: {\n name: 'MAX',\n isTypeSupported: supportFixedTypes((schema: Schema) => [new NonNullType(schema.intType())]),\n mergeValues: (values: number[]) => Math.max(...values),\n },\n MIN: {\n name: 'MIN',\n isTypeSupported: supportFixedTypes((schema: Schema) => [new NonNullType(schema.intType())]),\n mergeValues: (values: number[]) => Math.min(...values),\n },\n // NOTE: This doesn't work today because directive applications are de-duped\n // before being merged, we'd need to modify merge logic if we need this kind\n // of behavior.\n // SUM: {\n // name: 'SUM',\n // isTypeSupported: supportFixedTypes((schema: Schema) => [new NonNullType(schema.intType())]),\n // mergeValues: (values: any[]) => values.reduce((acc, val) => acc + val, 0),\n // },\n INTERSECTION: {\n name: 'INTERSECTION',\n isTypeSupported: supportAnyNonNullArray(),\n mergeValues: (values: any[]) => values.reduce((acc, next) => {\n if (acc === undefined) {\n return next;\n } else {\n return acc.filter((v1: any) => next.some((v2: any) => valueEquals(v1, v2)));\n } \n }, undefined) ?? [],\n },\n UNION: {\n name: 'UNION',\n isTypeSupported: supportAnyNonNullArray(),\n mergeValues: unionValues,\n },\n NULLABLE_AND: {\n name: 'NULLABLE_AND',\n isTypeSupported: supportFixedTypes((schema: Schema) => [\n schema.booleanType(),\n new NonNullType(schema.booleanType())\n ]),\n mergeValues: mergeNullableValues(\n (values: boolean[]) => values.every((v) => v)\n ),\n },\n NULLABLE_MAX: {\n name: 'NULLABLE_MAX',\n isTypeSupported: supportFixedTypes((schema: Schema) => [\n schema.intType(),\n new NonNullType(schema.intType())\n ]),\n mergeValues: mergeNullableValues(\n (values: number[]) => Math.max(...values)\n )\n },\n NULLABLE_UNION: {\n name: 'NULLABLE_UNION',\n isTypeSupported: supportAnyArray(),\n mergeValues: mergeNullableValues(unionValues),\n }\n}\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n CorePurpose,\n FeatureDefinition,\n FeatureDefinitions,\n FeatureUrl,\n FeatureVersion,\n} from \"./coreSpec\";\nimport { ListType, NonNullType } from \"../definitions\";\nimport { createDirectiveSpecification, createScalarTypeSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { ARGUMENT_COMPOSITION_STRATEGIES } from \"../argumentCompositionStrategies\";\nimport { assert } from \"../utils\";\n\nexport enum RequiresScopesTypeName {\n SCOPE = 'Scope',\n}\n\nexport class RequiresScopesSpecDefinition extends FeatureDefinition {\n public static readonly directiveName = \"requiresScopes\";\n public static readonly identity =\n `https://specs.apollo.dev/${RequiresScopesSpecDefinition.directiveName}`;\n\n constructor(version: FeatureVersion) {\n super(\n new FeatureUrl(\n RequiresScopesSpecDefinition.identity,\n RequiresScopesSpecDefinition.directiveName,\n version,\n )\n );\n\n this.registerType(createScalarTypeSpecification({ name: RequiresScopesTypeName.SCOPE }));\n\n this.registerDirective(createDirectiveSpecification({\n name: RequiresScopesSpecDefinition.directiveName,\n args: [{\n name: 'scopes',\n type: (schema, feature) => {\n assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n const scopeName = feature.typeNameInSchema(RequiresScopesTypeName.SCOPE);\n const scopeType = schema.type(scopeName);\n assert(scopeType, () => `Expected \"${scopeName}\" to be defined`);\n return new NonNullType(new ListType(new NonNullType(new ListType(new NonNullType(scopeType)))));\n },\n compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.UNION,\n }],\n locations: [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.SCALAR,\n DirectiveLocation.ENUM,\n ],\n composes: true,\n supergraphSpecification: () => REQUIRES_SCOPES_VERSIONS.latest(),\n }));\n }\n\n get defaultCorePurpose(): CorePurpose {\n return 'SECURITY';\n }\n}\n\nexport const REQUIRES_SCOPES_VERSIONS =\n new FeatureDefinitions(\n RequiresScopesSpecDefinition.identity\n ).add(new RequiresScopesSpecDefinition(new FeatureVersion(0, 1)));\n\nregisterKnownFeature(REQUIRES_SCOPES_VERSIONS);\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n CorePurpose,\n FeatureDefinition,\n FeatureDefinitions,\n FeatureUrl,\n FeatureVersion,\n} from \"./coreSpec\";\nimport { ListType, NonNullType } from \"../definitions\";\nimport { createDirectiveSpecification, createScalarTypeSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { ARGUMENT_COMPOSITION_STRATEGIES } from \"../argumentCompositionStrategies\";\nimport { assert } from \"../utils\";\n\nexport enum PolicyTypeName {\n POLICY = 'Policy',\n}\nexport class PolicySpecDefinition extends FeatureDefinition {\n public static readonly directiveName = \"policy\";\n public static readonly identity =\n `https://specs.apollo.dev/${PolicySpecDefinition.directiveName}`;\n\n constructor(version: FeatureVersion) {\n super(\n new FeatureUrl(\n PolicySpecDefinition.identity,\n PolicySpecDefinition.directiveName,\n version,\n )\n );\n\n this.registerType(createScalarTypeSpecification({ name: PolicyTypeName.POLICY }));\n\n this.registerDirective(createDirectiveSpecification({\n name: PolicySpecDefinition.directiveName,\n args: [{\n name: 'policies',\n type: (schema, feature) => {\n assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n const policyName = feature.typeNameInSchema(PolicyTypeName.POLICY);\n const PolicyType = schema.type(policyName);\n assert(PolicyType, () => `Expected \"${policyName}\" to be defined`);\n return new NonNullType(new ListType(new NonNullType(new ListType(new NonNullType(PolicyType)))));\n },\n compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.UNION,\n }],\n locations: [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.SCALAR,\n DirectiveLocation.ENUM,\n ],\n composes: true,\n supergraphSpecification: () => POLICY_VERSIONS.latest(),\n }));\n }\n\n get defaultCorePurpose(): CorePurpose {\n return 'SECURITY';\n }\n}\n\nexport const POLICY_VERSIONS =\n new FeatureDefinitions(\n PolicySpecDefinition.identity\n ).add(new PolicySpecDefinition(new FeatureVersion(0, 1)));\n\nregisterKnownFeature(POLICY_VERSIONS);\n", "import { DirectiveLocation, GraphQLError, Kind } from 'graphql';\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion, LinkDirectiveArgs } from \"./coreSpec\";\nimport {\n Schema,\n NonNullType,\n InputObjectType,\n InputFieldDefinition,\n ListType,\n DirectiveDefinition,\n SchemaElement,\n} from '../definitions';\nimport { registerKnownFeature } from '../knownCoreFeatures';\nimport { createDirectiveSpecification } from '../directiveAndTypeSpecification';\nimport { ERRORS } from '../error';\n\nexport const sourceIdentity = 'https://specs.apollo.dev/source';\n\nexport class SourceSpecDefinition extends FeatureDefinition {\n constructor(version: FeatureVersion, readonly minimumFederationVersion: FeatureVersion) {\n super(new FeatureUrl(sourceIdentity, 'source', version), minimumFederationVersion);\n\n this.registerDirective(createDirectiveSpecification({\n name: 'sourceAPI',\n locations: [DirectiveLocation.SCHEMA],\n repeatable: true,\n // We \"compose\" these `@source{API,Type,Field}` directives using the\n // `@join__directive` mechanism, so they do not need to be composed in the\n // way passing `composes: true` here implies.\n composes: false,\n }));\n\n this.registerDirective(createDirectiveSpecification({\n name: 'sourceType',\n locations: [DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE],\n repeatable: true,\n composes: false,\n }));\n\n this.registerDirective(createDirectiveSpecification({\n name: 'sourceField',\n locations: [DirectiveLocation.FIELD_DEFINITION],\n repeatable: true,\n composes: false,\n }));\n }\n\n addElementsToSchema(schema: Schema): GraphQLError[] {\n const sourceAPI = this.addDirective(schema, 'sourceAPI').addLocations(DirectiveLocation.SCHEMA);\n sourceAPI.repeatable = true;\n\n sourceAPI.addArgument('name', new NonNullType(schema.stringType()));\n\n const HTTPHeaderMapping = schema.addType(new InputObjectType('HTTPHeaderMapping'));\n HTTPHeaderMapping.addField(new InputFieldDefinition('name')).type =\n new NonNullType(schema.stringType());\n HTTPHeaderMapping.addField(new InputFieldDefinition('as')).type =\n schema.stringType();\n HTTPHeaderMapping.addField(new InputFieldDefinition('value')).type =\n schema.stringType();\n\n const HTTPSourceAPI = schema.addType(new InputObjectType('HTTPSourceAPI'));\n HTTPSourceAPI.addField(new InputFieldDefinition('baseURL')).type =\n new NonNullType(schema.stringType());\n HTTPSourceAPI.addField(new InputFieldDefinition('headers')).type =\n new ListType(new NonNullType(HTTPHeaderMapping));\n sourceAPI.addArgument('http', HTTPSourceAPI);\n\n const sourceType = this.addDirective(schema, 'sourceType').addLocations(\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n // TODO Allow @sourceType on unions, similar to interfaces?\n // DirectiveLocation.UNION,\n );\n sourceType.repeatable = true;\n sourceType.addArgument('api', new NonNullType(schema.stringType()));\n\n const URLPathTemplate = this.addScalarType(schema, 'URLPathTemplate');\n const JSONSelection = this.addScalarType(schema, 'JSONSelection');\n\n const HTTPSourceType = schema.addType(new InputObjectType('HTTPSourceType'));\n HTTPSourceType.addField(new InputFieldDefinition('GET')).type = URLPathTemplate;\n HTTPSourceType.addField(new InputFieldDefinition('POST')).type = URLPathTemplate;\n HTTPSourceType.addField(new InputFieldDefinition('headers')).type =\n new ListType(new NonNullType(HTTPHeaderMapping));\n // Note that this body selection can only use @key fields of the type,\n // because there are no field arguments to consume with @sourceType.\n HTTPSourceType.addField(new InputFieldDefinition('body')).type = JSONSelection;\n sourceType.addArgument('http', HTTPSourceType);\n\n sourceType.addArgument('selection', new NonNullType(JSONSelection));\n\n const KeyTypeMap = schema.addType(new InputObjectType('KeyTypeMap'));\n KeyTypeMap.addField(new InputFieldDefinition('key')).type = new NonNullType(schema.stringType());\n KeyTypeMap.addField(new InputFieldDefinition('typeMap')).type =\n // TypenameKeyMap is a scalar type similar to a JSON dictionary, where the\n // keys are __typename strings and the values are values of the key field.\n this.addScalarType(schema, 'TypenameKeyMap');\n sourceType.addArgument('keyTypeMap', KeyTypeMap);\n\n const sourceField = this.addDirective(schema, 'sourceField').addLocations(\n DirectiveLocation.FIELD_DEFINITION,\n );\n sourceField.repeatable = true;\n sourceField.addArgument('api', new NonNullType(schema.stringType()));\n sourceField.addArgument('selection', JSONSelection);\n sourceField.addArgument('keyTypeMap', KeyTypeMap);\n\n const HTTPSourceField = schema.addType(new InputObjectType('HTTPSourceField'));\n HTTPSourceField.addField(new InputFieldDefinition('GET')).type = URLPathTemplate;\n HTTPSourceField.addField(new InputFieldDefinition('POST')).type = URLPathTemplate;\n HTTPSourceField.addField(new InputFieldDefinition('PUT')).type = URLPathTemplate;\n HTTPSourceField.addField(new InputFieldDefinition('PATCH')).type = URLPathTemplate;\n HTTPSourceField.addField(new InputFieldDefinition('DELETE')).type = URLPathTemplate;\n HTTPSourceField.addField(new InputFieldDefinition('body')).type = JSONSelection;\n HTTPSourceField.addField(new InputFieldDefinition('headers')).type =\n new ListType(new NonNullType(HTTPHeaderMapping));\n sourceField.addArgument('http', HTTPSourceField);\n\n return [];\n }\n\n allElementNames(): string[] {\n return [\n '@sourceAPI',\n '@sourceType',\n '@sourceField',\n // 'JSONSelection',\n // 'URLPathTemplate',\n // 'JSON',\n // 'HTTPHeaderMapping',\n // 'HTTPSourceAPI',\n // 'HTTPSourceType',\n // 'HTTPSourceField',\n // 'KeyTypeMap',\n ];\n }\n\n sourceAPIDirective(schema: Schema) {\n return this.directive(schema, 'sourceAPI')!;\n }\n\n sourceTypeDirective(schema: Schema) {\n return this.directive(schema, 'sourceType')!;\n }\n\n sourceFieldDirective(schema: Schema) {\n return this.directive(schema, 'sourceField')!;\n }\n\n private getSourceDirectives(schema: Schema) {\n const result: {\n sourceAPI?: DirectiveDefinition;\n sourceType?: DirectiveDefinition;\n sourceField?: DirectiveDefinition;\n } = {};\n\n schema.schemaDefinition.appliedDirectivesOf('link')\n .forEach(linkDirective => {\n const { url, import: imports } = linkDirective.arguments();\n const featureUrl = FeatureUrl.maybeParse(url);\n if (imports && featureUrl && featureUrl.identity === sourceIdentity) {\n imports.forEach(nameOrRename => {\n const originalName = typeof nameOrRename === 'string' ? nameOrRename : nameOrRename.name;\n const importedName = typeof nameOrRename === 'string' ? nameOrRename : nameOrRename.as || originalName;\n const importedNameWithoutAt = importedName.replace(/^@/, '');\n\n if (originalName === '@sourceAPI') {\n result.sourceAPI = schema.directive(importedNameWithoutAt) as DirectiveDefinition;\n } else if (originalName === '@sourceType') {\n result.sourceType = schema.directive(importedNameWithoutAt) as DirectiveDefinition;\n } else if (originalName === '@sourceField') {\n result.sourceField = schema.directive(importedNameWithoutAt) as DirectiveDefinition;\n }\n });\n }\n });\n\n return result;\n }\n\n override validateSubgraphSchema(schema: Schema): GraphQLError[] {\n const errors = super.validateSubgraphSchema(schema);\n const {\n sourceAPI,\n sourceType,\n sourceField,\n } = this.getSourceDirectives(schema);\n\n if (!(sourceAPI || sourceType || sourceField)) {\n // If none of the @source* directives are present, nothing needs\n // validating.\n return [];\n }\n\n const apiNameToProtocol = new Map();\n\n if (sourceAPI) {\n this.validateSourceAPI(sourceAPI, apiNameToProtocol, errors);\n }\n\n if (sourceType) {\n this.validateSourceType(sourceType, apiNameToProtocol, errors);\n }\n\n if (sourceField) {\n this.validateSourceField(sourceField, apiNameToProtocol, errors);\n }\n\n return errors;\n }\n\n private validateSourceAPI(\n sourceAPI: DirectiveDefinition,\n apiNameToProtocol: Map,\n errors: GraphQLError[],\n ) {\n sourceAPI.applications().forEach(application => {\n const { name, ...rest } = application.arguments();\n\n if (!isValidSourceAPIName(name)) {\n errors.push(ERRORS.SOURCE_API_NAME_INVALID.err(\n `${sourceAPI}(name: ${\n JSON.stringify(name)\n }) must specify name using only [a-zA-Z0-9-_] characters`,\n { nodes: application.sourceAST },\n ));\n }\n\n if (apiNameToProtocol.has(name)) {\n errors.push(ERRORS.SOURCE_API_NAME_INVALID.err(\n `${sourceAPI} must specify unique name (${JSON.stringify(name)} reused)`,\n { nodes: application.sourceAST },\n ));\n }\n\n let protocol: ProtocolName | undefined;\n KNOWN_SOURCE_PROTOCOLS.forEach(knownProtocol => {\n if (rest[knownProtocol]) {\n if (protocol) {\n errors.push(ERRORS.SOURCE_API_PROTOCOL_INVALID.err(\n `${sourceAPI} must specify only one of ${\n KNOWN_SOURCE_PROTOCOLS.join(', ')\n } but specified both ${protocol} and ${knownProtocol}`,\n { nodes: application.sourceAST },\n ));\n }\n protocol = knownProtocol;\n }\n });\n\n if (protocol) {\n apiNameToProtocol.set(name, protocol);\n\n const protocolValue = rest[protocol];\n if (protocolValue && protocol === HTTP_PROTOCOL) {\n const { baseURL, headers } = protocolValue as HTTPSourceAPI;\n\n try {\n new URL(baseURL);\n } catch (e) {\n errors.push(ERRORS.SOURCE_API_HTTP_BASE_URL_INVALID.err(\n `${sourceAPI} http.baseURL ${JSON.stringify(baseURL)} must be valid URL (error: ${e.message})`,\n { nodes: application.sourceAST },\n ));\n }\n\n validateHTTPHeaders(headers, errors, sourceAPI.name);\n }\n } else {\n errors.push(ERRORS.SOURCE_API_PROTOCOL_INVALID.err(\n `${sourceAPI} must specify one protocol from the set {${KNOWN_SOURCE_PROTOCOLS.join(',')}}`,\n { nodes: application.sourceAST },\n ));\n }\n });\n }\n\n private validateSourceType(\n sourceType: DirectiveDefinition,\n apiNameToProtocol: Map,\n errors: GraphQLError[],\n ) {\n sourceType.applications().forEach(application => {\n const { api, selection, ...rest } = application.arguments();\n if (!api || !apiNameToProtocol.has(api)) {\n errors.push(ERRORS.SOURCE_TYPE_API_ERROR.err(\n `${sourceType} specifies unknown api ${api}`,\n { nodes: application.sourceAST },\n ));\n }\n\n const expectedProtocol = apiNameToProtocol.get(api) || HTTP_PROTOCOL;\n const protocolValue = expectedProtocol && rest[expectedProtocol];\n if (expectedProtocol && !protocolValue) {\n errors.push(ERRORS.SOURCE_TYPE_PROTOCOL_INVALID.err(\n `${sourceType} must specify same ${\n expectedProtocol\n } argument as corresponding @sourceAPI for api ${api}`,\n { nodes: application.sourceAST },\n ));\n }\n\n if (protocolValue && expectedProtocol === HTTP_PROTOCOL) {\n const { GET, POST, headers, body } = protocolValue as HTTPSourceType;\n\n if ([GET, POST].filter(Boolean).length !== 1) {\n errors.push(ERRORS.SOURCE_TYPE_HTTP_METHOD_INVALID.err(\n `${sourceType} must specify exactly one of http.GET or http.POST`,\n { nodes: application.sourceAST },\n ));\n } else {\n const urlPathTemplate = (GET || POST)!;\n try {\n // TODO Validate URL path template uses only available @key fields\n // of the type.\n parseURLPathTemplate(urlPathTemplate);\n } catch (e) {\n errors.push(ERRORS.SOURCE_TYPE_HTTP_PATH_INVALID.err(\n `${sourceType} http.GET or http.POST must be valid URL path template (error: ${e.message})`\n ));\n }\n }\n\n validateHTTPHeaders(headers, errors, sourceType.name);\n\n if (body) {\n if (GET) {\n errors.push(ERRORS.SOURCE_TYPE_HTTP_BODY_INVALID.err(\n `${sourceType} http.GET cannot specify http.body`,\n { nodes: application.sourceAST },\n ));\n }\n\n try {\n parseJSONSelection(body);\n // TODO Validate body selection matches the available fields.\n } catch (e) {\n errors.push(ERRORS.SOURCE_TYPE_HTTP_BODY_INVALID.err(\n `${sourceType} http.body not valid JSONSelection (error: ${e.message})`,\n { nodes: application.sourceAST },\n ));\n }\n }\n }\n\n const ast = application.parent.sourceAST;\n switch (ast?.kind) {\n case \"ObjectTypeDefinition\":\n case \"InterfaceTypeDefinition\":\n if (!ast.directives?.some(directive => directive.name.value === \"key\")) {\n errors.push(ERRORS.SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY.err(\n `${sourceType} must be applied to an entity type that also has a @key directive`,\n { nodes: application.sourceAST },\n ));\n }\n try {\n parseJSONSelection(selection);\n // TODO Validate selection is valid JSONSelection for type.\n } catch (e) {\n errors.push(ERRORS.SOURCE_TYPE_SELECTION_INVALID.err(\n `${sourceType} selection not valid JSONSelection (error: ${e.message})`,\n { nodes: application.sourceAST },\n ));\n }\n break;\n default:\n errors.push(ERRORS.SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY.err(\n `${sourceType} must be applied to object or interface type`,\n { nodes: application.sourceAST },\n ));\n }\n });\n }\n\n private validateSourceField(\n sourceField: DirectiveDefinition,\n apiNameToProtocol: Map,\n errors: GraphQLError[],\n ) {\n sourceField.applications().forEach(application => {\n const { api, selection, ...rest } = application.arguments();\n if (!api || !apiNameToProtocol.has(api)) {\n errors.push(ERRORS.SOURCE_FIELD_API_ERROR.err(\n `${sourceField} specifies unknown api ${api}`,\n { nodes: application.sourceAST },\n ));\n }\n\n const expectedProtocol = apiNameToProtocol.get(api) || HTTP_PROTOCOL;\n const protocolValue = expectedProtocol && rest[expectedProtocol];\n if (protocolValue && expectedProtocol === HTTP_PROTOCOL) {\n const {\n GET, POST, PUT, PATCH, DELETE,\n headers,\n body,\n } = protocolValue as HTTPSourceField;\n\n const usedMethods = [GET, POST, PUT, PATCH, DELETE].filter(Boolean);\n if (usedMethods.length > 1) {\n errors.push(ERRORS.SOURCE_FIELD_HTTP_METHOD_INVALID.err(\n `${sourceField} allows at most one of http.{GET,POST,PUT,PATCH,DELETE}`,\n ));\n } else if (usedMethods.length === 1) {\n const urlPathTemplate = usedMethods[0]!;\n try {\n // TODO Validate URL path template uses only available fields of\n // the type and/or argument names of the field.\n parseURLPathTemplate(urlPathTemplate);\n } catch (e) {\n errors.push(ERRORS.SOURCE_FIELD_HTTP_PATH_INVALID.err(\n `${sourceField} http.{GET,POST,PUT,PATCH,DELETE} must be valid URL path template (error: ${e.message})`\n ));\n }\n }\n\n validateHTTPHeaders(headers, errors, sourceField.name);\n\n if (body) {\n if (GET) {\n errors.push(ERRORS.SOURCE_FIELD_HTTP_BODY_INVALID.err(\n `${sourceField} http.GET cannot specify http.body`,\n { nodes: application.sourceAST },\n ));\n } else if (DELETE) {\n errors.push(ERRORS.SOURCE_FIELD_HTTP_BODY_INVALID.err(\n `${sourceField} http.DELETE cannot specify http.body`,\n { nodes: application.sourceAST },\n ));\n }\n\n try {\n parseJSONSelection(body);\n // TODO Validate body string matches the available fields of the\n // parent type and/or argument names of the field.\n } catch (e) {\n errors.push(ERRORS.SOURCE_FIELD_HTTP_BODY_INVALID.err(\n `${sourceField} http.body not valid JSONSelection (error: ${e.message})`,\n { nodes: application.sourceAST },\n ));\n }\n }\n }\n\n if (selection) {\n try {\n parseJSONSelection(selection);\n // TODO Validate selection string matches the available fields of\n // the parent type and/or argument names of the field.\n } catch (e) {\n errors.push(ERRORS.SOURCE_FIELD_SELECTION_INVALID.err(\n `${sourceField} selection not valid JSONSelection (error: ${e.message})`,\n { nodes: application.sourceAST },\n ));\n }\n }\n\n // @sourceField is allowed only on root Query and Mutation fields or\n // fields of entity object types.\n const fieldParent = application.parent;\n if (fieldParent.sourceAST?.kind !== Kind.FIELD_DEFINITION) {\n errors.push(ERRORS.SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD.err(\n `${sourceField} must be applied to field`,\n { nodes: application.sourceAST },\n ));\n } else {\n const typeGrandparent = fieldParent.parent as SchemaElement;\n if (typeGrandparent.sourceAST?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n errors.push(ERRORS.SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD.err(\n `${sourceField} must be applied to field of object type`,\n { nodes: application.sourceAST },\n ));\n } else {\n const typeGrandparentName = typeGrandparent.sourceAST?.name.value;\n if (\n typeGrandparentName !== \"Query\" &&\n typeGrandparentName !== \"Mutation\" &&\n typeGrandparent.appliedDirectivesOf(\"key\").length === 0\n ) {\n errors.push(ERRORS.SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD.err(\n `${sourceField} must be applied to root Query or Mutation field or field of entity type`,\n { nodes: application.sourceAST },\n ));\n }\n }\n }\n });\n }\n}\n\nfunction isValidSourceAPIName(name: string): boolean {\n return /^[a-z-_][a-z0-9-_]*$/i.test(name);\n}\n\nfunction isValidHTTPHeaderName(name: string): boolean {\n // https://developers.cloudflare.com/rules/transform/request-header-modification/reference/header-format/\n return /^[a-zA-Z0-9-_]+$/.test(name);\n}\n\nfunction validateHTTPHeaders(\n headers: HTTPHeaderMapping[] | undefined,\n errors: GraphQLError[],\n directiveName: string,\n) {\n if (!directiveName.startsWith('@')) {\n directiveName = '@' + directiveName;\n }\n if (headers) {\n headers.forEach(({ name, as, value }, i) => {\n // Ensure name is a valid HTTP header name.\n if (!isValidHTTPHeaderName(name)) {\n errors.push(ERRORS.SOURCE_HTTP_HEADERS_INVALID.err(\n `${directiveName} header ${JSON.stringify(headers[i])} specifies invalid name`,\n ));\n }\n\n if (as && !isValidHTTPHeaderName(as)) {\n errors.push(ERRORS.SOURCE_HTTP_HEADERS_INVALID.err(\n `${directiveName} header ${JSON.stringify(headers[i])} specifies invalid 'as' name`,\n ));\n }\n\n if (as && value) {\n errors.push(ERRORS.SOURCE_HTTP_HEADERS_INVALID.err(\n `${directiveName} header ${JSON.stringify(headers[i])} should specify at most one of 'as' or 'value'`,\n ));\n }\n\n // TODO Validate value is valid HTTP header value?\n });\n }\n}\n\nfunction parseJSONSelection(_selection: string): any {\n // TODO\n}\n\nfunction parseURLPathTemplate(_template: string): any {\n // TODO\n}\n\nconst HTTP_PROTOCOL = \"http\";\nconst KNOWN_SOURCE_PROTOCOLS = [\n HTTP_PROTOCOL,\n] as const;\ntype ProtocolName = (typeof KNOWN_SOURCE_PROTOCOLS)[number];\n\nexport type SourceAPIDirectiveArgs = {\n name: string;\n http?: HTTPSourceAPI;\n};\n\nexport type HTTPSourceAPI = {\n baseURL: string;\n headers?: HTTPHeaderMapping[];\n};\n\nexport type HTTPHeaderMapping = {\n name: string;\n as?: string;\n value?: string;\n};\n\nexport type SourceTypeDirectiveArgs = {\n api: string;\n http?: HTTPSourceType;\n selection: JSONSelection;\n keyTypeMap?: KeyTypeMap;\n};\n\nexport type HTTPSourceType = {\n GET?: URLPathTemplate;\n POST?: URLPathTemplate;\n headers?: HTTPHeaderMapping[];\n body?: JSONSelection;\n};\n\ntype URLPathTemplate = string;\ntype JSONSelection = string;\n\ntype KeyTypeMap = {\n key: string;\n typeMap: {\n [__typename: string]: string;\n };\n};\n\nexport type SourceFieldDirectiveArgs = {\n api: string;\n http?: HTTPSourceField;\n selection?: JSONSelection;\n keyTypeMap?: KeyTypeMap;\n};\n\nexport type HTTPSourceField = {\n GET?: URLPathTemplate;\n POST?: URLPathTemplate;\n PUT?: URLPathTemplate;\n PATCH?: URLPathTemplate;\n DELETE?: URLPathTemplate;\n body?: JSONSelection;\n headers?: HTTPHeaderMapping[];\n};\n\nexport const SOURCE_VERSIONS = new FeatureDefinitions(sourceIdentity)\n .add(new SourceSpecDefinition(new FeatureVersion(0, 1), new FeatureVersion(2, 7)));\n\nregisterKnownFeature(SOURCE_VERSIONS);\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n CorePurpose,\n FeatureDefinition,\n FeatureDefinitions,\n FeatureUrl,\n FeatureVersion,\n} from \"./coreSpec\";\nimport { DirectiveDefinition, NonNullType, Schema, isInputType } from \"../definitions\";\nimport { DirectiveSpecification, createDirectiveSpecification, createScalarTypeSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { Subgraph } from '../federation';\nimport { assert } from '../utils';\n\nexport enum ContextDirectiveName {\n CONTEXT = 'context',\n FROM_CONTEXT = 'fromContext',\n}\n\nconst fieldValueScalar = 'ContextFieldValue';\n\nexport class ContextSpecDefinition extends FeatureDefinition {\n public static readonly directiveName = 'context';\n public static readonly identity =\n `https://specs.apollo.dev/${ContextSpecDefinition.directiveName}`;\n public readonly contextDirectiveSpec: DirectiveSpecification;\n public readonly fromContextDirectiveSpec: DirectiveSpecification;\n\n constructor(version: FeatureVersion) {\n super(\n new FeatureUrl(\n ContextSpecDefinition.identity,\n ContextSpecDefinition.directiveName,\n version,\n )\n );\n\n this.registerType(createScalarTypeSpecification({ name: fieldValueScalar }));\n \n this.contextDirectiveSpec = createDirectiveSpecification({\n name: ContextDirectiveName.CONTEXT,\n locations: [DirectiveLocation.INTERFACE, DirectiveLocation.OBJECT, DirectiveLocation.UNION],\n args: [{ name: 'name', type: (schema) => new NonNullType(schema.stringType())}],\n composes: true,\n repeatable: true,\n supergraphSpecification: (fedVersion) => CONTEXT_VERSIONS.getMinimumRequiredVersion(fedVersion),\n staticArgumentTransform: (subgraph: Subgraph, args: {[key: string]: any}) => {\n const subgraphName = subgraph.name;\n return {\n name: `${subgraphName}__${args.name}`,\n }; \n },\n });\n \n this.fromContextDirectiveSpec = createDirectiveSpecification({\n name: ContextDirectiveName.FROM_CONTEXT,\n locations: [DirectiveLocation.ARGUMENT_DEFINITION],\n args: [{ name: 'field', type: (schema, feature) => {\n assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n const fieldValue = feature.typeNameInSchema(fieldValueScalar);\n const fieldValueType = schema.type(fieldValue);\n assert(fieldValueType, () => `Expected \"${fieldValue}\" to be defined`);\n assert(isInputType(fieldValueType), `Expected \"${fieldValue}\" to be an input type`);\n return fieldValueType;\n }}],\n composes: false,\n });\n \n this.registerDirective(this.contextDirectiveSpec);\n this.registerDirective(this.fromContextDirectiveSpec);\n }\n\n get defaultCorePurpose(): CorePurpose {\n return 'SECURITY';\n }\n \n contextDirective(schema: Schema): DirectiveDefinition<{ name: string }> | undefined {\n return this.directive(schema, ContextSpecDefinition.directiveName);\n }\n}\n\nexport const CONTEXT_VERSIONS =\n new FeatureDefinitions(\n ContextSpecDefinition.identity\n ).add(new ContextSpecDefinition(new FeatureVersion(0, 1)));\n\nregisterKnownFeature(CONTEXT_VERSIONS);\n", "import { DirectiveLocation } from 'graphql';\nimport { createDirectiveSpecification } from '../directiveAndTypeSpecification';\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from './coreSpec';\nimport { DirectiveDefinition, ListType, NonNullType, Schema } from '../definitions';\nimport { registerKnownFeature } from '../knownCoreFeatures';\nimport { ARGUMENT_COMPOSITION_STRATEGIES } from '../argumentCompositionStrategies';\n\nexport const costIdentity = 'https://specs.apollo.dev/cost';\n\nexport class CostSpecDefinition extends FeatureDefinition {\n constructor(version: FeatureVersion, readonly minimumFederationVersion: FeatureVersion) {\n super(new FeatureUrl(costIdentity, 'cost', version), minimumFederationVersion);\n\n this.registerDirective(createDirectiveSpecification({\n name: 'cost',\n locations: [\n DirectiveLocation.ARGUMENT_DEFINITION,\n DirectiveLocation.ENUM,\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.INPUT_FIELD_DEFINITION,\n DirectiveLocation.OBJECT,\n DirectiveLocation.SCALAR\n ],\n args: [{ name: 'weight', type: (schema) => new NonNullType(schema.intType()), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.MAX }],\n composes: true,\n repeatable: false,\n supergraphSpecification: (fedVersion) => COST_VERSIONS.getMinimumRequiredVersion(fedVersion),\n }));\n\n this.registerDirective(createDirectiveSpecification({\n name: 'listSize',\n locations: [DirectiveLocation.FIELD_DEFINITION],\n args: [\n { name: 'assumedSize', type: (schema) => schema.intType(), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_MAX },\n { name: 'slicingArguments', type: (schema) => new ListType(new NonNullType(schema.stringType())), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_UNION },\n { name: 'sizedFields', type: (schema) => new ListType(new NonNullType(schema.stringType())), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_UNION },\n { name: 'requireOneSlicingArgument', type: (schema) => schema.booleanType(), defaultValue: true, compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_AND },\n ],\n composes: true,\n repeatable: false,\n supergraphSpecification: (fedVersion) => COST_VERSIONS.getMinimumRequiredVersion(fedVersion)\n }));\n }\n\n costDirective(schema: Schema): DirectiveDefinition | undefined {\n return this.directive(schema, 'cost');\n }\n\n listSizeDirective(schema: Schema): DirectiveDefinition | undefined {\n return this.directive(schema, 'listSize');\n }\n}\n\nexport const COST_VERSIONS = new FeatureDefinitions(costIdentity)\n .add(new CostSpecDefinition(new FeatureVersion(0, 1), new FeatureVersion(2, 9)));\n\nregisterKnownFeature(COST_VERSIONS);\n\nexport interface CostDirectiveArguments {\n weight: number;\n}\n\nexport interface ListSizeDirectiveArguments {\n assumedSize?: number;\n slicingArguments?: string[];\n sizedFields?: string[];\n requireOneSlicingArgument?: boolean;\n}\n", "import {\n InputType,\n NonNullType,\n Schema,\n} from \"../definitions\";\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport {\n ArgumentSpecification,\n createDirectiveSpecification,\n createScalarTypeSpecification,\n} from \"../directiveAndTypeSpecification\";\nimport { DirectiveLocation } from \"graphql\";\nimport { assert } from \"../utils\";\nimport { TAG_VERSIONS } from \"./tagSpec\";\nimport { federationMetadata } from \"../federation\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { INACCESSIBLE_VERSIONS } from \"./inaccessibleSpec\";\nimport { AUTHENTICATED_VERSIONS } from \"./authenticatedSpec\";\nimport { REQUIRES_SCOPES_VERSIONS } from \"./requiresScopesSpec\";\nimport { POLICY_VERSIONS } from './policySpec';\nimport { SOURCE_VERSIONS } from './sourceSpec';\nimport { CONTEXT_VERSIONS } from './contextSpec';\nimport { COST_VERSIONS } from \"./costSpec\";\n\nexport const federationIdentity = 'https://specs.apollo.dev/federation';\n\nexport enum FederationTypeName {\n FIELD_SET = 'FieldSet',\n CONTEXT_FIELD_VALUE = 'ContextFieldValue',\n}\n\nexport enum FederationDirectiveName {\n KEY = 'key',\n EXTERNAL = 'external',\n REQUIRES = 'requires',\n PROVIDES = 'provides',\n EXTENDS = 'extends',\n SHAREABLE = 'shareable',\n OVERRIDE = 'override',\n TAG = 'tag',\n INACCESSIBLE = 'inaccessible',\n COMPOSE_DIRECTIVE = 'composeDirective',\n INTERFACE_OBJECT = 'interfaceObject',\n AUTHENTICATED = 'authenticated',\n REQUIRES_SCOPES = 'requiresScopes',\n POLICY = 'policy',\n SOURCE_API = 'sourceAPI',\n SOURCE_TYPE = 'sourceType',\n SOURCE_FIELD = 'sourceField',\n CONTEXT = 'context',\n FROM_CONTEXT = 'fromContext',\n COST = 'cost',\n LIST_SIZE = 'listSize',\n}\n\nconst fieldSetTypeSpec = createScalarTypeSpecification({ name: FederationTypeName.FIELD_SET });\n\nconst fieldsArgument: ArgumentSpecification = { name: 'fields', type: (schema) => fieldSetType(schema) };\n\nconst keyDirectiveSpec = createDirectiveSpecification({\n name: FederationDirectiveName.KEY,\n locations: [DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE],\n repeatable: true,\n args: [\n fieldsArgument,\n { name: 'resolvable', type: (schema) => schema.booleanType(), defaultValue: true },\n ]\n});\n\nconst extendsDirectiveSpec = createDirectiveSpecification({\n name: FederationDirectiveName.EXTENDS,\n locations: [DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE],\n});\n\nconst externalDirectiveSpec = createDirectiveSpecification({\n name: FederationDirectiveName.EXTERNAL,\n locations: [DirectiveLocation.OBJECT, DirectiveLocation.FIELD_DEFINITION],\n args: [{ name: 'reason', type: (schema) => schema.stringType() }],\n});\n\nconst requiresDirectiveSpec = createDirectiveSpecification({\n name: FederationDirectiveName.REQUIRES,\n locations: [DirectiveLocation.FIELD_DEFINITION],\n args: [fieldsArgument],\n});\n\nconst providesDirectiveSpec = createDirectiveSpecification({\n name: FederationDirectiveName.PROVIDES,\n locations: [DirectiveLocation.FIELD_DEFINITION],\n args: [fieldsArgument],\n});\n\nconst legacyFederationTypes = [\n fieldSetTypeSpec,\n];\n\nconst legacyFederationDirectives = [\n keyDirectiveSpec,\n requiresDirectiveSpec,\n providesDirectiveSpec,\n externalDirectiveSpec,\n // This should really be v0.1 instead of v0.2, but we can't change this to\n // v0.1 without checking whether anyone relied on the v0.2 behavior.\n TAG_VERSIONS.find(new FeatureVersion(0, 2))!.tagDirectiveSpec,\n extendsDirectiveSpec,\n];\n\nexport const FEDERATION1_TYPES = legacyFederationTypes;\nexport const FEDERATION1_DIRECTIVES = legacyFederationDirectives;\n\n\nfunction fieldSetType(schema: Schema): InputType {\n const metadata = federationMetadata(schema);\n assert(metadata, `The schema is not a federation subgraph`);\n return new NonNullType(metadata.fieldSetType());\n}\n\nexport class FederationSpecDefinition extends FeatureDefinition {\n constructor(version: FeatureVersion) {\n super(new FeatureUrl(federationIdentity, 'federation', version));\n\n for (const type of legacyFederationTypes) {\n this.registerType(type);\n }\n\n for (const directive of legacyFederationDirectives) {\n this.registerDirective(directive);\n }\n\n this.registerDirective(createDirectiveSpecification({\n name: FederationDirectiveName.SHAREABLE,\n locations: [DirectiveLocation.OBJECT, DirectiveLocation.FIELD_DEFINITION],\n repeatable: version.gte(new FeatureVersion(2, 2)),\n }));\n\n this.registerSubFeature(INACCESSIBLE_VERSIONS.getMinimumRequiredVersion(version));\n\n if (version >= (new FeatureVersion(2, 7))) {\n this.registerDirective(createDirectiveSpecification({\n name: FederationDirectiveName.OVERRIDE,\n locations: [DirectiveLocation.FIELD_DEFINITION],\n args: [\n { name: 'from', type: (schema) => new NonNullType(schema.stringType()) },\n { name: 'label', type: (schema) => schema.stringType() },\n ],\n }));\n } else {\n this.registerDirective(createDirectiveSpecification({\n name: FederationDirectiveName.OVERRIDE,\n locations: [DirectiveLocation.FIELD_DEFINITION],\n args: [{ name: 'from', type: (schema) => new NonNullType(schema.stringType()) }],\n }));\n }\n\n if (version.gte(new FeatureVersion(2, 1))) {\n this.registerDirective(createDirectiveSpecification({\n name: FederationDirectiveName.COMPOSE_DIRECTIVE,\n locations: [DirectiveLocation.SCHEMA],\n repeatable: true,\n args: [{ name: 'name', type: (schema) => schema.stringType() }],\n }));\n }\n\n if (version.gte(new FeatureVersion(2, 3))) {\n this.registerDirective(createDirectiveSpecification({\n name: FederationDirectiveName.INTERFACE_OBJECT,\n locations: [DirectiveLocation.OBJECT],\n }));\n this.registerSubFeature(TAG_VERSIONS.find(new FeatureVersion(0, 3))!);\n }\n\n if (version.gte(new FeatureVersion(2, 5))) {\n this.registerSubFeature(AUTHENTICATED_VERSIONS.find(new FeatureVersion(0, 1))!);\n this.registerSubFeature(REQUIRES_SCOPES_VERSIONS.find(new FeatureVersion(0, 1))!);\n }\n\n if (version.gte(new FeatureVersion(2, 6))) {\n this.registerSubFeature(POLICY_VERSIONS.find(new FeatureVersion(0, 1))!);\n }\n\n if (version.gte(new FeatureVersion(2, 7))) {\n this.registerSubFeature(SOURCE_VERSIONS.find(new FeatureVersion(0, 1))!);\n }\n \n if (version.gte(new FeatureVersion(2, 8))) {\n this.registerSubFeature(CONTEXT_VERSIONS.find(new FeatureVersion(0, 1))!);\n }\n\n if (version.gte(new FeatureVersion(2, 9))) {\n this.registerSubFeature(COST_VERSIONS.find(new FeatureVersion(0, 1))!);\n }\n }\n}\n\nexport const FEDERATION_VERSIONS = new FeatureDefinitions(federationIdentity)\n .add(new FederationSpecDefinition(new FeatureVersion(2, 0)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 1)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 2)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 3)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 4)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 5)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 6)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 7)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 8)))\n .add(new FederationSpecDefinition(new FeatureVersion(2, 9)));\n\nregisterKnownFeature(FEDERATION_VERSIONS);\n", "import { DirectiveLocation, GraphQLError } from 'graphql';\nimport { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport {\n DirectiveDefinition,\n EnumType,\n ScalarType,\n Schema,\n NonNullType,\n ListType,\n InputObjectType,\n} from \"../definitions\";\nimport { Subgraph, Subgraphs } from \"../federation\";\nimport { registerKnownFeature } from '../knownCoreFeatures';\nimport { MultiMap } from \"../utils\";\n\nexport const joinIdentity = 'https://specs.apollo.dev/join';\n\nfunction sanitizeGraphQLName(name: string) {\n // replace all non-word characters (\\W). Word chars are _a-zA-Z0-9\n const alphaNumericUnderscoreOnly = name.replace(/[\\W]/g, '_');\n // prefix a digit in the first position with an _\n const noNumericFirstChar = alphaNumericUnderscoreOnly.match(/^\\d/)\n ? '_' + alphaNumericUnderscoreOnly\n : alphaNumericUnderscoreOnly;\n // suffix an underscore + digit in the last position with an _\n const noUnderscoreNumericEnding = noNumericFirstChar.match(/_\\d+$/)\n ? noNumericFirstChar + '_'\n : noNumericFirstChar;\n\n // toUpper not really necessary but follows convention of enum values\n const toUpper = noUnderscoreNumericEnding.toLocaleUpperCase();\n return toUpper;\n}\n\nexport type JoinTypeDirectiveArguments = {\n graph: string,\n key?: string,\n extension?: boolean,\n resolvable?: boolean,\n isInterfaceObject?: boolean,\n};\n\nexport type JoinFieldDirectiveArguments = {\n graph?: string,\n requires?: string,\n provides?: string,\n override?: string,\n type?: string,\n external?: boolean,\n usedOverridden?: boolean,\n overrideLabel?: string,\n contextArguments?: {\n name: string,\n type: string,\n context: string,\n selection: string,\n }[],\n}\n\nexport type JoinDirectiveArguments = {\n graphs: string[],\n name: string,\n args?: Record,\n};\n\nexport class JoinSpecDefinition extends FeatureDefinition {\n constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n super(new FeatureUrl(joinIdentity, 'join', version), minimumFederationVersion);\n }\n\n private isV01() {\n return this.version.equals(new FeatureVersion(0, 1));\n }\n\n addElementsToSchema(schema: Schema): GraphQLError[] {\n const joinGraph = this.addDirective(schema, 'graph').addLocations(DirectiveLocation.ENUM_VALUE);\n joinGraph.addArgument('name', new NonNullType(schema.stringType()));\n joinGraph.addArgument('url', new NonNullType(schema.stringType()));\n\n const graphEnum = this.addEnumType(schema, 'Graph');\n\n const joinFieldSet = this.addScalarType(schema, 'FieldSet');\n\n const joinType = this.addDirective(schema, 'type').addLocations(\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.UNION,\n DirectiveLocation.ENUM,\n DirectiveLocation.INPUT_OBJECT,\n DirectiveLocation.SCALAR,\n );\n if (!this.isV01()) {\n joinType.repeatable = true;\n }\n joinType.addArgument('graph', new NonNullType(graphEnum));\n joinType.addArgument('key', joinFieldSet);\n if (!this.isV01()) {\n joinType.addArgument('extension', new NonNullType(schema.booleanType()), false);\n joinType.addArgument('resolvable', new NonNullType(schema.booleanType()), true);\n\n if (this.version.gte(new FeatureVersion(0, 3))) {\n joinType.addArgument('isInterfaceObject', new NonNullType(schema.booleanType()), false);\n }\n }\n\n const joinField = this.addDirective(schema, 'field').addLocations(DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.INPUT_FIELD_DEFINITION);\n joinField.repeatable = true;\n // The `graph` argument used to be non-nullable, but @interfaceObject makes us add some field in\n // the supergraph that don't \"directly\" come from any subgraph (they indirectly are inherited from\n // an `@interfaceObject` type), and to indicate that, we use a `@join__field(graph: null)` annotation.\n const graphArgType = this.version.gte(new FeatureVersion(0, 3))\n ? graphEnum\n : new NonNullType(graphEnum);\n joinField.addArgument('graph', graphArgType);\n joinField.addArgument('requires', joinFieldSet);\n joinField.addArgument('provides', joinFieldSet);\n if (!this.isV01()) {\n joinField.addArgument('type', schema.stringType());\n joinField.addArgument('external', schema.booleanType());\n joinField.addArgument('override', schema.stringType());\n joinField.addArgument('usedOverridden', schema.booleanType());\n }\n\n if (!this.isV01()) {\n const joinImplements = this.addDirective(schema, 'implements').addLocations(\n DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE,\n );\n joinImplements.repeatable = true;\n joinImplements.addArgument('graph', new NonNullType(graphEnum));\n joinImplements.addArgument('interface', new NonNullType(schema.stringType()));\n }\n\n if (this.version.gte(new FeatureVersion(0, 3))) {\n const joinUnionMember = this.addDirective(schema, 'unionMember').addLocations(DirectiveLocation.UNION);\n joinUnionMember.repeatable = true;\n joinUnionMember.addArgument('graph', new NonNullType(graphEnum));\n joinUnionMember.addArgument('member', new NonNullType(schema.stringType()));\n\n const joinEnumValue = this.addDirective(schema, 'enumValue').addLocations(DirectiveLocation.ENUM_VALUE);\n joinEnumValue.repeatable = true;\n joinEnumValue.addArgument('graph', new NonNullType(graphEnum));\n }\n\n if (this.version.gte(new FeatureVersion(0, 4))) {\n const joinDirective = this.addDirective(schema, 'directive').addLocations(\n DirectiveLocation.SCHEMA,\n DirectiveLocation.OBJECT,\n DirectiveLocation.INTERFACE,\n DirectiveLocation.FIELD_DEFINITION,\n );\n joinDirective.repeatable = true;\n // Note this 'graphs' argument is plural, since the same directive\n // application can appear on the same schema element in multiple subgraphs.\n // Repetition of a graph in this 'graphs' list is allowed, and corresponds\n // to repeated application of the same directive in the same subgraph, which\n // is allowed.\n joinDirective.addArgument('graphs', new ListType(new NonNullType(graphEnum)));\n joinDirective.addArgument('name', new NonNullType(schema.stringType()));\n joinDirective.addArgument('args', this.addScalarType(schema, 'DirectiveArguments'));\n\n // progressive override\n joinField.addArgument('overrideLabel', schema.stringType());\n }\n \n if (this.version.gte(new FeatureVersion(0, 5))) {\n const fieldValue = this.addScalarType(schema, 'FieldValue');\n\n // set context\n // there are no renames that happen within the join spec, so this is fine\n // note that join spec will only used in supergraph schema\n const contextArgumentsType = schema.addType(new InputObjectType('join__ContextArgument'));\n contextArgumentsType.addField('name', new NonNullType(schema.stringType()));\n contextArgumentsType.addField('type', new NonNullType(schema.stringType()));\n contextArgumentsType.addField('context', new NonNullType(schema.stringType()));\n contextArgumentsType.addField('selection', new NonNullType(fieldValue));\n\n joinField.addArgument('contextArguments', new ListType(new NonNullType(contextArgumentsType)));\n }\n\n if (this.isV01()) {\n const joinOwner = this.addDirective(schema, 'owner').addLocations(DirectiveLocation.OBJECT);\n joinOwner.addArgument('graph', new NonNullType(graphEnum));\n }\n return [];\n }\n\n allElementNames(): string[] {\n const names = [\n 'graph',\n 'Graph',\n 'FieldSet',\n '@type',\n '@field',\n ];\n if (this.isV01()) {\n names.push('@owner');\n } else {\n names.push('@implements');\n }\n return names;\n }\n\n populateGraphEnum(schema: Schema, subgraphs: Subgraphs): Map {\n // Duplicate enum values can occur due to sanitization and must be accounted for\n // collect the duplicates in an array so we can uniquify them in a second pass.\n const sanitizedNameToSubgraphs = new MultiMap();\n for (const subgraph of subgraphs) {\n const sanitized = sanitizeGraphQLName(subgraph.name);\n sanitizedNameToSubgraphs.add(sanitized, subgraph);\n }\n\n // if no duplicates for a given name, add it as is\n // if duplicates exist, append _{n} to each duplicate in the array\n const subgraphToEnumName = new Map();\n for (const [sanitizedName, subgraphsForName] of sanitizedNameToSubgraphs) {\n if (subgraphsForName.length === 1) {\n subgraphToEnumName.set(subgraphsForName[0].name, sanitizedName);\n } else {\n for (const [index, subgraph] of subgraphsForName.entries()) {\n subgraphToEnumName.set(subgraph.name, `${sanitizedName}_${index + 1}`);\n }\n }\n }\n\n const graphEnum = this.graphEnum(schema);\n const graphDirective = this.graphDirective(schema);\n for (const subgraph of subgraphs) {\n const enumValue = graphEnum.addValue(subgraphToEnumName.get(subgraph.name)!);\n enumValue.applyDirective(graphDirective, { name: subgraph.name, url: subgraph.url });\n }\n return subgraphToEnumName;\n }\n\n fieldSetScalar(schema: Schema): ScalarType {\n return this.type(schema, 'FieldSet')!;\n }\n\n graphEnum(schema: Schema): EnumType {\n return this.type(schema, 'Graph')!;\n }\n\n graphDirective(schema: Schema): DirectiveDefinition<{name: string, url: string}> {\n return this.directive(schema, 'graph')!;\n }\n\n directiveDirective(schema: Schema): DirectiveDefinition {\n return this.directive(schema, 'directive')!;\n }\n\n typeDirective(schema: Schema): DirectiveDefinition {\n return this.directive(schema, 'type')!;\n }\n\n implementsDirective(schema: Schema): DirectiveDefinition<{graph: string, interface: string}> | undefined {\n return this.directive(schema, 'implements');\n }\n\n fieldDirective(schema: Schema): DirectiveDefinition {\n return this.directive(schema, 'field')!;\n }\n\n unionMemberDirective(schema: Schema): DirectiveDefinition<{graph: string, member: string}> | undefined {\n return this.directive(schema, 'unionMember');\n }\n\n enumValueDirective(schema: Schema): DirectiveDefinition<{graph: string}> | undefined {\n return this.directive(schema, 'enumValue');\n }\n\n ownerDirective(schema: Schema): DirectiveDefinition<{graph: string}> | undefined {\n return this.directive(schema, 'owner');\n }\n\n get defaultCorePurpose(): CorePurpose | undefined {\n return 'EXECUTION';\n }\n}\n\n// The versions are as follows:\n// - 0.1: this is the version used by federation 1 composition. Federation 2 is still able to read supergraphs\n// using that verison for backward compatibility, but never writes this spec version is not expressive enough\n// for federation 2 in general.\n// - 0.2: this is the original version released with federation 2.\n// - 0.3: adds the `isInterfaceObject` argument to `@join__type`, and make the `graph` in `@join__field` skippable.\n// - 0.4: adds the optional `overrideLabel` argument to `@join_field` for progressive override.\n// - 0.5: adds the `contextArguments` argument to `@join_field` for setting context.\nexport const JOIN_VERSIONS = new FeatureDefinitions(joinIdentity)\n .add(new JoinSpecDefinition(new FeatureVersion(0, 1)))\n .add(new JoinSpecDefinition(new FeatureVersion(0, 2)))\n .add(new JoinSpecDefinition(new FeatureVersion(0, 3), new FeatureVersion(2, 0)))\n .add(new JoinSpecDefinition(new FeatureVersion(0, 4), new FeatureVersion(2, 7)))\n .add(new JoinSpecDefinition(new FeatureVersion(0, 5), new FeatureVersion(2, 8)));\n\nregisterKnownFeature(JOIN_VERSIONS);\n", "import {\n allSchemaRootKinds,\n baseType,\n CompositeType,\n CoreFeature,\n defaultRootName,\n Directive,\n DirectiveDefinition,\n ErrGraphQLValidationFailed,\n Extension,\n FieldDefinition,\n InputFieldDefinition,\n InterfaceType,\n isCompositeType,\n isInterfaceType,\n isObjectType,\n isUnionType,\n ListType,\n NamedType,\n NonNullType,\n ObjectType,\n ScalarType,\n Schema,\n SchemaBlueprint,\n SchemaConfig,\n SchemaDefinition,\n SchemaElement,\n sourceASTs,\n UnionType,\n ArgumentDefinition,\n InputType,\n OutputType,\n WrapperType,\n isNonNullType,\n isLeafType,\n isListType,\n isWrapperType,\n possibleRuntimeTypes,\n isIntType,\n Type,\n} from \"./definitions\";\nimport { assert, MultiMap, printHumanReadableList, OrderedMap, mapValues, assertUnreachable } from \"./utils\";\nimport { SDLValidationRule } from \"graphql/validation/ValidationContext\";\nimport { specifiedSDLRules } from \"graphql/validation/specifiedRules\";\nimport {\n ASTNode,\n DocumentNode,\n GraphQLError,\n Kind,\n KnownTypeNamesRule,\n PossibleTypeExtensionsRule,\n print as printAST,\n Source,\n GraphQLErrorOptions,\n SchemaDefinitionNode,\n OperationTypeNode,\n OperationTypeDefinitionNode,\n ConstDirectiveNode,\n} from \"graphql\";\nimport { KnownTypeNamesInFederationRule } from \"./validation/KnownTypeNamesInFederationRule\";\nimport { buildSchema, buildSchemaFromAST } from \"./buildSchema\";\nimport { FragmentSelection, hasSelectionWithPredicate, parseOperationAST, parseSelectionSet, Selection, SelectionSet } from './operations';\nimport { TAG_VERSIONS } from \"./specs/tagSpec\";\nimport {\n errorCodeDef,\n ErrorCodeDefinition,\n ERROR_CATEGORIES,\n ERRORS,\n withModifiedErrorMessage,\n extractGraphQLErrorOptions,\n errorCauses,\n} from \"./error\";\nimport { computeShareables } from \"./precompute\";\nimport {\n CoreSpecDefinition,\n FeatureVersion,\n LINK_VERSIONS,\n LinkDirectiveArgs,\n linkDirectiveDefaultName,\n linkIdentity,\n FeatureUrl,\n CoreImport,\n extractCoreFeatureImports,\n CoreOrLinkDirectiveArgs,\n} from \"./specs/coreSpec\";\nimport {\n FEDERATION_VERSIONS,\n federationIdentity,\n FederationDirectiveName,\n FederationTypeName,\n FEDERATION1_TYPES,\n FEDERATION1_DIRECTIVES,\n FederationSpecDefinition,\n} from \"./specs/federationSpec\";\nimport { defaultPrintOptions, PrintOptions as PrintOptions, printSchema } from \"./print\";\nimport { createObjectTypeSpecification, createScalarTypeSpecification, createUnionTypeSpecification } from \"./directiveAndTypeSpecification\";\nimport { didYouMean, suggestionList } from \"./suggestions\";\nimport { coreFeatureDefinitionIfKnown, validateKnownFeatures } from \"./knownCoreFeatures\";\nimport { joinIdentity } from \"./specs/joinSpec\";\nimport {\n SourceAPIDirectiveArgs,\n SourceFieldDirectiveArgs,\n SourceTypeDirectiveArgs,\n} from \"./specs/sourceSpec\";\nimport { COST_VERSIONS, CostDirectiveArguments, ListSizeDirectiveArguments, costIdentity } from \"./specs/costSpec\";\n\nconst linkSpec = LINK_VERSIONS.latest();\nconst tagSpec = TAG_VERSIONS.latest();\nconst federationSpec = (version?: FeatureVersion): FederationSpecDefinition => {\n if (!version) return FEDERATION_VERSIONS.latest();\n const spec = FEDERATION_VERSIONS.find(version);\n assert(spec, `Federation spec version ${version} is not known`);\n return spec;\n};\n\n// Some users rely on auto-expanding fed v1 graphs with fed v2 directives. While technically we should only expand @tag\n// directive from v2 definitions, we will continue expanding other directives (up to v2.4) to ensure backwards compatibility.\nconst autoExpandedFederationSpec = federationSpec(new FeatureVersion(2, 4));\n\nconst latestFederationSpec = federationSpec();\n\n// We don't let user use this as a subgraph name. That allows us to use it in `query graphs` to name the source of roots\n// in the \"federated query graph\" without worrying about conflict (see `FEDERATED_GRAPH_ROOT_SOURCE` in `querygraph.ts`).\n// (note that we could deal with this in other ways, but having a graph named '_' feels like a terrible idea anyway, so\n// disallowing it feels like more a good thing than a real restriction).\nexport const FEDERATION_RESERVED_SUBGRAPH_NAME = '_';\n\nexport const FEDERATION_UNNAMED_SUBGRAPH_NAME = '';\n\nconst FEDERATION_OMITTED_VALIDATION_RULES = [\n // We allow subgraphs to declare an extension even if the subgraph itself doesn't have a corresponding definition.\n // The implication being that the definition is in another subgraph.\n PossibleTypeExtensionsRule,\n // The `KnownTypeNamesRule` of graphQL-js only looks at type definitions, so this goes against our previous\n // desire to let a subgraph only have an extension for a type. Below, we add a replacement rules that looks\n // at both type definitions _and_ extensions.\n KnownTypeNamesRule\n];\n\nconst FEDERATION_SPECIFIC_VALIDATION_RULES = [\n KnownTypeNamesInFederationRule\n];\n\nconst FEDERATION_VALIDATION_RULES = specifiedSDLRules.filter(rule => !FEDERATION_OMITTED_VALIDATION_RULES.includes(rule)).concat(FEDERATION_SPECIFIC_VALIDATION_RULES);\n\nconst ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES: string[] = Object.values(FederationDirectiveName);\n\n/**\n * Federation 1 has that specificity that it wasn't using @link to name-space federation elements,\n * and so to \"distinguish\" the few federation type names, it prefixed those with a `_`. That is,\n * the `FieldSet` type was named `_FieldSet` in federation1. To handle this without too much effort,\n * we use a fake `CoreFeature` with imports for all the fed1 types to use those specific \"aliases\"\n * and we pass it when adding those types. This allows to reuse the same `TypeSpecification` objects\n * for both fed1 and fed2. Note that in the object below, all that is used is the imports, the rest\n * is just filling the blanks.\n */\nconst FAKE_FED1_CORE_FEATURE_TO_RENAME_TYPES: CoreFeature = new CoreFeature(\n new FeatureUrl('', 'fed1', new FeatureVersion(0, 1)),\n 'fed1',\n new Directive('fed1'),\n FEDERATION1_TYPES.map((spec) => ({ name: spec.name, as: '_' + spec.name})),\n);\n\n\nfunction validateFieldSetSelections({\n directiveName,\n selectionSet,\n hasExternalInParents,\n metadata,\n onError,\n allowOnNonExternalLeafFields,\n allowFieldsWithArguments,\n}: {\n directiveName: string,\n selectionSet: SelectionSet,\n hasExternalInParents: boolean,\n metadata: FederationMetadata,\n onError: (error: GraphQLError) => void,\n allowOnNonExternalLeafFields: boolean,\n allowFieldsWithArguments: boolean,\n}): void {\n for (const selection of selectionSet.selections()) {\n const appliedDirectives = selection.element.appliedDirectives;\n if (appliedDirectives.length > 0) {\n onError(ERROR_CATEGORIES.DIRECTIVE_IN_FIELDS_ARG.get(directiveName).err(\n `cannot have directive applications in the @${directiveName}(fields:) argument but found ${appliedDirectives.join(', ')}.`,\n ));\n }\n\n if (selection.kind === 'FieldSelection') {\n const field = selection.element.definition;\n const isExternal = metadata.isFieldExternal(field);\n if (!allowFieldsWithArguments && field.hasArguments()) {\n onError(ERROR_CATEGORIES.FIELDS_HAS_ARGS.get(directiveName).err(\n `field ${field.coordinate} cannot be included because it has arguments (fields with argument are not allowed in @${directiveName})`,\n { nodes: field.sourceAST },\n ));\n }\n // The field must be external if we don't allow non-external leaf fields, it's a leaf, and we haven't traversed an external field in parent chain leading here.\n const mustBeExternal = !selection.selectionSet && !allowOnNonExternalLeafFields && !hasExternalInParents;\n if (!isExternal && mustBeExternal) {\n const errorCode = ERROR_CATEGORIES.DIRECTIVE_FIELDS_MISSING_EXTERNAL.get(directiveName);\n if (metadata.isFieldFakeExternal(field)) {\n onError(errorCode.err(\n `field \"${field.coordinate}\" should not be part of a @${directiveName} since it is already \"effectively\" provided by this subgraph `\n + `(while it is marked @${FederationDirectiveName.EXTERNAL}, it is a @${FederationDirectiveName.KEY} field of an extension type, which are not internally considered external for historical/backward compatibility reasons)`,\n { nodes: field.sourceAST }\n ));\n } else {\n onError(errorCode.err(\n `field \"${field.coordinate}\" should not be part of a @${directiveName} since it is already provided by this subgraph (it is not marked @${FederationDirectiveName.EXTERNAL})`,\n { nodes: field.sourceAST }\n ));\n }\n }\n if (selection.selectionSet) {\n // When passing the 'hasExternalInParents', the field might be external himself, but we may also have\n // the case where the field parent is an interface and some implementation of the field are external, in\n // which case we should say we have an external on the path, because we may have one.\n let newHasExternalInParents = hasExternalInParents || isExternal;\n const parentType = field.parent;\n if (!newHasExternalInParents && isInterfaceType(parentType)) {\n for (const implem of parentType.possibleRuntimeTypes()) {\n const fieldInImplem = implem.field(field.name);\n if (fieldInImplem && metadata.isFieldExternal(fieldInImplem)) {\n newHasExternalInParents = true;\n break;\n }\n }\n }\n validateFieldSetSelections({\n directiveName,\n selectionSet: selection.selectionSet,\n hasExternalInParents: newHasExternalInParents,\n metadata,\n onError,\n allowOnNonExternalLeafFields,\n allowFieldsWithArguments,\n });\n }\n } else {\n validateFieldSetSelections({\n directiveName,\n selectionSet: selection.selectionSet,\n hasExternalInParents,\n metadata,\n onError,\n allowOnNonExternalLeafFields,\n allowFieldsWithArguments,\n });\n }\n }\n}\n\nfunction validateFieldSet({\n type,\n directive,\n metadata,\n errorCollector,\n allowOnNonExternalLeafFields,\n allowFieldsWithArguments,\n onFields,\n}: {\n type: CompositeType,\n directive: Directive,\n metadata: FederationMetadata,\n errorCollector: GraphQLError[],\n allowOnNonExternalLeafFields: boolean,\n allowFieldsWithArguments: boolean,\n onFields?: (field: FieldDefinition) => void,\n}): void {\n try {\n // Note that `parseFieldSetArgument` already properly format the error, hence the separate try-catch.\n // TODO: `parseFieldSetArgument` throws on the first issue found and never accumulate multiple\n // errors. We could fix this, but this require changes that reaches beyond this single file, so\n // we leave this for \"later\" (the `fields` value are rarely very big, so the benefit of accumulating\n // multiple errors within one such value is not tremendous, so that this doesn't feel like a pressing\n // issue).\n const fieldAccessor = onFields\n ? (type: CompositeType, fieldName: string) => {\n const field = type.field(fieldName);\n if (field) {\n onFields(field);\n }\n return field;\n }\n : undefined;\n const selectionSet = parseFieldSetArgument({parentType: type, directive, fieldAccessor});\n validateFieldSetSelections({\n directiveName: directive.name,\n selectionSet,\n hasExternalInParents: false,\n metadata,\n onError: (error) => errorCollector.push(handleFieldSetValidationError(directive, error)),\n allowOnNonExternalLeafFields,\n allowFieldsWithArguments,\n });\n } catch (e) {\n if (e instanceof GraphQLError) {\n errorCollector.push(e);\n } else {\n throw e;\n }\n }\n}\n\nfunction handleFieldSetValidationError(\n directive: Directive,\n originalError: GraphQLError,\n messageUpdater?: (msg: string) => string,\n): GraphQLError {\n const nodes = sourceASTs(directive);\n if (originalError.nodes) {\n nodes.push(...originalError.nodes);\n }\n let codeDef = errorCodeDef(originalError);\n // \"INVALID_GRAPHQL\" errors happening during validation means that the selection set is invalid, and\n // that's where we want to use a more precise code.\n if (!codeDef || codeDef === ERRORS.INVALID_GRAPHQL) {\n codeDef = ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS.get(directive.name);\n }\n let msg = originalError.message.trim();\n if (messageUpdater) {\n msg = messageUpdater(msg);\n }\n return codeDef.err(\n `${fieldSetErrorDescriptor(directive)}: ${msg}`,\n {\n nodes,\n originalError,\n }\n );\n}\n\nfunction fieldSetErrorDescriptor(directive: Directive): string {\n return `On ${fieldSetTargetDescription(directive)}, for ${directiveStrUsingASTIfPossible(directive)}`;\n}\n\n// This method is called to display @key, @provides or @requires directives in error message in place where the directive `fields`\n// argument might be invalid because it was not a string in the underlying AST. If that's the case, we want to use the AST to\n// print the directive or the message might be a bit confusing for the user.\nfunction directiveStrUsingASTIfPossible(directive: Directive): string {\n return directive.sourceAST ? printAST(directive.sourceAST) : directive.toString();\n}\n\nfunction fieldSetTargetDescription(directive: Directive): string {\n const targetKind = directive.parent instanceof FieldDefinition ? \"field\" : \"type\";\n return `${targetKind} \"${directive.parent?.coordinate}\"`;\n}\n\nexport function parseContext(input: string) {\n const regex = /^(?:[\\n\\r\\t ,]|#[^\\n\\r]*(?![^\\n\\r]))*\\$(?:[\\n\\r\\t ,]|#[^\\n\\r]*(?![^\\n\\r]))*([A-Za-z_]\\w*(?!\\w))([\\s\\S]*)$/;\n const match = input.match(regex);\n if (!match) {\n return { context: undefined, selection: undefined };\n }\n\n const [, context, selection] = match;\n return {\n context,\n selection,\n };\n}\n\nconst wrapResolvedType = ({\n originalType,\n resolvedType,\n}: {\n originalType: OutputType,\n resolvedType: InputType,\n}): InputType | undefined => {\n const stack = [];\n let unwrappedType: NamedType | WrapperType = originalType;\n while(unwrappedType.kind === 'NonNullType' || unwrappedType.kind === 'ListType') {\n stack.push(unwrappedType.kind);\n unwrappedType = unwrappedType.ofType;\n }\n\n let type: NamedType | WrapperType = resolvedType;\n while(stack.length > 0) {\n const kind = stack.pop();\n if (kind === 'ListType') {\n type = new ListType(type);\n }\n }\n return type;\n};\n\nconst validateFieldValueType = ({\n currentType,\n selectionSet,\n errorCollector,\n metadata,\n fromContextParent,\n}: {\n currentType: CompositeType,\n selectionSet: SelectionSet,\n errorCollector: GraphQLError[],\n metadata: FederationMetadata,\n fromContextParent: ArgumentDefinition>,\n}): { resolvedType: InputType | undefined } => {\n const selections = selectionSet.selections();\n \n // ensure that type is not an interfaceObject\n const interfaceObjectDirective = metadata.interfaceObjectDirective();\n if (currentType.kind === 'ObjectType' && isFederationDirectiveDefinedInSchema(interfaceObjectDirective) && (currentType.appliedDirectivesOf(interfaceObjectDirective).length > 0)) { \n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"is used in \"${fromContextParent.coordinate}\" but the selection is invalid: One of the types in the selection is an interfaceObject: \"${currentType.name}\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n }\n\n const typesArray = selections.map((selection): { resolvedType: InputType | undefined } => {\n if (selection.kind !== 'FieldSelection') {\n return { resolvedType: undefined };\n }\n const { element, selectionSet: childSelectionSet } = selection;\n assert(element.definition.type, 'Element type definition should exist');\n let type = element.definition.type;\n\n if (childSelectionSet) {\n assert(isCompositeType(baseType(type)), 'Child selection sets should only exist on composite types');\n const { resolvedType } = validateFieldValueType({\n currentType: baseType(type) as CompositeType,\n selectionSet: childSelectionSet,\n errorCollector,\n metadata,\n fromContextParent,\n });\n if (!resolvedType) {\n return { resolvedType: undefined };\n }\n return { resolvedType: wrapResolvedType({ originalType: type, resolvedType}) };\n }\n assert(isLeafType(baseType(type)), 'Expected a leaf type');\n return {\n resolvedType: wrapResolvedType({\n originalType: type,\n resolvedType: baseType(type) as InputType\n })\n };\n });\n return typesArray.reduce((acc, { resolvedType }) => {\n if (acc.resolvedType?.toString() === resolvedType?.toString()) {\n return { resolvedType };\n }\n return { resolvedType: undefined };\n });\n};\n\nconst validateSelectionFormat = ({\n context,\n selection,\n fromContextParent,\n errorCollector,\n} : {\n context: string,\n selection: string,\n fromContextParent: ArgumentDefinition>,\n errorCollector: GraphQLError[],\n}): {\n selectionType: 'error' | 'field',\n} | {\n selectionType: 'inlineFragment',\n typeConditions: Set,\n} => {\n // we only need to parse the selection once, not do it for each location\n try {\n const node = parseOperationAST(selection.trim().startsWith('{') ? selection : `{${selection}}`);\n const selections = node.selectionSet.selections;\n if (selections.length === 0) {\n // a selection must be made.\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: no selection is made`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return { selectionType: 'error' };\n }\n const firstSelectionKind = selections[0].kind;\n if (firstSelectionKind === 'Field') {\n // if the first selection is a field, there should be only one\n if (selections.length !== 1) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: multiple selections are made`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return { selectionType: 'error' };\n }\n return { selectionType: 'field' };\n } else if (firstSelectionKind === 'InlineFragment') {\n const inlineFragmentTypeConditions: Set = new Set();\n if (!selections.every((s) => s.kind === 'InlineFragment')) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: multiple fields could be selected`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return { selectionType: 'error' };\n }\n selections.forEach((s) => {\n assert(s.kind === 'InlineFragment', 'Expected an inline fragment');\n const { typeCondition }= s;\n if (typeCondition) {\n inlineFragmentTypeConditions.add(typeCondition.name.value);\n }\n });\n if (inlineFragmentTypeConditions.size !== selections.length) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: type conditions have same name`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return { selectionType: 'error' };\n }\n return {\n selectionType: 'inlineFragment',\n typeConditions: inlineFragmentTypeConditions,\n };\n } else if (firstSelectionKind === 'FragmentSpread') {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: fragment spread is not allowed`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return { selectionType: 'error' };\n } else {\n assertUnreachable(firstSelectionKind);\n }\n } catch (err) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: ${err.message}`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n\n return { selectionType: 'error' };\n }\n}\n\n// implementation of spec https://spec.graphql.org/draft/#IsValidImplementationFieldType()\nfunction isValidImplementationFieldType(fieldType: InputType, implementedFieldType: InputType): boolean {\n if (isNonNullType(fieldType)) {\n if (isNonNullType(implementedFieldType)) {\n return isValidImplementationFieldType(fieldType.ofType, implementedFieldType.ofType);\n } else {\n return isValidImplementationFieldType(fieldType.ofType, implementedFieldType);\n }\n }\n if (isListType(fieldType) && isListType(implementedFieldType)) {\n return isValidImplementationFieldType(fieldType.ofType, implementedFieldType.ofType);\n }\n return !isWrapperType(fieldType) &&\n !isWrapperType(implementedFieldType) &&\n fieldType.name === implementedFieldType.name;\n}\n\nfunction selectionSetHasDirectives(selectionSet: SelectionSet): boolean {\n return hasSelectionWithPredicate(selectionSet, (s: Selection) => {\n if (s.kind === 'FieldSelection') {\n return s.element.appliedDirectives.length > 0;\n }\n else if (s.kind === 'FragmentSelection') {\n return s.element.appliedDirectives.length > 0;\n } else {\n assertUnreachable(s);\n }\n });\n}\n\nfunction selectionSetHasAlias(selectionSet: SelectionSet): boolean {\n return hasSelectionWithPredicate(selectionSet, (s: Selection) => {\n if (s.kind === 'FieldSelection') {\n return s.element.alias !== undefined;\n }\n return false;\n });\n}\n\nfunction validateFieldValue({\n context,\n selection,\n fromContextParent,\n setContextLocations,\n errorCollector,\n metadata,\n} : {\n context: string,\n selection: string,\n fromContextParent: ArgumentDefinition>,\n setContextLocations: (ObjectType | InterfaceType | UnionType)[],\n errorCollector: GraphQLError[],\n metadata: FederationMetadata,\n}): void {\n const expectedType = fromContextParent.type;\n assert(expectedType, 'Expected a type');\n const validateSelectionFormatResults =\n validateSelectionFormat({ context, selection, fromContextParent, errorCollector });\n const selectionType = validateSelectionFormatResults.selectionType;\n\n // if there was an error, just return, we've already added it to the errorCollector\n if (selectionType === 'error') {\n return;\n }\n \n const usedTypeConditions = new Set;\n for (const location of setContextLocations) {\n // for each location, we need to validate that the selection will result in exactly one field being selected\n // the number of selection sets created will be the same\n let selectionSet: SelectionSet;\n try {\n selectionSet = parseSelectionSet({ parentType: location, source: selection});\n } catch (e) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid for type ${location.name}. Error: ${e.message}`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return;\n }\n if (selectionSetHasDirectives(selectionSet)) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: directives are not allowed in the selection`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n }\n if (selectionSetHasAlias(selectionSet)) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: aliases are not allowed in the selection`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n }\n \n if (selectionType === 'field') {\n const { resolvedType } = validateFieldValueType({\n currentType: location,\n selectionSet,\n errorCollector,\n metadata,\n fromContextParent,\n });\n if (resolvedType === undefined || !isValidImplementationFieldType(resolvedType, expectedType!)) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: the type of the selection \"${resolvedType}\" does not match the expected type \"${expectedType?.toString()}\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return;\n }\n } else if (selectionType === 'inlineFragment') {\n // ensure that each location maps to exactly one fragment\n const selections: FragmentSelection[] = [];\n for (const selection of selectionSet.selections()) {\n if (selection.kind !== 'FragmentSelection') {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: selection should only contain a single field or at least one inline fragment}\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n continue;\n }\n\n const { typeCondition } = selection.element;\n if (!typeCondition) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: inline fragments must have type conditions\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n continue;\n }\n\n if (typeCondition.kind === 'ObjectType') {\n if (possibleRuntimeTypes(location).includes(typeCondition)) {\n selections.push(selection);\n usedTypeConditions.add(typeCondition.name);\n }\n } else {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: type conditions must be an object type\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n }\n }\n\n if (selections.length === 0) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: no type condition matches the location \"${location.coordinate}\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return;\n } else {\n for (const selection of selections) {\n let { resolvedType } = validateFieldValueType({\n currentType: selection.element.typeCondition!,\n selectionSet: selection.selectionSet,\n errorCollector,\n metadata,\n fromContextParent,\n });\n\n if (resolvedType === undefined) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: the type of the selection does not match the expected type \"${expectedType?.toString()}\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return;\n }\n\n // Because other subgraphs may define members of the location type,\n // it's always possible that none of the type conditions map, so we\n // must remove any surrounding non-null wrapper if present.\n if (isNonNullType(resolvedType)) {\n resolvedType = resolvedType.ofType;\n }\n\n if (!isValidImplementationFieldType(resolvedType!, expectedType!)) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: the type of the selection \"${resolvedType?.toString()}\" does not match the expected type \"${expectedType?.toString()}\"`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n return;\n }\n }\n }\n }\n }\n\n if (validateSelectionFormatResults.selectionType === 'inlineFragment') {\n for (const typeCondition of validateSelectionFormatResults.typeConditions) {\n if (!usedTypeConditions.has(typeCondition)) {\n errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: type condition \"${typeCondition}\" is never used.`,\n { nodes: sourceASTs(fromContextParent) }\n ));\n }\n }\n }\n}\n\nfunction validateAllFieldSet>({\n definition,\n targetTypeExtractor,\n errorCollector,\n metadata,\n isOnParentType = false,\n allowOnNonExternalLeafFields = false,\n allowFieldsWithArguments = false,\n allowOnInterface = false,\n onFields,\n}: {\n definition: DirectiveDefinition<{fields: any}>,\n targetTypeExtractor: (element: TParent) => CompositeType,\n errorCollector: GraphQLError[],\n metadata: FederationMetadata,\n isOnParentType?: boolean,\n allowOnNonExternalLeafFields?: boolean,\n allowFieldsWithArguments?: boolean,\n allowOnInterface?: boolean,\n onFields?: (field: FieldDefinition) => void,\n}): void {\n for (const application of definition.applications()) {\n const elt = application.parent as TParent;\n const type = targetTypeExtractor(elt);\n const parentType = isOnParentType ? type : (elt.parent as NamedType);\n if (isInterfaceType(parentType) && !allowOnInterface) {\n const code = ERROR_CATEGORIES.DIRECTIVE_UNSUPPORTED_ON_INTERFACE.get(definition.name);\n errorCollector.push(code.err(\n isOnParentType\n ? `Cannot use ${definition.coordinate} on interface \"${parentType.coordinate}\": ${definition.coordinate} is not yet supported on interfaces`\n : `Cannot use ${definition.coordinate} on ${fieldSetTargetDescription(application)} of parent type \"${parentType}\": ${definition.coordinate} is not yet supported within interfaces`,\n { nodes: sourceASTs(application).concat(isOnParentType ? [] : sourceASTs(type)) },\n ));\n }\n validateFieldSet({\n type,\n directive: application,\n metadata,\n errorCollector,\n allowOnNonExternalLeafFields,\n allowFieldsWithArguments,\n onFields,\n });\n }\n}\n\nexport function collectUsedFields(metadata: FederationMetadata): Set> {\n const usedFields = new Set>();\n\n // Collects all external fields used by a key, requires or provides\n collectUsedFieldsForDirective(\n metadata.keyDirective(),\n type => type,\n usedFields,\n );\n collectUsedFieldsForDirective>(\n metadata.requiresDirective(),\n field => field.parent!,\n usedFields,\n );\n collectUsedFieldsForDirective>(\n metadata.providesDirective(),\n field => {\n const type = baseType(field.type!);\n return isCompositeType(type) ? type : undefined;\n },\n usedFields,\n );\n \n // also for @fromContext\n collectUsedFieldsForFromContext(\n metadata,\n usedFields,\n );\n \n // Collects all fields used to satisfy an interface constraint\n for (const itfType of metadata.schema.interfaceTypes()) {\n const runtimeTypes = itfType.possibleRuntimeTypes();\n for (const field of itfType.fields()) {\n for (const runtimeType of runtimeTypes) {\n const implemField = runtimeType.field(field.name);\n if (implemField) {\n usedFields.add(implemField);\n }\n }\n }\n }\n\n return usedFields;\n}\n\nfunction collectUsedFieldsForFromContext>(\n metadata: FederationMetadata,\n usedFieldDefs: Set>\n) {\n const fromContextDirective = metadata.fromContextDirective();\n const contextDirective = metadata.contextDirective();\n \n // if one of the directives is not defined, there's nothing to validate\n if (!isFederationDirectiveDefinedInSchema(fromContextDirective) || !isFederationDirectiveDefinedInSchema(contextDirective)) {\n return; \n }\n \n // build the list of context entry points\n const entryPoints = new Map>();\n for (const application of contextDirective.applications()) {\n const type = application.parent;\n if (!type) {\n // Means the application is wrong: we ignore it here as later validation will detect it\n continue;\n }\n const context = application.arguments().name;\n if (!entryPoints.has(context)) {\n entryPoints.set(context, new Set());\n }\n entryPoints.get(context)!.add(type as CompositeType); \n }\n \n for (const application of fromContextDirective.applications()) {\n const type = application.parent as TParent;\n if (!type) {\n // Means the application is wrong: we ignore it here as later validation will detect it\n continue;\n }\n\n const fieldValue = application.arguments().field;\n const { context, selection } = parseContext(fieldValue);\n \n if (!context) {\n continue;\n }\n \n // now we need to collect all the fields used for every type that they could be used for\n const contextTypes = entryPoints.get(context);\n if (!contextTypes) {\n continue;\n }\n \n for (const contextType of contextTypes) {\n try {\n // helper function \n const fieldAccessor = (t: CompositeType, f: string) => {\n const field = t.field(f);\n if (field) {\n usedFieldDefs.add(field);\n if (isInterfaceType(t)) {\n for (const implType of t.possibleRuntimeTypes()) {\n const implField = implType.field(f);\n if (implField) {\n usedFieldDefs.add(implField);\n }\n }\n }\n }\n return field;\n };\n \n parseSelectionSet({ parentType: contextType, source: selection, fieldAccessor });\n } catch (e) {\n // ignore the error, it will be caught later\n }\n }\n }\n}\n\nfunction collectUsedFieldsForDirective>(\n definition: DirectiveDefinition<{fields: any}>,\n targetTypeExtractor: (element: TParent) => CompositeType | undefined,\n usedFieldDefs: Set>\n) {\n for (const application of definition.applications()) {\n const type = targetTypeExtractor(application.parent! as TParent);\n if (!type) {\n // Means the application is wrong: we ignore it here as later validation will detect it\n continue;\n }\n // Note that we don't want to 'validate', because even if a field set is invalid for some reason, we still want to consider\n // its field as \"used\". This avoid, when a `fields` argument is invalid, to get one error for the `fields` itself, but also\n // a bunch of other errors that says some external fields are unused that are just a consequence of not considering that\n // particular `fields` argument. In other words, this avoid cascading errors that would be confusing to the user without\n // being of any concrete use.\n collectTargetFields({\n parentType: type,\n directive: application as Directive,\n includeInterfaceFieldsImplementations: true,\n validate: false,\n }).forEach((field) => usedFieldDefs.add(field));\n }\n}\n\n/**\n * Checks that all fields marked @external is used in a federation directive (@key, @provides or @requires) _or_ to satisfy an\n * interface implementation. Otherwise, the field declaration is somewhat useless.\n */\nfunction validateAllExternalFieldsUsed(metadata: FederationMetadata, errorCollector: GraphQLError[]): void {\n for (const type of metadata.schema.types()) {\n if (!isObjectType(type) && !isInterfaceType(type)) {\n continue;\n }\n for (const field of type.fields()) {\n if (!metadata.isFieldExternal(field) || metadata.isFieldUsed(field)) {\n continue;\n }\n errorCollector.push(ERRORS.EXTERNAL_UNUSED.err(\n `Field \"${field.coordinate}\" is marked @external but is not used in any federation directive (@key, @provides, @requires) or to satisfy an interface;`\n + ' the field declaration has no use and should be removed (or the field should not be @external).',\n { nodes: field.sourceAST },\n ));\n }\n }\n}\n\nfunction validateNoExternalOnInterfaceFields(metadata: FederationMetadata, errorCollector: GraphQLError[]) {\n for (const itf of metadata.schema.interfaceTypes()) {\n for (const field of itf.fields()) {\n if (metadata.isFieldExternal(field)) {\n errorCollector.push(ERRORS.EXTERNAL_ON_INTERFACE.err(\n `Interface type field \"${field.coordinate}\" is marked @external but @external is not allowed on interface fields (it is nonsensical).`,\n { nodes: field.sourceAST },\n ));\n }\n }\n }\n}\n\nfunction validateKeyOnInterfacesAreAlsoOnAllImplementations(metadata: FederationMetadata, errorCollector: GraphQLError[]): void {\n for (const itfType of metadata.schema.interfaceTypes()) {\n const implementations = itfType.possibleRuntimeTypes();\n for (const keyApplication of itfType.appliedDirectivesOf(metadata.keyDirective())) {\n // Note that we will always have validated all @key fields at this point, so not bothering with extra validation\n const fields = parseFieldSetArgument({parentType: itfType, directive: keyApplication, validate: false});\n const isResolvable = !(keyApplication.arguments().resolvable === false);\n const implementationsWithKeyButNotResolvable = new Array();\n const implementationsMissingKey = new Array();\n for (const type of implementations) {\n const matchingApp = type.appliedDirectivesOf(metadata.keyDirective()).find((app) => {\n const appFields = parseFieldSetArgument({parentType: type, directive: app, validate: false});\n return fields.equals(appFields);\n });\n if (matchingApp) {\n if (isResolvable && matchingApp.arguments().resolvable === false) {\n implementationsWithKeyButNotResolvable.push(type);\n }\n } else {\n implementationsMissingKey.push(type);\n }\n }\n\n if (implementationsMissingKey.length > 0) {\n const typesString = printHumanReadableList(\n implementationsMissingKey.map((i) => `\"${i.coordinate}\"`),\n {\n prefix: 'type',\n prefixPlural: 'types',\n }\n );\n errorCollector.push(ERRORS.INTERFACE_KEY_NOT_ON_IMPLEMENTATION.err(\n `Key ${keyApplication} on interface type \"${itfType.coordinate}\" is missing on implementation ${typesString}.`,\n { nodes: sourceASTs(...implementationsMissingKey) },\n ));\n } else if (implementationsWithKeyButNotResolvable.length > 0) {\n const typesString = printHumanReadableList(\n implementationsWithKeyButNotResolvable.map((i) => `\"${i.coordinate}\"`),\n {\n prefix: 'type',\n prefixPlural: 'types',\n }\n );\n errorCollector.push(ERRORS.INTERFACE_KEY_NOT_ON_IMPLEMENTATION.err(\n `Key ${keyApplication} on interface type \"${itfType.coordinate}\" should be resolvable on all implementation types, but is declared with argument \"@key(resolvable:)\" set to false in ${typesString}.`,\n { nodes: sourceASTs(...implementationsWithKeyButNotResolvable) },\n ));\n }\n }\n }\n}\n\nfunction validateInterfaceObjectsAreOnEntities(metadata: FederationMetadata, errorCollector: GraphQLError[]): void {\n for (const application of metadata.interfaceObjectDirective().applications()) {\n if (!isEntityType(application.parent)) {\n errorCollector.push(ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n `The @interfaceObject directive can only be applied to entity types but type \"${application.parent.coordinate}\" has no @key in this subgraph.`,\n { nodes: application.parent.sourceAST }\n ));\n }\n }\n}\n\nfunction validateShareableNotRepeatedOnSameDeclaration(\n element: ObjectType | FieldDefinition,\n metadata: FederationMetadata,\n errorCollector: GraphQLError[],\n) {\n const shareableApplications: Directive[] = element.appliedDirectivesOf(metadata.shareableDirective());\n if (shareableApplications.length <= 1) {\n return;\n }\n\n type ByExtensions = {\n without: Directive[],\n with: MultiMap, Directive>,\n };\n const byExtensions = shareableApplications.reduce(\n (acc, v) => {\n const ext = v.ofExtension();\n if (ext) {\n acc.with.add(ext, v);\n } else {\n acc.without.push(v);\n }\n return acc;\n },\n { without: [], with: new MultiMap() }\n );\n const groups = [ byExtensions.without ].concat(mapValues(byExtensions.with));\n for (const group of groups) {\n if (group.length > 1) {\n const eltStr = element.kind === 'ObjectType'\n ? `the same type declaration of \"${element.coordinate}\"`\n : `field \"${element.coordinate}\"`;\n errorCollector.push(ERRORS.INVALID_SHAREABLE_USAGE.err(\n `Invalid duplicate application of @shareable on ${eltStr}: `\n + '@shareable is only repeatable on types so it can be used simultaneously on a type definition and its extensions, but it should not be duplicated on the same definition/extension declaration',\n { nodes: sourceASTs(...group) },\n ));\n }\n }\n}\n\nfunction validateCostNotAppliedToInterface(application: Directive, CostDirectiveArguments>, errorCollector: GraphQLError[]) {\n const parent = application.parent;\n // @cost cannot be used on interfaces https://ibm.github.io/graphql-specs/cost-spec.html#sec-No-Cost-on-Interface-Fields\n if (parent instanceof FieldDefinition && parent.parent instanceof InterfaceType) {\n errorCollector.push(ERRORS.COST_APPLIED_TO_INTERFACE_FIELD.err(\n `@cost cannot be applied to interface \"${parent.coordinate}\"`,\n { nodes: sourceASTs(application, parent) }\n ));\n }\n}\n\nfunction validateListSizeAppliedToList(\n application: Directive, ListSizeDirectiveArguments>,\n parent: FieldDefinition,\n errorCollector: GraphQLError[],\n) {\n const { sizedFields = [] } = application.arguments();\n // @listSize must be applied to a list https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-List-Size-Target\n if (!sizedFields.length && parent.type && !isListType(parent.type)) {\n errorCollector.push(ERRORS.LIST_SIZE_APPLIED_TO_NON_LIST.err(\n `\"${parent.coordinate}\" is not a list`,\n { nodes: sourceASTs(application, parent) },\n ));\n }\n}\n\nfunction validateAssumedSizeNotNegative(\n application: Directive, ListSizeDirectiveArguments>,\n parent: FieldDefinition,\n errorCollector: GraphQLError[]\n) {\n const { assumedSize } = application.arguments();\n // Validate assumed size, but we differ from https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-Assumed-Size.\n // Assumed size is used as a backup for slicing arguments in the event they are both specified. \n // The spec aims to rule out cases when the assumed size will never be used because there is always\n // a slicing argument. Two applications which are compliant with that validation rule can be merged\n // into an application which is not compliant, thus we need to handle this case gracefully at runtime regardless.\n // We omit this check to keep the validations to those that will otherwise cause runtime failures.\n //\n // With all that said, assumed size should not be negative.\n if (assumedSize !== undefined && assumedSize !== null && assumedSize < 0) {\n errorCollector.push(ERRORS.LIST_SIZE_INVALID_ASSUMED_SIZE.err(\n `Assumed size of \"${parent.coordinate}\" cannot be negative`,\n { nodes: sourceASTs(application, parent) },\n ));\n }\n}\n\nfunction isNonNullIntType(ty: Type): boolean {\n return isNonNullType(ty) && isIntType(ty.ofType)\n}\n\nfunction validateSlicingArgumentsAreValidIntegers(\n application: Directive, ListSizeDirectiveArguments>,\n parent: FieldDefinition,\n errorCollector: GraphQLError[]\n) {\n const { slicingArguments = [] } = application.arguments();\n // Validate slicingArguments https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-Slicing-Arguments-Target\n for (const slicingArgumentName of slicingArguments) {\n const slicingArgument = parent.argument(slicingArgumentName);\n if (!slicingArgument?.type) {\n // Slicing arguments must be one of the field's arguments\n errorCollector.push(ERRORS.LIST_SIZE_INVALID_SLICING_ARGUMENT.err(\n `Slicing argument \"${slicingArgumentName}\" is not an argument of \"${parent.coordinate}\"`,\n { nodes: sourceASTs(application, parent) }\n ));\n } else if (!isIntType(slicingArgument.type) && !isNonNullIntType(slicingArgument.type)) {\n // Slicing arguments must be Int or Int!\n errorCollector.push(ERRORS.LIST_SIZE_INVALID_SLICING_ARGUMENT.err(\n `Slicing argument \"${slicingArgument.coordinate}\" must be Int or Int!`,\n { nodes: sourceASTs(application, parent) }\n ));\n }\n }\n}\n\nfunction isNonNullListType(ty: Type): boolean {\n return isNonNullType(ty) && isListType(ty.ofType)\n}\n\nfunction validateSizedFieldsAreValidLists(\n application: Directive, ListSizeDirectiveArguments>,\n parent: FieldDefinition,\n errorCollector: GraphQLError[]\n) {\n const { sizedFields = [] } = application.arguments();\n // Validate sizedFields https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-Sized-Fields-Target\n if (sizedFields.length) {\n if (!parent.type || !isCompositeType(parent.type)) {\n // The output type must have fields\n errorCollector.push(ERRORS.LIST_SIZE_INVALID_SIZED_FIELD.err(\n `Sized fields cannot be used because \"${parent.type}\" is not a composite type`,\n { nodes: sourceASTs(application, parent)}\n ));\n } else {\n for (const sizedFieldName of sizedFields) {\n const sizedField = parent.type.field(sizedFieldName);\n if (!sizedField) {\n // Sized fields must be present on the output type\n errorCollector.push(ERRORS.LIST_SIZE_INVALID_SIZED_FIELD.err(\n `Sized field \"${sizedFieldName}\" is not a field on type \"${parent.type.coordinate}\"`,\n { nodes: sourceASTs(application, parent) }\n ));\n } else if (!sizedField.type || !(isListType(sizedField.type) || isNonNullListType(sizedField.type))) {\n // Sized fields must be lists\n errorCollector.push(ERRORS.LIST_SIZE_APPLIED_TO_NON_LIST.err(\n `Sized field \"${sizedField.coordinate}\" is not a list`,\n { nodes: sourceASTs(application, parent) },\n ));\n }\n }\n }\n }\n}\n\nexport class FederationMetadata {\n private _externalTester?: ExternalTester;\n private _sharingPredicate?: (field: FieldDefinition) => boolean;\n private _fieldUsedPredicate?: (field: FieldDefinition) => boolean;\n private _isFed2Schema?: boolean;\n\n constructor(readonly schema: Schema) {}\n\n private onInvalidate() {\n this._externalTester = undefined;\n this._sharingPredicate = undefined;\n this._isFed2Schema = undefined;\n this._fieldUsedPredicate = undefined;\n }\n\n isFed2Schema(): boolean {\n if (!this._isFed2Schema) {\n const feature = this.federationFeature();\n this._isFed2Schema = !!feature && feature.url.version.satisfies(new FeatureVersion(2, 0))\n }\n return this._isFed2Schema;\n }\n\n federationFeature(): CoreFeature | undefined {\n return this.schema.coreFeatures?.getByIdentity(latestFederationSpec.identity);\n }\n\n private externalTester(): ExternalTester {\n if (!this._externalTester) {\n this._externalTester = new ExternalTester(this.schema, this.isFed2Schema());\n }\n return this._externalTester;\n }\n\n private sharingPredicate(): (field: FieldDefinition) => boolean {\n if (!this._sharingPredicate) {\n this._sharingPredicate = computeShareables(this.schema);\n }\n return this._sharingPredicate;\n }\n\n private fieldUsedPredicate(): (field: FieldDefinition) => boolean {\n if (!this._fieldUsedPredicate) {\n const usedFields = collectUsedFields(this);\n this._fieldUsedPredicate = (field: FieldDefinition) => !!usedFields.has(field);\n }\n return this._fieldUsedPredicate;\n }\n\n isFieldUsed(field: FieldDefinition): boolean {\n return this.fieldUsedPredicate()(field);\n }\n\n isFieldExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.externalTester().isExternal(field);\n }\n\n isFieldPartiallyExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.externalTester().isPartiallyExternal(field);\n }\n\n isFieldFullyExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.externalTester().isFullyExternal(field);\n }\n\n isFieldFakeExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.externalTester().isFakeExternal(field);\n }\n\n selectionSelectsAnyExternalField(selectionSet: SelectionSet): boolean {\n return this.externalTester().selectsAnyExternalField(selectionSet);\n }\n\n isFieldShareable(field: FieldDefinition): boolean {\n return this.sharingPredicate()(field);\n }\n\n isInterfaceObjectType(type: NamedType): type is ObjectType {\n return isObjectType(type)\n && hasAppliedDirective(type, this.interfaceObjectDirective());\n }\n\n federationDirectiveNameInSchema(name: string): string {\n if (this.isFed2Schema()) {\n const coreFeatures = this.schema.coreFeatures;\n assert(coreFeatures, 'Schema should be a core schema');\n const federationFeature = coreFeatures.getByIdentity(latestFederationSpec.identity);\n assert(federationFeature, 'Schema should have the federation feature');\n return federationFeature.directiveNameInSchema(name);\n } else {\n return name;\n }\n }\n\n federationTypeNameInSchema(name: string): string {\n // Currently, the types used to define the federation operations, that is _Any, _Entity and _Service,\n // are not considered part of the federation spec, and are instead hardcoded to the names above.\n // The reason being that there is no way to maintain backward compatbility with fed2 if we were to add\n // those to the federation spec without requiring users to add those types to their @link `import`,\n // and that wouldn't be a good user experience (because most users don't really know what those types\n // are/do). And so we special case it.\n if (name.charAt(0) === '_') {\n return name;\n }\n\n if (this.isFed2Schema()) {\n const coreFeatures = this.schema.coreFeatures;\n assert(coreFeatures, 'Schema should be a core schema');\n const federationFeature = coreFeatures.getByIdentity(latestFederationSpec.identity);\n assert(federationFeature, 'Schema should have the federation feature');\n return federationFeature.typeNameInSchema(name);\n } else {\n // The only type here so far is the the `FieldSet` one. And in fed1, it's called `_FieldSet`, so ...\n return '_' + name;\n }\n }\n\n // Should only be be called for \"legacy\" directives, those that existed in 2.0. This\n // allow to avoiding have to double-check the directive exists every time when we\n // know it will always exists (note that even though we accept fed1 schema as inputs,\n // those are almost immediately converted to fed2 ones by the `SchemaUpgrader`, so\n // we include @shareable or @override in those \"legacy\" directives).\n private getLegacyFederationDirective(\n name: FederationDirectiveName\n ): DirectiveDefinition {\n const directive = this.getFederationDirective(name);\n assert(directive, `The provided schema does not have federation directive @${name}`);\n return directive;\n }\n\n private getFederationDirective(\n name: FederationDirectiveName\n ): DirectiveDefinition | undefined {\n return this.schema.directive(this.federationDirectiveNameInSchema(name)) as DirectiveDefinition | undefined;\n }\n\n private getPost20FederationDirective(\n name: FederationDirectiveName\n ): Post20FederationDirectiveDefinition {\n return this.getFederationDirective(name) ?? {\n name,\n applications: () => new Set>(),\n };\n }\n\n keyDirective(): DirectiveDefinition<{fields: any, resolvable?: boolean}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.KEY);\n }\n\n overrideDirective(): DirectiveDefinition<{from: string, label?: string}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.OVERRIDE);\n }\n\n extendsDirective(): DirectiveDefinition> {\n return this.getLegacyFederationDirective(FederationDirectiveName.EXTENDS);\n }\n\n externalDirective(): DirectiveDefinition<{reason: string}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.EXTERNAL);\n }\n\n requiresDirective(): DirectiveDefinition<{fields: any}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.REQUIRES);\n }\n\n providesDirective(): DirectiveDefinition<{fields: any}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.PROVIDES);\n }\n\n shareableDirective(): DirectiveDefinition<{}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.SHAREABLE);\n }\n\n tagDirective(): DirectiveDefinition<{name: string}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.TAG);\n }\n\n composeDirective(): Post20FederationDirectiveDefinition<{name: string}> {\n return this.getPost20FederationDirective(FederationDirectiveName.COMPOSE_DIRECTIVE);\n }\n\n inaccessibleDirective(): DirectiveDefinition<{}> {\n return this.getLegacyFederationDirective(FederationDirectiveName.INACCESSIBLE);\n }\n\n interfaceObjectDirective(): Post20FederationDirectiveDefinition<{}> {\n return this.getPost20FederationDirective(FederationDirectiveName.INTERFACE_OBJECT);\n }\n\n authenticatedDirective(): Post20FederationDirectiveDefinition<{}> {\n return this.getPost20FederationDirective(FederationDirectiveName.AUTHENTICATED);\n }\n\n requiresScopesDirective(): Post20FederationDirectiveDefinition<{scopes: string[]}> {\n return this.getPost20FederationDirective(FederationDirectiveName.REQUIRES_SCOPES);\n }\n\n policyDirective(): Post20FederationDirectiveDefinition<{scopes: string[]}> {\n return this.getPost20FederationDirective(FederationDirectiveName.POLICY);\n }\n\n sourceAPIDirective(): Post20FederationDirectiveDefinition {\n return this.getPost20FederationDirective(FederationDirectiveName.SOURCE_API);\n }\n\n sourceTypeDirective(): Post20FederationDirectiveDefinition {\n return this.getPost20FederationDirective(FederationDirectiveName.SOURCE_TYPE);\n }\n\n sourceFieldDirective(): Post20FederationDirectiveDefinition {\n return this.getPost20FederationDirective(FederationDirectiveName.SOURCE_FIELD);\n }\n\n fromContextDirective(): Post20FederationDirectiveDefinition<{ field: string }> {\n return this.getPost20FederationDirective(FederationDirectiveName.FROM_CONTEXT);\n }\n\n contextDirective(): Post20FederationDirectiveDefinition<{ name: string }> {\n return this.getPost20FederationDirective(FederationDirectiveName.CONTEXT);\n }\n\n costDirective(): Post20FederationDirectiveDefinition {\n return this.getPost20FederationDirective(FederationDirectiveName.COST);\n }\n\n listSizeDirective(): Post20FederationDirectiveDefinition {\n return this.getPost20FederationDirective(FederationDirectiveName.LIST_SIZE);\n }\n\n allFederationDirectives(): DirectiveDefinition[] {\n const baseDirectives: DirectiveDefinition[] = [\n this.keyDirective(),\n this.externalDirective(),\n this.requiresDirective(),\n this.providesDirective(),\n this.tagDirective(),\n this.extendsDirective(),\n ];\n if (!this.isFed2Schema()) {\n return baseDirectives;\n }\n\n baseDirectives.push(this.shareableDirective());\n baseDirectives.push(this.inaccessibleDirective());\n baseDirectives.push(this.overrideDirective());\n const composeDirective = this.composeDirective();\n if (isFederationDirectiveDefinedInSchema(composeDirective)) {\n baseDirectives.push(composeDirective);\n }\n const interfaceObjectDirective = this.interfaceObjectDirective();\n if (isFederationDirectiveDefinedInSchema(interfaceObjectDirective)) {\n baseDirectives.push(interfaceObjectDirective);\n }\n\n const authenticatedDirective = this.authenticatedDirective();\n if (isFederationDirectiveDefinedInSchema(authenticatedDirective)) {\n baseDirectives.push(authenticatedDirective);\n }\n\n const requiresScopesDirective = this.requiresScopesDirective();\n if (isFederationDirectiveDefinedInSchema(requiresScopesDirective)) {\n baseDirectives.push(requiresScopesDirective);\n }\n\n const policyDirective = this.policyDirective();\n if (isFederationDirectiveDefinedInSchema(policyDirective)) {\n baseDirectives.push(policyDirective);\n }\n\n const sourceAPIDirective = this.sourceAPIDirective();\n if (isFederationDirectiveDefinedInSchema(sourceAPIDirective)) {\n baseDirectives.push(sourceAPIDirective);\n }\n const sourceTypeDirective = this.sourceTypeDirective();\n if (isFederationDirectiveDefinedInSchema(sourceTypeDirective)) {\n baseDirectives.push(sourceTypeDirective);\n }\n const sourceFieldDirective = this.sourceFieldDirective();\n if (isFederationDirectiveDefinedInSchema(sourceFieldDirective)) {\n baseDirectives.push(sourceFieldDirective);\n }\n\n const contextDirective = this.contextDirective();\n if (isFederationDirectiveDefinedInSchema(contextDirective)) {\n baseDirectives.push(contextDirective);\n }\n\n const fromContextDirective = this.fromContextDirective();\n if (isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n baseDirectives.push(fromContextDirective);\n }\n\n const costDirective = this.costDirective();\n if (isFederationDirectiveDefinedInSchema(costDirective)) {\n baseDirectives.push(costDirective);\n }\n\n const listSizeDirective = this.listSizeDirective();\n if (isFederationDirectiveDefinedInSchema(listSizeDirective)) {\n baseDirectives.push(listSizeDirective);\n }\n\n return baseDirectives;\n }\n\n // Note that a subgraph may have no \"entities\" and so no _EntityType.\n entityType(): UnionType | undefined {\n return this.schema.type(this.federationTypeNameInSchema(entityTypeSpec.name)) as UnionType | undefined;\n }\n\n anyType(): ScalarType {\n return this.schema.type(this.federationTypeNameInSchema(anyTypeSpec.name)) as ScalarType;\n }\n\n serviceType(): ObjectType {\n return this.schema.type(this.federationTypeNameInSchema(serviceTypeSpec.name)) as ObjectType;\n }\n\n fieldSetType(): ScalarType {\n return this.schema.type(this.federationTypeNameInSchema(FederationTypeName.FIELD_SET)) as ScalarType;\n }\n\n allFederationTypes(): NamedType[] {\n // We manually include the `_Any`, `_Service` and `Entity` types because there are not strictly\n // speaking part of the federation @link spec.\n const fedTypes: NamedType[] = [\n this.anyType(),\n this.serviceType(),\n ];\n\n const fedFeature = this.federationFeature();\n if (fedFeature) {\n const featureDef = FEDERATION_VERSIONS.find(fedFeature.url.version);\n assert(featureDef, () => `Federation spec should be known, but got ${fedFeature.url}`);\n for (const typeSpec of featureDef.typeSpecs()) {\n const type = this.schema.type(fedFeature.typeNameInSchema(typeSpec.name));\n if (type) {\n fedTypes.push(type);\n }\n }\n } else {\n // Fed1: the only type we had was _FieldSet.\n fedTypes.push(this.fieldSetType());\n }\n\n const entityType = this.entityType();\n if (entityType) {\n fedTypes.push(entityType);\n }\n return fedTypes;\n }\n}\n\nexport type FederationDirectiveNotDefinedInSchema = {\n name: string,\n applications: () => ReadonlySet>,\n}\n\nexport type Post20FederationDirectiveDefinition =\n DirectiveDefinition\n | FederationDirectiveNotDefinedInSchema;\n\nexport function isFederationDirectiveDefinedInSchema(\n definition: Post20FederationDirectiveDefinition\n): definition is DirectiveDefinition {\n return definition instanceof DirectiveDefinition;\n}\n\nexport function hasAppliedDirective(type: NamedType, definition: Post20FederationDirectiveDefinition): boolean {\n return isFederationDirectiveDefinedInSchema(definition) && type.hasAppliedDirective(definition);\n}\n\nexport class FederationBlueprint extends SchemaBlueprint {\n constructor(private readonly withRootTypeRenaming: boolean) {\n super();\n }\n\n onAddedCoreFeature(schema: Schema, feature: CoreFeature) {\n super.onAddedCoreFeature(schema, feature);\n if (feature.url.identity === federationIdentity) {\n const spec = FEDERATION_VERSIONS.find(feature.url.version);\n if (spec) {\n spec.addElementsToSchema(schema);\n }\n }\n }\n\n onMissingDirectiveDefinition(schema: Schema, directive: Directive): DirectiveDefinition | GraphQLError[] | undefined {\n if (directive.name === linkDirectiveDefaultName) {\n const args = directive.arguments();\n const url = args && (args['url'] as string | undefined);\n let as: string | undefined = undefined;\n let imports: CoreImport[] = [];\n if (url && url.startsWith(linkSpec.identity)) {\n as = args['as'] as string | undefined;\n imports = extractCoreFeatureImports(linkSpec.url, directive as Directive);\n }\n const errors = linkSpec.addDefinitionsToSchema(schema, as, imports);\n return errors.length > 0 ? errors : schema.directive(directive.name);\n }\n return super.onMissingDirectiveDefinition(schema, directive);\n }\n\n ignoreParsedField(type: NamedType, fieldName: string): boolean {\n // Historically, federation 1 has accepted invalid schema, including some where the Query type included\n // the definition of `_entities` (so `_entities(representations: [_Any!]!): [_Entity]!`) but _without_\n // defining the `_Any` or `_Entity` type. So while we want to be stricter for fed2 (so this kind of\n // really weird case can be fixed), we want fed2 to accept as much fed1 schema as possible.\n //\n // So, to avoid this problem, we ignore the _entities and _service fields if we parse them from\n // a fed1 input schema. Those will be added back anyway (along with the proper types) post-parsing.\n if (!FEDERATION_OPERATION_FIELDS.includes(fieldName)) {\n return false;\n }\n const metadata = federationMetadata(type.schema());\n return !!metadata && !metadata.isFed2Schema();\n }\n\n onConstructed(schema: Schema) {\n const existing = federationMetadata(schema);\n if (!existing) {\n (schema as any)['_federationMetadata'] = new FederationMetadata(schema);\n }\n }\n\n onDirectiveDefinitionAndSchemaParsed(schema: Schema): GraphQLError[] {\n const errors = completeSubgraphSchema(schema);\n schema.schemaDefinition.processUnappliedDirectives();\n return errors;\n }\n\n onInvalidation(schema: Schema) {\n super.onInvalidation(schema);\n const metadata = federationMetadata(schema);\n assert(metadata, 'Federation schema should have had its metadata set on construction');\n FederationMetadata.prototype['onInvalidate'].call(metadata);\n }\n\n onValidation(schema: Schema): GraphQLError[] {\n const errorCollector = super.onValidation(schema);\n\n // We rename all root type to their default names (we do here rather than in `prepareValidation` because\n // that can actually fail).\n if (this.withRootTypeRenaming) {\n for (const k of allSchemaRootKinds) {\n const type = schema.schemaDefinition.root(k)?.type;\n const defaultName = defaultRootName(k);\n if (type && type.name !== defaultName) {\n // We first ensure there is no other type using the default root name. If there is, this is a\n // composition error.\n const existing = schema.type(defaultName);\n if (existing) {\n errorCollector.push(ERROR_CATEGORIES.ROOT_TYPE_USED.get(k).err(\n `The schema has a type named \"${defaultName}\" but it is not set as the ${k} root type (\"${type.name}\" is instead): `\n + 'this is not supported by federation. '\n + 'If a root type does not use its default name, there should be no other type with that default name.',\n { nodes: sourceASTs(type, existing) },\n ));\n }\n type.rename(defaultName);\n }\n }\n }\n\n const metadata = federationMetadata(schema);\n assert(metadata, 'Federation schema should have had its metadata set on construction');\n // We skip the rest of validation for fed1 schema because there is a number of validation that is stricter than what fed 1\n // accepted, and some of those issues are fixed by `SchemaUpgrader`. So insofar as any fed 1 scheam is ultimately converted\n // to a fed 2 one before composition, then skipping some validation on fed 1 schema is fine.\n if (!metadata.isFed2Schema()) {\n return errorCollector;\n }\n\n // We validate the @key, @requires and @provides.\n const keyDirective = metadata.keyDirective();\n validateAllFieldSet({\n definition: keyDirective,\n targetTypeExtractor: type => type,\n errorCollector,\n metadata,\n isOnParentType: true,\n allowOnNonExternalLeafFields: true,\n allowOnInterface: metadata.federationFeature()!.url.version.compareTo(new FeatureVersion(2, 3)) >= 0,\n onFields: field => {\n const type = baseType(field.type!);\n if (isUnionType(type) || isInterfaceType(type)) {\n let kind: string = type.kind;\n kind = kind.slice(0, kind.length - 'Type'.length);\n throw ERRORS.KEY_FIELDS_SELECT_INVALID_TYPE.err(\n `field \"${field.coordinate}\" is a ${kind} type which is not allowed in @key`,\n );\n }\n }\n });\n // Note that we currently reject @requires where a leaf field of the selection is not external,\n // because if it's provided by the current subgraph, why \"requires\" it? That said, it's not 100%\n // nonsensical if you wanted a local field to be part of the subgraph fetch even if it's not\n // truly queried _for some reason_. But it's unclear such reasons exists, so for now we prefer\n // rejecting it as it also make it less likely user misunderstand what @requires actually do.\n // But we could consider lifting that limitation if users comes with a good rational for allowing\n // it.\n validateAllFieldSet>({\n definition: metadata.requiresDirective(),\n targetTypeExtractor: field => field.parent,\n errorCollector,\n metadata,\n allowFieldsWithArguments: true,\n });\n // Note that like for @requires above, we error out if a leaf field of the selection is not\n // external in a @provides (we pass `false` for the `allowOnNonExternalLeafFields` parameter),\n // but contrarily to @requires, there is probably no reason to ever change this, as a @provides\n // of a field already provides is 100% nonsensical.\n validateAllFieldSet>({\n definition: metadata.providesDirective(),\n targetTypeExtractor: field => {\n if (metadata.isFieldExternal(field)) {\n throw ERRORS.EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n `Cannot have both @provides and @external on field \"${field.coordinate}\"`,\n { nodes: field.sourceAST },\n );\n }\n const type = baseType(field.type!);\n if (!isCompositeType(type)) {\n throw ERRORS.PROVIDES_ON_NON_OBJECT_FIELD.err(\n `Invalid @provides directive on field \"${field.coordinate}\": field has type \"${field.type}\" which is not a Composite Type`,\n { nodes: field.sourceAST },\n );\n }\n return type;\n },\n errorCollector,\n metadata,\n });\n\n // validate @context and @fromContext\n const contextDirective = metadata.contextDirective();\n const contextToTypeMap = new Map();\n for (const application of contextDirective.applications()) {\n const parent = application.parent;\n const name = application.arguments().name as string;\n \n const match = name.match(/^([A-Za-z]\\w*)$/);\n if (name.includes('_')) {\n errorCollector.push(ERRORS.CONTEXT_NAME_INVALID.err(\n `Context name \"${name}\" may not contain an underscore.`,\n { nodes: sourceASTs(application) }\n ));\n }\n else if (!match) {\n errorCollector.push(ERRORS.CONTEXT_NAME_INVALID.err(\n `Context name \"${name}\" is invalid. It should have only alphanumeric characters.`,\n { nodes: sourceASTs(application) }\n ));\n }\n const types = contextToTypeMap.get(name);\n if (types) {\n types.push(parent);\n } else {\n contextToTypeMap.set(name, [parent]);\n }\n }\n\n const fromContextDirective = metadata.fromContextDirective();\n for (const application of fromContextDirective.applications()) {\n const { field } = application.arguments();\n const { context, selection } = parseContext(field);\n \n // error if parent's parent is a directive definition\n if (application.parent.parent.kind === 'DirectiveDefinition') {\n errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n `@fromContext argument cannot be used on a directive definition \"${application.parent.coordinate}\".`,\n { nodes: sourceASTs(application) }\n ));\n continue;\n }\n\n const parent = application.parent as ArgumentDefinition>;\n\n // error if parent's parent is an interface\n if (parent?.parent?.parent?.kind !== 'ObjectType') {\n errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n `@fromContext argument cannot be used on a field that exists on an abstract type \"${application.parent.coordinate}\".`,\n { nodes: sourceASTs(application) }\n ));\n continue;\n }\n\n // error if the parent's parent implements an interface containing the field\n const objectType = parent.parent.parent;\n for (const implementedInterfaceType of objectType.interfaces()) {\n const implementedInterfaceField = implementedInterfaceType.field(parent.parent.name);\n if (implementedInterfaceField) {\n errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n `@fromContext argument cannot be used on a field implementing an interface field \"${implementedInterfaceField.coordinate}\".`,\n { nodes: sourceASTs(application) }\n ));\n }\n }\n \n if (parent.defaultValue !== undefined) {\n errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n `@fromContext arguments may not have a default value: \"${parent.coordinate}\".`,\n { nodes: sourceASTs(application) }\n )); \n }\n \n if (!context || !selection) {\n errorCollector.push(ERRORS.NO_CONTEXT_IN_SELECTION.err(\n `@fromContext argument does not reference a context \"${field}\".`,\n { nodes: sourceASTs(application) }\n ));\n } else {\n const locations = contextToTypeMap.get(context);\n if (!locations) {\n errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n `Context \"${context}\" is used at location \"${parent.coordinate}\" but is never set.`,\n { nodes: sourceASTs(application) }\n ));\n } else {\n validateFieldValue({\n context,\n selection,\n fromContextParent: parent,\n setContextLocations: locations,\n errorCollector,\n metadata,\n });\n }\n \n // validate that there is at least one resolvable key on the type\n const keyDirective = metadata.keyDirective();\n const keyApplications = objectType.appliedDirectivesOf(keyDirective);\n if (!keyApplications.some(app => app.arguments().resolvable || app.arguments().resolvable === undefined)) {\n errorCollector.push(ERRORS.CONTEXT_NO_RESOLVABLE_KEY.err(\n `Object \"${objectType.coordinate}\" has no resolvable key but has a field with a contextual argument.`,\n { nodes: sourceASTs(objectType) }\n ));\n }\n }\n }\n\n validateNoExternalOnInterfaceFields(metadata, errorCollector);\n validateAllExternalFieldsUsed(metadata, errorCollector);\n validateKeyOnInterfacesAreAlsoOnAllImplementations(metadata, errorCollector);\n validateInterfaceObjectsAreOnEntities(metadata, errorCollector);\n\n // FeatureDefinition objects passed to registerKnownFeature can register\n // validation functions for subgraph schemas by overriding the\n // validateSubgraphSchema method.\n validateKnownFeatures(schema, errorCollector);\n // If tag is redefined by the user, make sure the definition is compatible with what we expect\n const tagDirective = metadata.tagDirective();\n if (tagDirective) {\n const error = tagSpec.checkCompatibleDirective(tagDirective);\n if (error) {\n errorCollector.push(error);\n }\n }\n\n // While @shareable is \"repeatable\", this is only so one can use it on both a main\n // type definition _and_ possible other type extensions. But putting 2 @shareable\n // on the same type definition or field is both useless, and suggest some miscomprehension,\n // so we reject it with an (hopefully helpful) error message.\n for (const objectType of schema.objectTypes()) {\n validateShareableNotRepeatedOnSameDeclaration(objectType, metadata, errorCollector);\n for (const field of objectType.fields()) {\n validateShareableNotRepeatedOnSameDeclaration(field, metadata, errorCollector);\n }\n }\n // Additionally, reject using @shareable on an interface field, as that does not actually\n // make sense.\n for (const shareableApplication of metadata.shareableDirective().applications()) {\n const element = shareableApplication.parent;\n if (element instanceof FieldDefinition && !isObjectType(element.parent)) {\n errorCollector.push(ERRORS.INVALID_SHAREABLE_USAGE.err(\n `Invalid use of @shareable on field \"${element.coordinate}\": only object type fields can be marked with @shareable`,\n { nodes: sourceASTs(shareableApplication, element.parent) },\n ));\n }\n }\n\n const costFeature = schema.coreFeatures?.getByIdentity(costIdentity);\n const costSpec = costFeature && COST_VERSIONS.find(costFeature.url.version);\n const costDirective = costSpec?.costDirective(schema);\n const listSizeDirective = costSpec?.listSizeDirective(schema);\n\n // Validate @cost\n for (const application of costDirective?.applications() ?? []) {\n validateCostNotAppliedToInterface(application, errorCollector);\n }\n\n // Validate @listSize\n for (const application of listSizeDirective?.applications() ?? []) {\n const parent = application.parent;\n assert(parent instanceof FieldDefinition, \"@listSize can only be applied to FIELD_DEFINITION\");\n validateListSizeAppliedToList(application, parent, errorCollector);\n validateAssumedSizeNotNegative(application, parent, errorCollector);\n validateSlicingArgumentsAreValidIntegers(application, parent, errorCollector);\n validateSizedFieldsAreValidLists(application, parent, errorCollector);\n }\n\n return errorCollector;\n }\n\n validationRules(): readonly SDLValidationRule[] {\n return FEDERATION_VALIDATION_RULES;\n }\n\n onUnknownDirectiveValidationError(schema: Schema, unknownDirectiveName: string, error: GraphQLError): GraphQLError {\n const metadata = federationMetadata(schema);\n assert(metadata, `This method should only have been called on a subgraph schema`)\n if (ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES.includes(unknownDirectiveName)) {\n // The directive name is \"unknown\" but it is a default federation directive name. So it means one of a few things\n // happened:\n // 1. it's a fed1 schema but the directive is a fed2 only one (only possible case for fed1 schema).\n // 2. the directive has not been imported at all (so needs to be prefixed for it to work).\n // 3. the directive has an `import`, but it's been aliased to another name.\n if (metadata.isFed2Schema()) {\n const federationFeature = metadata.federationFeature();\n assert(federationFeature, 'Fed2 subgraph _must_ link to the federation feature')\n const directiveNameInSchema = federationFeature.directiveNameInSchema(unknownDirectiveName);\n if (directiveNameInSchema.startsWith(federationFeature.nameInSchema + '__')) {\n // There is no import for that directive\n return withModifiedErrorMessage(\n error,\n `${error.message} If you meant the \"@${unknownDirectiveName}\" federation directive, you should use fully-qualified name \"@${directiveNameInSchema}\" or add \"@${unknownDirectiveName}\" to the \\`import\\` argument of the @link to the federation specification.`\n );\n } else {\n // There's an import, but it's renamed\n return withModifiedErrorMessage(\n error,\n `${error.message} If you meant the \"@${unknownDirectiveName}\" federation directive, you should use \"@${directiveNameInSchema}\" as it is imported under that name in the @link to the federation specification of this schema.`\n );\n }\n } else {\n return withModifiedErrorMessage(\n error,\n `${error.message} If you meant the \"@${unknownDirectiveName}\" federation 2 directive, note that this schema is a federation 1 schema. To be a federation 2 schema, it needs to @link to the federation specifcation v2.`\n );\n }\n } else if (!metadata.isFed2Schema()) {\n // We could get here in the case where a fed1 schema has tried to use a fed2 directive but mispelled it.\n const suggestions = suggestionList(unknownDirectiveName, ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES);\n if (suggestions.length > 0) {\n return withModifiedErrorMessage(\n error,\n `${error.message}${didYouMean(suggestions.map((s) => '@' + s))} If so, note that ${suggestions.length === 1 ? 'it is a federation 2 directive' : 'they are federation 2 directives'} but this schema is a federation 1 one. To be a federation 2 schema, it needs to @link to the federation specifcation v2.`\n );\n }\n }\n return error;\n }\n\n applyDirectivesAfterParsing() {\n return true;\n }\n}\n\nfunction findUnusedNamedForLinkDirective(schema: Schema): string | undefined {\n if (!schema.directive(linkSpec.url.name)) {\n return undefined;\n }\n\n // The schema already defines a directive named `@link` so we need to use an alias.\n // To keep it simple, we add a number in the end (so we try `@link1`, and if that's taken `@link2`, ...)\n const baseName = linkSpec.url.name;\n const n = 1;\n for (;;) {\n const candidate = baseName + n;\n if (!schema.directive(candidate)) {\n return candidate;\n }\n }\n}\n\nexport function setSchemaAsFed2Subgraph(schema: Schema, useLatest: boolean = false) {\n let core = schema.coreFeatures;\n let spec: CoreSpecDefinition;\n if (core) {\n spec = core.coreDefinition;\n // We don't accept pre-1.0 @core: this avoid having to care about what the name\n // of the argument below is, and why would be bother?\n assert(spec.url.version.satisfies(linkSpec.version), `Fed2 schema must use @link with version >= 1.0, but schema uses ${spec.url}`);\n } else {\n const alias = findUnusedNamedForLinkDirective(schema);\n const errors = linkSpec.addToSchema(schema, alias);\n if (errors.length > 0) {\n throw ErrGraphQLValidationFailed(errors);\n }\n spec = linkSpec;\n core = schema.coreFeatures;\n assert(core, 'Schema should now be a core schema');\n }\n\n const fedSpec = useLatest ? latestFederationSpec : autoExpandedFederationSpec;\n\n assert(!core.getByIdentity(fedSpec.identity), 'Schema already set as a federation subgraph');\n schema.schemaDefinition.applyDirective(\n core.coreItself.nameInSchema,\n {\n // note that there is a mismatch between url and directives that are imported. This is because\n // we want to maintain backward compatibility for those who have already upgraded and we had been upgrading the url to\n // latest, but we never automatically import directives that exist past 2.4\n url: fedSpec.url.toString(),\n import: autoExpandedFederationSpec.directiveSpecs().map((spec) => `@${spec.name}`),\n }\n );\n const errors = completeSubgraphSchema(schema);\n if (errors.length > 0) {\n throw ErrGraphQLValidationFailed(errors);\n }\n}\n\n// This is the full @link declaration as added by `asFed2SubgraphDocument`. It's here primarily for uses by tests that print and match\n// subgraph schema to avoid having to update 20+ tests every time we use a new directive or the order of import changes ...\nexport const FEDERATION2_LINK_WITH_FULL_IMPORTS = '@link(url: \"https://specs.apollo.dev/federation/v2.9\", import: [\"@key\", \"@requires\", \"@provides\", \"@external\", \"@tag\", \"@extends\", \"@shareable\", \"@inaccessible\", \"@override\", \"@composeDirective\", \"@interfaceObject\", \"@authenticated\", \"@requiresScopes\", \"@policy\", \"@sourceAPI\", \"@sourceType\", \"@sourceField\", \"@context\", \"@fromContext\", \"@cost\", \"@listSize\"])';\n// This is the full @link declaration that is added when upgrading fed v1 subgraphs to v2 version. It should only be used by tests.\nexport const FEDERATION2_LINK_WITH_AUTO_EXPANDED_IMPORTS = '@link(url: \"https://specs.apollo.dev/federation/v2.9\", import: [\"@key\", \"@requires\", \"@provides\", \"@external\", \"@tag\", \"@extends\", \"@shareable\", \"@inaccessible\", \"@override\", \"@composeDirective\", \"@interfaceObject\"])';\n\n// This is the federation @link for tests that go through the SchemaUpgrader.\nexport const FEDERATION2_LINK_WITH_AUTO_EXPANDED_IMPORTS_UPGRADED = '@link(url: \"https://specs.apollo.dev/federation/v2.4\", import: [\"@key\", \"@requires\", \"@provides\", \"@external\", \"@tag\", \"@extends\", \"@shareable\", \"@inaccessible\", \"@override\", \"@composeDirective\", \"@interfaceObject\"])';\n\n/**\n * Given a document that is assumed to _not_ be a fed2 schema (it does not have a `@link` to the federation spec),\n * returns an equivalent document that `@link` to the last known federation spec.\n *\n * @param document - the document to \"augment\".\n * @param options.addAsSchemaExtension - defines whether the added `@link` is added as a schema extension (`extend schema`) or\n * added to the schema definition. Defaults to `true` (added as an extension), as this mimics what we tends to write manually.\n * @param options.includeAllImports - defines whether we should auto import ALL latest federation v2 directive definitions or include\n * only limited set of directives (i.e. federation v2.4 definitions)\n */\nexport function asFed2SubgraphDocument(document: DocumentNode, options?: { addAsSchemaExtension?: boolean, includeAllImports?: boolean }): DocumentNode {\n const importedDirectives = options?.includeAllImports ? latestFederationSpec.directiveSpecs() : autoExpandedFederationSpec.directiveSpecs();\n const directiveToAdd: ConstDirectiveNode = ({\n kind: Kind.DIRECTIVE,\n name: { kind: Kind.NAME, value: linkDirectiveDefaultName },\n arguments: [\n {\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: 'url' },\n value: { kind: Kind.STRING, value: latestFederationSpec.url.toString() }\n },\n {\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: 'import' },\n value: { kind: Kind.LIST, values: importedDirectives.map((spec) => ({ kind: Kind.STRING, value: `@${spec.name}` })) }\n }\n ]\n });\n if (options?.addAsSchemaExtension ?? true) {\n return {\n kind: Kind.DOCUMENT,\n loc: document.loc,\n definitions: document.definitions.concat({\n kind: Kind.SCHEMA_EXTENSION,\n directives: [directiveToAdd]\n }),\n }\n }\n\n // We can't add a new schema definition if it already exists. If it doesn't we need to know if there is a mutation type or\n // not.\n const existingSchemaDefinition = document.definitions.find((d): d is SchemaDefinitionNode => d.kind == Kind.SCHEMA_DEFINITION);\n if (existingSchemaDefinition) {\n return {\n kind: Kind.DOCUMENT,\n loc: document.loc,\n definitions: document.definitions.filter((d) => d !== existingSchemaDefinition).concat([{\n ...existingSchemaDefinition,\n directives: [directiveToAdd].concat(existingSchemaDefinition.directives ?? []),\n }]),\n }\n } else {\n const hasMutation = document.definitions.some((d) => d.kind === Kind.OBJECT_TYPE_DEFINITION && d.name.value === 'Mutation');\n const makeOpType = (opType: OperationTypeNode, name: string): OperationTypeDefinitionNode => ({\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: opType,\n type: {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: name,\n }\n },\n });\n return {\n kind: Kind.DOCUMENT,\n loc: document.loc,\n definitions: document.definitions.concat({\n kind: Kind.SCHEMA_DEFINITION,\n directives: [directiveToAdd],\n operationTypes: [ makeOpType(OperationTypeNode.QUERY, 'Query') ].concat(hasMutation ? makeOpType(OperationTypeNode.MUTATION, 'Mutation') : []),\n }),\n }\n }\n}\n\nexport function printSubgraphNames(names: string[]): string {\n return printHumanReadableList(\n names.map(n => `\"${n}\"`),\n {\n prefix: 'subgraph',\n prefixPlural: 'subgraphs',\n }\n );\n}\n\nexport function federationMetadata(schema: Schema): FederationMetadata | undefined {\n return (schema as any)['_federationMetadata'];\n}\n\nexport function isFederationSubgraphSchema(schema: Schema): boolean {\n return !!federationMetadata(schema);\n}\n\nexport function isFederationField(field: FieldDefinition): boolean {\n if (field.parent === field.schema().schemaDefinition.root(\"query\")?.type) {\n return FEDERATION_OPERATION_FIELDS.includes(field.name);\n }\n return false;\n}\n\nexport function isEntityType(type: NamedType): boolean {\n if (!isObjectType(type) && !isInterfaceType(type)) {\n return false;\n }\n const metadata = federationMetadata(type.schema());\n return !!metadata && type.hasAppliedDirective(metadata.keyDirective());\n}\n\nexport function isInterfaceObjectType(type: NamedType): boolean {\n if (!isObjectType(type)) {\n return false;\n }\n const metadata = federationMetadata(type.schema());\n return !!metadata && metadata.isInterfaceObjectType(type);\n}\n\nexport function buildSubgraph(\n name: string,\n url: string,\n source: DocumentNode | string,\n withRootTypeRenaming: boolean = true,\n): Subgraph {\n const buildOptions = {\n blueprint: new FederationBlueprint(withRootTypeRenaming),\n validate: false,\n };\n let subgraph: Subgraph;\n try {\n const schema = typeof source === 'string'\n ? buildSchema(new Source(source, name), buildOptions)\n : buildSchemaFromAST(source, buildOptions)\n subgraph = new Subgraph(name, url, schema);\n } catch (e) {\n if (e instanceof GraphQLError && name !== FEDERATION_UNNAMED_SUBGRAPH_NAME) {\n throw addSubgraphToError(e, name, ERRORS.INVALID_GRAPHQL);\n } else {\n throw e;\n }\n }\n return subgraph.validate();\n}\n\nexport function newEmptyFederation2Schema(config?: SchemaConfig): Schema {\n const schema = new Schema(new FederationBlueprint(true), config);\n setSchemaAsFed2Subgraph(schema, true);\n return schema;\n}\n\nfunction completeSubgraphSchema(schema: Schema): GraphQLError[] {\n const coreFeatures = schema.coreFeatures;\n if (coreFeatures) {\n const fedFeature = coreFeatures.getByIdentity(federationIdentity);\n if (fedFeature) {\n return completeFed2SubgraphSchema(schema);\n } else {\n return completeFed1SubgraphSchema(schema);\n }\n } else {\n const fedLink = schema.schemaDefinition.appliedDirectivesOf(linkDirectiveDefaultName).find(isFedSpecLinkDirective);\n if (fedLink) {\n const errors = linkSpec.addToSchema(schema);\n if (errors.length > 0) {\n return errors;\n }\n return completeFed2SubgraphSchema(schema);\n } else {\n return completeFed1SubgraphSchema(schema);\n }\n }\n}\n\nfunction isFedSpecLinkDirective(directive: Directive): directive is Directive {\n const args = directive.arguments();\n return directive.name === linkDirectiveDefaultName && args['url'] && (args['url'] as string).startsWith(federationIdentity);\n}\n\nfunction completeFed1SubgraphSchema(schema: Schema): GraphQLError[] {\n // We special case @key, @requires and @provides because we've seen existing user schema where those\n // have been defined in an invalid way, but in a way that fed1 wasn't rejecting. So for convenience,\n // if we detect one of those case, we just remove the definition and let the code afteward add the\n // proper definition back.\n // Note that, in a perfect world, we'd do this within the `SchemaUpgrader`. But the way the code\n // is organised, this method is called before we reach the `SchemaUpgrader`, and it doesn't seem\n // worth refactoring things drastically for that minor convenience.\n for (const name of [FederationDirectiveName.KEY, FederationDirectiveName.PROVIDES, FederationDirectiveName.REQUIRES]) {\n const directive = schema.directive(name);\n if (!directive) {\n continue;\n }\n\n // We shouldn't have applications at the time of this writing because `completeSubgraphSchema`, which calls this,\n // is only called:\n // 1. during schema parsing, by `FederationBluePrint.onDirectiveDefinitionAndSchemaParsed`, and that is called\n // before we process any directive applications.\n // 2. by `setSchemaAsFed2Subgraph`, but as the name imply, this trickles to `completeFed2SubgraphSchema`, not\n // this one method.\n // In other words, there is currently no way to create a full fed1 schema first, and get that method called\n // second. If that changes (no real reason but...), we'd have to modify this because when we remove the\n // definition to re-add the \"correct\" version, we'd have to re-attach existing applications (doable but not\n // done). This assert is so we notice it quickly if that ever happens (again, unlikely, because fed1 schema\n // is a backward compatibility thing and there is no reason to expand that too much in the future).\n assert(directive.applications().size === 0, `${directive} shouldn't have had validation at that places`);\n\n // The patterns we recognize and \"correct\" (by essentially ignoring the definition)\n // are:\n // 1. if the definition has no arguments at all.\n // 2. if the `fields` argument is declared as nullable.\n // 3. if the `fields` argument type is named \"FieldSet\" instead of \"_FieldSet\".\n //\n // Note that they all correspong to things we've seen in use schema.\n const fieldType = directive.argument('fields')?.type?.toString();\n // Note that to be on the safe side, we check that `fields` is the only argument. That's\n // because while fed2 accepts the optional `resolvable` arg for @key, fed1 only ever\n // accepted that one argument for all those directives. But if the use had definited\n // more arguments _and_ provided value for such extra argument in some applications,\n // us removing the definition would create validation errors that would be hard to\n // understand for the user.\n const fieldTypeIsWrongInKnownWays = !!fieldType\n && directive.arguments().length === 1\n && (fieldType === 'String' || fieldType === '_FieldSet' || fieldType === 'FieldSet');\n\n if (directive.arguments().length === 0 || fieldTypeIsWrongInKnownWays) {\n directive.remove();\n }\n }\n\n const errors = FEDERATION1_TYPES.map((spec) => spec.checkOrAdd(schema, FAKE_FED1_CORE_FEATURE_TO_RENAME_TYPES))\n .concat(FEDERATION1_DIRECTIVES.map((spec) => spec.checkOrAdd(schema)))\n .flat();\n\n return errors.length === 0 ? expandKnownFeatures(schema) : errors;\n}\n\nfunction completeFed2SubgraphSchema(schema: Schema): GraphQLError[] {\n const coreFeatures = schema.coreFeatures;\n assert(coreFeatures, 'This method should not have been called on a non-core schema');\n\n const fedFeature = coreFeatures.getByIdentity(federationIdentity);\n assert(fedFeature, 'This method should not have been called on a schema with no @link for federation');\n\n const spec = FEDERATION_VERSIONS.find(fedFeature.url.version);\n if (!spec) {\n return [ERRORS.UNKNOWN_FEDERATION_LINK_VERSION.err(\n `Invalid version ${fedFeature.url.version} for the federation feature in @link directive on schema`,\n { nodes: fedFeature.directive.sourceAST },\n )];\n }\n\n const errors = spec.addElementsToSchema(schema);\n return errors.length === 0 ? expandKnownFeatures(schema) : errors;\n}\n\nfunction expandKnownFeatures(schema: Schema): GraphQLError[] {\n const coreFeatures = schema.coreFeatures;\n if (!coreFeatures) {\n return [];\n }\n\n let errors: GraphQLError[] = [];\n for (const feature of coreFeatures.allFeatures()) {\n // We should already have dealt with the core/link spec and federation at this point. Also, we shouldn't have the `join` spec in subgraphs,\n // but some tests play with the idea and currently the join spec is implemented in a way that is not idempotent (it doesn't use\n // `DirectiveSpecification.checkAndAdd`; we should clean it up at some point, but not exactly urgent).\n if (feature === coreFeatures.coreItself || feature.url.identity === federationIdentity || feature.url.identity === joinIdentity) {\n continue;\n }\n\n const spec = coreFeatureDefinitionIfKnown(feature.url);\n if (!spec) {\n continue;\n }\n\n errors = errors.concat(spec.addElementsToSchema(schema));\n }\n return errors;\n}\n\nexport function parseFieldSetArgument({\n parentType,\n directive,\n fieldAccessor,\n validate,\n decorateValidationErrors = true,\n normalize = false,\n}: {\n parentType: CompositeType,\n directive: Directive, {fields: any}>,\n fieldAccessor?: (type: CompositeType, fieldName: string) => FieldDefinition | undefined,\n validate?: boolean,\n decorateValidationErrors?: boolean,\n normalize?: boolean,\n}): SelectionSet {\n try {\n const selectionSet = parseSelectionSet({\n parentType,\n source: validateFieldSetValue(directive),\n fieldAccessor,\n validate,\n });\n if (validate ?? true) {\n selectionSet.forEachElement((elt) => {\n if (elt.kind === 'Field' && elt.alias) {\n // Note that this will be caught by the surrounding catch and \"decorated\".\n throw new GraphQLError(`Cannot use alias \"${elt.alias}\" in \"${elt}\": aliases are not currently supported in @${directive.name}`);\n }\n });\n }\n return normalize\n ? selectionSet.normalize({ parentType, recursive: true })\n : selectionSet;\n } catch (e) {\n if (!(e instanceof GraphQLError) || !decorateValidationErrors) {\n throw e;\n }\n\n throw handleFieldSetValidationError(\n directive,\n e,\n (msg: string) => {\n if (msg.startsWith('Cannot query field')) {\n if (msg.endsWith('.')) {\n msg = msg.slice(0, msg.length - 1);\n }\n if (directive.name === FederationDirectiveName.KEY) {\n msg = msg + ' (the field should either be added to this subgraph or, if it should not be resolved by this subgraph, you need to add it to this subgraph with @external).';\n } else {\n msg = msg + ' (if the field is defined in another subgraph, you need to add it to this subgraph with @external).';\n }\n }\n return msg;\n },\n );\n }\n}\n\nexport function collectTargetFields({\n parentType,\n directive,\n includeInterfaceFieldsImplementations,\n validate = true,\n}: {\n parentType: CompositeType,\n directive: Directive, {fields: any}>,\n includeInterfaceFieldsImplementations: boolean,\n validate?: boolean,\n}): FieldDefinition[] {\n const fields: FieldDefinition[] = [];\n try {\n parseFieldSetArgument({\n parentType,\n directive,\n fieldAccessor: (t, f) => {\n const field = t.field(f);\n if (field) {\n fields.push(field);\n if (includeInterfaceFieldsImplementations && isInterfaceType(t)) {\n for (const implType of t.possibleRuntimeTypes()) {\n const implField = implType.field(f);\n if (implField) {\n fields.push(implField);\n }\n }\n }\n }\n return field;\n },\n validate,\n });\n } catch (e) {\n // If we explicitly requested no validation, then we shouldn't throw a (graphQL) error, but if we do, we swallow it\n // (returning a partial result, but we assume it is fine).\n const isGraphQLError = errorCauses(e) !== undefined\n if (!isGraphQLError || validate) {\n throw e;\n }\n }\n return fields;\n}\n\nfunction validateFieldSetValue(directive: Directive, {fields: any}>): string {\n const fields = directive.arguments().fields;\n const nodes = directive.sourceAST;\n if (typeof fields !== 'string') {\n throw ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS_TYPE.get(directive.name).err(\n `Invalid value for argument \"${directive.definition!.argument('fields')!.name}\": must be a string.`,\n { nodes },\n );\n }\n // While validating if the field is a string will work in most cases, this will not catch the case where the field argument was\n // unquoted but parsed as an enum value (see federation/issues/850 in particular). So if we have the AST (which we will usually\n // have in practice), use that to check that the argument was truly a string.\n if (nodes && nodes.kind === 'Directive') {\n for (const argNode of nodes.arguments ?? []) {\n if (argNode.name.value === 'fields') {\n if (argNode.value.kind !== 'StringValue') {\n throw ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS_TYPE.get(directive.name).err(\n `Invalid value for argument \"${directive.definition!.argument('fields')!.name}\": must be a string.`,\n { nodes },\n );\n }\n break;\n }\n }\n }\n\n return fields;\n}\n\nexport interface ServiceDefinition {\n typeDefs: DocumentNode;\n name: string;\n url?: string;\n}\nexport function subgraphsFromServiceList(serviceList: ServiceDefinition[]): Subgraphs | GraphQLError[] {\n let errors: GraphQLError[] = [];\n const subgraphs = new Subgraphs();\n for (const service of serviceList) {\n try {\n subgraphs.add(buildSubgraph(service.name, service.url ?? '', service.typeDefs));\n } catch (e) {\n const causes = errorCauses(e);\n if (causes) {\n errors = errors.concat(causes);\n } else {\n throw e;\n }\n }\n }\n return errors.length === 0 ? subgraphs : errors;\n}\n\n// Simple wrapper around a Subgraph[] that ensures that 1) we never mistakenly get 2 subgraph with the same name,\n// 2) keep the subgraphs sorted by name (makes iteration more predictable). It also allow convenient access to\n// a subgraph by name so behave like a map in most ways (but with the previously mentioned benefits).\nexport class Subgraphs {\n private readonly subgraphs = new OrderedMap();\n\n add(subgraph: Subgraph): Subgraph {\n if (this.subgraphs.has(subgraph.name)) {\n throw new Error(`A subgraph named ${subgraph.name} already exists` + (subgraph.url ? ` (with url '${subgraph.url}')` : ''));\n }\n\n this.subgraphs.add(subgraph.name, subgraph);\n return subgraph;\n }\n\n get(name: string): Subgraph | undefined {\n return this.subgraphs.get(name);\n }\n\n size(): number {\n return this.subgraphs.size;\n }\n\n names(): readonly string[] {\n return this.subgraphs.keys();\n }\n\n values(): readonly Subgraph[] {\n return this.subgraphs.values();\n }\n\n *[Symbol.iterator]() {\n for (const subgraph of this.subgraphs) {\n yield subgraph;\n }\n }\n\n validate(): GraphQLError[] | undefined {\n let errors: GraphQLError[] = [];\n for (const subgraph of this.values()) {\n try {\n subgraph.validate();\n } catch (e) {\n const causes = errorCauses(e);\n if (!causes) {\n throw e;\n }\n errors = errors.concat(causes);\n }\n }\n return errors.length === 0 ? undefined : errors;\n }\n\n toString(): string {\n return '[' + this.subgraphs.keys().join(', ') + ']'\n }\n}\n\nexport const anyTypeSpec = createScalarTypeSpecification({ name: '_Any' });\n\nexport const serviceTypeSpec = createObjectTypeSpecification({\n name: '_Service',\n fieldsFct: (schema) => [{ name: 'sdl', type: schema.stringType() }],\n});\n\nexport const entityTypeSpec = createUnionTypeSpecification({\n name: '_Entity',\n membersFct: (schema) => {\n // Please note that `_Entity` cannot use \"interface entities\" since interface types cannot be in unions.\n // It is ok in practice because _Entity is only use as return type for `_entities`, and even when interfaces\n // are involve, the result of an `_entities` call will always be an object type anyway, and since we force\n // all implementations of an interface entity to be entity themselves in a subgraph, we're fine.\n return schema.objectTypes().filter(isEntityType).map((t) => t.name);\n },\n});\n\nexport const FEDERATION_OPERATION_TYPES = [ anyTypeSpec, serviceTypeSpec, entityTypeSpec ];\n\nexport const serviceFieldName = '_service';\nexport const entitiesFieldName = '_entities';\n\nexport const FEDERATION_OPERATION_FIELDS: readonly string[] = [ serviceFieldName, entitiesFieldName ];\n\nexport class Subgraph {\n constructor(\n readonly name: string,\n readonly url: string,\n readonly schema: Schema,\n ) {\n if (name === FEDERATION_RESERVED_SUBGRAPH_NAME) {\n throw ERRORS.INVALID_SUBGRAPH_NAME.err(`Invalid name ${FEDERATION_RESERVED_SUBGRAPH_NAME} for a subgraph: this name is reserved`);\n }\n }\n\n metadata(): FederationMetadata {\n const metadata = federationMetadata(this.schema);\n assert(metadata, 'The subgraph schema should have built with the federation built-ins.');\n return metadata;\n }\n\n isFed2Subgraph(): boolean {\n return this.metadata().isFed2Schema();\n }\n\n // Adds the _entities and _service fields to the root query type.\n private addFederationOperations() {\n const metadata = this.metadata();\n\n for (const type of FEDERATION_OPERATION_TYPES) {\n type.checkOrAdd(this.schema);\n }\n\n const queryRoot = this.schema.schemaDefinition.root(\"query\");\n const queryType = queryRoot ? queryRoot.type : this.schema.addType(new ObjectType(\"Query\"));\n\n const entityField = queryType.field(entitiesFieldName);\n const entityType = metadata.entityType();\n if (entityType) {\n const entityFieldType = new NonNullType(new ListType(entityType));\n if (!entityField) {\n queryType.addField(entitiesFieldName, entityFieldType)\n .addArgument('representations', new NonNullType(new ListType(new NonNullType(metadata.anyType()))));\n } else if (!entityField.type) {\n // This can happen when the schema had an empty redefinition of _Entity as we've removed it in\n // that clear and that would have clear the type of the correspond field. Let's re-populate it\n // in that case.\n entityField.type = entityType;\n }\n } else if (entityField) {\n entityField.remove();\n }\n\n if (!queryType.field(serviceFieldName)) {\n queryType.addField(serviceFieldName, new NonNullType(metadata.serviceType()));\n }\n }\n\n /**\n * Same as `Schema.assumeValid`. Use carefully.\n */\n assumeValid(): Subgraph {\n this.addFederationOperations();\n this.schema.assumeValid();\n return this;\n }\n\n validate(): Subgraph {\n try {\n this.addFederationOperations();\n this.schema.validate();\n return this;\n } catch (e) {\n if (e instanceof GraphQLError) {\n // Note that `addSubgraphToError` only adds the provided code if the original error\n // didn't have one, and the only one that will not have a code are GraphQL errors\n // (since we assign specific codes to the federation errors).\n throw addSubgraphToError(e, this.name, ERRORS.INVALID_GRAPHQL);\n } else {\n throw e;\n }\n }\n }\n\n private isPrintedDirective(d: DirectiveDefinition): boolean {\n if (this.metadata().allFederationDirectives().includes(d)) {\n return false;\n }\n\n const core = this.schema.coreFeatures;\n return !core || core.sourceFeature(d)?.feature.url.identity !== linkIdentity;\n }\n\n private isPrintedType(t: NamedType): boolean {\n if (this.metadata().allFederationTypes().includes(t)) {\n return false;\n }\n\n // If the query type only have our federation specific fields, then that (almost surely) means the original subgraph\n // had no Query type and so we save printing it.\n if (isObjectType(t) && t.isQueryRootType() && t.fields().filter((f) => !isFederationField(f)).length === 0) {\n return false;\n }\n\n const core = this.schema.coreFeatures;\n return !core || core.sourceFeature(t)?.feature.url.identity !== linkIdentity;\n }\n\n private isPrintedDirectiveApplication(d: Directive): boolean {\n // We print almost all directive application, but the one we skip is the `@link` to the link spec itself.\n // The reason is that it is one of the things that usually not provided by users but is instead auto-added\n // and so this keep the output a tad \"cleaner\".\n // Do note that it is only auto-added if it uses the `@link` name. If it is renamed, we need to include\n // the application (and more generally, if there is more argument set than just the url, we print\n // the directive to make sure we're not hidding something relevant).\n if (!this.schema.coreFeatures || d.name !== linkSpec.url.name) {\n return true;\n }\n const args = d.arguments();\n let urlArg: FeatureUrl | undefined = undefined;\n if ('url' in args) {\n try {\n urlArg = FeatureUrl.parse(args['url']);\n } catch (e) {\n // ignored on purpose: if the 'url' arg don't parse properly as a Feature url, then `urlArg` will\n // be `undefined` which we want.\n }\n }\n const isDefaultLinkToLink = urlArg?.identity === linkIdentity && Object.keys(args).length === 1;\n return !isDefaultLinkToLink;\n }\n\n /**\n * Returns a representation of the subgraph without any auto-imported directive definitions or \"federation private\"\n * types and fiels (`_service` et al.).\n *\n * In other words, this will correspond to what a user would usually write.\n *\n * Note that if one just want a representation of the full schema, then it can simply call `printSchema(this.schema)`.\n */\n toString(basePrintOptions: PrintOptions = defaultPrintOptions) {\n return printSchema(\n this.schema,\n {\n ...basePrintOptions,\n directiveDefinitionFilter: (d) => this.isPrintedDirective(d),\n typeFilter: (t) => this.isPrintedType(t),\n fieldFilter: (f) => !isFederationField(f),\n directiveApplicationFilter: (d) => this.isPrintedDirectiveApplication(d),\n }\n );\n }\n}\n\nexport type SubgraphASTNode = ASTNode & { subgraph: string };\n\nexport function addSubgraphToASTNode(node: ASTNode, subgraph: string): SubgraphASTNode {\n // We won't override a existing subgraph info: it's not like the subgraph an ASTNode can come\n // from can ever change and this allow the provided to act as a \"default\" rather than a\n // hard setter, which is convenient in `addSubgraphToError` below if some of the AST of\n // the provided error already have a subgraph \"origin\".\n if ('subgraph' in (node as any)) {\n return node as SubgraphASTNode;\n }\n return {\n ...node,\n subgraph\n };\n}\n\nexport function addSubgraphToError(e: GraphQLError, subgraphName: string, errorCode?: ErrorCodeDefinition): GraphQLError {\n const updatedCauses = errorCauses(e)!.map(cause => {\n const message = `[${subgraphName}] ${cause.message}`;\n const nodes = cause.nodes\n ? cause.nodes.map(node => addSubgraphToASTNode(node, subgraphName))\n : undefined;\n\n const code = errorCodeDef(cause) ?? errorCode;\n const options: GraphQLErrorOptions = {\n ...extractGraphQLErrorOptions(cause),\n nodes,\n originalError: cause,\n };\n\n return code\n ? code.err(message, options)\n : new GraphQLError(message, options);\n });\n\n return updatedCauses.length === 1 ? updatedCauses[0] : ErrGraphQLValidationFailed(updatedCauses);\n}\n\nclass ExternalTester {\n private readonly fakeExternalFields = new Set();\n private readonly providedFields = new Set();\n private readonly externalDirective: DirectiveDefinition<{}>;\n private readonly externalFieldsOnType = new Set();\n\n constructor(readonly schema: Schema, private readonly isFed2Schema: boolean) {\n this.externalDirective = this.metadata().externalDirective();\n this.collectFakeExternals();\n this.collectProvidedFields();\n this.collectExternalsOnType();\n }\n\n private metadata(): FederationMetadata {\n const metadata = federationMetadata(this.schema);\n assert(metadata, 'Schema should be a subgraphs schema');\n return metadata;\n }\n\n private collectFakeExternals() {\n const metadata = this.metadata();\n const extendsDirective = metadata.extendsDirective();\n for (const key of metadata.keyDirective().applications()) {\n const parentType = key.parent as CompositeType;\n if (!(key.ofExtension() || parentType.hasAppliedDirective(extendsDirective))) {\n continue;\n }\n collectTargetFields({\n parentType,\n directive: key as Directive,\n includeInterfaceFieldsImplementations: false,\n validate: false,\n }).filter((field) => field.hasAppliedDirective(this.externalDirective))\n .forEach((field) => this.fakeExternalFields.add(field.coordinate));\n }\n }\n\n private collectProvidedFields() {\n for (const provides of this.metadata().providesDirective().applications()) {\n const parent = provides.parent as FieldDefinition;\n const parentType = baseType(parent.type!);\n // If `parentType` is not a composite, that means an invalid @provides, but we ignore such errors\n // for now (also why we pass 'validate: false'). Proper errors will be thrown later during validation.\n if (isCompositeType(parentType)) {\n collectTargetFields({\n parentType,\n directive: provides as Directive,\n includeInterfaceFieldsImplementations: true,\n validate: false,\n }).forEach((f) => this.providedFields.add(f.coordinate));\n }\n }\n }\n\n private collectExternalsOnType() {\n // We do not collect @external on types for fed1 schema since those will be discarded by the schema upgrader.\n // The schema upgrader, through calls to `isExternal`, relies on the populated `externalFieldsOnType` object to\n // inform when @shareable should be automatically added. In the fed1 case, if the map is populated then @shareable won't\n // be added in places where it should have.\n if (!this.isFed2Schema) {\n return;\n }\n\n for (const type of this.schema.objectTypes()) {\n if (type.hasAppliedDirective(this.externalDirective)) {\n for (const field of type.fields()) {\n this.externalFieldsOnType.add(field.coordinate);\n }\n }\n }\n }\n\n isExternal(field: FieldDefinition | InputFieldDefinition) {\n return (field.hasAppliedDirective(this.externalDirective) || this.externalFieldsOnType.has(field.coordinate)) && !this.isFakeExternal(field);\n }\n\n isFakeExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.fakeExternalFields.has(field.coordinate);\n }\n\n selectsAnyExternalField(selectionSet: SelectionSet): boolean {\n for (const selection of selectionSet.selections()) {\n if (selection.kind === 'FieldSelection' && this.isExternal(selection.element.definition)) {\n return true;\n }\n if (selection.selectionSet) {\n if (this.selectsAnyExternalField(selection.selectionSet)) {\n return true;\n }\n }\n }\n return false;\n }\n\n isPartiallyExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.isExternal(field) && this.providedFields.has(field.coordinate);\n }\n\n isFullyExternal(field: FieldDefinition | InputFieldDefinition) {\n return this.isExternal(field) && !this.providedFields.has(field.coordinate);\n }\n}\n\nexport type ProvidesOrRequiresApplication = Directive, {fields: any}>\n\n/*\n * It makes no sense to have a @provides/@requires on a non-external leaf field, and we usually reject it during schema\n * validation but this method allows to remove those for:\n * 1. when we extract subgraphs from a fed 1 supergraph, where such validation hadn't been run.\n * 2. for the fed 1 -> fed 2 upgader code.\n *\n * The reason we do this (and generally reject it) is that such provides/requires have a negative impact on later query\n * planning, because it sometimes make us to try type-exploding some interfaces unecessarily. Besides, if a use add\n * something useless, there is a change it hasn't fully understood something, and warning it about that fact through\n * an error is more helpful.\n */\nexport function removeInactiveProvidesAndRequires(\n schema: Schema,\n onModified: (field: FieldDefinition, original: ProvidesOrRequiresApplication, updated?: ProvidesOrRequiresApplication) => void = () => {},\n) {\n const metadata = federationMetadata(schema);\n if (!metadata) {\n return;\n }\n const providesDirective = metadata.providesDirective();\n const requiresDirective = metadata.requiresDirective();\n\n for (const type of schema.types()) {\n if (!isObjectType(type) && !isInterfaceType(type)) {\n continue;\n }\n\n for (const field of type.fields()) {\n const fieldBaseType = baseType(field.type!) as CompositeType;\n removeInactiveApplications(providesDirective, field, fieldBaseType, onModified);\n removeInactiveApplications(requiresDirective, field, type, onModified);\n }\n }\n}\n\nfunction removeInactiveApplications(\n directiveDefinition: DirectiveDefinition<{fields: any}>,\n field: FieldDefinition,\n parentType: CompositeType,\n onModified: (field: FieldDefinition, original: ProvidesOrRequiresApplication, updated?: ProvidesOrRequiresApplication) => void\n) {\n for (const application of field.appliedDirectivesOf(directiveDefinition)) {\n let selection;\n try {\n selection = parseFieldSetArgument({parentType, directive: application});\n } catch (e) {\n // This method is sometimes called on federation directives that haven't been validated, and so parsing the\n // `fields` argument may throw. In that case, we just silently ignore that particular directive application:\n // it's not the job of this method to do validation, but we will always validate things in other places\n // when needed so whatever error that directive has will be caught in a more appropriate place.\n continue;\n }\n if (selectsNonExternalLeafField(selection)) {\n application.remove();\n const updated = withoutNonExternalLeafFields(selection);\n if (!updated.isEmpty()) {\n const updatedDirective = field.applyDirective(directiveDefinition, { fields: updated.toString(true, false) });\n onModified(field, application, updatedDirective);\n } else {\n onModified(field, application);\n }\n }\n }\n}\n\nfunction isExternalOrHasExternalImplementations(field: FieldDefinition): boolean {\n const metadata = federationMetadata(field.schema());\n if (!metadata) {\n return false;\n }\n if (field.hasAppliedDirective(metadata.externalDirective())) {\n return true;\n }\n const parentType = field.parent;\n if (isInterfaceType(parentType)) {\n for (const implem of parentType.possibleRuntimeTypes()) {\n const fieldInImplem = implem.field(field.name);\n if (fieldInImplem && fieldInImplem.hasAppliedDirective(metadata.externalDirective())) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction selectsNonExternalLeafField(selection: SelectionSet): boolean {\n return selection.selections().some(s => {\n if (s.kind === 'FieldSelection') {\n // If it's external, we're good and don't need to recurse.\n if (isExternalOrHasExternalImplementations(s.element.definition)) {\n return false;\n }\n // Otherwise, we select a non-external if it's a leaf, or the sub-selection does.\n return !s.selectionSet || selectsNonExternalLeafField(s.selectionSet);\n } else {\n return selectsNonExternalLeafField(s.selectionSet);\n }\n });\n}\n\nfunction withoutNonExternalLeafFields(selectionSet: SelectionSet): SelectionSet {\n return selectionSet.lazyMap((selection) => {\n if (selection.kind === 'FieldSelection') {\n if (isExternalOrHasExternalImplementations(selection.element.definition)) {\n // That field is external, so we can add the selection back entirely.\n return selection;\n }\n }\n if (selection.selectionSet) {\n // Note that for fragments this will always be true (and we just recurse), while\n // for fields, we'll only get here if the field is not external, and so\n // we want to add the selection only if it's not a leaf and even then, only\n // the part where we've recursed.\n const updated = withoutNonExternalLeafFields(selection.selectionSet);\n if (!updated.isEmpty()) {\n return selection.withUpdatedSelectionSet(updated);\n }\n }\n // We skip that selection.\n return undefined;\n });\n}\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';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "// Console-polyfill. MIT license.\n// https://github.com/paulmillr/console-polyfill\n// Make it safe to do console.log() always.\n(function(global) {\n 'use strict';\n if (!global.console) {\n global.console = {};\n }\n var con = global.console;\n var prop, method;\n var dummy = function() {};\n var properties = ['memory'];\n var methods = ('assert,clear,count,debug,dir,dirxml,error,exception,group,' +\n 'groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,' +\n 'show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn').split(',');\n while (prop = properties.pop()) if (!con[prop]) con[prop] = {};\n while (method = methods.pop()) if (!con[method]) con[method] = dummy;\n // Using `this` for web workers & supports Browserify / Webpack.\n})(typeof window === 'undefined' ? this : window);\n", "// Simple debugging facility.\n\nimport chalk from 'chalk';\nimport { validateStringContainsBoolean } from './utils';\n\nfunction indentString(indentLevel: number) : string {\n let str = \"\";\n for (let i = 0; i < indentLevel; i++) {\n str += chalk.blackBright(\"\u23B8 \");\n }\n return str;\n}\n\nfunction isEnabled(name: string): boolean {\n const v = process.env.APOLLO_FEDERATION_DEBUG;\n const bool = validateStringContainsBoolean(v);\n if (bool !== undefined) {\n return bool;\n }\n\n const enabledNames = v!.split(',').map(n => n.trim());\n return enabledNames.includes(name);\n}\n\nlet currentIndentLevel = 0;\nlet currentIndentation = '';\nlet maxLoggerNameLength = 0;\n\nconst createdLoggers: DebugLogger[] = [];\n\nexport function newDebugLogger(name: string): DebugLogger {\n const enabled = isEnabled(name);\n const created = new DebugLogger(name, enabled);\n if (enabled) {\n // This next line is to avoid having JEST capture console logging if any logger is\n // enabled, as this make things unreadable\n global.console = require('console');\n createdLoggers.push(created);\n maxLoggerNameLength = Math.max(maxLoggerNameLength, name.length);\n for (const logger of createdLoggers) {\n DebugLogger.prototype['updateHeader'].call(logger, maxLoggerNameLength);\n }\n }\n return created;\n}\n\nfunction increaseIndentation() {\n currentIndentLevel++;\n currentIndentation = indentString(currentIndentLevel);\n}\n\nfunction decreaseIndentation() {\n if (currentIndentLevel > 0) {\n currentIndentLevel--;\n currentIndentation = indentString(currentIndentLevel);\n }\n}\n\n/**\n * A facility to log messages for debugging.\n *\n * All `DebugLogger` share an indentation level that is used before logged messages. That indentation level gets\n * increased by calling `group()` and decreased by `groupEnd()`. This is meant to help representing the nestedness\n * of the code being debugged.\n */\nexport class DebugLogger {\n private header: string;\n\n /**\n * Builds a new `DebugLogger`.\n *\n * @param enabled - whether the logger is enabled. If it is disabled, no message will be logged. Currently, a logger\n * cannot be enabled/disabled after construction.\n */\n constructor(readonly name: string, readonly enabled: boolean) {\n this.header = chalk.blackBright(`[${name}] `);\n }\n\n private updateHeader(maxLength: number) {\n let padding = \"\";\n if (maxLength > this.name.length) {\n const toPad = maxLength - this.name.length;\n for (let i = 0; i < toPad; i++) {\n padding += \" \";\n }\n }\n this.header = chalk.blackBright('[' + padding + this.name + '] ');\n }\n\n private doLog(str: string) {\n const indent = this.header + currentIndentation;\n const withIndentedNewlines = str.replace(/\\n/g, '\\n' + indent + ' ');\n console.log(indent + withIndentedNewlines);\n }\n\n /**\n * Logs the provided message at the current indentation level, if this logger is enabled.\n *\n * @param message - the message to log. This can optionally be a closure, which allows for the message to only be\n * computed if the logger is enabled (the closure is only called in this case).\n * @param prefix - an optional string printed as a direct prefix of the message.\n */\n public log(message: string | (() => string), prefix: string = chalk.yellow('\u2022 ')): DebugLogger {\n if (!this.enabled) return this;\n\n if (typeof message !== 'string') {\n message = message();\n }\n this.doLog(prefix + message);\n return this;\n }\n\n /**\n * Logs the provided values, indented and one per line.\n *\n * @param values - an array of the values to log.\n * @param printFn - the function to apply to each of the value to convert it to a string to log.\n * @param initialMessage - an optional message to write before the grouped values.\n */\n public groupedValues(values: T[], printFn: (v: T) => string, initialMessage?: string): DebugLogger {\n if (!this.enabled) return this;\n\n this.group(initialMessage);\n for (const value of values) {\n this.doLog('- ' + printFn(value));\n }\n return this.groupEnd();\n }\n\n /**\n * Logs the entries of the provided map, indented and one per line.\n *\n * @param map - a map of keys and values to log.\n * @param keyPrintFn - the function to apply to each of the key to convert it to a string to log.\n * @param valuePrintFn - the function to apply to each of the value to convert it to a string to log.\n */\n public groupedEntries(\n map: Map,\n keyPrintFn: (k: K) => string,\n valuePrintFn: (v : V) => string\n ): DebugLogger {\n if (!this.enabled) return this;\n\n this.group();\n for (const [k, v] of map.entries()) {\n this.doLog('- ' + keyPrintFn(k) + ': ' + valuePrintFn(v));\n }\n return this.groupEnd();\n }\n\n /**\n * Starts a new debug \"group\"; every following message logged after this called and before the corresponding\n * `groupEnd()` call will be indented by one more level than is current.\n *\n * @param openingMessage - an optional message to log _before_ starting the group. This can typically be used to\n * describe what the message logged within the group will describe.\n */\n public group(openingMessage?: string | (() => string)): DebugLogger {\n if (this.enabled) {\n if (openingMessage) {\n this.log(openingMessage, chalk.blue('\u2023 '));\n }\n increaseIndentation();\n }\n return this;\n }\n\n /**\n * Ends the current (last started) debug \"group\", thus decreasing the indent level to what it was before the\n * `group()` call this ends.\n *\n * If no group had been started, this is a no-op (and no `closingMessage` is printed in particular).\n *\n * @param closingMessage - an optional message to log _after_ ending the group. This can typically be used to\n * describe what the messages logged within the group yielded.\n */\n public groupEnd(closingMessage?: string | (() => string)): DebugLogger {\n if (!this.enabled) {\n return this;\n }\n decreaseIndentation();\n if (closingMessage) {\n this.log(closingMessage, chalk.green('\u21D2 '));\n }\n return this;\n }\n}\n", "module.exports = { existsSync: Deno.ensureFileSync, writeFileSync: Deno.writeTextFile }", "// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n", "import {\n baseType,\n CompositeType,\n copyDirectiveDefinitionToSchema,\n Directive,\n FieldDefinition,\n InputFieldDefinition,\n InputObjectType,\n InterfaceType,\n isExecutableDirectiveLocation,\n isEnumType,\n isInterfaceType,\n isObjectType,\n isUnionType,\n ListType,\n NamedType,\n newNamedType,\n NonNullType,\n NullableType,\n ObjectType,\n Schema,\n Type,\n EnumType,\n UnionType,\n} from \"./definitions\";\nimport {\n newEmptyFederation2Schema,\n parseFieldSetArgument,\n removeInactiveProvidesAndRequires,\n} from \"./federation\";\nimport { CoreSpecDefinition, FeatureVersion } from \"./specs/coreSpec\";\nimport { JoinFieldDirectiveArguments, JoinSpecDefinition, JoinTypeDirectiveArguments } from \"./specs/joinSpec\";\nimport { FederationMetadata, Subgraph, Subgraphs } from \"./federation\";\nimport { assert } from \"./utils\";\nimport { validateSupergraph } from \"./supergraphs\";\nimport { builtTypeReference } from \"./buildSchema\";\nimport { isSubtype } from \"./types\";\nimport { printSchema } from \"./print\";\nimport { parseSelectionSet } from \"./operations\";\nimport fs from 'fs';\nimport path from 'path';\nimport { validateStringContainsBoolean } from \"./utils\";\nimport { ContextSpecDefinition, CostSpecDefinition, SchemaElement, errorCauses, isFederationDirectiveDefinedInSchema, printErrors } from \".\";\n\nfunction filteredTypes(\n supergraph: Schema,\n joinSpec: JoinSpecDefinition,\n coreSpec: CoreSpecDefinition\n): NamedType[] {\n // Note: we skip coreSpec to avoid having core__Purpose since we don't create core schema subgraph.\n // But once we support core schema subgraphs and start shipping federation core features, we may need\n // to revisit this.\n return supergraph.types().filter(t => !joinSpec.isSpecType(t) && !coreSpec.isSpecType(t));\n}\n\nexport function extractSubgraphsNamesAndUrlsFromSupergraph(supergraph: Schema): {name: string, url: string}[] {\n const [_, joinSpec] = validateSupergraph(supergraph);\n const [subgraphs] = collectEmptySubgraphs(supergraph, joinSpec);\n return subgraphs.values().map(subgraph => {return { name: subgraph.name, url: subgraph.url }});\n}\n\nfunction collectEmptySubgraphs(supergraph: Schema, joinSpec: JoinSpecDefinition): [Subgraphs, Map] {\n const subgraphs = new Subgraphs();\n const graphDirective = joinSpec.graphDirective(supergraph);\n const graphEnum = joinSpec.graphEnum(supergraph);\n const graphEnumNameToSubgraphName = new Map();\n for (const value of graphEnum.values) {\n const graphApplications = value.appliedDirectivesOf(graphDirective);\n if (!graphApplications.length) {\n throw new Error(`Value ${value} of join__Graph enum has no @join__graph directive`);\n }\n const info = graphApplications[0].arguments();\n const subgraph = new Subgraph(info.name, info.url, newEmptyFederation2Schema());\n subgraphs.add(subgraph);\n graphEnumNameToSubgraphName.set(value.name, info.name);\n }\n return [subgraphs, graphEnumNameToSubgraphName];\n}\n\nclass SubgraphExtractionError {\n constructor(\n readonly originalError: any,\n readonly subgraph: Subgraph,\n ) {\n }\n}\n\nfunction collectFieldReachableTypesForSubgraph(\n supergraph: Schema,\n subgraphName: string,\n addReachableType: (t: NamedType) => void,\n fieldInfoInSubgraph: (f: FieldDefinition | InputFieldDefinition, subgraphName: string) => { isInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n typeInfoInSubgraph: (t: NamedType, subgraphName: string) => { isEntityWithKeyInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n): void {\n const seenTypes = new Set();\n // The types reachable at \"top-level\" are both the root types, plus any entity type with a key in this subgraph.\n const stack = supergraph.schemaDefinition.roots().map((root) => root.type as NamedType)\n for (const type of supergraph.types()) {\n const { isEntityWithKeyInSubgraph, typesInFederationDirectives } = typeInfoInSubgraph(type, subgraphName);\n if (isEntityWithKeyInSubgraph) {\n stack.push(type);\n }\n typesInFederationDirectives.forEach((t) => stack.push(t));\n }\n while (stack.length > 0) {\n const type = stack.pop()!;\n addReachableType(type);\n if (seenTypes.has(type.name)) {\n continue;\n }\n seenTypes.add(type.name);\n switch (type.kind) {\n // @ts-expect-error: we fall-through to ObjectType for fields and implemented interfaces.\n case 'InterfaceType':\n // If an interface if reachable, then all of its implementation are too (a field returning the interface could return any of the\n // implementation at runtime typically).\n type.allImplementations().forEach((t) => stack.push(t));\n case 'ObjectType':\n type.interfaces().forEach((t) => stack.push(t));\n for (const field of type.fields()) {\n const { isInSubgraph, typesInFederationDirectives } = fieldInfoInSubgraph(field, subgraphName);\n if (isInSubgraph) {\n field.arguments().forEach((arg) => stack.push(baseType(arg.type!)));\n stack.push(baseType(field.type!));\n typesInFederationDirectives.forEach((t) => stack.push(t));\n }\n }\n break;\n case 'InputObjectType':\n for (const field of type.fields()) {\n const { isInSubgraph, typesInFederationDirectives } = fieldInfoInSubgraph(field, subgraphName);\n if (isInSubgraph) {\n stack.push(baseType(field.type!));\n typesInFederationDirectives.forEach((t) => stack.push(t));\n }\n }\n break;\n case 'UnionType':\n type.members().forEach((m) => stack.push(m.type));\n break;\n }\n }\n\n for (const directive of supergraph.directives()) {\n // In fed1 supergraphs, which is the only place this is called, only executable directive from subgraph only ever made\n // it to the supergraph. Skipping anything else saves us from worrying about supergraph-specific directives too.\n if (!directive.hasExecutableLocations()) {\n continue;\n }\n directive.arguments().forEach((arg) => stack.push(baseType(arg.type!)));\n }\n}\n\nfunction collectFieldReachableTypesForAllSubgraphs(\n supergraph: Schema,\n allSubgraphs: readonly string[],\n fieldInfoInSubgraph: (f: FieldDefinition | InputFieldDefinition, subgraphName: string) => { isInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n typeInfoInSubgraph: (t: NamedType, subgraphName: string) => { isEntityWithKeyInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n): Map> {\n const reachableTypesBySubgraphs = new Map>();\n for (const subgraphName of allSubgraphs) {\n const reachableTypes = new Set();\n collectFieldReachableTypesForSubgraph(\n supergraph,\n subgraphName,\n (t) => reachableTypes.add(t.name),\n fieldInfoInSubgraph,\n typeInfoInSubgraph,\n );\n reachableTypesBySubgraphs.set(subgraphName, reachableTypes);\n }\n return reachableTypesBySubgraphs;\n}\n\nfunction typesUsedInFederationDirective(fieldSet: string | undefined, parentType: CompositeType): NamedType[] {\n if (!fieldSet) {\n return [];\n }\n\n const usedTypes: NamedType[] = [];\n parseSelectionSet({\n parentType,\n source: fieldSet,\n fieldAccessor: (type, fieldName) => {\n const field = type.field(fieldName);\n if (field) {\n usedTypes.push(baseType(field.type!));\n }\n return field;\n },\n validate: false,\n });\n return usedTypes;\n}\n\nexport function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtractedSubgraphs: boolean = true): [Subgraphs, Map] {\n const [coreFeatures, joinSpec, contextSpec, costSpec] = validateSupergraph(supergraph);\n const isFed1 = joinSpec.version.equals(new FeatureVersion(0, 1));\n try {\n // We first collect the subgraphs (creating an empty schema that we'll populate next for each).\n const [subgraphs, graphEnumNameToSubgraphName] = collectEmptySubgraphs(supergraph, joinSpec);\n\n const getSubgraph = (application: Directive): Subgraph | undefined => {\n const graph = application.arguments().graph;\n if (!graph) {\n return undefined;\n }\n const subgraphName = graphEnumNameToSubgraphName.get(graph);\n assert(subgraphName, () => `Invalid graph name ${graph} found in ${application} on ${application.parent}: does not match a graph defined in the @join__Graph enum`);\n const subgraph = subgraphs.get(subgraphName);\n assert(subgraph, 'All subgraphs should have been created by `collectEmptySubgraphs`');\n return subgraph;\n };\n\n const subgraphNameToGraphEnumValue = new Map();\n for (const [k, v] of graphEnumNameToSubgraphName.entries()) {\n subgraphNameToGraphEnumValue.set(v, k);\n }\n\n const getSubgraphEnumValue = (subgraphName: string): string => {\n const enumValue = subgraphNameToGraphEnumValue.get(subgraphName);\n assert(enumValue, () => `Invalid subgraph name ${subgraphName} found: does not match a subgraph defined in the @join__Graph enum`);\n return enumValue;\n }\n\n const types = filteredTypes(supergraph, joinSpec, coreFeatures.coreDefinition);\n const args: ExtractArguments = {\n supergraph,\n subgraphs,\n joinSpec,\n contextSpec,\n costSpec,\n filteredTypes: types,\n getSubgraph,\n getSubgraphEnumValue,\n };\n if (isFed1) {\n extractSubgraphsFromFed1Supergraph(args);\n } else {\n extractSubgraphsFromFed2Supergraph(args);\n }\n\n // We're done with the subgraphs, so call validate (which, amongst other things, sets up the _entities query field, which ensures\n // all entities in all subgraphs are reachable from a query and so are properly included in the \"query graph\" later).\n for (const subgraph of subgraphs) {\n if (validateExtractedSubgraphs) {\n try {\n subgraph.validate();\n } catch (e) {\n // This is going to be caught directly by the enclosing try-catch, but this is so we indicate the subgraph having the issue.\n throw new SubgraphExtractionError(e, subgraph);\n }\n } else {\n subgraph.assumeValid();\n }\n }\n\n return [subgraphs, subgraphNameToGraphEnumValue];\n } catch (e) {\n let error = e;\n let subgraph: Subgraph | undefined = undefined;\n // We want this catch to capture all errors happening during extraction, but the most common\n // case is likely going to be fed2 validation that fed1 didn't enforced, and those will be\n // throw when validating the extracted subgraphs, and n that case we use\n // `SubgraphExtractionError` to pass the subgraph that errored out, which allows us\n // to provide a bit more context in those cases.\n if (e instanceof SubgraphExtractionError) {\n error = e.originalError;\n subgraph = e.subgraph;\n }\n\n // There is 2 reasons this could happen:\n // 1. if the supergraph is a Fed1 one, because fed2 has stricter validations than fed1, this could be due to the supergraph\n // containing something invalid that fed1 accepted and fed2 didn't (for instance, an invalid `@provides` selection).\n // 2. otherwise, this would be a bug (because fed1 compatibility excluded, we shouldn't extract invalid subgraphs from valid supergraphs).\n // We throw essentially the same thing in both cases, but adapt the message slightly.\n const impacted = subgraph ? `subgraph \"${subgraph.name}\"` : 'subgraphs';\n if (isFed1) {\n // Note that this could be a bug with the code handling fed1 as well, but it's more helpful to ask users to recompose their subgraphs with fed2 as either\n // it'll solve the issue and that's good, or we'll hit the other message anyway.\n const msg = `Error extracting ${impacted} from the supergraph: this might be due to errors in subgraphs that were mistakenly ignored by federation 0.x versions but are rejected by federation 2.\\n`\n + 'Please try composing your subgraphs with federation 2: this should help precisely pinpoint the problems and, once fixed, generate a correct federation 2 supergraph';\n throw new Error(`${msg}.\\n\\nDetails:\\n${errorToString(error)}`);\n } else {\n const msg = `Unexpected error extracting ${impacted} from the supergraph: this is either a bug, or the supergraph has been corrupted`;\n const dumpMsg = subgraph ? '\\n\\n' + maybeDumpSubgraphSchema(subgraph) : '';\n throw new Error(`${msg}.\\n\\nDetails:\\n${errorToString(error)}${dumpMsg}`);\n }\n }\n}\n\ntype ExtractArguments = {\n supergraph: Schema,\n subgraphs: Subgraphs,\n joinSpec: JoinSpecDefinition,\n contextSpec: ContextSpecDefinition | undefined,\n costSpec: CostSpecDefinition | undefined,\n filteredTypes: NamedType[],\n getSubgraph: (application: Directive) => Subgraph | undefined,\n getSubgraphEnumValue: (subgraphName: string) => string\n}\n\ntype SubgraphTypeInfo = Map;\n\ntype TypeInfo = {\n type: T,\n subgraphsInfo: SubgraphTypeInfo,\n};\n\ntype TypesInfo = {\n objOrItfTypes: TypeInfo[],\n inputObjTypes: TypeInfo[],\n enumTypes: TypeInfo[],\n unionTypes: TypeInfo[],\n};\n\nfunction addAllEmptySubgraphTypes(args: ExtractArguments): TypesInfo {\n const {\n supergraph,\n joinSpec,\n filteredTypes,\n getSubgraph,\n } = args;\n const typeDirective = joinSpec.typeDirective(supergraph);\n\n const objOrItfTypes: TypeInfo[] = [];\n const inputObjTypes: TypeInfo[] = [];\n const enumTypes: TypeInfo[] = [];\n const unionTypes: TypeInfo[] = [];\n for (const type of filteredTypes) {\n const typeApplications = type.appliedDirectivesOf(typeDirective);\n switch (type.kind) {\n // See comment in `addEmptyType` for why it actually matters that object and interface are handled together.\n // (on top of it making sense code-wise since both type behave exactly the same for most of what we're doing here).\n case 'InterfaceType':\n case 'ObjectType':\n objOrItfTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n break;\n case 'InputObjectType':\n inputObjTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n break;\n case 'EnumType':\n enumTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n break;\n case 'UnionType':\n unionTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n break;\n case 'ScalarType':\n // Scalar are a bit special in that they don't have any sub-component, so we don't track them beyond adding them to the\n // proper subgraphs. It's also simple because there is no possible key so there is exactly on @join__type application for\n // each subgraph having the scalar (and most arg cannot be present).\n for (const application of typeApplications) {\n const subgraph = getSubgraph(application);\n assert(subgraph, () => `Should have found the subgraph for ${application}`);\n const subgraphType = subgraph.schema.addType(newNamedType(type.kind, type.name));\n if (args.costSpec) {\n propagateDemandControlDirectives(type, subgraphType, subgraph, args.costSpec);\n }\n }\n break;\n }\n }\n return {\n objOrItfTypes,\n inputObjTypes,\n enumTypes,\n unionTypes,\n }\n}\n\nfunction addEmptyType(\n type: T,\n typeApplications: Directive[],\n args: ExtractArguments,\n): SubgraphTypeInfo {\n const { supergraph, getSubgraph, getSubgraphEnumValue } = args;\n // In fed2, we always mark all types with `@join__type` but making sure.\n assert(typeApplications.length > 0, `Missing @join__type on ${type}`)\n const subgraphsInfo: SubgraphTypeInfo = new Map();\n for (const application of typeApplications) {\n const { graph, key, extension, resolvable, isInterfaceObject } = application.arguments();\n let subgraphInfo = subgraphsInfo.get(graph);\n if (!subgraphInfo) {\n const subgraph = getSubgraph(application);\n assert(subgraph, () => `Should have found the subgraph for ${application}`);\n const kind = isInterfaceObject ? 'ObjectType' : type.kind;\n // Note that we have to cast to `T` below. First because going through `type.kind` and `newNamedType`\n // does not give a `T`. But even if we were to bend the type-system to work for that, there is the\n // case of interface objects where an interface in the supergraph ends up being an object in the\n // subgraph. But this is ok because we the object and interface type cases are lumped together (and\n // this also means we \"need\" it to be this way).\n const subgraphType = subgraph.schema.addType(newNamedType(kind, type.name)) as T;\n if (isInterfaceObject) {\n subgraphType.applyDirective('interfaceObject');\n }\n subgraphInfo = { type: subgraphType, subgraph };\n subgraphsInfo.set(graph, subgraphInfo);\n }\n\n if (key) {\n const directive = subgraphInfo.type.applyDirective('key', {'fields': key, resolvable});\n if (extension) {\n directive.setOfExtension(subgraphInfo.type.newExtension());\n }\n }\n }\n\n const supergraphContextDirective = args.contextSpec?.contextDirective(supergraph);\n if (supergraphContextDirective) {\n const contextApplications = type.appliedDirectivesOf(supergraphContextDirective);\n // for every application, apply the context directive to the correct subgraph\n for (const application of contextApplications) {\n const { name } = application.arguments();\n const match = name.match(/^(.*)__([A-Za-z]\\w*)$/);\n const graph = match ? match[1] : undefined;\n const context = match ? match[2] : undefined;\n assert(graph, `Invalid context name ${name} found in ${application} on ${application.parent}: does not match the expected pattern`);\n const subgraphInfo = subgraphsInfo.get(getSubgraphEnumValue(graph));\n const contextDirective = subgraphInfo?.subgraph.metadata().contextDirective();\n if (subgraphInfo && contextDirective && isFederationDirectiveDefinedInSchema(contextDirective)) {\n subgraphInfo.type.applyDirective(contextDirective, {name: context});\n }\n }\n }\n return subgraphsInfo;\n}\n\nfunction extractObjOrItfContent(args: ExtractArguments, info: TypeInfo[]) {\n const fieldDirective = args.joinSpec.fieldDirective(args.supergraph);\n\n // join_implements was added in join 0.2, and this method does not run for join 0.1, so it should be defined.\n const implementsDirective = args.joinSpec.implementsDirective(args.supergraph);\n assert(implementsDirective, '@join__implements should existing for a fed2 supergraph');\n\n for (const { type, subgraphsInfo } of info) {\n const implementsApplications = type.appliedDirectivesOf(implementsDirective);\n for (const application of implementsApplications) {\n const args = application.arguments();\n // Note that if we have a `@join__implements` for a subgraph, then we must have a `@join__type` too, so\n // the `get` below is guaranteed to not be undefined.\n const subgraphInfo = subgraphsInfo.get(args.graph)!;\n subgraphInfo.type.addImplementedInterface(args.interface);\n }\n\n if (args.costSpec) {\n for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n propagateDemandControlDirectives(type, subgraphType, subgraph, args.costSpec);\n }\n }\n\n for (const field of type.fields()) {\n const fieldApplications = field.appliedDirectivesOf(fieldDirective);\n if (fieldApplications.length === 0) {\n // In fed2 subgraph, no @join__field means that the field is in all the subgraphs in which the type is.\n const isShareable = isObjectType(type) && subgraphsInfo.size > 1;\n for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n addSubgraphField({\n field,\n type: subgraphType,\n subgraph,\n isShareable,\n costSpec: args.costSpec\n });\n }\n } else {\n const isShareable = isObjectType(type)\n && (fieldApplications as Directive[]).filter((application) => {\n const args = application.arguments();\n return !args.external && !args.usedOverridden;\n }).length > 1;\n\n for (const application of fieldApplications) {\n const joinFieldArgs = application.arguments();\n // We use a @join__field with no graph to indicates when a field in the supergraph does not come\n // directly from any subgraph and there is thus nothing to do to \"extract\" it.\n if (!joinFieldArgs.graph) {\n continue;\n }\n\n const { type: subgraphType, subgraph } = subgraphsInfo.get(joinFieldArgs.graph)!;\n addSubgraphField({\n field,\n type: subgraphType,\n subgraph, isShareable,\n joinFieldArgs,\n costSpec: args.costSpec\n });\n }\n }\n }\n }\n}\n\nfunction extractInputObjContent(args: ExtractArguments, info: TypeInfo[]) {\n const fieldDirective = args.joinSpec.fieldDirective(args.supergraph);\n\n for (const { type, subgraphsInfo } of info) {\n for (const field of type.fields()) {\n const fieldApplications = field.appliedDirectivesOf(fieldDirective);\n if (fieldApplications.length === 0) {\n // In fed2 subgraph, no @join__field means that the field is in all the subgraphs in which the type is.\n for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n addSubgraphInputField({\n field,\n type: subgraphType,\n subgraph,\n costSpec: args.costSpec\n });\n }\n } else {\n for (const application of fieldApplications) {\n const joinFieldArgs = application.arguments();\n // We use a @join__field with no graph to indicates when a field in the supergraph does not come\n // directly from any subgraph and there is thus nothing to do to \"extract\" it.\n if (!joinFieldArgs.graph) {\n continue;\n }\n\n const { type: subgraphType, subgraph } = subgraphsInfo.get(joinFieldArgs.graph)!;\n addSubgraphInputField({\n field,\n type: subgraphType,\n subgraph,\n joinFieldArgs,\n costSpec: args.costSpec\n });\n }\n }\n }\n }\n}\n\nfunction extractEnumTypeContent(args: ExtractArguments, info: TypeInfo[]) {\n // This was added in join 0.3, so it can genuinely be undefined.\n const enumValueDirective = args.joinSpec.enumValueDirective(args.supergraph);\n\n for (const { type, subgraphsInfo } of info) {\n if (args.costSpec) {\n for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n propagateDemandControlDirectives(type, subgraphType, subgraph, args.costSpec);\n }\n }\n\n for (const value of type.values) {\n const enumValueApplications = enumValueDirective ? value.appliedDirectivesOf(enumValueDirective) : [];\n if (enumValueApplications.length === 0) {\n for (const { type: subgraphType } of subgraphsInfo.values()) {\n subgraphType.addValue(value.name);\n }\n } else {\n for (const application of enumValueApplications) {\n const args = application.arguments();\n const { type: subgraphType } = subgraphsInfo.get(args.graph)!;\n subgraphType.addValue(value.name);\n }\n }\n }\n }\n}\n\nfunction extractUnionTypeContent(args: ExtractArguments, info: TypeInfo[]) {\n // This was added in join 0.3, so it can genuinely be undefined.\n const unionMemberDirective = args.joinSpec.unionMemberDirective(args.supergraph);\n\n // Note that union members works a bit differently from fields or enum values, and this because we cannot have\n // directive applications on type members. So the `unionMemberDirective` applications are on the type itself,\n // and they mention the member that they target.\n\n\n for (const { type, subgraphsInfo } of info) {\n const unionMemberApplications = unionMemberDirective ? type.appliedDirectivesOf(unionMemberDirective) : [];\n if (unionMemberApplications.length === 0) {\n // No @join__unionMember; every member should be added to every subgraph having the union (at least as long\n // as the subgraph has the member itself).\n for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n for (const member of type.types()) {\n const subgraphMember = subgraph.schema.type(member.name);\n if (subgraphMember) {\n // Note that object types in the supergraph are guaranteed to be object types in subgraphs.\n subgraphType.addType(subgraphMember as ObjectType);\n }\n }\n }\n } else {\n for (const application of unionMemberApplications) {\n const args = application.arguments();\n const { type: subgraphType, subgraph } = subgraphsInfo.get(args.graph)!;\n // Note that object types in the supergraph are guaranteed to be object types in subgraphs.\n // We also know that the type must exist in this case (we don't generate broken @join_unionMember).\n subgraphType.addType(subgraph.schema.type(args.member) as ObjectType);\n }\n }\n }\n}\n\nfunction extractSubgraphsFromFed2Supergraph(args: ExtractArguments) {\n const {\n objOrItfTypes,\n inputObjTypes,\n enumTypes,\n unionTypes,\n } = addAllEmptySubgraphTypes(args);\n\n extractObjOrItfContent(args, objOrItfTypes);\n extractInputObjContent(args, inputObjTypes);\n extractEnumTypeContent(args, enumTypes);\n extractUnionTypeContent(args, unionTypes);\n\n // We add all the \"executable\" directives from the supergraph to each subgraphs, as those may be part\n // of a query and end up in any subgraph fetches. We do this \"last\" to make sure that if one of the directive\n // use a type for an argument, that argument exists.\n // Note that we don't bother with non-executable directives at the moment since we've don't extract their\n // applications. It might become something we need later, but we don't so far.\n const allExecutableDirectives = args.supergraph.directives().filter((def) => def.hasExecutableLocations());\n for (const subgraph of args.subgraphs) {\n removeInactiveProvidesAndRequires(subgraph.schema);\n\n removeUnusedTypesFromSubgraph(subgraph.schema);\n\n for (const definition of allExecutableDirectives) {\n // Note that we skip any potentially applied directives in the argument of the copied definition, because as said\n // in the comment above, we haven't copied type-system directives. And so far, we really don't care about those\n // applications.\n copyDirectiveDefinitionToSchema({\n definition,\n schema: subgraph.schema,\n copyDirectiveApplicationsInArguments: false,\n locationFilter: (loc) => isExecutableDirectiveLocation(loc),\n });\n }\n }\n}\n\nconst DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME = 'APOLLO_FEDERATION_DEBUG_SUBGRAPHS';\n\nfunction maybeDumpSubgraphSchema(subgraph: Subgraph): string {\n const shouldDump = !!validateStringContainsBoolean(process.env[DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME]);\n if (!shouldDump) {\n return `Re-run with environment variable '${DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME}' set to 'true' to extract the invalid subgraph`;\n }\n try {\n const filename = `extracted-subgraph-${subgraph.name}-${Date.now()}.graphql`;\n const file = path.resolve(filename);\n if (fs.existsSync(file)) {\n // Note that this is caught directly by the surrounded catch.\n throw new Error(`candidate file ${filename} already existed`);\n }\n fs.writeFileSync(file, printSchema(subgraph.schema));\n return `The (invalid) extracted subgraph has been written in: ${file}.`;\n }\n catch (e2) {\n return `Was not able to print generated subgraph for \"${subgraph.name}\" because: ${errorToString(e2)}`;\n }\n}\n\nfunction propagateDemandControlDirectives(source: SchemaElement, dest: SchemaElement, subgraph: Subgraph, costSpec: CostSpecDefinition) {\n const costDirective = costSpec.costDirective(source.schema());\n if (costDirective) {\n const application = source.appliedDirectivesOf(costDirective)[0];\n if (application) {\n dest.applyDirective(subgraph.metadata().costDirective().name, application.arguments());\n }\n }\n\n const listSizeDirective = costSpec.listSizeDirective(source.schema());\n if (listSizeDirective) {\n const application = source.appliedDirectivesOf(listSizeDirective)[0];\n if (application) {\n dest.applyDirective(subgraph.metadata().listSizeDirective().name, application.arguments());\n }\n }\n}\n\nfunction errorToString(e: any,): string {\n const causes = errorCauses(e);\n return causes ? printErrors(causes) : String(e);\n}\n\nfunction addSubgraphField({\n field,\n type,\n subgraph,\n isShareable,\n joinFieldArgs,\n costSpec,\n}: {\n field: FieldDefinition,\n type: ObjectType | InterfaceType,\n subgraph: Subgraph,\n isShareable: boolean,\n joinFieldArgs?: JoinFieldDirectiveArguments,\n costSpec?: CostSpecDefinition,\n}): FieldDefinition {\n const copiedFieldType = joinFieldArgs?.type\n ? decodeType(joinFieldArgs.type, subgraph.schema, subgraph.name)\n : copyType(field.type!, subgraph.schema, subgraph.name);\n\n const subgraphField = type.addField(field.name, copiedFieldType);\n for (const arg of field.arguments()) {\n const argDef = subgraphField.addArgument(arg.name, copyType(arg.type!, subgraph.schema, subgraph.name), arg.defaultValue);\n if (costSpec) {\n propagateDemandControlDirectives(arg, argDef, subgraph, costSpec);\n }\n }\n if (joinFieldArgs?.requires) {\n subgraphField.applyDirective(subgraph.metadata().requiresDirective(), {'fields': joinFieldArgs.requires});\n }\n if (joinFieldArgs?.provides) {\n subgraphField.applyDirective(subgraph.metadata().providesDirective(), {'fields': joinFieldArgs.provides});\n }\n if (joinFieldArgs?.contextArguments) {\n const fromContextDirective = subgraph.metadata().fromContextDirective();\n if (!isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n throw new Error(`@fromContext directive is not defined in the subgraph schema: ${subgraph.name}`);\n } else {\n for (const arg of joinFieldArgs.contextArguments) {\n // this code will remove the subgraph name from the context\n const match = arg.context.match(/^.*__([A-Za-z]\\w*)$/);\n if (!match) {\n throw new Error(`Invalid context argument: ${arg.context}`);\n }\n \n subgraphField.addArgument(arg.name, decodeType(arg.type, subgraph.schema, subgraph.name));\n const argOnField = subgraphField.argument(arg.name);\n argOnField?.applyDirective(fromContextDirective, {\n field: `\\$${match[1]} ${arg.selection}`,\n });\n }\n }\n }\n const external = !!joinFieldArgs?.external;\n if (external) {\n subgraphField.applyDirective(subgraph.metadata().externalDirective());\n }\n const usedOverridden = !!joinFieldArgs?.usedOverridden;\n if (usedOverridden && !joinFieldArgs?.overrideLabel) {\n subgraphField.applyDirective(subgraph.metadata().externalDirective(), {'reason': '[overridden]'});\n }\n if (joinFieldArgs?.override) {\n subgraphField.applyDirective(subgraph.metadata().overrideDirective(), {\n from: joinFieldArgs.override,\n ...(joinFieldArgs.overrideLabel ? { label: joinFieldArgs.overrideLabel } : {})\n });\n }\n if (isShareable && !external && !usedOverridden) {\n subgraphField.applyDirective(subgraph.metadata().shareableDirective());\n }\n\n if (costSpec) {\n propagateDemandControlDirectives(field, subgraphField, subgraph, costSpec);\n }\n\n return subgraphField;\n}\n\nfunction addSubgraphInputField({\n field,\n type,\n subgraph,\n joinFieldArgs,\n costSpec,\n}: {\n field: InputFieldDefinition,\n type: InputObjectType,\n subgraph: Subgraph,\n joinFieldArgs?: JoinFieldDirectiveArguments,\n costSpec?: CostSpecDefinition,\n}): InputFieldDefinition {\n const copiedType = joinFieldArgs?.type\n ? decodeType(joinFieldArgs?.type, subgraph.schema, subgraph.name)\n : copyType(field.type!, subgraph.schema, subgraph.name);\n\n const inputField = type.addField(field.name, copiedType);\n inputField.defaultValue = field.defaultValue\n\n if (costSpec) {\n propagateDemandControlDirectives(field, inputField, subgraph, costSpec);\n }\n\n return inputField;\n}\n\nfunction extractSubgraphsFromFed1Supergraph({\n supergraph,\n subgraphs,\n joinSpec,\n filteredTypes,\n getSubgraph,\n}: ExtractArguments): Subgraphs {\n const typeDirective = joinSpec.typeDirective(supergraph);\n const ownerDirective = joinSpec.ownerDirective(supergraph);\n const fieldDirective = joinSpec.fieldDirective(supergraph);\n\n /*\n * For fed1 supergraph, only entity types are marked with `@join__type` and `@join__field`. Which mean that for value types,\n * we cannot directly know in which subgraphs they were initially defined. One strategy consists in \"extracting\" value types into\n * all subgraphs blindly: functionally, having some unused types in an extracted subgraph schema does not matter much. However, adding\n * those useless types increases memory usage, and we've seen some case with lots of subgraphs and lots of value types where those\n * unused types balloon up memory usage (from 100MB to 1GB in one example; obviously, this is made worst by the fact that javascript\n * is pretty memory heavy in the first place). So to avoid that problem, for fed1 supergraph, we do a first pass where we collect\n * for all the subgraphs the set of types that are actually reachable in that subgraph. As we extract do the actual type extraction,\n * we use this to ignore non-reachable types for any given subgraph.\n */\n const reachableTypesBySubgraph = collectFieldReachableTypesForAllSubgraphs(\n supergraph,\n subgraphs.names(),\n (f, name) => {\n const fieldApplications: Directive[] = f.appliedDirectivesOf(fieldDirective);\n if (fieldApplications.length) {\n const application = fieldApplications.find((application) => getSubgraph(application)?.name === name);\n if (application) {\n const args = application.arguments();\n const typesInFederationDirectives =\n typesUsedInFederationDirective(args.provides, baseType(f.type!) as CompositeType)\n .concat(typesUsedInFederationDirective(args.requires, f.parent));\n return { isInSubgraph: true, typesInFederationDirectives };\n } else {\n return { isInSubgraph: false, typesInFederationDirectives: [] };\n }\n } else {\n // No field application depends on the \"owner\" directive on the type. If we have no owner, then the\n // field is in all subgraph and we return true. Otherwise, the field is only in the owner subgraph.\n // In any case, the field cannot have a requires or provides\n const ownerApplications = ownerDirective ? f.parent.appliedDirectivesOf(ownerDirective) : [];\n return { isInSubgraph: !ownerApplications.length || getSubgraph(ownerApplications[0])?.name == name, typesInFederationDirectives: [] };\n }\n },\n (t, name) => {\n const typeApplications: Directive[] = t.appliedDirectivesOf(typeDirective);\n const application = typeApplications.find((application) => (application.arguments().key && (getSubgraph(application)?.name === name)));\n if (application) {\n const typesInFederationDirectives = typesUsedInFederationDirective(application.arguments().key, t as CompositeType);\n return { isEntityWithKeyInSubgraph: true, typesInFederationDirectives };\n } else {\n return { isEntityWithKeyInSubgraph: false, typesInFederationDirectives: [] };\n }\n },\n );\n const includeTypeInSubgraph = (t: NamedType, name: string) => reachableTypesBySubgraph.get(name)?.has(t.name) ?? false;\n\n // Next, we iterate on all types and add it to the proper subgraphs (along with any @key).\n // Note that we first add all types empty and populate the types next. This avoids having to care about the iteration\n // order if we have fields than depends on other types.\n for (const type of filteredTypes) {\n const typeApplications = type.appliedDirectivesOf(typeDirective);\n if (!typeApplications.length) {\n // Imply we don't know in which subgraph the type is, so we had it in all subgraph in which the type is reachable.\n for (const subgraph of subgraphs) {\n if (includeTypeInSubgraph(type, subgraph.name)) {\n subgraph.schema.addType(newNamedType(type.kind, type.name));\n }\n }\n } else {\n for (const application of typeApplications) {\n const args = application.arguments();\n const subgraph = getSubgraph(application)!;\n assert(subgraph, () => `Should have found the subgraph for ${application}`);\n const schema = subgraph.schema;\n // We can have more than one type directive for a given subgraph\n let subgraphType = schema.type(type.name);\n if (!subgraphType) {\n const kind = args.isInterfaceObject ? 'ObjectType' : type.kind;\n subgraphType = schema.addType(newNamedType(kind, type.name));\n if (args.isInterfaceObject) {\n subgraphType.applyDirective('interfaceObject');\n }\n }\n if (args.key) {\n const { resolvable } = args;\n const directive = subgraphType.applyDirective('key', {'fields': args.key, resolvable});\n if (args.extension) {\n directive.setOfExtension(subgraphType.newExtension());\n }\n }\n }\n }\n }\n\n // We can now populate all those types (with relevant @provides and @requires on fields).\n for (const type of filteredTypes) {\n switch (type.kind) {\n case 'ObjectType':\n // @ts-expect-error: we fall-through the inputObjectType for fields.\n case 'InterfaceType':\n for (const implementations of type.interfaceImplementations()) {\n // There is no `@join__implements` in fed1 supergraphs, so we have no choice but to mark the\n // object/interface as implementing the interface in all subgraphs (at least those that contains\n // both types).\n const name = implementations.interface.name;\n for (const subgraph of subgraphs) {\n const subgraphType = subgraph.schema.type(type.name);\n const subgraphItf = subgraph.schema.type(name);\n if (subgraphType && subgraphItf) {\n (subgraphType as (ObjectType | InterfaceType)).addImplementedInterface(name);\n }\n }\n }\n // Fall-through on purpose.\n case 'InputObjectType':\n for (const field of type.fields()) {\n const fieldApplications = field.appliedDirectivesOf(fieldDirective);\n if (!fieldApplications.length) {\n // In fed1 supergraphs, the meaning of having no join__field depends on whether the parent type has a\n // `@join__owner`. If it does, it means the field is only on that owner subgraph. Otherwise, we kind of\n // don't know, so we add it to all subgraphs that have the parent type and, if the field base type\n // is a named type, know that field type.\n const ownerApplications = ownerDirective ? type.appliedDirectivesOf(ownerDirective) : [];\n if (ownerApplications.length > 0) {\n assert(ownerApplications.length == 1, () => `Found multiple join__owner directives on type ${type}`)\n const subgraph = getSubgraph(ownerApplications[0]);\n assert(subgraph, () => `Should have found the subgraph for ${ownerApplications[0]}`);\n addSubgraphFieldForFed1(field, subgraph, false);\n } else {\n const fieldBaseType = baseType(field.type!);\n const isShareable = isObjectType(type) && subgraphs.values().filter((s) => s.schema.type(type.name)).length > 1;\n for (const subgraph of subgraphs) {\n if (subgraph.schema.type(fieldBaseType.name)) {\n addSubgraphFieldForFed1(field, subgraph, isShareable);\n }\n }\n }\n } else {\n // Note that fed1 supergraphs only include `@join__field` for non-external fields, so it needs shareable as soon\n // as it has more than one `@join__field`.\n const isShareable = isObjectType(type) && fieldApplications.length > 1;\n for (const application of fieldApplications) {\n const subgraph = getSubgraph(application);\n // We use a @join__field with no graph to indicates when a field in the supergraph does not come\n // directly from any subgraph and there is thus nothing to do to \"extract\" it.\n if (!subgraph) {\n continue;\n }\n\n const args = application.arguments();\n addSubgraphFieldForFed1(field, subgraph, isShareable, args);\n }\n }\n }\n break;\n case 'EnumType':\n for (const subgraph of subgraphs) {\n const subgraphEnum = subgraph.schema.type(type.name);\n if (!subgraphEnum) {\n continue;\n }\n assert(isEnumType(subgraphEnum), () => `${subgraphEnum} should be an enum but found a ${subgraphEnum.kind}`);\n\n // There is not `@join__enumValue` in fed1, so we add to all graphs regardless.\n for (const value of type.values) {\n subgraphEnum.addValue(value.name);\n }\n }\n break;\n case 'UnionType':\n for (const subgraph of subgraphs) {\n const subgraphUnion = subgraph.schema.type(type.name);\n if (!subgraphUnion) {\n continue;\n }\n assert(isUnionType(subgraphUnion), () => `${subgraphUnion} should be an enum but found a ${subgraphUnion.kind}`);\n\n // There is not `@join__unionMember` in fed1, so we add to all graphs regardless.\n for (const memberTypeName of type.types().map((t) => t.name)) {\n const subgraphType = subgraph.schema.type(memberTypeName);\n if (subgraphType) {\n subgraphUnion.addType(subgraphType as ObjectType);\n }\n }\n }\n break;\n }\n }\n\n const allExecutableDirectives = supergraph.directives().filter((def) => def.hasExecutableLocations());\n for (const subgraph of subgraphs) {\n // The join spec in fed1 was not including external fields. Let's make sure we had them or we'll get validation\n // errors later.\n addExternalFields(subgraph, supergraph, true);\n removeInactiveProvidesAndRequires(subgraph.schema);\n\n removeUnusedTypesFromSubgraph(subgraph.schema);\n\n // Lastly, we add all the \"executable\" directives from the supergraph to each subgraphs, as those may be part\n // of a query and end up in any subgraph fetches. We do this \"last\" to make sure that if one of the directive\n // use a type for an argument, that argument exists.\n // Note that we don't bother with non-executable directives at the moment since we've don't extract their\n // applications. It might become something we need later, but we don't so far.\n for (const definition of allExecutableDirectives) {\n // Note that we skip any potentially applied directives in the argument of the copied definition, because as said\n // in the comment above, we haven't copied type-system directives. And so far, we really don't care about those\n // applications.\n copyDirectiveDefinitionToSchema({\n definition,\n schema: subgraph.schema,\n copyDirectiveApplicationsInArguments: false,\n locationFilter: (loc) => isExecutableDirectiveLocation(loc),\n });\n }\n }\n\n return subgraphs;\n}\n\n\ntype AnyField = FieldDefinition | InputFieldDefinition;\n\nfunction addSubgraphFieldForFed1(field: AnyField, subgraph: Subgraph, isShareable: boolean, joinFieldArgs?: JoinFieldDirectiveArguments): void {\n const subgraphType = subgraph.schema.type(field.parent.name);\n if (!subgraphType) {\n return;\n }\n\n if (field instanceof FieldDefinition) {\n addSubgraphField({\n field,\n subgraph,\n type: subgraphType as ObjectType | InterfaceType,\n isShareable,\n joinFieldArgs,\n });\n } else {\n addSubgraphInputField({\n field,\n subgraph,\n type: subgraphType as InputObjectType,\n joinFieldArgs,\n });\n }\n}\n\nfunction decodeType(encodedType: string, subgraph: Schema, subgraphName: string): Type {\n try {\n return builtTypeReference(encodedType, subgraph);\n } catch (e) {\n assert(false, () => `Cannot parse type \"${encodedType}\" in subgraph ${subgraphName}: ${e}`);\n }\n}\n\nfunction copyType(type: Type, subgraph: Schema, subgraphName: string): Type {\n switch (type.kind) {\n case 'ListType':\n return new ListType(copyType(type.ofType, subgraph, subgraphName));\n case 'NonNullType':\n return new NonNullType(copyType(type.ofType, subgraph, subgraphName) as NullableType);\n default:\n const subgraphType = subgraph.type(type.name);\n assert(subgraphType, () => `Cannot find type \"${type.name}\" in subgraph \"${subgraphName}\"`);\n return subgraphType;\n }\n}\n\nfunction addExternalFields(subgraph: Subgraph, supergraph: Schema, isFed1: boolean) {\n const metadata = subgraph.metadata();\n for (const type of subgraph.schema.types()) {\n if (!isObjectType(type) && !isInterfaceType(type)) {\n continue;\n }\n\n // First, handle @key\n for (const keyApplication of type.appliedDirectivesOf(metadata.keyDirective())) {\n // Historically, the federation code for keys, when applied _to a type extension_:\n // 1) required @external on any field of the key\n // 2) but required the subgraph to resolve any field of that key\n // despite the combination of those being arguably illogical (@external is supposed to signify the field is _not_ resolve\n // by the subgraph).\n // To maintain backward compatibility, we have to preserve that behavior. The way this is done is that during merging,\n // if a key is on an extension, we remember it in the corresponding @join__type. And when reading @join__type directive\n // in `extractSubgraphsFromSupergraph`, we mark the generated key directive as applied to an extension (note that only\n // the key directive is marked that way, not the rest of the type; this is because we actually don't know if the rest\n // what part of an extension or not and we prefer not presuming). So, now, if we look at the fields in a key and\n // that key was on an extension, we know that we should not mark it @external, because it _is_ resolved by the subgraph.\n // If the key is on a type definition however, then we don't have that historical legacy, and so if the field is\n // not part of the subgraph, then it means that it is truly external (and composition validation will ensure that this\n // is fine).\n // Note that this is called `forceNonExternal` because an extension key field might well be part of a @provides somewhere\n // else (it's not useful to do so, kind of imply an incomprehension and we'll remove those in `removeNeedlessProvides`,\n // but it's not forbidden and has been seen) which has already added the field as @external, and we want to _remove_ the\n // @external in that case. Also note that for fed 1 supergraphs, the 'ofExtension' information is not available so we\n // have to default of forcing non-external on all key fields. Which is ok because \"true\" external on key fields was not\n // supported anyway.\n const forceNonExternal = isFed1 || !!keyApplication.ofExtension();\n addExternalFieldsFromDirectiveFieldSet(subgraph, type, keyApplication, supergraph, forceNonExternal);\n }\n // Then any @requires or @provides on fields\n for (const field of type.fields()) {\n for (const requiresApplication of field.appliedDirectivesOf(metadata.requiresDirective())) {\n addExternalFieldsFromDirectiveFieldSet(subgraph, type, requiresApplication, supergraph);\n }\n const fieldBaseType = baseType(field.type!);\n for (const providesApplication of field.appliedDirectivesOf(metadata.providesDirective())) {\n assert(isObjectType(fieldBaseType) || isInterfaceType(fieldBaseType), () => `Found @provides on field ${field.coordinate} whose type ${field.type!} (${fieldBaseType.kind}) is not an object or interface `);\n addExternalFieldsFromDirectiveFieldSet(subgraph, fieldBaseType, providesApplication, supergraph);\n }\n }\n\n // And then any constraint due to implemented interfaces.\n addExternalFieldsFromInterface(metadata, type);\n }\n}\n\nfunction addExternalFieldsFromDirectiveFieldSet(\n subgraph: Subgraph,\n parentType: ObjectType | InterfaceType,\n directive: Directive, {fields: any}>,\n supergraph: Schema,\n forceNonExternal: boolean = false,\n) {\n const external = subgraph.metadata().externalDirective();\n\n const fieldAccessor = function (type: CompositeType, fieldName: string): FieldDefinition {\n const field = type.field(fieldName);\n if (field) {\n if (forceNonExternal && field.hasAppliedDirective(external)) {\n field.appliedDirectivesOf(external).forEach(d => d.remove());\n }\n return field;\n }\n assert(!isUnionType(type), () => `Shouldn't select field ${fieldName} from union type ${type}`);\n\n // If the field has not been added, it is external and needs to be added as such\n const supergraphType = supergraph.type(type.name) as ObjectType | InterfaceType;\n const supergraphField = supergraphType.field(fieldName);\n assert(supergraphField, () => `No field named ${fieldName} found on type ${type.name} in the supergraph`);\n // We're know the parent type of the field exists in the subgraph (it's `type`), so we're guaranteed a field is created.\n const created = addSubgraphField({\n field: supergraphField,\n subgraph,\n type,\n isShareable: false,\n });\n if (!forceNonExternal) {\n created.applyDirective(external);\n }\n return created;\n };\n try {\n parseFieldSetArgument({parentType, directive, fieldAccessor, validate: false});\n } catch (e) {\n // Ignored on purpose: for fed1 supergraphs, it's possible that some of the fields defined in a federation directive\n // was _not_ defined in the subgraph because fed1 was not validating this properly (the validation wasn't handling\n // nested fields as it should), which may result in an error when trying to add those as an external field.\n // However, this is not the right place to throw. Instead, we ignore the problem and thus exit without having added\n // all the necessary fields, and so this very same directive will fail validation at the end of the extraction when\n // we do the final validation of the extracted subgraph (see end of `extractSubgraphsFromSupergraph`). And we prefer\n // failing then because 1) that later validation will collect all errors instead of failing on the first one and\n // 2) we already have special error messages and the ability to dump the extracted subgraphs for debug at that point,\n // so it's a much better place.\n }\n}\n\nfunction addExternalFieldsFromInterface(metadata: FederationMetadata, type: ObjectType | InterfaceType) {\n for (const itf of type.interfaces()) {\n for (const field of itf.fields()) {\n const typeField = type.field(field.name);\n if (!typeField) {\n copyFieldAsExternal(metadata, field, type);\n } else if (typeField.hasAppliedDirective(metadata.externalDirective())) {\n // A subtlety here is that a type may implements multiple interfaces providing a given field, and the field may\n // not have the exact same definition in all interface. So if we may have added the field in a previous loop\n // iteration, we need to check if we shouldn't update the field type.\n maybeUpdateFieldForInterface(typeField, field);\n }\n }\n }\n}\n\nfunction copyFieldAsExternal(metadata: FederationMetadata, field: FieldDefinition, type: ObjectType | InterfaceType) {\n const newField = type.addField(field.name, field.type);\n for (const arg of field.arguments()) {\n newField.addArgument(arg.name, arg.type, arg.defaultValue);\n }\n newField.applyDirective(metadata.externalDirective());\n}\n\nfunction maybeUpdateFieldForInterface(toModify: FieldDefinition, itfField: FieldDefinition) {\n // Note that we only care about the field type because while graphql does not allow contravariance of args for field implementations.\n // And while fed2 allow it when merging, this code doesn't run for fed2 generated supergraph, so this isn't a concern.\n if (!isSubtype(itfField.type!, toModify.type!)) {\n assert(isSubtype(toModify.type!, itfField.type!), () => `For ${toModify.coordinate}, expected ${itfField.type} and ${toModify.type} to be in a subtyping relationship`);\n toModify.type = itfField.type!;\n }\n}\n\nfunction removeUnusedTypesFromSubgraph(schema: Schema) {\n // We now do an additional path on all types because we sometimes added types to subgraphs without\n // being sure that the subgraph had the type in the first place (especially with the 0.1 join spec), and because\n // we later might not have added any fields/members to said type, they may be empty (indicating they clearly\n // didn't belong to the subgraph in the first) and we need to remove them.\n // Note that need to do this _after_ the `addExternalFields` call above since it may have added (external) fields\n // to some of the types.\n for (const type of schema.types()) {\n switch (type.kind) {\n case 'ObjectType':\n case 'InterfaceType':\n case 'InputObjectType':\n if (!type.hasFields()) {\n // Note that we have to use removeRecursive or this could leave the subgraph invalid. But if the\n // type was not in this subgraphs, nothing that depends on it should be either.\n type.removeRecursive();\n }\n break;\n case 'UnionType':\n if (type.membersCount() === 0) {\n type.removeRecursive();\n }\n break;\n }\n }\n}\n", "import { DocumentNode, GraphQLError } from \"graphql\";\nimport { CoreFeatures, Schema, sourceASTs } from \"./definitions\";\nimport { ErrCoreCheckFailed, FeatureUrl, FeatureVersion } from \"./specs/coreSpec\";\nimport { joinIdentity, JoinSpecDefinition, JOIN_VERSIONS } from \"./specs/joinSpec\";\nimport { CONTEXT_VERSIONS, ContextSpecDefinition } from \"./specs/contextSpec\";\nimport { COST_VERSIONS, costIdentity, CostSpecDefinition } from \"./specs/costSpec\";\nimport { buildSchema, buildSchemaFromAST } from \"./buildSchema\";\nimport { extractSubgraphsNamesAndUrlsFromSupergraph, extractSubgraphsFromSupergraph } from \"./extractSubgraphsFromSupergraph\";\nimport { ERRORS } from \"./error\";\nimport { Subgraphs } from \".\";\n\nexport const DEFAULT_SUPPORTED_SUPERGRAPH_FEATURES = new Set([\n 'https://specs.apollo.dev/core/v0.1',\n 'https://specs.apollo.dev/core/v0.2',\n 'https://specs.apollo.dev/join/v0.1',\n 'https://specs.apollo.dev/join/v0.2',\n 'https://specs.apollo.dev/join/v0.3',\n 'https://specs.apollo.dev/join/v0.4',\n 'https://specs.apollo.dev/join/v0.5',\n 'https://specs.apollo.dev/tag/v0.1',\n 'https://specs.apollo.dev/tag/v0.2',\n 'https://specs.apollo.dev/tag/v0.3',\n 'https://specs.apollo.dev/inaccessible/v0.1',\n 'https://specs.apollo.dev/inaccessible/v0.2',\n]);\n\nexport const ROUTER_SUPPORTED_SUPERGRAPH_FEATURES = new Set([\n 'https://specs.apollo.dev/core/v0.1',\n 'https://specs.apollo.dev/core/v0.2',\n 'https://specs.apollo.dev/join/v0.1',\n 'https://specs.apollo.dev/join/v0.2',\n 'https://specs.apollo.dev/join/v0.3',\n 'https://specs.apollo.dev/join/v0.4',\n 'https://specs.apollo.dev/join/v0.5',\n 'https://specs.apollo.dev/tag/v0.1',\n 'https://specs.apollo.dev/tag/v0.2',\n 'https://specs.apollo.dev/tag/v0.3',\n 'https://specs.apollo.dev/inaccessible/v0.1',\n 'https://specs.apollo.dev/inaccessible/v0.2',\n 'https://specs.apollo.dev/authenticated/v0.1',\n 'https://specs.apollo.dev/requiresScopes/v0.1',\n 'https://specs.apollo.dev/policy/v0.1',\n 'https://specs.apollo.dev/source/v0.1',\n 'https://specs.apollo.dev/context/v0.1',\n 'https://specs.apollo.dev/cost/v0.1',\n]);\n\nconst coreVersionZeroDotOneUrl = FeatureUrl.parse('https://specs.apollo.dev/core/v0.1');\n\n/**\n * Checks that only our hard-coded list of features are part of the provided schema, and that if\n * the schema uses core v0.1, then it doesn't use the 'for' (purpose) argument.\n * Throws if that is not true.\n */\nfunction checkFeatureSupport(coreFeatures: CoreFeatures, supportedFeatures: Set) {\n const errors: GraphQLError[] = [];\n const coreItself = coreFeatures.coreItself;\n if (coreItself.url.equals(coreVersionZeroDotOneUrl)) {\n const purposefulFeatures = [...coreFeatures.allFeatures()].filter(f => f.purpose)\n if (purposefulFeatures.length > 0) {\n errors.push(ERRORS.UNSUPPORTED_LINKED_FEATURE.err(\n `the \\`for:\\` argument is unsupported by version ${coreItself.url.version} ` +\n `of the core spec. Please upgrade to at least @core v0.2 (https://specs.apollo.dev/core/v0.2).`,\n {\n nodes: sourceASTs(coreItself.directive, ...purposefulFeatures.map(f => f.directive))\n }\n ));\n }\n }\n\n for (const feature of coreFeatures.allFeatures()) {\n if (feature.url.equals(coreVersionZeroDotOneUrl) || feature.purpose === 'EXECUTION' || feature.purpose === 'SECURITY') {\n if (!supportedFeatures.has(feature.url.base.toString())) {\n errors.push(ERRORS.UNSUPPORTED_LINKED_FEATURE.err(\n `feature ${feature.url} is for: ${feature.purpose} but is unsupported`,\n { nodes: feature.directive.sourceAST },\n ));\n }\n }\n }\n if (errors.length > 0) {\n throw ErrCoreCheckFailed(errors);\n }\n}\n\nexport function validateSupergraph(supergraph: Schema): [\n CoreFeatures,\n JoinSpecDefinition,\n ContextSpecDefinition | undefined,\n CostSpecDefinition | undefined,\n] {\n const coreFeatures = supergraph.coreFeatures;\n if (!coreFeatures) {\n throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\"Invalid supergraph: must be a core schema\");\n }\n\n const joinFeature = coreFeatures.getByIdentity(joinIdentity);\n if (!joinFeature) {\n throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\"Invalid supergraph: must use the join spec\");\n }\n const joinSpec = JOIN_VERSIONS.find(joinFeature.url.version);\n if (!joinSpec) {\n throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\n `Invalid supergraph: uses unsupported join spec version ${joinFeature.url.version} (supported versions: ${JOIN_VERSIONS.versions().join(', ')})`);\n }\n\n const contextFeature = coreFeatures.getByIdentity(ContextSpecDefinition.identity);\n let contextSpec = undefined;\n if (contextFeature) {\n contextSpec = CONTEXT_VERSIONS.find(contextFeature.url.version);\n if (!contextSpec) {\n throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\n `Invalid supergraph: uses unsupported context spec version ${contextFeature.url.version} (supported versions: ${CONTEXT_VERSIONS.versions().join(', ')})`);\n }\n }\n\n const costFeature = coreFeatures.getByIdentity(costIdentity);\n let costSpec = undefined;\n if (costFeature) {\n costSpec = COST_VERSIONS.find(costFeature.url.version);\n if (!costSpec) {\n throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\n `Invalid supergraph: uses unsupported cost spec version ${costFeature.url.version} (supported versions: ${COST_VERSIONS.versions().join(', ')})`);\n }\n }\n return [coreFeatures, joinSpec, contextSpec, costSpec];\n}\n\nexport function isFed1Supergraph(supergraph: Schema): boolean {\n return validateSupergraph(supergraph)[1].version.equals(new FeatureVersion(0, 1));\n}\n\nexport class Supergraph {\n private readonly containedSubgraphs: readonly {name: string, url: string}[];\n // Lazily computed as that requires a bit of work.\n private _subgraphs?: Subgraphs;\n private _subgraphNameToGraphEnumValue?: Map;\n\n constructor(\n readonly schema: Schema,\n supportedFeatures: Set | null = DEFAULT_SUPPORTED_SUPERGRAPH_FEATURES,\n private readonly shouldValidate: boolean = true,\n ) {\n const [coreFeatures] = validateSupergraph(schema);\n\n if (supportedFeatures !== null) {\n checkFeatureSupport(coreFeatures, supportedFeatures);\n }\n\n if (shouldValidate) {\n schema.validate();\n } else {\n schema.assumeValid();\n }\n\n this.containedSubgraphs = extractSubgraphsNamesAndUrlsFromSupergraph(schema);\n }\n\n static build(supergraphSdl: string | DocumentNode, options?: { supportedFeatures?: Set, validateSupergraph?: boolean }) {\n // We delay validation because `checkFeatureSupport` in the constructor gives slightly more useful errors if, say, 'for' is used with core v0.1.\n const schema = typeof supergraphSdl === 'string'\n ? buildSchema(supergraphSdl, { validate: false })\n : buildSchemaFromAST(supergraphSdl, { validate: false });\n\n return new Supergraph(schema, options?.supportedFeatures, options?.validateSupergraph);\n }\n\n static buildForTests(supergraphSdl: string | DocumentNode, validateSupergraph?: boolean) {\n return Supergraph.build(supergraphSdl, { supportedFeatures: ROUTER_SUPPORTED_SUPERGRAPH_FEATURES, validateSupergraph });\n }\n /**\n * The list of names/urls of the subgraphs contained in this subgraph.\n *\n * Note that this is a subset of what `this.subgraphs()` returns, but contrarily to that method, this method does not do a full extraction of the\n * subgraphs schema.\n */\n subgraphsMetadata(): readonly {name: string, url: string}[] {\n return this.containedSubgraphs;\n }\n\n subgraphs(): Subgraphs {\n if (!this._subgraphs) {\n // Note that `extractSubgraphsFromSupergraph` redo a little bit of work we're already one, like validating\n // the supergraph. We could refactor things to avoid it, but it's completely negligible in practice so we\n // can leave that to \"some day, maybe\".\n const extractionResults = extractSubgraphsFromSupergraph(this.schema, this.shouldValidate);\n this._subgraphs = extractionResults[0];\n this._subgraphNameToGraphEnumValue = extractionResults[1];\n }\n return this._subgraphs;\n }\n\n subgraphNameToGraphEnumValue(): Map {\n if (!this._subgraphNameToGraphEnumValue) {\n const extractionResults = extractSubgraphsFromSupergraph(this.schema, this.shouldValidate);\n this._subgraphs = extractionResults[0];\n this._subgraphNameToGraphEnumValue = extractionResults[1];\n }\n return new Map([...this._subgraphNameToGraphEnumValue]);\n }\n\n apiSchema(): Schema {\n return this.schema.toAPISchema();\n }\n}\n", "import {\n ASTNode,\n GraphQLError,\n Kind,\n print as printAST,\n} from \"graphql\";\nimport { errorCauses, ERRORS } from \"./error\";\nimport {\n baseType,\n CompositeType,\n Directive,\n Extension,\n FieldDefinition,\n InterfaceType,\n isCompositeType,\n isInterfaceType,\n isObjectType,\n NamedSchemaElement,\n NamedType,\n ObjectType,\n Schema,\n SchemaElement,\n} from \"./definitions\";\nimport {\n addSubgraphToError,\n collectTargetFields,\n federationMetadata,\n FederationMetadata,\n printSubgraphNames,\n removeInactiveProvidesAndRequires,\n setSchemaAsFed2Subgraph,\n Subgraph,\n Subgraphs,\n} from \"./federation\";\nimport { assert, firstOf, MultiMap } from \"./utils\";\nimport { valueEquals } from \"./values\";\nimport { FEDERATION1_TYPES } from \"./specs/federationSpec\";\n\nexport type UpgradeResult = UpgradeSuccess | UpgradeFailure;\n\ntype UpgradeChanges = MultiMap;\n\nexport type UpgradeSuccess = {\n subgraphs: Subgraphs,\n changes: Map,\n errors?: never,\n}\n\nexport type UpgradeFailure = {\n subgraphs?: never,\n changes?: never,\n errors: GraphQLError[],\n}\n\nexport type UpgradeChangeID = UpgradeChange['id'];\n\nexport type UpgradeChange =\n ExternalOnTypeExtensionRemoval\n | TypeExtensionRemoval\n | UnusedExternalRemoval\n | TypeWithOnlyUnusedExternalRemoval\n | ExternalOnInterfaceRemoval\n | ExternalOnObjectTypeRemoval\n | InactiveProvidesOrRequiresRemoval\n | InactiveProvidesOrRequiresFieldsRemoval\n | ShareableFieldAddition\n | ShareableTypeAddition\n | KeyOnInterfaceRemoval\n | ProvidesOrRequiresOnInterfaceFieldRemoval\n | ProvidesOnNonCompositeRemoval\n | FieldsArgumentCoercionToString\n | RemovedTagOnExternal\n;\n\nexport class ExternalOnTypeExtensionRemoval {\n readonly id = 'EXTERNAL_ON_TYPE_EXTENSION_REMOVAL' as const;\n\n constructor(readonly field: string) {}\n\n toString() {\n return `Removed @external from field \"${this.field}\" as it is a key of an extension type`;\n }\n}\n\nexport class TypeExtensionRemoval {\n readonly id = 'TYPE_EXTENSION_REMOVAL' as const;\n\n constructor(readonly type: string) {}\n\n toString() {\n return `Switched type \"${this.type}\" from an extension to a definition`;\n }\n}\n\nexport class ExternalOnInterfaceRemoval {\n readonly id = 'EXTERNAL_ON_INTERFACE_REMOVAL' as const;\n\n constructor(readonly field: string) {}\n\n toString() {\n return `Removed @external directive on interface type field \"${this.field}\": @external is nonsensical on interface fields`;\n }\n}\n\nexport class ExternalOnObjectTypeRemoval {\n readonly id = 'EXTERNAL_ON_OBJECT_TYPE_REMOVAL' as const;\n\n constructor(readonly type: string) {}\n\n toString() {\n return `Removed @external directive on object type \"${this.type}\": @external on types was not rejected but was inactive in fed1`;\n }\n}\n\nexport class UnusedExternalRemoval {\n readonly id = 'UNUSED_EXTERNAL_REMOVAL' as const;\n\n constructor(readonly field: string) {}\n\n toString() {\n return `Removed @external field \"${this.field}\" as it was not used in any @key, @provides or @requires`;\n }\n}\n\nexport class TypeWithOnlyUnusedExternalRemoval {\n readonly id = 'TYPE_WITH_ONLY_UNUSED_EXTERNAL_REMOVAL' as const;\n\n constructor(readonly type: string) {}\n\n toString() {\n return `Removed type ${this.type} that is not referenced in the schema and only declares unused @external fields`;\n }\n}\n\nexport class InactiveProvidesOrRequiresRemoval {\n readonly id = 'INACTIVE_PROVIDES_OR_REQUIRES_REMOVAL' as const;\n\n constructor(readonly parent: string, readonly removed: string) {}\n\n toString() {\n return `Removed directive ${this.removed} on \"${this.parent}\": none of the fields were truly @external`;\n }\n}\n\nexport class InactiveProvidesOrRequiresFieldsRemoval {\n readonly id = 'INACTIVE_PROVIDES_OR_REQUIRES_FIELDS_REMOVAL' as const;\n\n constructor(readonly parent: string, readonly original: string, readonly updated: string) {}\n\n toString() {\n return `Updated directive ${this.original} on \"${this.parent}\" to ${this.updated}: removed fields that were not truly @external`;\n }\n}\n\nexport class ShareableFieldAddition {\n readonly id = 'SHAREABLE_FIELD_ADDITION' as const;\n\n constructor(readonly field: string, readonly declaringSubgraphs: string[]) {}\n\n toString() {\n return `Added @shareable to field \"${this.field}\": it is also resolved by ${printSubgraphNames(this.declaringSubgraphs)}`;\n }\n}\n\nexport class ShareableTypeAddition {\n readonly id = 'SHAREABLE_TYPE_ADDITION' as const;\n\n constructor(readonly type: string, readonly declaringSubgraphs: string[]) {}\n\n toString() {\n return `Added @shareable to type \"${this.type}\": it is a \"value type\" and is also declared in ${printSubgraphNames(this.declaringSubgraphs)}`;\n }\n}\n\nexport class KeyOnInterfaceRemoval {\n readonly id = 'KEY_ON_INTERFACE_REMOVAL' as const;\n\n constructor(readonly type: string) {}\n\n toString() {\n return `Removed @key on interface \"${this.type}\": while allowed by federation 0.x, @key on interfaces were completely ignored/had no effect`;\n }\n}\n\nexport class ProvidesOrRequiresOnInterfaceFieldRemoval {\n readonly id = 'PROVIDES_OR_REQUIRES_ON_INTERFACE_FIELD_REMOVAL' as const;\n\n constructor(readonly field: string, readonly directive: string) {}\n\n toString() {\n return `Removed @${this.directive} on interface field \"${this.field}\": while allowed by federation 0.x, @${this.directive} on interface fields were completely ignored/had no effect`;\n }\n}\n\nexport class ProvidesOnNonCompositeRemoval {\n readonly id = 'PROVIDES_ON_NON_COMPOSITE_REMOVAL' as const;\n\n constructor(readonly field: string, readonly type: string) {}\n\n toString() {\n return `Removed @provides directive on field \"${this.field}\" as it is of non-composite type \"${this.type}\": while not rejected by federation 0.x, such @provide is nonsensical and was ignored`;\n }\n}\n\nexport class FieldsArgumentCoercionToString {\n readonly id = 'FIELDS_ARGUMENT_COERCION_TO_STRING' as const;\n\n constructor(readonly element: string, readonly directive: string, readonly before: string, readonly after: string) {}\n\n toString() {\n return `Coerced \"fields\" argument for directive @${this.directive} for \"${this.element}\" into a string: coerced from ${this.before} to ${this.after}`;\n }\n}\n\nexport class RemovedTagOnExternal {\n readonly id = 'REMOVED_TAG_ON_EXTERNAL' as const;\n\n constructor(readonly application: string, readonly element: string) {}\n\n toString() {\n return `Removed ${this.application} application on @external \"${this.element}\" as the @tag application is on another definition`;\n }\n}\n\nexport function upgradeSubgraphsIfNecessary(inputs: Subgraphs): UpgradeResult {\n const changes: Map = new Map();\n if (inputs.values().every((s) => s.isFed2Subgraph())) {\n return { subgraphs: inputs, changes };\n }\n\n const subgraphs = new Subgraphs();\n let errors: GraphQLError[] = [];\n const subgraphsUsingInterfaceObject = [];\n \n // build a data structure to help us do computation only once\n const objectTypeMap = new Map>();\n for (const subgraph of inputs.values()) {\n for (const t of subgraph.schema.objectTypes()) {\n let entry = objectTypeMap.get(t.name);\n if (!entry) {\n entry = new Map();\n objectTypeMap.set(t.name, entry);\n }\n entry.set(subgraph.name, [t, subgraph.metadata()]);\n }\n for (const t of subgraph.schema.interfaceTypes()) {\n let entry = objectTypeMap.get(t.name);\n if (!entry) {\n entry = new Map();\n objectTypeMap.set(t.name, entry);\n }\n entry.set(subgraph.name, [t, subgraph.metadata()]);\n }\n }\n \n for (const subgraph of inputs.values()) {\n if (subgraph.isFed2Subgraph()) {\n subgraphs.add(subgraph);\n if (subgraph.metadata().interfaceObjectDirective().applications().size > 0) {\n subgraphsUsingInterfaceObject.push(subgraph.name);\n }\n } else {\n const res = new SchemaUpgrader(subgraph, inputs.values(), objectTypeMap).upgrade();\n if (res.errors) {\n errors = errors.concat(res.errors);\n } else {\n subgraphs.add(res.upgraded);\n changes.set(subgraph.name, res.changes);\n }\n }\n }\n if (errors.length === 0 && subgraphsUsingInterfaceObject.length > 0) {\n const fed1Subgraphs = inputs.values().filter((s) => !s.isFed2Subgraph()).map((s) => s.name);\n // Note that we exit this method early if everything is a fed2 schema, so we know at least one of them wasn't.\n errors = [ ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n 'The @interfaceObject directive can only be used if all subgraphs have federation 2 subgraph schema (schema with a `@link` to \"https://specs.apollo.dev/federation\" version 2.0 or newer): '\n + `@interfaceObject is used in ${printSubgraphNames(subgraphsUsingInterfaceObject)} but ${printSubgraphNames(fed1Subgraphs)} ${fed1Subgraphs.length > 1 ? 'are not' : 'is not a'} federation 2 subgraph schema.`,\n )];\n }\n\n return errors.length === 0 ? { subgraphs, changes } : { errors };\n}\n\n/**\n * Wether the type represents a type extension in the sense of federation 1.\n * That is, type extension are a thing in GraphQL, but federation 1 overloads the notion for entities. This method\n * return true if the type is used in the federation 1 sense of an extension.\n * And we recognize federation 1 type extensions as type extension that:\n * 1. are on object type or interface type (note that federation 1 don't really handle interface type extension properly but it \"accepts\" them\n * so we do it here too).\n * 2. do not have a definition for the same type in the same subgraph (this is a GraphQL extension otherwise).\n *\n * Not that type extensions in federation 1 generally have a @key but in really the code consider something a type extension even without\n * it (which I'd argue is a unintended bug of fed1 since this leads to various problems) so we don't check for the presence of @key here.\n */\nfunction isFederationTypeExtension(type: NamedType): boolean {\n const metadata = federationMetadata(type.schema());\n assert(metadata, 'Should be a subgraph schema');\n const hasExtend = type.hasAppliedDirective(metadata.extendsDirective());\n return (type.hasExtensionElements() || hasExtend)\n && (isObjectType(type) || isInterfaceType(type))\n && (hasExtend || !type.hasNonExtensionElements());\n}\n\n/**\n * Whether the type is a root type but is declared has (only) an extension, which federation 1 actually accepts.\n */\nfunction isRootTypeExtension(type: NamedType): boolean {\n const metadata = federationMetadata(type.schema());\n assert(metadata, 'Should be a subgraph schema');\n return isObjectType(type)\n && type.isRootType()\n && (type.hasAppliedDirective(metadata.extendsDirective()) || (type.hasExtensionElements() && !type.hasNonExtensionElements()));\n}\n\nfunction getField(schema: Schema, typeName: string, fieldName: string): FieldDefinition | undefined {\n const type = schema.type(typeName);\n return type && isCompositeType(type) ? type.field(fieldName) : undefined;\n}\n\nclass SchemaUpgrader {\n private readonly changes = new MultiMap();\n private readonly schema: Schema;\n private readonly subgraph: Subgraph;\n private readonly metadata: FederationMetadata;\n private readonly errors: GraphQLError[] = [];\n\n constructor(private readonly originalSubgraph: Subgraph, private readonly allSubgraphs: readonly Subgraph[], private readonly objectTypeMap: Map>) {\n // Note that as we clone the original schema, the 'sourceAST' values in the elements of the new schema will be those of the original schema\n // and those won't be updated as we modify the schema to make it fed2-enabled. This is _important_ for us here as this is what ensures that\n // later merge errors \"AST\" nodes ends up pointing to the original schema, the one that make sense to the user.\n this.schema = originalSubgraph.schema.clone();\n this.renameFederationTypes();\n // Setting this property before trying to switch the cloned schema to fed2 because on\n // errors `addError` uses `this.subgraph.name`.\n this.subgraph = new Subgraph(originalSubgraph.name, originalSubgraph.url, this.schema);\n try {\n setSchemaAsFed2Subgraph(this.schema);\n } catch (e) {\n // This could error out if some directive definition clashes with a federation one while\n // having an incompatible definition. Note that in that case, the choices for the user\n // are either:\n // 1. fix/remove the definition if they did meant the federation directive, just had an\n // invalid definition.\n // 2. but if they have their own directive whose name happens to clash with a federation\n // directive one but is genuinely a different directive, they will have to move their\n // schema to a fed2 one and use renaming.\n const causes = errorCauses(e);\n if (causes) {\n causes.forEach((c) => this.addError(c));\n } else {\n // An unexpected exception, rethrow.\n throw e;\n }\n }\n this.metadata = this.subgraph.metadata();\n }\n\n private addError(e: GraphQLError): void {\n this.errors.push(addSubgraphToError(e, this.subgraph.name, ERRORS.INVALID_GRAPHQL));\n }\n\n private renameFederationTypes() {\n // When we set the upgraded schema as a fed2 schema, we only \"import\" the federation directives, but not the federation types. This\n // means that those types will be called `_Entity`, `_Any`, ... in the fed1 original schema, but they should be called `federation__Entity`,\n // `federation__Any`, ... in the new upgraded schema.\n // But note that even \"importing\" those types would not completely work because fed2 essentially drops the `_` at the beginning of those\n // type names (relying on the core schema prefixing instead) and so some special translation needs to happen.\n for (const typeSpec of FEDERATION1_TYPES) {\n const typeNameInOriginal = this.originalSubgraph.metadata().federationTypeNameInSchema(typeSpec.name);\n const type = this.schema.type(typeNameInOriginal);\n if (type) {\n type.rename(`federation__${typeSpec.name}`);\n }\n }\n }\n\n private external(elt: FieldDefinition): Directive | undefined {\n const applications = elt.appliedDirectivesOf(this.metadata.externalDirective());\n return applications.length === 0 ? undefined : applications[0];\n }\n\n private addChange(change: UpgradeChange) {\n this.changes.add(change.id, change);\n }\n\n private checkForExtensionWithNoBase(type: NamedType): void {\n // The checks that if the type is a \"federation 1\" type extension, then another subgraph has a proper definition\n // for that type.\n if (isRootTypeExtension(type) || !isFederationTypeExtension(type)) {\n return;\n }\n\n const extensionAST = firstOf>(type.extensions().values())?.sourceAST;\n const typeInOtherSubgraphs = Array.from(this.objectTypeMap.get(type.name)!.entries()).filter(([subgraphName, _]) => subgraphName !== this.subgraph.name);\n for (let i = 0; i < typeInOtherSubgraphs.length; i += 1) {\n const otherType = typeInOtherSubgraphs[i][1][0];\n if (otherType && otherType.hasNonExtensionElements()) {\n return;\n }\n }\n\n // We look at all the other subgraphs and didn't found a (non-extension) definition of that type\n this.addError(ERRORS.EXTENSION_WITH_NO_BASE.err(\n `Type \"${type}\" is an extension type, but there is no type definition for \"${type}\" in any subgraph.`,\n { nodes: extensionAST },\n ));\n }\n\n private preUpgradeValidations(): void {\n for (const type of this.schema.types()) {\n this.checkForExtensionWithNoBase(type);\n }\n }\n\n upgrade(): { upgraded: Subgraph, changes: UpgradeChanges, errors?: never } | { errors: GraphQLError[] } {\n this.preUpgradeValidations();\n\n this.fixFederationDirectivesArguments();\n\n this.removeExternalOnInterface();\n this.removeExternalOnObjectTypes();\n\n // Note that we remove all external on type extensions first, so we don't have to care about it later in @key, @provides and @requires.\n this.removeExternalOnTypeExtensions();\n\n this.fixInactiveProvidesAndRequires();\n\n this.removeTypeExtensions();\n\n this.removeDirectivesOnInterface();\n\n // Note that this rule rely on being after `removeDirectivesOnInterface` in practice (in that it doesn't check interfaces).\n this.removeProvidesOnNonComposite();\n\n // Note that this should come _after_ all the other changes that may remove/update federation directives, since those may create unused\n // externals. Which is why this is toward the end.\n this.removeUnusedExternals();\n\n this.addShareable();\n\n this.removeTagOnExternal();\n\n // If we had errors during the upgrade, we throw them before trying to validate the resulting subgraph, because any invalidity in the\n // migrated subgraph may well due to those migration errors and confuse users.\n if (this.errors.length > 0) {\n return { errors: this.errors };\n }\n\n try {\n this.subgraph.validate();\n return {\n upgraded: this.subgraph,\n changes: this.changes,\n };\n } catch (e) {\n const errors = errorCauses(e);\n if (!errors) {\n throw e;\n }\n // Do note that it's genuinely possible to return errors here, because federation validations (validating @key, @provides, ...) is mostly\n // not done on the input schema and will only be triggered now, on the upgraded schema. Importantly, the errors returned here shouldn't\n // be due to the upgrade process, but either due to the fed1 schema being invalid in the first place, or due to validation of fed2 that\n // cannot be dealt with by the upgrade process (like, for instance, the fact that fed1 doesn't always reject fields mentioned in a @key\n // that are not defined in the subgraph, but fed2 consistently do).\n return { errors };\n }\n }\n\n private fixFederationDirectivesArguments() {\n for (const directive of [this.metadata.keyDirective(), this.metadata.requiresDirective(), this.metadata.providesDirective()]) {\n // Note that we may remove (to replace) some of the application we iterate on, so we need to copy the list we iterate on first.\n for (const application of Array.from(directive.applications())) {\n const fields = application.arguments().fields;\n if (typeof fields !== 'string') {\n // The one case we have seen in practice is user passing an array of string, so we handle that. If it's something else,\n // it's probably just completely invalid, so we ignore the application and let validation complain later.\n if (Array.isArray(fields) && fields.every((f) => typeof f === 'string')) {\n this.replaceFederationDirectiveApplication(application, application.toString(), fields.join(' '), directive.sourceAST);\n }\n continue;\n }\n\n // While validating if the field is a string will work in most cases, this will not catch the case where the field argument was\n // unquoted but parsed as an enum value (see federation/issues/850 in particular). So if we have the AST (which we will usually\n // have in practice), use that to check that the argument was truly a string.\n const nodes = application.sourceAST;\n if (nodes && nodes.kind === 'Directive') {\n for (const argNode of nodes.arguments ?? []) {\n if (argNode.name.value === 'fields') {\n if (argNode.value.kind === Kind.ENUM) {\n // Note that we we mostly want here is replacing the sourceAST because that is what is later used by validation\n // to detect the problem.\n this.replaceFederationDirectiveApplication(application, printAST(nodes), fields, {\n ...nodes,\n arguments: [{\n ...argNode,\n value: {\n kind: Kind.STRING,\n value: fields\n }\n }]\n })\n break;\n }\n }\n }\n }\n }\n }\n }\n\n private removeExternalOnInterface() {\n for (const itf of this.schema.interfaceTypes()) {\n for (const field of itf.fields()) {\n const external = this.external(field);\n if (external) {\n this.addChange(new ExternalOnInterfaceRemoval(field.coordinate));\n external.remove();\n }\n }\n }\n }\n\n private removeExternalOnObjectTypes() {\n for (const type of this.schema.objectTypes()) {\n const external = type.appliedDirectivesOf(this.metadata.externalDirective())[0];\n if (external) {\n this.addChange(new ExternalOnObjectTypeRemoval(type.coordinate));\n external.remove();\n }\n }\n }\n\n private replaceFederationDirectiveApplication(\n application: Directive, {fields: any}>,\n before: string,\n fields: string,\n updatedSourceAST: ASTNode | undefined,\n ) {\n const directive = application.definition!;\n // Note that in practice, federation directives can only be on either a type or a field, both of which are named.\n const parent = application.parent as NamedSchemaElement;\n application.remove();\n const newDirective = parent.applyDirective(directive, {fields});\n newDirective.sourceAST = updatedSourceAST;\n this.addChange(new FieldsArgumentCoercionToString(parent.coordinate, directive.name, before, newDirective.toString()));\n }\n\n private fixInactiveProvidesAndRequires() {\n removeInactiveProvidesAndRequires(\n this.schema,\n (field, original, updated) => {\n if (updated) {\n this.addChange(new InactiveProvidesOrRequiresFieldsRemoval(field.coordinate, original.toString(), updated.toString()));\n } else {\n this.addChange(new InactiveProvidesOrRequiresRemoval(field.coordinate, original.toString()));\n }\n }\n );\n }\n\n private removeExternalOnTypeExtensions() {\n for (const type of this.schema.types()) {\n if (!isCompositeType(type)) {\n continue;\n }\n if (!isFederationTypeExtension(type) && !isRootTypeExtension(type)) {\n continue;\n }\n\n const keyApplications = type.appliedDirectivesOf(this.metadata.keyDirective());\n if (keyApplications.length > 0) {\n // If the type extension has keys, then fed1 will essentially consider the key fields not external ...\n for (const keyApplication of type.appliedDirectivesOf(this.metadata.keyDirective())) {\n collectTargetFields({\n parentType: type,\n directive: keyApplication,\n includeInterfaceFieldsImplementations: false,\n validate: false,\n }).forEach((field) => {\n // We only consider \"top-level\" fields, the one of the type on which the key is, because that's what fed1 does.\n if (field.parent !== type) {\n return;\n }\n const external = this.external(field);\n if (external) {\n this.addChange(new ExternalOnTypeExtensionRemoval(field.coordinate));\n external.remove();\n }\n });\n }\n } else {\n // ... but if the extension does _not_ have a key, then if the extension has a field that is\n // part of the _1st_ key on the subgraph owning the type, then this field is not considered\n // external (yes, it's pretty damn random, and it's even worst in that even if the extension\n // does _not_ have the \"field of the _1st_ key on the subraph owning the type\", then the\n // query planner will still request it to the subgraph, generating an invalid query; but\n // we ignore that here). Note however that because other subgraphs may have already been\n // upgraded, we don't know which is the \"type owner\", so instead we look up at the first\n // key of every other subgraph. It's not 100% what fed1 does, but we're in very-strange\n // case territory in the first place, so this is probably good enough (that is, there is\n // customer schema for which what we do here matter but not that I know of for which it's\n // not good enough).\n const typeInOtherSubgraphs = Array.from(this.objectTypeMap.get(type.name)!.entries()).filter(([subgraphName, _]) => subgraphName !== this.subgraph.name);\n \n for (const [otherSubgraphName, v] of typeInOtherSubgraphs) {\n const [typeInOther, metadata] = v;\n assert(isCompositeType(typeInOther), () => `Type ${type} is of kind ${type.kind} in ${this.subgraph.name} but ${typeInOther.kind} in ${otherSubgraphName}`);\n const keysInOther = typeInOther.appliedDirectivesOf(metadata.keyDirective());\n if (keysInOther.length === 0) {\n continue;\n }\n collectTargetFields({\n parentType: typeInOther,\n directive: keysInOther[0],\n includeInterfaceFieldsImplementations: false,\n validate: false,\n }).forEach((field) => {\n if (field.parent !== typeInOther) {\n return;\n }\n // Remark that we're iterating on the fields of _another_ subgraph that the one we're upgrading.\n // We only consider \"top-level\" fields, the one of the type on which the key is, because that's what fed1 does.\n const ownField = type.field(field.name);\n if (!ownField) {\n return;\n }\n const external = this.external(ownField);\n if (external) {\n this.addChange(new ExternalOnTypeExtensionRemoval(ownField.coordinate));\n external.remove();\n }\n });\n }\n }\n }\n }\n\n private removeTypeExtensions() {\n for (const type of this.schema.types()) {\n if (!isFederationTypeExtension(type) && !isRootTypeExtension(type)) {\n continue;\n }\n\n this.addChange(new TypeExtensionRemoval(type.coordinate));\n type.removeExtensions();\n }\n }\n\n private removeUnusedExternals() {\n for (const type of this.schema.types()) {\n if (!isObjectType(type) && !isInterfaceType(type)) {\n continue;\n }\n for (const field of type.fields()) {\n if (this.metadata.isFieldExternal(field) && !this.metadata.isFieldUsed(field)) {\n this.addChange(new UnusedExternalRemoval(field.coordinate));\n field.remove();\n }\n }\n if (!type.hasFields()) {\n if (type.isReferenced()) {\n this.addError(ERRORS.TYPE_WITH_ONLY_UNUSED_EXTERNAL.err(\n `Type ${type} contains only external fields and all those fields are all unused (they do not appear in any @key, @provides or @requires).`,\n { nodes: type.sourceAST },\n ));\n } else {\n // The type only had unused externals, but it is also unreferenced in the subgraph. Unclear why\n // it was there in the first place, but we can remove it and move on.\n this.addChange(new TypeWithOnlyUnusedExternalRemoval(type.name));\n type.remove();\n }\n }\n }\n }\n\n private removeDirectivesOnInterface() {\n for (const type of this.schema.interfaceTypes()) {\n for (const application of type.appliedDirectivesOf(this.metadata.keyDirective())) {\n this.addChange(new KeyOnInterfaceRemoval(type.name));\n application.remove();\n }\n for (const field of type.fields()) {\n for (const directive of [this.metadata.providesDirective(), this.metadata.requiresDirective()]) {\n for (const application of field.appliedDirectivesOf(directive)) {\n this.addChange(new ProvidesOrRequiresOnInterfaceFieldRemoval(field.coordinate, directive.name));\n application.remove();\n }\n }\n }\n }\n }\n\n private removeProvidesOnNonComposite() {\n for (const type of this.schema.objectTypes()) {\n for (const field of type.fields()) {\n if (isCompositeType(baseType(field.type!))) {\n continue;\n }\n for (const application of field.appliedDirectivesOf(this.metadata.providesDirective())) {\n this.addChange(new ProvidesOnNonCompositeRemoval(field.coordinate, field.type!.toString()));\n application.remove();\n }\n }\n }\n }\n\n private addShareable() {\n const originalMetadata = this.originalSubgraph.metadata();\n const keyDirective = this.metadata.keyDirective();\n const shareableDirective = this.metadata.shareableDirective();\n // We add shareable:\n // - to every \"value type\" (in the fed1 sense of non-root type and non-entity) if it is used in any other subgraphs\n // - to any (non-external) field of an entity/root-type that is not a key field and if another subgraphs resolve it (fully or partially through @provides)\n for (const type of this.schema.objectTypes()) {\n if(type.isSubscriptionRootType()) {\n continue;\n }\n if (type.hasAppliedDirective(keyDirective) || (type.isRootType())) {\n for (const field of type.fields()) {\n // To know if the field is a \"key\" field which doesn't need shareable, we rely on whether the field is shareable in the original\n // schema (the fed1 version), because as fed1 schema will have no @shareable, the key fields will effectively be the only field\n // considered shareable.\n if (originalMetadata.isFieldShareable(field)) {\n continue;\n }\n \n const entries = Array.from(this.objectTypeMap.get(type.name)!.entries());\n const typeInOtherSubgraphs = entries.filter(([subgraphName, v]) => {\n if (subgraphName === this.subgraph.name) {\n return false;\n }\n const f = v[0].field(field.name);\n return !!f && (!v[1].isFieldExternal(f) || v[1].isFieldPartiallyExternal(f));\n });\n \n if (typeInOtherSubgraphs.length > 0 && !field.hasAppliedDirective(shareableDirective)) {\n field.applyDirective(shareableDirective);\n this.addChange(new ShareableFieldAddition(field.coordinate, typeInOtherSubgraphs.map(([s]) => s)));\n }\n }\n } else {\n const typeInOtherSubgraphs = Array.from(this.objectTypeMap.get(type.name)!.entries()).filter(([subgraphName, _]) => subgraphName !== this.subgraph.name);\n if (typeInOtherSubgraphs.length > 0 && !type.hasAppliedDirective(shareableDirective)) {\n type.applyDirective(shareableDirective);\n this.addChange(new ShareableTypeAddition(type.coordinate, typeInOtherSubgraphs.map(([s]) => s)));\n }\n }\n }\n }\n\n private removeTagOnExternal() {\n const tagDirective = this.schema.directive('tag');\n if (!tagDirective) {\n return;\n }\n\n // Copying the list we iterate on as we remove in the loop.\n for (const application of Array.from(tagDirective.applications())) {\n const element = application.parent;\n if (!(element instanceof FieldDefinition)) {\n continue;\n }\n if (this.external(element)) {\n const tagIsUsedInOtherDefinition = this.allSubgraphs\n .map((s) => s.name === this.originalSubgraph.name ? undefined : getField(s.schema, element.parent.name, element.name))\n .filter((f) => !(f && f.hasAppliedDirective('external')))\n .some((f) => f && f.appliedDirectivesOf('tag').some((d) => valueEquals(application.arguments(), d.arguments())));\n\n if (tagIsUsedInOtherDefinition) {\n this.addChange(new RemovedTagOnExternal(application.toString(), element.coordinate));\n application.remove();\n }\n }\n }\n }\n}\n", "import {\n DefinitionNode,\n DirectiveDefinitionNode,\n DocumentNode,\n GraphQLDirective,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLSchema,\n isIntrospectionType,\n isSpecifiedDirective,\n isSpecifiedScalarType,\n Kind,\n OperationTypeDefinitionNode,\n OperationTypeNode,\n parse,\n printSchema,\n printType,\n SchemaDefinitionNode,\n SchemaExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode\n} from \"graphql\";\nimport { Maybe } from \"graphql/jsutils/Maybe\";\nimport { defaultRootName } from \"./definitions\";\n\nconst allOperationTypeNode = [ OperationTypeNode.QUERY, OperationTypeNode.MUTATION, OperationTypeNode.SUBSCRIPTION];\n\n/**\n * Converts a graphql-js schema into an equivalent AST document.\n *\n * Note importantly that this method is not, in general, equivalent to `parse(printSchema(schema))` in that\n * the returned AST will contain directive _applications_ when those can be found in AST nodes linked by\n * the elements of the provided schema.\n */\nexport function graphQLJSSchemaToAST(schema: GraphQLSchema): DocumentNode {\n const types = Object.values(schema.getTypeMap()).filter((type) => !isIntrospectionType(type) && !isSpecifiedScalarType(type));\n const directives = schema.getDirectives().filter((directive) => !isSpecifiedDirective(directive));\n\n const schemaASTs = toNodeArray(graphQLJSSchemaToSchemaDefinitionAST(schema));\n const typesASTs = types.map((type) => toNodeArray(graphQLJSNamedTypeToAST(type))).flat();\n const directivesASTs = directives.map((directive) => graphQLJSDirectiveToAST(directive));\n\n return {\n kind: Kind.DOCUMENT,\n definitions: [...schemaASTs, ...typesASTs, ...directivesASTs],\n }\n}\n\nfunction toNodeArray({\n definition,\n extensions,\n}: {\n definition?: TDef,\n extensions: readonly TExt[]}\n): readonly DefinitionNode[] {\n return definition ? [definition, ...extensions] : extensions;\n}\n\nfunction maybe(v: Maybe): T | undefined {\n return v ? v : undefined;\n}\n\n// Not exposing that one for now because it's a bit weirder API-wise (and take a `GraphqQLSchema` but only handle a specific subpart of it) .\nfunction graphQLJSSchemaToSchemaDefinitionAST(schema: GraphQLSchema): { definition?: SchemaDefinitionNode, extensions: readonly SchemaExtensionNode[] } {\n if (schema.astNode || schema.extensionASTNodes.length > 0) {\n return {\n definition: maybe(schema.astNode),\n extensions: schema.extensionASTNodes,\n };\n } else {\n let definition: SchemaDefinitionNode | undefined = undefined;\n if (hasNonDefaultRootNames(schema)) {\n const operationTypes: OperationTypeDefinitionNode[] = [];\n for (const operation of allOperationTypeNode) {\n const type = schema.getRootType(operation);\n if (type) {\n operationTypes.push({\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type: { kind: Kind.NAMED_TYPE, name: { kind: Kind.NAME, value : type.name } },\n });\n }\n }\n definition = {\n kind: Kind.SCHEMA_DEFINITION,\n description: schema.description ? {\n kind: Kind.STRING,\n value: schema.description,\n } : undefined,\n operationTypes,\n }\n }\n return {\n definition,\n extensions: [],\n };\n }\n}\n\nfunction hasNonDefaultRootNames(schema: GraphQLSchema): boolean {\n return allOperationTypeNode.some((t) => isNonDefaultRootName(schema.getRootType(t), t));\n}\n\nfunction isNonDefaultRootName(type: Maybe, operation: OperationTypeNode): boolean {\n return !!type && type.name !== defaultRootName(operation);\n}\n\nexport function graphQLJSNamedTypeToAST(type: GraphQLNamedType): { definition?: TypeDefinitionNode, extensions: readonly TypeExtensionNode[] } {\n if (type.astNode || type.extensionASTNodes.length > 0) {\n return {\n definition: maybe(type.astNode),\n extensions: type.extensionASTNodes,\n };\n } else {\n // While we could theoretically manually build the AST, it's just simpler to print the type and parse it back.\n return {\n definition: parse(printType(type)).definitions[0] as TypeDefinitionNode,\n extensions: [],\n };\n }\n}\n\nexport function graphQLJSDirectiveToAST(directive: GraphQLDirective): DirectiveDefinitionNode {\n if (directive.astNode) {\n return directive.astNode;\n } else {\n // Note that the trick used for type of printing and parsing back is tad less convenient here because graphQL-js does not\n // expose a direct way to print a directive alone. So we work-around it by built-in a \"fake\" schema with essentially just\n // that directive.\n const fakeSchema = new GraphQLSchema({\n directives: [directive],\n assumeValid: true,\n });\n const reparsed = parse(printSchema(fakeSchema));\n return reparsed.definitions.find((def) => def.kind === Kind.DIRECTIVE_DEFINITION) as DirectiveDefinitionNode;\n }\n}\n\n", "export * from './definitions';\nexport * from './buildSchema';\nexport * from './print';\nexport * from './values';\nexport * from './federation';\nexport * from './types';\nexport * from './operations';\nexport * from './utils';\nexport * from './debug';\nexport * from './specs/coreSpec';\nexport * from './specs/joinSpec';\nexport * from './specs/tagSpec';\nexport * from './specs/inaccessibleSpec';\nexport * from './specs/federationSpec';\nexport * from './specs/contextSpec';\nexport * from './supergraphs';\nexport * from './error';\nexport * from './schemaUpgrader';\nexport * from './suggestions';\nexport * from './graphQLJSSchemaToAST';\nexport * from './directiveAndTypeSpecification';\nexport { coreFeatureDefinitionIfKnown } from './knownCoreFeatures';\nexport * from './argumentCompositionStrategies';\nexport * from './specs/authenticatedSpec';\nexport * from './specs/requiresScopesSpec';\nexport * from './specs/policySpec';\nexport * from './specs/sourceSpec';\nexport * from './specs/costSpec';\n", "import { FieldDefinition, CompositeType, SchemaRootKind } from \"@apollo/federation-internals\";\n\n/**\n * The type of query graphs edge \"transitions\".\n *\n * An edge transition encodes what the edges correspond to, in the underlying graphQL\n * schema.\n */\nexport type Transition =\n /**\n * A field: the edge goes from (a vertex for) the field parent type, to the field (base) type.\n */\n FieldCollection\n\n /**\n * A \"downcast\": the edges goes from an abstract type (interface or union) to a type that implements that abstract\n * type (for interfaces) or is a member of that abstract type (for unions)\n */\n | DownCast\n\n /**\n * A key, only found in \"federated\" query graphs: the edge goes from an entity type in a particular subgraph to the\n * same entity type but in another subgraph. Edge with key transition _must_ have `conditions` corresponding to the\n * key fields\n */\n | KeyResolution\n\n /**\n * A root type, only found in \"federated\" query graphs: the edge goes from a root type (query, mutation or subscription)\n * of a subgraph to the (same) root type of another subgraph. It encodes the fact that if a subgraph field returns a root\n * type, any subgraph can be queried from there.\n */\n | RootTypeResolution\n\n /**\n * A \"subgraph entering\" edge: this is a special case only used for the edges out of the root vertices of \"federated\"\n * query graphs. It does not correspond to any physical graphQL elements but can be understood as the fact that the gateway\n * is always free to start querying any of the subgraph services as needed.\n */\n | SubgraphEnteringTransition\n\n /**\n * A special \"fake\" downcast for an @interfaceObject type to an implementation, only found in \"federated\" query graphs:\n * this encodes the fact that an @interfaceObject type \"stand-in\" for any possible implementations (in the supergraph)\n * of the corresponding interface. It is \"fake\" because the corresponding edges stays on the @interfaceObject type (this\n * is also why the \"casted type\" is only a name: that casted type does not actually exists in the subgraph in which \n * the corresponding edge will be found).\n */\n | InterfaceObjectFakeDownCast\n;\n\nexport class KeyResolution {\n readonly kind = 'KeyResolution'\n readonly collectOperationElements = false;\n\n toString() {\n return 'key()';\n }\n}\n\nexport class RootTypeResolution {\n readonly kind = 'RootTypeResolution';\n readonly collectOperationElements = false;\n\n constructor(readonly rootKind: SchemaRootKind) {\n }\n\n toString() {\n return this.rootKind + '()';\n }\n}\n\nexport class FieldCollection {\n readonly kind = 'FieldCollection';\n readonly collectOperationElements = true;\n\n constructor(\n readonly definition: FieldDefinition,\n readonly isPartOfProvide: boolean = false\n ) {}\n\n toString() {\n return this.definition.name;\n }\n}\n\nexport class DownCast {\n readonly kind = 'DownCast';\n readonly collectOperationElements = true;\n\n constructor(readonly sourceType: CompositeType, readonly castedType: CompositeType) {}\n\n toString() {\n return '... on ' + this.castedType.name;\n }\n}\n\nexport class SubgraphEnteringTransition {\n readonly kind = 'SubgraphEnteringTransition';\n readonly collectOperationElements = false;\n\n toString() {\n return '\u2205';\n }\n}\n\nexport class InterfaceObjectFakeDownCast {\n readonly kind = 'InterfaceObjectFakeDownCast';\n readonly collectOperationElements = true;\n\n constructor(readonly sourceType: CompositeType, readonly castedTypeName: string) {}\n\n toString() {\n return '... on ' + this.castedTypeName;\n }\n}\n\nexport const subgraphEnteringTransition = new SubgraphEnteringTransition();\n\n", "import { assert } from \"@apollo/federation-internals\";\nimport { Edge, QueryGraph, QueryGraphState, simpleTraversal } from \"./querygraph\";\n\nexport function preComputeNonTrivialFollowupEdges(graph: QueryGraph): (previousEdge: Edge) => readonly Edge[] {\n const state = new QueryGraphState();\n simpleTraversal(graph, () => {}, (edge) => {\n const followupEdges = graph.outEdges(edge.tail);\n state.setEdgeState(edge, computeNonTrivialFollowups(edge, followupEdges));\n return true;\n });\n return (previousEdge) => {\n const nonTrivialFollowups = state.getEdgeState(previousEdge);\n assert(nonTrivialFollowups, () => `Non-trivial followup edges of ${previousEdge} should have been computed`);\n return nonTrivialFollowups;\n }\n}\n\nfunction computeNonTrivialFollowups(edge: Edge, allFollowups: readonly Edge[]): readonly Edge[] {\n switch (edge.transition.kind) {\n case 'KeyResolution':\n // After taking a key from subgraph A to B, there is no point of following that up with another key\n // to subgraph C if that key has _the same_ conditions. This is because, due to the way key edges\n // are created, if we have a key (with some conditions X) from B to C, then we are guaranteed to\n // also have a key (with the same conditions X) from A to C, and so it's that later key we\n // should be using in the first place. In other words, it's never better to do 2 hops rather than 1.\n return allFollowups.filter((followup) => followup.transition.kind !== 'KeyResolution' || !sameConditions(edge, followup));\n case 'RootTypeResolution':\n // A 'RootTypeResolution' means that a query reached the query type (or another root type) in some\n // subgraph A and we're looking at jumping to another subgraph B. But like for keys, there is\n // no point in trying to jump directly to yet another subgpraph C from B, since we can always\n // jump directly from A to C and it's better.\n return allFollowups.filter((followup) => followup.transition.kind !== 'RootTypeResolution');\n case 'SubgraphEnteringTransition':\n // This is somewhat similar to 'RootTypeResolution' except that we're starting the query.\n // But still, not doing \"start of query\" -> B -> C, since we can do \"start of query\" -> C\n // and that's always better.\n return allFollowups.filter((followup) => followup.transition.kind !== 'RootTypeResolution');\n default:\n return allFollowups;\n }\n}\n\nfunction sameConditions(e1: Edge, e2: Edge): boolean {\n if (!e1.conditions) {\n return !e2.conditions;\n }\n return !!e2.conditions && e1.conditions.equals(e2.conditions);\n}\n", "import {\n assert,\n MultiMap,\n InterfaceType,\n isInterfaceType,\n isFed1Supergraph,\n isObjectType,\n isUnionType,\n NamedType,\n ObjectType,\n Schema,\n SchemaRootKind,\n Type,\n UnionType,\n baseType,\n SelectionSet,\n isFederationSubgraphSchema,\n FieldDefinition,\n isCompositeType,\n parseFieldSetArgument,\n AbstractType,\n isAbstractType,\n possibleRuntimeTypes,\n MapWithCachedArrays,\n mapKeys,\n firstOf,\n FEDERATION_RESERVED_SUBGRAPH_NAME,\n federationMetadata,\n FederationMetadata,\n DirectiveDefinition,\n Directive,\n typenameFieldName,\n Field,\n selectionSetOfElement,\n SelectionSetUpdates,\n Supergraph,\n NamedSchemaElement,\n validateSupergraph,\n parseContext,\n} from '@apollo/federation-internals';\nimport { inspect } from 'util';\nimport { DownCast, FieldCollection, subgraphEnteringTransition, SubgraphEnteringTransition, Transition, KeyResolution, RootTypeResolution, InterfaceObjectFakeDownCast } from './transition';\nimport { preComputeNonTrivialFollowupEdges } from './nonTrivialEdgePrecomputing';\n\n// We use our federation reserved subgraph name to avoid risk of conflict with other subgraph names (wouldn't be a huge\n// deal, but safer that way). Using something short like `_` is also on purpose: it makes it stand out in debug messages\n// without taking space.\nexport const FEDERATED_GRAPH_ROOT_SOURCE = FEDERATION_RESERVED_SUBGRAPH_NAME;\nconst FEDERATED_GRAPH_ROOT_SCHEMA = new Schema();\n\nexport function federatedGraphRootTypeName(rootKind: SchemaRootKind): string {\n return `[${rootKind}]`;\n}\n\nexport function isFederatedGraphRootType(type: NamedType) {\n return type.name.startsWith('[') && type.name.endsWith(']');\n}\n\n/**\n * A vertex of a query graph, which points to a type (definition) in a particular graphQL schema (the `source` being\n * an identifier for that schema).\n *\n * @see QueryGraph\n */\nexport class Vertex {\n hasReachableCrossSubgraphEdges: boolean = false;\n // @provides works by creating duplicates of the vertex/type involved in the provides and adding the provided\n // edges only to those copy. This means that with @provides, you can have more than one vertex per-type-and-subgraph\n // in a query graph. Which is fined, but this `provideId` allows to distinguish if a vertex was created as part of\n // this @provides duplication or not. The value of this field has no other meaning than to be unique per-@provide,\n // and so all the vertex copied for a given @provides application will have the same `provideId`. Overall, this\n // mostly exists for debugging visualization.\n provideId: number | undefined;\n\n constructor(\n /** Index used for this vertex in the query graph it is part of. */\n readonly index: number,\n /** The graphQL type the vertex points to. */\n readonly type: NamedType,\n /**\n * An identifier of the underlying schema containing the `type` this vertex points to.\n * This is mainly used in \"federated\" query graphs, where the `source` is a subgraph name.\n */\n readonly source : string\n ) {}\n\n toString(): string {\n const label = `${this.type}(${this.source})`;\n return this.provideId ? `${label}-${this.provideId}` : label;\n }\n}\n\n/**\n * A \"root\" `Vertex`, that is a vertex that one of the root of a query graph.\n *\n * @see Vertex\n * @see QueryGraph.roots\n */\nexport class RootVertex extends Vertex {\n constructor(\n readonly rootKind: SchemaRootKind,\n index: number,\n type: NamedType,\n source : string\n ) {\n super(index, type, source);\n }\n\n toString(): string {\n return super.toString() + '*';\n }\n}\n\nfunction toRootVertex(vertex: Vertex, rootKind: SchemaRootKind): RootVertex {\n return new RootVertex(rootKind, vertex.index, vertex.type, vertex.source);\n}\n\nexport function isRootVertex(vertex: Vertex): vertex is RootVertex {\n return vertex instanceof RootVertex;\n}\n\nexport interface OverrideCondition {\n label: string;\n condition: boolean;\n}\n\nexport type ContextCondition = {\n context: string;\n subgraphName: string;\n namedParameter: string;\n selection: string;\n typesWithContextSet: Set;\n argType: Type,\n coordinate: string;\n}\n\n/**\n * An edge of a query graph.\n *\n * Query graphs are directed and an edge goes from its `head` vertex to its `tail` one.\n * Edges also have additional metadata: their `transition` and, optionally, `conditions`.\n */\nexport class Edge {\n private _conditions?: SelectionSet;\n \n public requiredContexts: ContextCondition[] = [];\n \n constructor(\n /**\n * Index used for this edge in the query graph it is part of (note that this index is \"scoped\" within\n * the head vertex, meaning that if 2 different vertices of the same query graph both have a single\n * out-edge, then both of those edges have index 0, and if a vertex has 3 out-edges, their index will\n * be 0, 1 and 2).\n */\n public readonly index: number,\n /**\n * The vertex from which the edge starts.\n */\n public readonly head: Vertex,\n /**\n * The vertex on which the edge ends.\n */\n public readonly tail: Vertex,\n /**\n * Indicates what kind of edges this is and what the edges does/represents.\n * For instance, if the edge represents a field, the `transition` will be a `FieldCollection` transition\n * and will link to the definition of the field it represents.\n *\n * @see Transition\n */\n public readonly transition: Transition,\n /**\n * Optional conditions on an edge.\n *\n * Conditions are a select of selections (in the graphQL sense) that the traversal of a query graph\n * needs to \"collect\" (traverse edges with transitions corresponding to those selections) in order\n * to be able to collect that edge.\n *\n * Conditions are primarily used for edges corresponding to @key, in which case they correspond\n * to the fields composing the key. In other words, for a key edges, conditions basically represents\n * the fact that you need the key to be able to use a key edge.\n *\n * Outside of keys, @requires also rely on conditions.\n */\n conditions?: SelectionSet,\n /**\n * Edges can require that an override condition (provided during query\n * planning) be met in order to be taken. This is used for progressive\n * @override, where (at least) 2 subgraphs can resolve the same field, but\n * one of them has an @override with a label. If the override condition\n * matches the query plan parameters, this edge can be taken.\n */\n public overrideCondition?: OverrideCondition,\n \n /**\n * Potentially multiple context conditions. When @fromContext is used on a argument definition, the edge representing\n * the argument's field needs to reflect that the condition must be satisfied in order for the edge to be taken\n */\n requiredContexts?: ContextCondition[],\n ) {\n this._conditions = conditions;\n if (requiredContexts) {\n this.requiredContexts = [...requiredContexts];\n }\n }\n\n get conditions(): SelectionSet | undefined {\n return this._conditions;\n }\n\n isEdgeForField(name: string): boolean {\n return this.transition.kind === 'FieldCollection' && this.transition.definition.name === name;\n }\n\n matchesSupergraphTransition(otherTransition: Transition): boolean {\n assert(otherTransition.collectOperationElements, () => `Supergraphs shouldn't have transition that don't collect elements; got ${otherTransition}\"`);\n const transition = this.transition;\n switch (transition.kind) {\n case 'FieldCollection': return otherTransition.kind === 'FieldCollection' && transition.definition.name === otherTransition.definition.name;\n case 'DownCast': return otherTransition.kind === 'DownCast' && transition.castedType.name === otherTransition.castedType.name;\n case 'InterfaceObjectFakeDownCast': return otherTransition.kind === 'DownCast' && transition.castedTypeName === otherTransition.castedType.name;\n default: return false;\n }\n }\n\n changesSubgraph(): boolean {\n return this.head.source !== this.tail.source;\n }\n\n label(): string {\n if (this.transition instanceof SubgraphEnteringTransition && !this._conditions) {\n return \"\";\n }\n\n let conditionsString = (this._conditions ?? '').toString();\n if (this.overrideCondition) {\n if (conditionsString.length) conditionsString += ', ';\n conditionsString += `${this.overrideCondition.label} = ${this.overrideCondition.condition}`;\n }\n // we had at least some condition, add the turnstile and spacing\n if (conditionsString.length) conditionsString += ' \u22A2 ';\n\n return conditionsString + this.transition.toString();\n }\n\n withNewHead(newHead: Vertex): Edge {\n return new Edge(\n this.index,\n newHead,\n this.tail,\n this.transition,\n this._conditions,\n this.overrideCondition,\n this.requiredContexts,\n );\n }\n\n addToConditions(newConditions: SelectionSet) {\n this._conditions = this._conditions\n ? new SelectionSetUpdates().add(this._conditions).add(newConditions).toSelectionSet(this._conditions.parentType)\n : newConditions;\n }\n \n addToContextConditions(contextConditions: ContextCondition[]) {\n this.requiredContexts.push(...contextConditions);\n }\n\n isKeyOrRootTypeEdgeToSelf(): boolean {\n return this.head === this.tail && (this.transition.kind === 'KeyResolution' || this.transition.kind === 'RootTypeResolution');\n }\n\n satisfiesOverrideConditions(conditionsToCheck: Map) {\n if (!this.overrideCondition) return true;\n const { label, condition } = this.overrideCondition;\n return conditionsToCheck.has(label) ? conditionsToCheck.get(label) === condition : false;\n }\n\n toString(): string {\n return `${this.head} -> ${this.tail} (${this.label()})`;\n }\n}\n\n/**\n * An immutable directed graph data structure (built of vertices and edges) that is layered over one or multiple\n * graphQL schema, that aims to facilitate reasoning about queries expressed on the underlying schema.\n *\n * On top of its set of vertices and edges, a query graph exposes:\n * - its set of \"sources\": pointers to the graphQL schema on which the query graph was built.\n * - a set of distinguished vertices called \"root\" vertices. A query graph has at most one root\n * vertex per `SchemaRootKind`, and those vertices are usually entry points for traversals of\n * a query graph.\n *\n * In practice, the code builds 2 \"kind\" of query graphs:\n * 1. a supergraph query graph, which is built on top of a supergraph API schema (@see buildGraph()),\n * and is built to reason about user queries (made on the supergraph API). This supergraph query\n * graph is used to validate composition.\n * 2. a \"federated\" query graph, which is a single graph built on top of a) a number of subgraph\n * API schema and b) the additional federation directives on those subgraphs (@see buildFederatedQueryGraph()).\n * This query graph is used both for validating composition and for query planning.\n *\n * Note that this class handles both cases, but a \"supergraph query graph\" will, by construction, have\n * a few more invariants than a \"federated query graph\". Including (but not necessarily limited to):\n * - edges in a super graph query graph will never have `conditions` or 'key' edges (edges with a `KeyResolution` edges).\n * - supergraph query graphs will have a single value in `sources` (the supergraph schema).\n *\n * Also note that as query graphs are about reasoning about queries over schema, they only contain vertices\n * that points to \"reachable\" types (reachable from any kind of operations).\n */\nexport class QueryGraph {\n /**\n * Given an edge, returns the possible edges that can follow it \"productively\", that is without creating\n * a trivially inefficient path.\n *\n * More precisely, `nonTrivialFollowupEdges(e)` is equivalent calling `outEdges(e.tail)` and filtering\n * the edges that \"never make sense\" after `e`, which mainly amounts to avoiding chaining key edges\n * when we know there is guaranteed to be a better option. As an example, suppose we have 3 subgraphs\n * A, B and C which all defined a `@key(fields: \"id\")` on some entity type `T`. Then it is never\n * interesting to take that key edge from B -> C after A -> B because if we're in A and want to get\n * to C, we can always do A -> C (of course, this is only true because it's the \"same\" key).\n *\n * See `preComputeNonTrivialFollowupEdges` for more details on which exact edges are filtered.\n *\n * Lastly, note that the main reason for exposing this method is that its result is pre-computed.\n * Which in turn is done for performance reasons: having the same key defined in multiple subgraphs\n * is _the_ most common pattern, and while our later algorithms (composition validation and query\n * planning) would know to not select those trivially inefficient \"detour\", they might have to redo\n * those checks many times and pre-computing once it is significantly faster (and pretty easy).\n * Fwiw, when originally introduced, this optimization lowered composition validation on a big\n * composition (100+ subgraphs) from ~4 \"minutes\" to ~10 seconds.\n */\n readonly nonTrivialFollowupEdges: (edge: Edge) => readonly Edge[];\n\n /**\n * Creates a new query graph.\n *\n * This isn't meant to be be called directly outside of `GraphBuilder.build`.\n */\n constructor(\n /** A name to identify the graph. Mostly for pretty-printing/debugging purpose. */\n readonly name: string,\n /** The vertices of the query graph. The index of each vertex in the array will be the value of its `Vertex.index` value. */\n readonly vertices: Vertex[],\n /**\n * For each vertex, the edges that originate from that array. This array has the same length as `vertices` and `_outEdges[i]`\n * is an array of all the edges starting at vertices[i].\n */\n private readonly _outEdges: Edge[][],\n /**\n * A map that associate type names of the underlying schema on which this query graph was built to each of the vertex\n * (vertex index) that points to a type of that name. Note that in a \"supergraph query graph\", each type name will only\n * map to a single vertex,\n */\n private readonly typesToVertices: MultiMap,\n /** The set of distinguished root vertices (pointers to vertices in `vertices`), keyed by their kind. */\n private readonly rootVertices: MapWithCachedArrays,\n /**\n * The sources on which the query graph was built, that is a set (which can be of size 1) of graphQL schema keyed by\n * the name identifying them. Note that the `source` string in the `Vertex` of a query graph is guaranteed to be\n * valid key in this map.\n */\n readonly sources: ReadonlyMap,\n \n readonly subgraphToArgs: Map,\n \n readonly subgraphToArgIndices: Map>,\n\n readonly schema: Schema,\n ) {\n this.nonTrivialFollowupEdges = preComputeNonTrivialFollowupEdges(this);\n }\n\n /** The number of vertices in this query graph. */\n verticesCount(): number {\n return this.vertices.length;\n }\n\n /** The number of edges in this query graph. */\n edgesCount(): number {\n // We could count edges as we add them and pass it to the ctor. For now though, it's not meant to be\n // on a hot path, so recomputing is probably fine.\n return this._outEdges.reduce((acc, v) => acc + v.length, 0);\n }\n\n /**\n * The set of `SchemaRootKind` for which this query graph has a root vertex (for\n * which `root(SchemaRootKind)` will _not_ return `undefined`).\n */\n rootKinds(): readonly SchemaRootKind[] {\n return this.rootVertices.keys();\n }\n\n /**\n * The set of root vertices in this query graph.\n */\n roots(): readonly RootVertex[] {\n return this.rootVertices.values();\n }\n\n /**\n * The root vertex corresponding to the provided root kind, if this query graph has one.\n *\n * @param kind - the root kind for which to get the root vertex.\n * @returns the root vertex for `kind` if this query graph has one.\n */\n root(kind: SchemaRootKind): RootVertex | undefined {\n return this.rootVertices.get(kind);\n }\n\n /**\n * The edges out of the provided vertex.\n *\n * @param vertex - the vertex for which to return out edges. This method _assumes_ that\n * the provided vertex is a vertex of this query graph (and its behavior is undefined\n * if it isn't).\n * @param includeKeyAndRootTypeEdgesToSelf - whether key/root type edges that stay on the same\n * vertex should be included. This default to `false` are those are rarely useful. More\n * precisely, the only current use of them is for @defer where they may be needed to re-enter\n * the current subgraph in a deferred section.\n * @returns the list of all the edges out of this vertex.\n */\n outEdges(vertex: Vertex, includeKeyAndRootTypeEdgesToSelf: boolean = false): readonly Edge[] {\n const allEdges = this._outEdges[vertex.index];\n return includeKeyAndRootTypeEdgesToSelf ? allEdges : allEdges.filter((e) => !e.isKeyOrRootTypeEdgeToSelf())\n }\n\n /**\n * The number of edges out of the provided vertex.\n *\n * This is a shortcut for `this.outEdges(vertex, true).length`, and the reason it considers\n * edge-to-self by default while `this.outEdges` doesn't is that this method is generally\n * used to size other arrays indexed by edges index, and so we want to consider all edges\n * in general.\n */\n outEdgesCount(vertex: Vertex): number {\n return this._outEdges[vertex.index].length;\n }\n\n /**\n * The edge out of the provided vertex at the provided (edge) index.\n *\n * @param vertex - the vertex for which to return the out edge. This method _assumes_ that\n * the provided vertex is a vertex of this query graph (and its behavior is undefined\n * if it isn't).\n * @param edgeIndex - the edge index (relative to `vertex`, see `Edge.index`) to retrieve.\n * @returns the `edgeIndex`^th edge out of `vertex`, if such edges exists.\n */\n outEdge(vertex: Vertex, edgeIndex: number): Edge | undefined {\n return this._outEdges[vertex.index][edgeIndex];\n }\n\n /**\n * Whether the provided vertex is a terminal one (has no out edges).\n *\n * @param vertex - the vertex to check.\n * @returns whether the provided vertex is terminal.\n */\n isTerminal(vertex: Vertex): boolean {\n return this.outEdgesCount(vertex) === 0;\n }\n\n /**\n * The set of vertices whose associated type (see `Vertex.type`) is of type `typeName`.\n */\n verticesForType(typeName: string): Vertex[] {\n const indexes = this.typesToVertices.get(typeName);\n return indexes == undefined ? [] : indexes.map(i => this.vertices[i]);\n }\n}\n\n/**\n * A utility class that allows to associate state to the vertices and/or edges of a query graph.\n *\n * @param VertexState - the type of the state associated to vertices.\n * @param EdgeState - the type of the state associated to edges. Defaults to `undefined`, which\n * means that state is only associated to vertices.\n */\nexport class QueryGraphState {\n // Store some \"user\" state for each vertex (accessed by index)\n private readonly verticesStates: Map = new Map();\n private readonly adjacenciesStates: Map> = new Map();\n\n /**\n * Associates the provided state to the provided vertex.\n *\n * @param vertex - the vertex to which state should be associated. This method _assumes_\n * that the provided vertex is a vertex of the query graph against which this\n * `QueryGraphState` was created (and its behavior is undefined if it isn't).\n * @param state - the state/value to associate to `vertex`.\n */\n setVertexState(vertex: Vertex, state: VertexState) {\n this.verticesStates.set(vertex.index, state);\n }\n\n /**\n * Removes the state associated to the provided vertex (if any is).\n *\n * @param vertex - the vertex for which state should be removed. This method _assumes_\n * that the provided vertex is a vertex of the query graph against which this\n * `QueryGraphState` was created (and its behavior is undefined if it isn't).\n */\n removeVertexState(vertex: Vertex) {\n this.verticesStates.delete(vertex.index);\n }\n\n /**\n * Retrieves the state associated to the provided vertex (if any is).\n *\n * @param vertex - the vertex for which state should be retrieved. This method _assumes_\n * that the provided vertex is a vertex of the query graph against which this\n * `QueryGraphState` was created (and its behavior is undefined if it isn't).\n * @return the state associated to `vertex`, if any.\n */\n getVertexState(vertex: Vertex): VertexState | undefined {\n return this.verticesStates.get(vertex.index);\n }\n\n /**\n * Associates the provided state to the provided edge.\n *\n * @param edge - the edge to which state should be associated. This method _assumes_\n * that the provided edge is an edge of the query graph against which this\n * `QueryGraphState` was created (and its behavior is undefined if it isn't).\n * @param state - the state/value to associate to `edge`.\n */\n setEdgeState(edge: Edge, state: EdgeState) {\n let edgeMap = this.adjacenciesStates.get(edge.head.index)\n if (!edgeMap) {\n edgeMap = new Map();\n this.adjacenciesStates.set(edge.head.index, edgeMap);\n }\n edgeMap.set(edge.index, state);\n }\n\n /**\n * Removes the state associated to the provided edge (if any is).\n *\n * @param edge - the edge for which state should be removed. This method _assumes_\n * that the provided edge is an edge of the query graph against which this\n * `QueryGraphState` was created (and its behavior is undefined if it isn't).\n */\n removeEdgeState(edge: Edge) {\n const edgeMap = this.adjacenciesStates.get(edge.head.index);\n if (edgeMap) {\n edgeMap.delete(edge.index);\n if (edgeMap.size === 0) {\n this.adjacenciesStates.delete(edge.head.index);\n }\n }\n }\n\n /**\n * Retrieves the state associated to the provided edge (if any is).\n *\n * @param edge - the edge for which state should be retrieved. This method _assumes_\n * that the provided vertex is an edge of the query graph against which this\n * `QueryGraphState` was created (and its behavior is undefined if it isn't).\n * @return the state associated to `edge`, if any.\n */\n getEdgeState(edge: Edge): EdgeState | undefined {\n return this.adjacenciesStates.get(edge.head.index)?.get(edge.index);\n }\n\n toDebugString(\n vertexMapper: (s: VertexState) => string,\n edgeMapper: (e: EdgeState) => string\n ): string {\n const vs = Array.from(this.verticesStates.entries()).sort(([a], [b]) => a - b).map(([idx, state]) =>\n ` ${idx}: ${!state ? \"\" : vertexMapper(state)}`\n ).join(\"\\n\");\n const es = Array.from(this.adjacenciesStates.entries()).sort(([a], [b]) => a - b).map(([vIdx, adj]) =>\n Array.from(adj.entries()).sort(([a], [b]) => a - b).map(([eIdx, state]) =>\n ` ${vIdx}[${eIdx}]: ${!state ? \"\" : edgeMapper(state)}`\n ).join(\"\\n\")\n ).join(\"\\n\");\n return `vertices = {${vs}\\n}, edges = {${es}\\n}`;\n }\n}\n\n/**\n * Builds the query graph corresponding to the provided schema.\n *\n * Note that this method and mainly exported for the sake of testing but should rarely, if\n * ever, be used otherwise. Instead use either `buildSupergraphAPIQueryGraph` or\n * `buildFederatedQueryGraph` which are more explicit.\n *\n * @param name - the name to use for the created graph and as \"source\" name for the schema.\n * @param schema - the schema for which to build the query graph.\n * @param overrideLabelsByCoordinate - A Map of coordinate -> override label to apply to the query graph.\n * Additional \"virtual\" edges will be created for progressively overridden fields in order to ensure that\n * all possibilities are considered during query planning.\n * @returns the query graph corresponding to `schema` \"API\" (in the sense that no federation\n * directives are taken into account by this method in the building of the query graph).\n */\nexport function buildQueryGraph(name: string, schema: Schema, overrideLabelsByCoordinate?: Map): QueryGraph {\n return buildGraphInternal(name, schema, false, undefined, overrideLabelsByCoordinate);\n}\n\nfunction buildGraphInternal(\n name: string,\n schema: Schema,\n addAdditionalAbstractTypeEdges: boolean,\n supergraphSchema?: Schema,\n overrideLabelsByCoordinate?: Map,\n): QueryGraph {\n const builder = new GraphBuilderFromSchema(\n name,\n schema,\n supergraphSchema ? { apiSchema: supergraphSchema.toAPISchema(), isFed1: isFed1Supergraph(supergraphSchema) } : undefined,\n overrideLabelsByCoordinate,\n );\n for (const rootType of schema.schemaDefinition.roots()) {\n builder.addRecursivelyFromRoot(rootType.rootKind, rootType.type);\n }\n if (builder.isFederatedSubgraph) {\n builder.addInterfaceEntityEdges();\n }\n if (addAdditionalAbstractTypeEdges) {\n builder.addAdditionalAbstractTypeEdges();\n }\n return builder.build();\n}\n\n/**\n * Builds a \"supergraph API\" query graph based on the provided supergraph schema.\n *\n * A \"supergraph API\" query graph is one that is used to reason about queries against said\n * supergraph API, but @see QueryGraph for more details.\n *\n * @param supergraph - the schema of the supergraph for which to build the query graph.\n * The provided schema should generally be a \"supergraph\" as generated by composition merging.\n * Note however that the query graph built by this method is only based on the supergraph\n * API and doesn't rely on the join spec directives, so it is valid to also directly\n * pass a schema that directly corresponds to the supergraph API.\n * @returns the built query graph.\n */\nexport function buildSupergraphAPIQueryGraph(supergraph: Supergraph): QueryGraph {\n const apiSchema = supergraph.apiSchema();\n\n const overrideLabelsByCoordinate = new Map();\n const joinFieldApplications = validateSupergraph(supergraph.schema)[1]\n .fieldDirective(supergraph.schema).applications();\n for (const application of joinFieldApplications) {\n const overrideLabel = application.arguments().overrideLabel;\n if (overrideLabel) {\n overrideLabelsByCoordinate.set(\n (application.parent as FieldDefinition).coordinate,\n overrideLabel\n );\n }\n }\n return buildQueryGraph(\"supergraph\", apiSchema, overrideLabelsByCoordinate);\n}\n\n/**\n * Builds a \"federated\" query graph based on the provided supergraph schema.\n *\n * A \"federated\" query graph is one that is used to reason about queries made by a\n * gateway/router against a set of federated subgraph services.\n *\n * @see QueryGraph\n *\n * @param supergraph - the supergraph for which to build the query graph.\n * @param forQueryPlanning - whether the build query graph is built for query planning (if\n * so, it will include some additional edges that don't impact validation but allow\n * to generate more efficient query plans).\n * @returns the built federated query graph.\n */\nexport function buildFederatedQueryGraph(supergraph: Supergraph, forQueryPlanning: boolean): QueryGraph {\n const subgraphs = supergraph.subgraphs();\n const graphs = [];\n for (const subgraph of subgraphs) {\n graphs.push(buildGraphInternal(subgraph.name, subgraph.schema, forQueryPlanning, supergraph.schema));\n }\n return federateSubgraphs(supergraph.schema, graphs);\n}\n\nfunction federatedProperties(subgraphs: QueryGraph[]) : [number, Set, Schema[]] {\n let vertices = 0;\n const rootKinds = new Set();\n const schemas: Schema[] = [];\n for (const subgraph of subgraphs) {\n vertices += subgraph.verticesCount();\n subgraph.rootKinds().forEach(k => rootKinds.add(k));\n assert(subgraph.sources.size === 1, () => `Subgraphs should only have one sources, got ${subgraph.sources.size} ([${mapKeys(subgraph.sources).join(', ')}])`);\n schemas.push(firstOf(subgraph.sources.values())!);\n }\n return [vertices + rootKinds.size, rootKinds, schemas];\n}\n\nfunction resolvableKeyApplications(\n keyDirective: DirectiveDefinition<{fields: any, resolvable?: boolean}>,\n type: NamedType\n): Directive[] {\n const applications: Directive[] = type.appliedDirectivesOf(keyDirective);\n return applications.filter((application) => application.arguments().resolvable ?? true);\n}\n\nfunction federateSubgraphs(supergraph: Schema, subgraphs: QueryGraph[]): QueryGraph {\n const [verticesCount, rootKinds, schemas] = federatedProperties(subgraphs);\n const builder = new GraphBuilder(supergraph, verticesCount);\n rootKinds.forEach(k => builder.createRootVertex(\n k,\n new ObjectType(federatedGraphRootTypeName(k)),\n FEDERATED_GRAPH_ROOT_SOURCE,\n FEDERATED_GRAPH_ROOT_SCHEMA\n ));\n\n // We first add all the vertices and edges from the subgraphs\n const copyPointers: SubgraphCopyPointer[] = new Array(subgraphs.length);\n for (const [i, subgraph] of subgraphs.entries()) {\n copyPointers[i] = builder.copyGraph(subgraph);\n }\n\n // We then add the edges from supergraph roots to the subgraph ones.\n // Also, for each root kind, we also add edges from the corresponding root type of each subgraph to the root type of other subgraphs\n // (and for @defer, like for @key, we also add self-link looping on the current subgraph).\n // This essentially encode the fact that if a field return a root type, we can always query any subgraph from that point.\n for (const [i, subgraph] of subgraphs.entries()) {\n const copyPointer = copyPointers[i];\n for (const rootKind of subgraph.rootKinds()) {\n const rootVertex = copyPointer.copiedVertex(subgraph.root(rootKind)!);\n builder.addEdge(builder.root(rootKind)!, rootVertex, subgraphEnteringTransition)\n\n for (const [j, otherSubgraph] of subgraphs.entries()) {\n const otherRootVertex = otherSubgraph.root(rootKind);\n if (otherRootVertex) {\n const otherCopyPointer = copyPointers[j];\n builder.addEdge(rootVertex, otherCopyPointer.copiedVertex(otherRootVertex), new RootTypeResolution(rootKind));\n }\n }\n }\n }\n\n // Then we add/update edges for @key and @requires. We do @provides in a second step because its handling requires\n // copying vertex and their edges, and it's easier to reason about this if we know all keys have already been created.\n for (const [i, subgraph] of subgraphs.entries()) {\n const subgraphSchema = schemas[i];\n const subgraphMetadata = federationMetadata(subgraphSchema);\n assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n const keyDirective = subgraphMetadata.keyDirective();\n const requireDirective = subgraphMetadata.requiresDirective();\n simpleTraversal(\n subgraph,\n v => {\n const type = v.type;\n for (const keyApplication of resolvableKeyApplications(keyDirective, type)) {\n // The @key directive creates an edge from every subgraphs (having that type)\n // to the current subgraph. In other words, the fact this subgraph has a @key means\n // that the service of the current subgraph can be queried for the entity (through\n // _entities) as long as \"the other side\" can provide the proper field values.\n // Note that we only require that \"the other side\" can gather the key fields (through\n // the path conditions; note that it's possible those conditions are never satisfiable),\n // but don't care that it defines the same key, because it's not a technical\n // requirement (and while we probably don't want to allow in general a type to be an\n // entity in some subgraphs but not other, this is not the place to impose that\n // restriction, and this may be useful at least temporarily to allow convert a type to\n // an entity).\n assert(isInterfaceType(type) || isObjectType(type), () => `Invalid \"@key\" application on non Object || Interface type \"${type}\"`);\n const isInterfaceObject = subgraphMetadata.isInterfaceObjectType(type);\n const conditions = parseFieldSetArgument({ parentType: type, directive: keyApplication, normalize: true });\n\n // We'll look at adding edges from \"other subgraphs\" to the current type. So the tail of all the edges\n // we'll build in this branch is always going to be the same.\n const tail = copyPointers[i].copiedVertex(v);\n // Note that each subgraph has a key edge to itself (when i === j below). We usually ignore\n // this edges, but they exists for the special case of @defer, where we technically may have\n // to take such \"edge-to-self\" as a mean to \"re-enter\" a subgraph for a deferred section.\n for (const [j, otherSubgraph] of subgraphs.entries()) {\n const otherVertices = otherSubgraph.verticesForType(type.name);\n if (otherVertices.length > 0) {\n // Note that later, when we've handled @provides, this might not be true anymore as @provides may create copy of a\n // certain type. But for now, it's true.\n assert(\n otherVertices.length == 1,\n () => `Subgraph ${j} should have a single vertex for type ${type.name} but got ${otherVertices.length}: ${inspect(otherVertices)}`);\n\n const otherVertex = otherVertices[0];\n // The edge goes from the otherSubgraph to the current one.\n const head = copyPointers[j].copiedVertex(otherVertex);\n const tail = copyPointers[i].copiedVertex(v);\n builder.addEdge(head, tail, new KeyResolution(), conditions);\n }\n\n // Additionally, if the key is on an @interfaceObject and this \"other\" subgraph has some of the implementations\n // of the corresponding interface, then we need an edge from each of those implementations (to the @interfaceObject).\n // This is used when an entity of specific implementation is queried first, but then some of the\n // requested fields are only provided by that @interfaceObject.\n if (isInterfaceObject) {\n const typeInSupergraph = supergraph.type(type.name);\n assert(typeInSupergraph && isInterfaceType(typeInSupergraph), () => `Type ${type} is an interfaceObject in subgraph ${i}; should be an interface in the supergraph`);\n for (const implemTypeInSupergraph of typeInSupergraph.possibleRuntimeTypes()) {\n // That implementation type may or may not exists in \"otherSubgraph\". If it doesn't, we just have nothing to\n // do for that particular impelmentation. If it does, we'll add the proper edge, but note that we're guaranteed\n // to have at most one vertex for the same reason than mentioned above (only the handling @provides will make it\n // so that there can be more than one vertex per type).\n const implemVertice = otherSubgraph.verticesForType(implemTypeInSupergraph.name)[0];\n if (!implemVertice) {\n continue;\n }\n\n const implemHead = copyPointers[j].copiedVertex(implemVertice);\n // The key goes from the implementation type to the @interfaceObject one, so the conditions\n // will be \"fetched\" on the implementation type, but `conditions` has been parsed on the\n // interface type, so it will use fields from the interface, not the implementation type.\n // So we re-parse the condition using the implementation type: this could fail, but in\n // that case it just mean that key is not usable.\n const implemType = implemVertice.type;\n assert(isCompositeType(implemType), () => `${implemType} should be composite since it implements ${typeInSupergraph} in the supergraph`);\n try {\n const implConditions = parseFieldSetArgument({ parentType: implemType, directive: keyApplication, validate: false, normalize: true });\n builder.addEdge(implemHead, tail, new KeyResolution(), implConditions);\n } catch (e) {\n // Ignored on purpose: it just means the key is not usable on this subgraph.\n }\n }\n }\n }\n }\n },\n e => {\n // Handling @requires\n if (e.transition.kind === 'FieldCollection') {\n const type = e.head.type;\n const field = e.transition.definition;\n assert(isCompositeType(type), () => `Non composite type \"${type}\" should not have field collection edge ${e}`);\n for (const requiresApplication of field.appliedDirectivesOf(requireDirective)) {\n const conditions = parseFieldSetArgument({ parentType: type, directive: requiresApplication, normalize: true });\n const head = copyPointers[i].copiedVertex(e.head);\n // We rely on the fact that the edge indexes will be the same in the copied builder. But there is no real reason for\n // this to not be the case at this point so...\n const copiedEdge = builder.edge(head, e.index);\n copiedEdge.addToConditions(conditions);\n }\n }\n return true; // Always traverse edges\n }\n );\n }\n\n /**\n * Handling progressive overrides here. For each progressive @override\n * application (with a label), we want to update the edges to the overridden\n * field within the \"to\" and \"from\" subgraphs with their respective override\n * condition (the label and a T/F value). The \"from\" subgraph will have an\n * override condition of `false`, whereas the \"to\" subgraph will have an\n * override condition of `true`.\n */\n const subgraphsByName = new Map(subgraphs.map((s) => [s.name, s]));\n for (const [i, toSubgraph] of subgraphs.entries()) {\n const subgraphSchema = schemas[i];\n const subgraphMetadata = federationMetadata(subgraphSchema);\n assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n\n for (const application of subgraphMetadata.overrideDirective().applications()) {\n const { from, label } = application.arguments();\n if (!label) continue;\n const fromSubgraph = subgraphsByName.get(from);\n assert(fromSubgraph, () => `Subgraph ${from} not found`);\n\n function updateEdgeWithOverrideCondition(subgraph: QueryGraph, label: string, condition: boolean) {\n const field = application.parent;\n assert(field instanceof NamedSchemaElement, () => `@override should have been on a field, got ${field}`);\n const typeName = field.parent.name;\n\n const [vertex, ...unexpectedAdditionalVertices] = subgraph.verticesForType(typeName);\n assert(vertex && unexpectedAdditionalVertices.length === 0, () => `Subgraph ${subgraph.name} should have exactly one vertex for type ${typeName}`);\n\n const subgraphEdges = subgraph.outEdges(vertex);\n for (const edge of subgraphEdges) {\n if (\n edge.transition.kind === \"FieldCollection\"\n && edge.transition.definition.name === field.name\n ) {\n const head = copyPointers[subgraphs.indexOf(subgraph)].copiedVertex(vertex);\n const copiedEdge = builder.edge(head, edge.index);\n\n copiedEdge.overrideCondition = {\n label,\n condition,\n };\n }\n }\n }\n\n updateEdgeWithOverrideCondition(toSubgraph, label, true);\n updateEdgeWithOverrideCondition(fromSubgraph, label, false);\n }\n }\n \n /** \n * Now we'll handle instances of @fromContext. For each argument with @fromContext, I want to add its corresponding \n * context conditions to the edge corresponding to the argument's field\n */\n const subgraphToArgs: Map = new Map();\n const subgraphToArgIndices: Map> = new Map();\n \n for (const [i, subgraph] of subgraphs.entries()) {\n const subgraphSchema = schemas[i];\n const subgraphMetadata = federationMetadata(subgraphSchema);\n assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n \n const contextNameToTypes: Map> = new Map();\n \n for (const application of subgraphMetadata.contextDirective().applications()) {\n const { name: context } = application.arguments();\n if (contextNameToTypes.has(context)) {\n contextNameToTypes.get(context)!.add(application.parent.name);\n } else {\n contextNameToTypes.set(context, new Set([application.parent.name]));\n }\n }\n \n const coordinateMap: Map = new Map();\n for (const application of subgraphMetadata.fromContextDirective().applications()) {\n const { field } = application.arguments();\n const { context, selection } = parseContext(field);\n \n assert(context, () => `FieldValue has invalid format. Context not found ${field}`);\n assert(selection, () => `FieldValue has invalid format. Selection not found ${field}`);\n const namedParameter = application.parent.name;\n const argCoordinate = application.parent.coordinate;\n const args = subgraphToArgs.get(subgraph.name) ?? [];\n args.push(argCoordinate);\n subgraphToArgs.set(subgraph.name, args);\n \n const fieldCoordinate = application.parent.parent.coordinate;\n const typesWithContextSet = contextNameToTypes.get(context);\n assert(typesWithContextSet, () => `Context ${context} is never set in subgraph`);\n const z = coordinateMap.get(fieldCoordinate);\n if (z) {\n z.push({ namedParameter, coordinate: argCoordinate, context, selection, typesWithContextSet, subgraphName: subgraph.name, argType: application.parent.type });\n } else {\n coordinateMap.set(fieldCoordinate, [{ namedParameter, coordinate: argCoordinate, context, selection, typesWithContextSet, subgraphName: subgraph.name, argType: application.parent.type }]);\n }\n }\n \n simpleTraversal(\n subgraph,\n _v => { return undefined; },\n e => {\n if (e.head.type.kind === 'ObjectType' && e.transition.kind === 'FieldCollection') {\n const coordinate = `${e.head.type.name}.${e.transition.definition.name}`;\n const requiredContexts = coordinateMap.get(coordinate);\n if (requiredContexts) {\n const headInSupergraph = copyPointers[i].copiedVertex(e.head);\n assert(headInSupergraph, () => `Vertex for type ${e.head.type.name} not found in supergraph`);\n const edgeInSupergraph = builder.edge(headInSupergraph, e.index);\n edgeInSupergraph.addToContextConditions(requiredContexts);\n }\n }\n return true;\n }\n );\n \n }\n\n // add contextual argument maps to builder\n for (const [i, subgraph] of subgraphs.entries()) {\n const subgraphName = subgraph.name;\n const args = subgraphToArgs.get(subgraph.name);\n if (args) {\n args.sort();\n const argToIndex = new Map();\n for (let idx=0; idx < args.length; idx++) {\n argToIndex.set(args[idx], `contextualArgument_${i+1}_${idx}`);\n }\n subgraphToArgIndices.set(subgraphName, argToIndex);\n }\n }\n \n builder.setContextMaps(subgraphToArgs, subgraphToArgIndices);\n \n // Now we handle @provides\n let provideId = 0;\n for (const [i, subgraph] of subgraphs.entries()) {\n const subgraphSchema = schemas[i];\n const subgraphMetadata = federationMetadata(subgraphSchema);\n assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n const providesDirective = subgraphMetadata.providesDirective();\n simpleTraversal(\n subgraph,\n _ => undefined,\n e => {\n // Handling @provides\n if (e.transition.kind === 'FieldCollection') {\n const type = e.head.type;\n const field = e.transition.definition;\n assert(isCompositeType(type), () => `Non composite type \"${type}\" should not have field collection edge ${e}`);\n for (const providesApplication of field.appliedDirectivesOf(providesDirective)) {\n ++provideId;\n const fieldType = baseType(field.type!);\n assert(isCompositeType(fieldType), () => `Invalid @provide on field \"${field}\" whose type \"${fieldType}\" is not a composite type`)\n const provided = parseFieldSetArgument({ parentType: fieldType, directive: providesApplication });\n const head = copyPointers[i].copiedVertex(e.head);\n const tail = copyPointers[i].copiedVertex(e.tail);\n // We rely on the fact that the edge indexes will be the same in the copied builder. But there is no real reason for\n // this to not be the case at this point so...\n const copiedEdge = builder.edge(head, e.index);\n // We make a copy of the `fieldType` vertex (with all the same edges), and we change this particular edge to point to the\n // new copy. From that, we can add all the provides edges to the copy.\n const copiedTail = builder.makeCopy(tail, provideId);\n builder.updateEdgeTail(copiedEdge, copiedTail);\n addProvidesEdges(subgraphSchema, builder, copiedTail, provided, provideId);\n }\n }\n return true; // Always traverse edges\n }\n );\n }\n\n // We now need to finish handling @interfaceObject types. More precisely, there is cases where only a/some implementation(s)\n // of a interface are queried, and that could apply to an interface that is an @interfaceObject in some sugraph. Consider\n // the following example:\n // ```graphql\n // type Query {\n // getIs: [I]\n // }\n //\n // type I @key(fields: \"id\") @interfaceObject {\n // id: ID!\n // x: Int\n // }\n // ```\n // where we suppose that `I` has some implementations say, `A`, `B` and `C`, in some other subgraph.\n // Now, consider query:\n // ```graphql\n // {\n // getIs {\n // ... on B {\n // x\n // }\n // }\n // }\n // ```\n // So here, we query `x` which the subgraph provides, but we only do so for one of the impelementation.\n // So in that case, we essentially need to figure out the `__typename` first (of more precisely, we need\n // to know the real __typename \"eventually\"; we could theoretically query `x` first, and then get the __typename\n // to know if we should keep the result or discard it, and that could be more efficient in certain case,\n // but as we don't know both 1) if `x` is expansive to resolve and 2) what the ratio of results from `getIs`\n // will be `B` versus some other implementation, it is \"safer\" to get the __typename first and only resolve `x`\n // when we need to).\n //\n // Long story short, to solve this, we create edges from @interfaceObject types to themselves for every implementation\n // types of the interface: those edges will be taken when we try to take a `... on B` condition, and those edge\n // have __typename as a condition, forcing to find __typename in another subgraph first.\n for (const [i, subgraph] of subgraphs.entries()) {\n const subgraphSchema = schemas[i];\n const subgraphMetadata = federationMetadata(subgraphSchema);\n assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n const interfaceObjectDirective = subgraphMetadata.interfaceObjectDirective();\n for (const application of interfaceObjectDirective.applications()) {\n const type = application.parent;\n assert(isObjectType(type), '@interfaceObject should have been on an object type');\n const vertex = copyPointers[i].copiedVertex(subgraph.verticesForType(type.name)[0]);\n const supergraphItf = supergraph.type(type.name);\n assert(supergraphItf && isInterfaceType(supergraphItf), () => `${type} has @interfaceObject in subgraph but has kind ${supergraphItf?.kind} in supergraph`)\n const condition = selectionSetOfElement(new Field(type.typenameField()!));\n for (const implementation of supergraphItf.possibleRuntimeTypes()) {\n builder.addEdge(vertex, vertex, new InterfaceObjectFakeDownCast(type, implementation.name), condition);\n }\n }\n }\n\n return builder.build(FEDERATED_GRAPH_ROOT_SOURCE);\n}\n\nfunction addProvidesEdges(schema: Schema, builder: GraphBuilder, from: Vertex, provided: SelectionSet, provideId: number) {\n const stack: [Vertex, SelectionSet][] = [[from, provided]];\n const source = from.source;\n while (stack.length > 0) {\n const [v, selectionSet] = stack.pop()!;\n // We reverse the selections to cancel the reversing that the stack does.\n for (const selection of selectionSet.selectionsInReverseOrder()) {\n const element = selection.element;\n if (element.kind == 'Field') {\n const fieldDef = element.definition;\n const existingEdge = builder.edges(v).find(e => e.transition.kind === 'FieldCollection' && e.transition.definition.name === fieldDef.name);\n if (existingEdge) {\n // If this is a leaf field, then we don't really have anything to do. Otherwise, we need to copy\n // the tail and continue propagating the provides from there.\n if (selection.selectionSet) {\n const copiedTail = builder.makeCopy(existingEdge.tail, provideId);\n builder.updateEdgeTail(existingEdge, copiedTail);\n stack.push([copiedTail, selection.selectionSet]);\n }\n } else {\n // There is no exisiting edges, which means that it's an edge added by the provide.\n // We find the existing vertex it leads to, if it exists and create a new one otherwise.\n const fieldType = baseType(fieldDef.type!);\n const existingTail = builder.verticesForType(fieldType.name).find(v => v.source === source);\n const newTail = existingTail ? existingTail : builder.createNewVertex(fieldType, v.source, schema);\n // If the field is a leaf, then just create the new edge and we're done. Othewise, we\n // should copy the vertex (unless we just created it), add the edge and continue.\n if (selection.selectionSet) {\n const copiedTail = existingTail ? builder.makeCopy(existingTail, provideId) : newTail;\n builder.addEdge(v, copiedTail, new FieldCollection(fieldDef, true));\n stack.push([copiedTail, selection.selectionSet]);\n } else {\n builder.addEdge(v, newTail, new FieldCollection(fieldDef, true));\n }\n }\n } else {\n const typeCondition = element.typeCondition;\n if (typeCondition) {\n const existingEdge = builder.edges(v).find(e => e.transition.kind === 'DownCast' && e.transition.castedType.name === typeCondition.name);\n // We always should have an edge: otherwise it would mean we list a type condition for a type that isn't in the subgraph, but the\n // @provides shouldn't have validated in the first place (another way to put it is, contrary to fields, there is no way currently\n // to mark a full type as @external).\n assert(existingEdge, () => `Shouldn't have ${selection} with no corresponding edge on ${v} (edges are: [${builder.edges(v)}])`);\n const copiedTail = builder.makeCopy(existingEdge.tail, provideId);\n builder.updateEdgeTail(existingEdge, copiedTail);\n stack.push([copiedTail, selection.selectionSet!]);\n } else {\n // Essentially ignore the condition, it's useless\n stack.push([v, selection.selectionSet!]);\n }\n }\n }\n }\n}\n\ninterface SubgraphCopyPointer {\n copiedVertex(original: Vertex): Vertex;\n}\n\n/**\n * Temporary abstraction used to build a query graph.\n */\nclass GraphBuilder {\n private readonly vertices: Vertex[];\n private nextIndex: number = 0;\n private readonly outEdges: Edge[][];\n private readonly inEdges: Edge[][];\n private readonly typesToVertices: MultiMap = new MultiMap();\n private readonly rootVertices: MapWithCachedArrays = new MapWithCachedArrays();\n private readonly sources: Map = new Map();\n private subgraphToArgs: Map = new Map();\n private subgraphToArgIndices: Map> = new Map();\n readonly schema: Schema;\n\n constructor(schema: Schema, verticesCount?: number) {\n this.vertices = verticesCount ? new Array(verticesCount) : [];\n this.outEdges = verticesCount ? new Array(verticesCount) : [];\n this.inEdges = verticesCount ? new Array(verticesCount) : [];\n this.schema = schema;\n }\n\n verticesForType(typeName: string): Vertex[] {\n const indexes = this.typesToVertices.get(typeName);\n return indexes == undefined ? [] : indexes.map(i => this.vertices[i]);\n }\n \n root(kind: SchemaRootKind): Vertex | undefined {\n return this.rootVertices.get(kind);\n }\n\n addEdge(head: Vertex, tail: Vertex, transition: Transition, conditions?: SelectionSet, overrideCondition?: OverrideCondition, requiredContexts?: ContextCondition[]) {\n const headOutEdges = this.outEdges[head.index];\n const tailInEdges = this.inEdges[tail.index];\n const edge = new Edge(headOutEdges.length, head, tail, transition, conditions, overrideCondition, requiredContexts);\n headOutEdges.push(edge);\n tailInEdges.push(edge);\n\n if (head.source !== tail.source) {\n this.markInEdgesHasReachingCrossSubgraphEdge(head);\n }\n }\n\n markInEdgesHasReachingCrossSubgraphEdge(from: Vertex) {\n // When we mark a vertex, we mark all of its \"ancestor\" vertices, so if we\n // get vertex already marked, there is nothing more to do.\n if (from.hasReachableCrossSubgraphEdges) {\n return;\n }\n\n const stack = [from];\n while (stack.length > 0) {\n const v = stack.pop()!;\n v.hasReachableCrossSubgraphEdges = true;\n for (const edge of this.inEdges[v.index]) {\n // Again, no point in redoing work as soon as we read an aready marked vertec.\n // We also only follow in-edges within the same subgraph, as vertices on other subgraphs\n // will have been marked with their own cross-subgraph edges.\n if (edge.head.source === edge.tail.source && !edge.head.hasReachableCrossSubgraphEdges) {\n stack.push(edge.head);\n }\n }\n }\n }\n\n createNewVertex(type: NamedType, source: string, schema: Schema, index?: number): Vertex {\n if (!index) {\n index = this.nextIndex++;\n }\n const vertex = new Vertex(index, type, source);\n const previous = this.vertices[index];\n assert(!previous, () => `Overriding existing vertex ${previous} with ${vertex}`);\n this.vertices[index] = vertex;\n this.typesToVertices.add(type.name, index);\n this.outEdges[index] = [];\n this.inEdges[index] = [];\n if (!this.sources.has(source)) {\n this.sources.set(source, schema);\n }\n return vertex;\n }\n\n createRootVertex(kind: SchemaRootKind, type: NamedType, source: string, schema: Schema) {\n const vertex = this.createNewVertex(type, source, schema);\n assert(!this.rootVertices.has(kind), () => `Root vertex for ${kind} (${this.rootVertices.get(kind)}) already exists: cannot replace by ${vertex}`);\n this.setAsRoot(kind, vertex.index);\n }\n\n setAsRoot(kind: SchemaRootKind, index: number) {\n const vertex = this.vertices[index];\n assert(vertex, () => `Cannot set non-existing vertex at index ${index} as root ${kind}`);\n const rootVertex = toRootVertex(vertex, kind);\n this.vertices[vertex.index] = rootVertex;\n this.rootVertices.set(kind, rootVertex);\n const rootEdges = this.outEdges[vertex.index];\n for (let i = 0; i < rootEdges.length; i++) {\n rootEdges[i] = rootEdges[i].withNewHead(rootVertex);\n }\n }\n\n copyGraph(graph: QueryGraph): SubgraphCopyPointer {\n const offset = this.nextIndex;\n // Note that we don't use a normal traversal to do the copying because it's possible the provided `graph`\n // has some sub-parts that are not reachable from one of the roots but that we still want to copy those\n // sub-parts. The reason is that, while we don't care about unreachable parts in general, at the time\n // this method is called, we haven't added edges for @provides, and adding those edges may \"connect\" those\n // currently unreachable parts. And to be connected, they need to exist/have been copied in the first\n // place (note that this means we may copy some unreachable sub-parts that will _not_ be connected later (a subgraph\n // can well have genuinely unreachable definitions), but that's harmless).\n for (const vertex of graph.vertices) {\n const newHead = this.getOrCopyVertex(vertex, offset, graph);\n for (const edge of graph.outEdges(vertex, true)) {\n const newTail = this.getOrCopyVertex(edge.tail, offset, graph);\n this.addEdge(newHead, newTail, edge.transition, edge.conditions, edge.overrideCondition, edge.requiredContexts);\n }\n }\n this.nextIndex += graph.verticesCount();\n const that = this;\n return {\n copiedVertex(original: Vertex): Vertex {\n const vertex = that.vertices[original.index + offset];\n assert(vertex, () => `Vertex ${original} has no copy for offset ${offset}`);\n return vertex;\n }\n };\n }\n\n vertex(index: number): Vertex {\n return this.vertices[index];\n }\n\n edge(head: Vertex, index: number): Edge {\n return this.outEdges[head.index][index];\n }\n\n edges(head: Vertex): Edge[] {\n return this.outEdges[head.index];\n }\n\n /**\n * Creates a new vertex that is a full copy of the provided one, including having the same out-edge, but with no incoming edges.\n *\n * @param vertex - the vertex to copy.\n * @param provideId - if the vertex is copied for the sake of a `@provides`, an id that identify that provide and will be set on\n * the newly copied vertex.\n * @returns the newly created copy.\n */\n makeCopy(vertex: Vertex, provideId?: number): Vertex {\n const newVertex = this.createNewVertex(vertex.type, vertex.source, this.sources.get(vertex.source)!);\n newVertex.provideId = provideId;\n newVertex.hasReachableCrossSubgraphEdges = vertex.hasReachableCrossSubgraphEdges;\n for (const edge of this.outEdges[vertex.index]) {\n this.addEdge(newVertex, edge.tail, edge.transition, edge.conditions, edge.overrideCondition, edge.requiredContexts);\n }\n return newVertex;\n }\n\n /**\n * Replaces the provided edge by a copy but with the provided new tail vertex.\n *\n * @param edge - the edge to replace.\n * @param newTail - the tail to change in `edge`.\n * @returns the newly created edge that, as of this method returning, replaces `edge`.\n */\n updateEdgeTail(edge: Edge, newTail: Vertex): Edge {\n const newEdge = new Edge(edge.index, edge.head, newTail, edge.transition, edge.conditions, edge.overrideCondition, edge.requiredContexts);\n this.outEdges[edge.head.index][edge.index] = newEdge;\n // For in-edge, we need to remove the edge from the inputs of the previous tail,\n // and add it to the new tail.\n this.inEdges[edge.tail.index] = this.inEdges[edge.tail.index].filter((e) => e !== edge);\n this.inEdges[newTail.index].push(newEdge);\n return newEdge;\n }\n\n private getOrCopyVertex(toCopy: Vertex, indexOffset: number, graph: QueryGraph): Vertex {\n const index = toCopy.index + indexOffset;\n let v = this.vertices[index];\n if (!v) {\n v = this.createNewVertex(toCopy.type, toCopy.source, graph.sources.get(toCopy.source)!, index);\n }\n return v;\n }\n\n build(name: string): QueryGraph {\n return new QueryGraph(\n name,\n this.vertices,\n this.outEdges,\n this.typesToVertices,\n this.rootVertices,\n this.sources,\n this.subgraphToArgs,\n this.subgraphToArgIndices,\n this.schema,\n );\n }\n \n setContextMaps(subgraphToArgs: Map, subgraphToArgIndices: Map>) {\n this.subgraphToArgs = subgraphToArgs;\n this.subgraphToArgIndices = subgraphToArgIndices;\n }\n}\n\n/**\n * Specialization of `GraphBuilder` for building the parts of a query graph that correspond\n * to a schema API (meaning that it helps building the vertices and edges corresponding to a\n * schema API, but does not handle vertices and edges related to federation).\n */\nclass GraphBuilderFromSchema extends GraphBuilder {\n readonly isFederatedSubgraph: boolean;\n\n constructor(\n private readonly name: string,\n schema: Schema,\n private readonly supergraph?: { apiSchema: Schema, isFed1: boolean },\n private readonly overrideLabelsByCoordinate?: Map,\n ) {\n super(schema);\n this.isFederatedSubgraph = !!supergraph && isFederationSubgraphSchema(schema);\n }\n\n private hasDirective(elt: FieldDefinition | NamedType, directiveFct: (metadata: FederationMetadata) => DirectiveDefinition): boolean {\n const metadata = federationMetadata(this.schema);\n return !!metadata && elt.hasAppliedDirective(directiveFct(metadata));\n }\n\n private isExternal(field: FieldDefinition): boolean {\n const metadata = federationMetadata(this.schema);\n return !!metadata && metadata.isFieldExternal(field);\n }\n\n /**\n * Adds a vertex for the provided root object type (marking that vertex as a root vertex for the\n * provided `kind`) and recursively descend into the type definition to adds the related vertices\n * and edges.\n *\n * In other words, calling this method on, say, the `Query` type of a schema will add vertices\n * and edges for all the type reachable from that `Query` type.\n */\n addRecursivelyFromRoot(kind: SchemaRootKind, root: ObjectType) {\n this.setAsRoot(kind, this.addTypeRecursively(root).index);\n }\n\n /**\n * Adds in a vertex for the provided type in the in-building query graph, and recursively\n * adds edges and vertices corresponding to the type definition (so for object types, it\n * will add edges for each fields and recursively add vertices for each field type, etc...).\n */\n private addTypeRecursively(type: Type): Vertex {\n const namedType = baseType(type);\n const existing = this.verticesForType(namedType.name);\n if (existing.length > 0) {\n assert(existing.length == 1, () => `Only one vertex should have been created for type ${namedType.name}, got ${existing.length}: ${inspect(this)}`);\n return existing[0];\n }\n const vertex = this.createNewVertex(namedType, this.name, this.schema);\n if (isObjectType(namedType)) {\n this.addObjectTypeEdges(namedType, vertex);\n } else if (isInterfaceType(namedType)) {\n // For interfaces, we generally don't add direct edges for their fields. Because in general, the subgraph where a particular\n // field can be fetched from may depend on the runtime implementation. However, if the subgraph we're currently including\n // \"provides\" a particular interface field locally *for all the supergraph interfaces implementations* (in other words, we\n // know we can always ask the field to that subgraph directly on the interface and will never miss anything), then we can\n // add a direct edge to the field for the interface in that subgraph (which avoids unnecessary type exploding in practice).\n if (this.isFederatedSubgraph) {\n this.maybeAddInterfaceFieldsEdges(namedType, vertex);\n }\n this.addAbstractTypeEdges(namedType, vertex);\n } else if (isUnionType(namedType)) {\n // Adding the special-case __typename edge for union.\n this.addEdgeForField(namedType.typenameField()!, vertex);\n this.addAbstractTypeEdges(namedType, vertex);\n }\n // Any other case (scalar or enum; inputs at not possible here) is terminal and has no edges to\n // consider.\n return vertex;\n }\n\n private addObjectTypeEdges(type: ObjectType, head: Vertex) {\n const isInterfaceObject = federationMetadata(this.schema)?.isInterfaceObjectType(type) ?? false;\n\n // We do want all fields, including most built-in. For instance, it's perfectly valid to query __typename manually, so we want\n // to have an edge for it. Also, the fact we handle the _entities field ensure that all entities are part of the graph,\n // even if they are not reachable by any other user operations.\n // We do skip introspection fields however.\n for (const field of type.allFields()) {\n // Note that @interfaceObject types are an exception to the rule of \"it's perfectly valid to query __typename\". More\n // precisely, a query can ask for the `__typename` of anything, but it shouldn't be answered by an @interfaceObject\n // and so we don't add an edge, ensuring the query planner has to get it from another subgraph (than the one with\n // said @interfaceObject).\n if (field.isSchemaIntrospectionField() || (isInterfaceObject && field.name === typenameFieldName)) {\n continue;\n }\n\n // Field marked @external only exists to ensure subgraphs schema are valid graphQL, but they don't create actual edges.\n // However, even if we don't add an edge, we still want to add the field type. The reason is that while we don't add\n // a \"general\" edge for an external field, we may later add path-specific edges for the field due to a `@provides`. When\n // we do so, we need the vertex corresponding to that field type to exists, and in rare cases a type could be only\n // mentioned in this external field, so if we don't add the type here, we'll never do and get an issue later as we\n // add @provides edges.\n if (this.isExternal(field)) {\n this.addTypeRecursively(field.type!)\n } else {\n this.addEdgeForField(field, head);\n }\n }\n }\n\n private addEdgeForField(field: FieldDefinition, head: Vertex) {\n const tail = this.addTypeRecursively(field.type!);\n const overrideLabel = this.overrideLabelsByCoordinate?.get(field.coordinate);\n if (overrideLabel) {\n this.addEdge(head, tail, new FieldCollection(field), undefined, {\n label: overrideLabel,\n condition: true,\n });\n this.addEdge(head, tail, new FieldCollection(field), undefined, {\n label: overrideLabel,\n condition: false,\n });\n } else {\n this.addEdge(head, tail, new FieldCollection(field));\n }\n }\n\n private isDirectlyProvidedByType(type: ObjectType, fieldName: string) {\n const field = type.field(fieldName);\n // The field is directly provided if:\n // 1) the type does have it.\n // 2) it is not external.\n // 3) it does not have a @require (essentially, this method is called on type implementations of an interface\n // to decide if we can avoid type-explosion, but if the field has a @require on an implementation, then we\n // need to type-explode to make sure we handle that @require).\n return field && !this.isExternal(field) && !this.hasDirective(field, (m) => m.requiresDirective());\n }\n\n private maybeAddInterfaceFieldsEdges(type: InterfaceType, head: Vertex) {\n assert(this.supergraph, 'Missing supergraph schema when building a subgraph');\n const supergraphType = this.supergraph.apiSchema.type(type.name);\n // In theory, the interface might have been marked inaccessible and not be in the supergraph. If that's the case,\n // we just don't add direct edges at all (adding interface edges is an optimization and if the interface is inaccessible, it\n // probably doesn't play any role in query planning anyway, so it doesn't matter).\n if (!supergraphType) {\n return;\n }\n const supergraphRuntimeTypes = (supergraphType as InterfaceType).possibleRuntimeTypes().map(t => t.name);\n // Note that it's possible that the current subgraph does not even know some of the possible runtime types of the supergraph.\n // But as edges to interfaces can only come from the current subgraph, it does mean that whatever field led to this\n // interface was resolved in this subgraph and can never return one of those unknown runtime types. So we can ignore them.\n // TODO: We *must* revisit this once we add @key for interfaces as it will invalidate the \"edges to interfaces can only\n // come from the current subgraph\". Most likely, _if_ an interface has a key, then we should return early from this\n // function (add no field edges at all) if subgraph doesn't know of at least one implementation.\n const localRuntimeTypes = supergraphRuntimeTypes.map(t => this.schema.type(t) as ObjectType).filter(t => t !== undefined);\n // Same as for objects, we want `allFields` so we capture __typename (which will never be external and always provided\n // by all local runtime types, so will always have an edge added, which we want).\n for (const field of type.allFields()) {\n // To include the field, it must not be external itself, and it must be provided on every of the runtime types\n if (this.isExternal(field) || localRuntimeTypes.some(t => !this.isDirectlyProvidedByType(t, field.name))) {\n continue;\n }\n this.addEdgeForField(field, head);\n }\n }\n\n private addAbstractTypeEdges(type: InterfaceType | UnionType, head: Vertex) {\n const implementations = isInterfaceType(type) ? type.possibleRuntimeTypes() : type.types();\n for (const implementationType of implementations) {\n const tail = this.addTypeRecursively(implementationType);\n this.addEdge(head, tail, new DownCast(type, implementationType));\n }\n }\n\n /*\n * We've added edges that avoid type-explosion _directly_ from an interface, but it means that so far we\n * always type-explode unions to all their implementation types, and always type-explode when we go\n * through 2 unrelated interfaces. For instance, say we have\n * ```\n * type Query {\n * i1: I1\n * i2: I2\n * u: U\n * }\n *\n * interface I1 {\n * x: Int\n * }\n *\n * interface I2 {\n * y: Int\n * }\n *\n * type A implements I1 & I2 {\n * x: Int\n * y: Int\n * }\n *\n * type B implements I1 & I2 {\n * x: Int\n * y: Int\n * }\n *\n * union U = A | B\n * ```\n * If we query:\n * ```\n * {\n * u {\n * ... on I1 {\n * x\n * }\n * }\n * }\n * ```\n * then we currently have no edge between `U` and `I1` whatsoever, so query planning would have\n * to type-explode `U` even though that's not necessary (assuming everything is in the same\n * subgraph, we'd want to send the query \"as-is\").\n * Same thing for:\n * ```\n * {\n * i1 {\n * x\n * ... on I2 {\n * y\n * }\n * }\n * }\n * ```\n * due to not having edges from `I1` to `I2` (granted, in that example, type-exploding is not all\n * that worth, but it gets worth with more implementations/fields).\n *\n * And so this method is about adding such edges. Essentially, every time 2 abstract types have\n * an intersection of runtime types > 1, we add an edge.\n *\n * Do note that in practice we only add those edges when we build a query graph for query planning\n * purposes, because not type-exploding is only an optimization but type-exploding will always \"work\"\n * and for composition validation, we don't care about being optimal, while limiting edges make\n * validation faster by limiting the choices to explore. Also, query planning is careful, as\n * it walk those edges, to compute the actual possible runtime types we could have to avoid\n * later type-exploding in impossible runtime types.\n */\n addAdditionalAbstractTypeEdges() {\n // As mentioned above, we only care about this on subgraphs query graphs and during query planning, and\n // we'll have a supergraph when that happens. But if this ever get called in some other path, ignore this.\n if (!this.supergraph) {\n return;\n }\n\n // For each abstract type in the schema, it's runtime types.\n type AbstractTypeWithRuntimes = {\n type: AbstractType,\n runtimeTypesInSubgraph: readonly ObjectType[],\n runtimeTypesInSupergraph: readonly ObjectType[],\n }\n const abstractTypesWithTheirRuntimeTypes: AbstractTypeWithRuntimes[] = [];\n for (const type of this.schema.types()) {\n if (isAbstractType(type)) {\n const typeInSupergraph = this.supergraph.apiSchema.type(type.name);\n // All \"normal\" types from subgraphs should be in the supergraph API, but there is a couple exceptions:\n // - subgraphs have the `_Entity` type, which is not in the supergraph.\n // - inaccessible types also won't be in the supergrah.\n // In all those cases, we don't create any additional edges for those types. For inaccessible type, we\n // could theoretically try to add them, but we would need the full supergraph while we currently only\n // have access to the API schema, and besides, inacessible types can only be part of the query execution in\n // indirect ways, through some @requires for instance, and you'd need pretty weird @requires for the\n // optimization here to ever matter.\n if (!typeInSupergraph) {\n continue;\n }\n assert(isAbstractType(typeInSupergraph), () => `${type} should not be a ${type.kind} in a subgraph but a ${typeInSupergraph.kind} in the supergraph`);\n abstractTypesWithTheirRuntimeTypes.push({\n type,\n runtimeTypesInSubgraph: possibleRuntimeTypes(type),\n runtimeTypesInSupergraph: possibleRuntimeTypes(typeInSupergraph),\n });\n }\n }\n\n // Check every pair of abstract type that intersect on at least 2 runtime types to see if have\n // edges to add. Note that in practice, we only care about 'Union -> Interface' and 'Interface -> Interface'\n for (let i = 0; i < abstractTypesWithTheirRuntimeTypes.length - 1; i++) {\n const t1 = abstractTypesWithTheirRuntimeTypes[i];\n // Note that in general, t1 is already part of the graph `addTypeRecursively` don't really add anything, it\n // just return the existing vertex. That said, if t1 is returned by no field (at least no field reachable from\n // a root type), the type will not be part of the graph. And in that case, we do add it. And it's actually\n // possible that we don't create any edge to that created vertex, so we may be creating a disconnected subset\n // of the graph, a part that is not reachable from any root. It's not optimal, but it's a bit hard to avoid\n // in the first place (we could also try to purge such subset after this method, but it's probably not worth\n // it in general) and it's not a big deal: it will just use a bit more memory than necessary, and it's probably\n // pretty rare in the first place.\n const t1Vertex = this.addTypeRecursively(t1.type);\n for (let j = i; j < abstractTypesWithTheirRuntimeTypes.length; j++) {\n const t2 = abstractTypesWithTheirRuntimeTypes[j];\n\n let addT1ToT2 = false;\n let addT2ToT1 = false;\n if (t1.type === t2.type) {\n // We always add an edge from a type to itself. This is just saying that if we're type-casting to the type we're already\n // on, it's doing nothing, and in particular it shouldn't force us to type-explode anymore that if we didn't had the\n // cast in the first place. Note that we only set `addT1ToT1` to true, otherwise we'd be adding the same edge twice.\n addT1ToT2 = true;\n } else {\n // Otherwise, there is 2 aspects to take into account:\n // - it's only worth adding an edge between types, meaining that we might save type-exploding into the runtime\n // types of the \"target\" one, if the local intersection (of runtime types, in the current subgraph) for the\n // abstract types is more than 2. If it's just 1 type, then going to that type directly is not less efficient\n // and is more precise in a sense. And if the intersection is empty, then no point in polluting the query graphs\n // with edges we'll never take.\n // - _but_ we can only save type-exploding if that local intersection does not exclude any runtime types that\n // are local to the \"source\" type, not local to the \"target\" type, *but* are global to the \"taget\" type,\n // because such type should not be excluded and only type-explosion will achieve that (for some concrete\n // example, see the \"merged abstract types handling\" tests in `buildPlan.test.ts`).\n // In other words, we don't want to avoid the type explosion if there is a type in the intersection of\n // the local \"source\" runtimes and global \"target\" runtimes that are not in the purely local runtimes\n // intersection.\n\n // Everything comes from the same subgraph schema, using reference equality is fine here.\n const intersectingLocal = t1.runtimeTypesInSubgraph.filter(o1 => t2.runtimeTypesInSubgraph.includes(o1));\n if (intersectingLocal.length >= 2) {\n const isInLocalOtherTypeButNotLocalIntersection = (type: ObjectType, otherType: AbstractTypeWithRuntimes) => (\n otherType.runtimeTypesInSubgraph.some((t) => t.name === type.name)\n && !intersectingLocal.some((t) => t.name === type.name)\n );\n // TODO: we're currently _never_ adding the edge if the \"target\" is a union. We shouldn't be doing that, this\n // will genuinely make some cases less efficient than they could be (though those cases are admittedly a bit convoluted),\n // but this make sense *until* https://github.com/apollographql/federation/issues/2256 gets fixed. Because until\n // then, we do not properly track unions through composition, and that means there is never a difference (in the query\n // planner) between a local union definition and the supergraph one, even if that different actually exists.\n // And so, never type-exploding in that case is somewhat safer, as not-type-exploding is ultimately an optimisation.\n // Please note that this is *not* a fix for #2256, and most of the issues created by #2256 still needs fixing, but\n // it avoids making it even worth for a few corner cases. We should remove the `isUnionType` below once the\n // fix for #2256 is implemented.\n if (!(isUnionType(t2.type) || t2.runtimeTypesInSupergraph.some((rt) => isInLocalOtherTypeButNotLocalIntersection(rt, t1)))) {\n addT1ToT2 = true;\n }\n if (!(isUnionType(t1.type) ||t1.runtimeTypesInSupergraph.some((rt) => isInLocalOtherTypeButNotLocalIntersection(rt, t2)))) {\n addT2ToT1 = true;\n }\n }\n }\n\n if (addT1ToT2 || addT2ToT1) {\n // Same remark as for t1 above.\n const t2Vertex = this.addTypeRecursively(t2.type);\n if (addT1ToT2) {\n this.addEdge(t1Vertex, t2Vertex, new DownCast(t1.type, t2.type));\n }\n if (addT2ToT1) {\n this.addEdge(t2Vertex, t1Vertex, new DownCast(t2.type, t1.type));\n }\n }\n }\n }\n }\n\n /**\n * In a subgraph, all entity object type will be \"automatically\" reachable (from the query root) because\n * of the `_entities` operation. Indeed, it returns `_Entity`, which is a union of all entity object types,\n * making those reachable.\n *\n * However, we also want entity interface types (interface with a @key) to be reachable in a similar way,\n * because the `_entities` operation is also technically the one resolving them, and not having them\n * reachable would break plenty of code that assume that by traversing a query graph from root, we get to\n * everything that can be queried.\n *\n * But because graphQL unions cannot have interface types, they are not part of the `_Entity` union (and\n * cannot be). This is ok as far as the typing of the schema does, because even when `_entities` is called\n * to resolve an interface type, it technically returns a concrete object, and so, since every\n * implementation of an entity interface is also an entity, this is captured by the `_Entity` union.\n *\n * But it does mean we want to manually add the corresponding edges now for interfaces, or @key on\n * interfaces wouldn't work properly (at least whenthe interface is not otherwise reachable by a use operation\n * in the subgraph).\n */\n addInterfaceEntityEdges() {\n const subgraphMetadata = federationMetadata(this.schema);\n assert(subgraphMetadata, () => `${this.name} does not correspond to a subgraph`);\n const entityType = subgraphMetadata.entityType();\n // We can ignore this case because if the subgraph has an interface with a @key, then we force its\n // implementations to be marked as entity too and so we know that if `_Entity` is undefined, then\n // we have no need for entity edges.\n if (!entityType) {\n return;\n }\n const entityTypeVertex = this.addTypeRecursively(entityType);\n const keyDirective = subgraphMetadata.keyDirective();\n for (const itfType of this.schema.interfaceTypes()) {\n if (resolvableKeyApplications(keyDirective, itfType).length > 0) {\n const itfTypeVertex = this.addTypeRecursively(itfType);\n this.addEdge(entityTypeVertex, itfTypeVertex, new DownCast(entityType, itfType));\n }\n }\n }\n\n build(): QueryGraph {\n return super.build(this.name);\n }\n}\n\n/**\n * Performs a simple traversal of a query graph that _ignores_ edge conditions.\n *\n * Note that the order of the traversal shouldn't be relied on strongly, only that\n * the provided `onVertex` and `onEdges` will get called (exactly) once for every vertices\n * and edges in the query graph.\n *\n * That said, in practice, this method does `n` traversals, one from each root vertex in the\n * provided query graph (so in practice, `0 < n <= 3`) and each traversal happens to be a\n * depth first traversal (one that stops as soon as it encounters a vertex previously seen).\n *\n * @param graph - the query graph to traverse.\n * @param onVertex - a function called on each vertex traversed the first time it is traversed.\n * @param onEdges - a function called on each edges traversed the first time it is traversed.\n * When this function is called for an edge, it is guaranteed that `onVertex` has previously\n * been called on the edge's head vertex (there is no guarantee on the tail vertex in that\n * `onVertex` may or may not have been called for it).\n */\nexport function simpleTraversal(\n graph: QueryGraph,\n onVertex: (v: Vertex) => void,\n onEdges: (e: Edge) => boolean\n) {\n // A marked vertex (accessed by its index) is one that has already been traversed.\n const marked: boolean[] = new Array(graph.verticesCount());\n // The stack contains vertices that haven't been traversed yet but need to.\n const stack: Vertex[] = [];\n\n const maybeAdd = function(vertex: Vertex) {\n if (!marked[vertex.index]) {\n stack.push(vertex);\n marked[vertex.index] = true;\n }\n }\n\n graph.roots().forEach(maybeAdd);\n while (stack.length > 0) {\n const vertex = stack.pop()!;\n onVertex(vertex);\n for (const edge of graph.outEdges(vertex)) {\n const shouldTraverse = onEdges(edge);\n if (shouldTraverse) {\n maybeAdd(edge.tail);\n }\n }\n }\n}\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", "'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n", "'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", "'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", "'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n", "'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n", "'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n", "'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n", "'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& 'dotAll' in RegExp.prototype\n\t\t\t&& 'hasIndices' in RegExp.prototype\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdescriptor.get.call(o);\n\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var style = opts.quoteStyle || defaultStyle;\n var quoteChar = quotes[style];\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n quoteRE.lastIndex = 0;\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n", "'use strict';\n\nvar hasOwn = require('hasown');\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && hasOwn(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n", "'use strict';\n\nvar SLOT = require('internal-slot');\n\nvar $SyntaxError = SyntaxError;\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\tvar siIterator = {\n\t\tnext: function next() {\n\t\t\tvar iterator = SLOT.get(this, '[[Iterator]]');\n\t\t\tvar done = SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: done ? void undefined : iterator.next()\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\treturn siIterator;\n};\n", "var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\n\n/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\nvar $strValueOf = callBound('String.prototype.valueOf');\n\n/** @type {import('.')} */\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\t$strValueOf(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\nvar $toString = callBound('Object.prototype.toString');\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : $toString(value) === strClass;\n};\n", "'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n", "'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n", "'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n", "'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n", "'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n", "'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $numToStr = callBound('Number.prototype.toString');\n\n/** @type {import('.')} */\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\t$numToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar $toString = callBound('Object.prototype.toString');\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : $toString(value) === numClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar safeRegexTest = require('safe-regex-test');\n\nif (hasSymbols) {\n\tvar $symToStr = callBound('Symbol.prototype.toString');\n\tvar isSymString = safeRegexTest(/^Symbol\\(.*\\)$/);\n\n\t/** @type {(value: object) => value is Symbol} */\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn isSymString($symToStr(value));\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (!value || typeof value !== 'object' || $toString(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n", "'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n", "'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\t/** @type {(value: object) => value is BigInt} */\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n", "'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n/** @type {import('.')} */\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n", "'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n", "'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n", "'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n", "import { \n assert,\n isVariable,\n OperationElement,\n Variable,\n} from \"@apollo/federation-internals\";\nimport deepEqual from \"deep-equal\";\n\nexport function isPathContext(v: any): v is PathContext {\n return v instanceof PathContext;\n}\n\nexport type OperationConditional = {\n kind: 'include' | 'skip',\n value: boolean | Variable,\n}\n\nexport function extractOperationConditionals(operation: OperationElement): OperationConditional[] {\n const conditionals: OperationConditional[] = [];\n addExtractedConditional(operation, 'skip', conditionals);\n addExtractedConditional(operation, 'include', conditionals);\n return conditionals;\n}\n\nfunction addExtractedConditional(operation: OperationElement, kind: 'include' | 'skip', addTo: OperationConditional[]) {\n const applied = operation.appliedDirectivesOf(kind);\n if (applied.length > 0) {\n assert(applied.length === 1, () => `${kind} shouldn't be repeated on ${operation}`)\n const value = applied[0].arguments()['if'];\n assert(typeof value === 'boolean' || isVariable(value), () => `Invalid value ${value} found as condition of @${kind}`);\n addTo.push({ kind, value });\n }\n}\n\n/**\n * Records, as we walk a graphQL operation path, important directives encountered (@include and @skip with their conditions).\n */\nexport class PathContext {\n constructor(\n // A list of conditionals (say: [{ kind 'include', value: 'true'}], [{ kind: 'skip', value: '$foo' }]]) in the reverse order in which they were applied (so \n // the first element is the inner-most applied skip/include).\n readonly conditionals: OperationConditional[],\n ) {\n }\n\n isEmpty() {\n return this.conditionals.length === 0;\n }\n\n withContextOf(operation: OperationElement): PathContext {\n if (operation.appliedDirectives.length === 0) {\n return this;\n }\n\n const newConditionals = extractOperationConditionals(operation);\n return newConditionals.length === 0\n ? this\n : new PathContext(newConditionals.concat(this.conditionals));\n }\n\n equals(that: PathContext): boolean {\n return deepEqual(this.conditionals, that.conditionals);\n }\n\n toString(): string {\n return '['\n + this.conditionals.map(({kind, value}) => `@${kind}(if: ${value})`).join(', ')\n + ']';\n }\n}\n\nexport const emptyContext = new PathContext([]);\n\n", "import { arrayEquals, assert, composeSets, copyWitNewLength, mergeMapOrNull, SelectionSet, setsEqual } from \"@apollo/federation-internals\";\nimport { OpGraphPath, OpTrigger, PathIterator, ContextAtUsageEntry } from \"./graphPath\";\nimport { Edge, QueryGraph, RootVertex, isRootVertex, Vertex } from \"./querygraph\";\nimport { isPathContext } from \"./pathContext\";\n\nfunction opTriggerEquality(t1: OpTrigger, t2: OpTrigger): boolean {\n if (t1 === t2) {\n return true;\n }\n if (isPathContext(t1)) {\n return isPathContext(t2) && t1.equals(t2);\n }\n if (isPathContext(t2)) {\n return false;\n }\n return t1.equals(t2);\n}\n\ntype Child = {\n index: number | TNullEdge,\n trigger: TTrigger,\n conditions: OpPathTree | null,\n tree: PathTree,\n contextToSelection: Set | null,\n parameterToContext: Map | null,\n}\n\nfunction findTriggerIdx(\n triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean,\n forIndex: [TTrigger, OpPathTree | null, TElements, Set | null, Map | null][],\n trigger: TTrigger\n): number {\n for (let i = 0; i < forIndex.length; i++) {\n if (triggerEquality(forIndex[i][0], trigger)) {\n return i;\n }\n }\n return -1;\n}\n\ntype IterAndSelection = { \n path: PathIterator,\n selection?: SelectionSet,\n}\n\nexport class PathTree {\n private constructor(\n readonly graph: QueryGraph,\n readonly vertex: RV,\n readonly localSelections: readonly SelectionSet[] | undefined,\n private readonly triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean,\n private readonly childs: Child[],\n ) {\n }\n\n static create(\n graph: QueryGraph,\n root: RV,\n triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean\n ): PathTree {\n return new PathTree(graph, root, undefined, triggerEquality, []);\n }\n\n static createOp(graph: QueryGraph, root: RV): OpPathTree {\n return this.create(graph, root, opTriggerEquality);\n }\n\n static createFromOpPaths(\n graph: QueryGraph,\n root: RV,\n paths: { path: OpGraphPath, selection?: SelectionSet }[]\n ): OpPathTree {\n assert(paths.length > 0, `Should compute on empty paths`);\n\n return this.createFromPaths(\n graph,\n opTriggerEquality,\n root,\n paths.map(({path, selection}) => ({ path: path[Symbol.iterator](), selection }))\n );\n }\n\n private static createFromPaths(\n graph: QueryGraph,\n triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean,\n currentVertex: RV,\n pathAndSelections: IterAndSelection[]\n ): PathTree {\n const maxEdges = graph.outEdgesCount(currentVertex);\n // We store 'null' edges at `maxEdges` index\n const forEdgeIndex: [TTrigger, OpPathTree | null, IterAndSelection[], Set | null, Map | null][][] = new Array(maxEdges + 1);\n const newVertices: Vertex[] = new Array(maxEdges);\n const order: number[] = new Array(maxEdges + 1);\n let currentOrder = 0;\n let totalChilds = 0;\n let localSelections: SelectionSet[] | undefined = undefined;\n for (const ps of pathAndSelections) {\n const iterResult = ps.path.next();\n if (iterResult.done) {\n if (ps.selection) {\n localSelections = localSelections ? localSelections.concat(ps.selection) : [ps.selection];\n }\n continue;\n }\n const [edge, trigger, conditions, contextToSelection, parameterToContext] = iterResult.value;\n const idx = edge ? edge.index : maxEdges;\n if (edge) {\n newVertices[idx] = edge.tail;\n }\n const forIndex = forEdgeIndex[idx];\n if (forIndex) {\n const triggerIdx = findTriggerIdx(triggerEquality, forIndex, trigger);\n if (triggerIdx < 0) {\n forIndex.push([trigger, conditions, [ps], contextToSelection, parameterToContext]);\n totalChilds++;\n } else {\n const existing = forIndex[triggerIdx];\n const existingCond = existing[1];\n const mergedConditions = existingCond ? (conditions ? existingCond.mergeIfNotEqual(conditions) : existingCond) : conditions;\n const newPaths = existing[2];\n const mergedContextToSelection = composeSets(existing[3], contextToSelection);\n const mergedParameterToContext = mergeMapOrNull(existing[4], parameterToContext);\n newPaths.push(ps);\n forIndex[triggerIdx] = [trigger, mergedConditions, newPaths, mergedContextToSelection, mergedParameterToContext];\n // Note that as we merge, we don't create a new child\n }\n } else {\n // First time we see someone from that index; record the order\n order[currentOrder++] = idx;\n forEdgeIndex[idx] = [[trigger, conditions, [ps], contextToSelection, parameterToContext]];\n totalChilds++;\n }\n }\n\n const childs: Child[] = new Array(totalChilds);\n let idx = 0;\n for (let i = 0; i < currentOrder; i++) {\n const edgeIndex = order[i];\n const index = (edgeIndex === maxEdges ? null : edgeIndex) as number | TNullEdge;\n const newVertex = index === null ? currentVertex : newVertices[edgeIndex];\n const values = forEdgeIndex[edgeIndex];\n for (const [trigger, conditions, subPathAndSelections, contextToSelection, parameterToContext] of values) {\n childs[idx++] = {\n index,\n trigger,\n conditions,\n tree: this.createFromPaths(graph, triggerEquality, newVertex, subPathAndSelections),\n contextToSelection,\n parameterToContext,\n };\n }\n }\n assert(idx === totalChilds, () => `Expected to have ${totalChilds} childs but only ${idx} added`);\n return new PathTree(graph, currentVertex, localSelections, triggerEquality, childs);\n }\n\n childCount(): number {\n return this.childs.length;\n }\n\n isLeaf(): boolean {\n return this.childCount() === 0;\n }\n\n *childElements(reverseOrder: boolean = false): Generator<[Edge | TNullEdge, TTrigger, OpPathTree | null, PathTree, Set | null, Map | null], void, undefined> {\n if (reverseOrder) {\n for (let i = this.childs.length - 1; i >= 0; i--) {\n yield this.element(i);\n }\n } else {\n for (let i = 0; i < this.childs.length; i++) {\n yield this.element(i);\n }\n }\n }\n\n private element(i: number): [Edge | TNullEdge, TTrigger, OpPathTree | null, PathTree, Set | null, Map | null] {\n const child = this.childs[i];\n return [\n (child.index === null ? null : this.graph.outEdge(this.vertex, child.index)) as Edge | TNullEdge,\n child.trigger,\n child.conditions,\n child.tree,\n child.contextToSelection,\n child.parameterToContext,\n ];\n }\n\n private mergeChilds(c1: Child, c2: Child): Child {\n const cond1 = c1.conditions;\n const cond2 = c2.conditions;\n return {\n index: c1.index,\n trigger: c1.trigger,\n conditions: cond1 ? (cond2 ? cond1.mergeIfNotEqual(cond2) : cond1) : cond2,\n tree: c1.tree.merge(c2.tree),\n contextToSelection: composeSets(c1.contextToSelection, c2.contextToSelection),\n parameterToContext: mergeMapOrNull(c1.parameterToContext, c2.parameterToContext),\n };\n }\n\n mergeIfNotEqual(other: PathTree): PathTree {\n if (this.equalsSameRoot(other)) {\n return this;\n }\n return this.merge(other);\n }\n\n private mergeLocalSelectionsWith(other: PathTree): readonly SelectionSet[] | undefined {\n return this.localSelections\n ? (other.localSelections ? this.localSelections.concat(other.localSelections) : this.localSelections)\n : other.localSelections;\n }\n\n merge(other: PathTree): PathTree {\n // If we somehow end up trying to merge a tree with itself, let's not waste work on it.\n if (this === other) {\n return this;\n }\n\n assert(other.graph === this.graph, 'Cannot merge path tree build on another graph');\n assert(other.vertex.index === this.vertex.index, () => `Cannot merge path tree rooted at vertex ${other.vertex} into tree rooted at other vertex ${this.vertex}`);\n if (!other.childs.length) {\n return this;\n }\n if (!this.childs.length) {\n return other;\n }\n\n const localSelections = this.mergeLocalSelectionsWith(other);\n\n const mergeIndexes: number[] = new Array(other.childs.length);\n let countToAdd = 0;\n for (let i = 0; i < other.childs.length; i++) {\n const otherChild = other.childs[i];\n const idx = this.findIndex(otherChild.trigger, otherChild.index);\n mergeIndexes[i] = idx;\n if (idx < 0) {\n ++countToAdd;\n }\n }\n\n const thisSize = this.childs.length;\n const newSize = thisSize + countToAdd;\n const newChilds = copyWitNewLength(this.childs, newSize);\n let addIdx = thisSize;\n\n for (let i = 0; i < other.childs.length; i++) {\n const idx = mergeIndexes[i];\n if (idx < 0) {\n newChilds[addIdx++] = other.childs[i];\n } else {\n newChilds[idx] = this.mergeChilds(newChilds[idx], other.childs[i]);\n }\n }\n assert(addIdx === newSize, () => `Expected ${newSize} childs but only got ${addIdx}`);\n\n return new PathTree(this.graph, this.vertex, localSelections, this.triggerEquality, newChilds);\n }\n\n private equalsSameRoot(that: PathTree): boolean {\n if (this === that) {\n return true;\n }\n\n // Note that we use '===' for trigger instead of `triggerEquality`: this method is all about avoid unnecessary merging\n // when we suspect conditions trees have been build from the exact same inputs and `===` is faster and good enough for this.\n return arrayEquals(this.childs, that.childs, (c1, c2) => {\n return c1.index === c2.index\n && c1.trigger === c2.trigger\n && (c1.conditions ? (c2.conditions ? c1.conditions.equalsSameRoot(c2.conditions) : false) : !c2.conditions)\n && c1.tree.equalsSameRoot(c2.tree)\n && setsEqual(c1.contextToSelection, c2.contextToSelection)\n && PathTree.parameterToContextEquals(c1.parameterToContext, c2.parameterToContext)\n }); \n }\n\n private static parameterToContextEquals(ptc1: Map | null, ptc2: Map | null): boolean {\n if (ptc1 === ptc2) {\n return true;\n }\n const thisKeys = Array.from(ptc1?.keys() ?? []);\n const thatKeys = Array.from(ptc2?.keys() ?? []);\n \n if (thisKeys.length !== thatKeys.length) {\n return false; \n }\n \n for (const key of thisKeys) {\n const thisSelection = ptc1!.get(key);\n const thatSelection = ptc2!.get(key);\n assert(thisSelection, () => `Expected to have a selection for key ${key}`);\n \n if (!thatSelection \n || (thisSelection.contextId !== thatSelection.contextId) \n || !arrayEquals(thisSelection.relativePath, thatSelection.relativePath)\n || !thisSelection.selectionSet.equals(thatSelection.selectionSet)\n || (thisSelection.subgraphArgType !== thatSelection.subgraphArgType)) {\n return false;\n }\n }\n return true;\n }\n\n // Like merge(), this create a new tree that contains the content of both `this` and `other` to this pathTree, but contrarily\n // to merge() this never merge childs together, even if they are equal. This is only for the special case of mutations.\n concat(other: PathTree): PathTree {\n assert(other.graph === this.graph, 'Cannot concat path tree build on another graph');\n assert(other.vertex.index === this.vertex.index, () => `Cannot concat path tree rooted at vertex ${other.vertex} into tree rooted at other vertex ${this.vertex}`);\n if (!other.childs.length) {\n return this;\n }\n if (!this.childs.length) {\n return other;\n }\n\n const localSelections = this.mergeLocalSelectionsWith(other);\n const newChilds = this.childs.concat(other.childs);\n return new PathTree(this.graph, this.vertex, localSelections, this.triggerEquality, newChilds);\n }\n\n private findIndex(trigger: TTrigger, edgeIndex: number | TNullEdge): number {\n for (let i = 0; i < this.childs.length; i++) {\n const child = this.childs[i];\n if (child.index === edgeIndex && this.triggerEquality(child.trigger, trigger)) {\n return i;\n }\n }\n return -1;\n }\n\n isAllInSameSubgraph(): boolean {\n return this.isAllInSameSubgraphInternal(this.vertex.source);\n }\n\n private isAllInSameSubgraphInternal(target: string): boolean {\n return this.vertex.source === target\n && this.childs.every(c => c.tree.isAllInSameSubgraphInternal(target));\n }\n\n toString(indent: string = \"\", includeConditions: boolean = false): string {\n return this.toStringInternal(indent, includeConditions);\n }\n\n\n private toStringInternal(indent: string, includeConditions: boolean): string {\n if (this.isLeaf()) {\n return this.vertex.toString();\n }\n return this.vertex + ':\\n' +\n this.childs.map(child =>\n indent\n + ` -> [${child.index}] `\n + (includeConditions && child.conditions ? `!! {\\n${indent + \" \"}${child.conditions!.toString(indent + \" \", true)}\\n${indent} } ` : \"\")\n + `${child.trigger} = `\n + child.tree.toStringInternal(indent + \" \", includeConditions)\n ).join('\\n');\n }\n}\n\nexport type RootPathTree = PathTree;\n\nexport type OpPathTree = PathTree;\nexport type OpRootPathTree = OpPathTree;\n\nexport function isRootPathTree(tree: OpPathTree): tree is OpRootPathTree {\n return isRootVertex(tree.vertex);\n}\n\nexport function traversePathTree(\n pathTree: PathTree,\n onEdges: (edge: Edge) => void\n) {\n for (const [edge, _, conditions, childTree] of pathTree.childElements()) {\n if (edge) {\n onEdges(edge);\n }\n if (conditions) {\n traversePathTree(conditions, onEdges);\n }\n traversePathTree(childTree, onEdges);\n }\n}\n", "import {\n assert,\n Field,\n FragmentElement,\n InterfaceType,\n NamedType,\n OperationElement,\n Schema,\n SchemaRootKind,\n SelectionSet,\n typenameFieldName,\n isLeafType,\n baseType,\n CompositeType,\n isAbstractType,\n newDebugLogger,\n isCompositeType,\n parseFieldSetArgument,\n possibleRuntimeTypes,\n ObjectType,\n isObjectType,\n mapValues,\n federationMetadata,\n isSchemaRootType,\n Directive,\n FieldDefinition,\n printSubgraphNames,\n allFieldDefinitionsInSelectionSet,\n DeferDirectiveArgs,\n isInterfaceType,\n isSubset,\n parseSelectionSet,\n Variable,\n Type,\n isScalarType,\n isEnumType,\n isUnionType,\n Selection,\n} from \"@apollo/federation-internals\";\nimport { OpPathTree, traversePathTree } from \"./pathTree\";\nimport { Vertex, QueryGraph, Edge, RootVertex, isRootVertex, isFederatedGraphRootType, FEDERATED_GRAPH_ROOT_SOURCE } from \"./querygraph\";\nimport { DownCast, Transition } from \"./transition\";\nimport { PathContext, emptyContext, isPathContext } from \"./pathContext\";\nimport { v4 as uuidv4 } from 'uuid';\n\nconst debug = newDebugLogger('path');\n\nexport type ContextAtUsageEntry = { \n contextId: string, \n relativePath: string[],\n selectionSet: SelectionSet,\n subgraphArgType: Type,\n};\n\nfunction updateRuntimeTypes(currentRuntimeTypes: readonly ObjectType[], edge: Edge | null): readonly ObjectType[] {\n if (!edge) {\n return currentRuntimeTypes;\n }\n\n switch (edge.transition.kind) {\n case 'FieldCollection':\n const field = edge.transition.definition;\n if (!isCompositeType(baseType(field.type!))) {\n return [];\n }\n const newRuntimeTypes: ObjectType[] = [];\n for (const parentType of currentRuntimeTypes) {\n const fieldType = parentType.field(field.name)?.type;\n if (fieldType) {\n for (const type of possibleRuntimeTypes(baseType(fieldType) as CompositeType)) {\n if (!newRuntimeTypes.includes(type)) {\n newRuntimeTypes.push(type);\n }\n }\n }\n }\n return newRuntimeTypes;\n case 'DownCast':\n const castedType = edge.transition.castedType;\n const castedRuntimeTypes = possibleRuntimeTypes(castedType);\n return currentRuntimeTypes.filter(t => castedRuntimeTypes.includes(t));\n case 'InterfaceObjectFakeDownCast':\n return currentRuntimeTypes;\n case 'KeyResolution':\n const currentType = edge.tail.type as CompositeType;\n // We've taken a key into a new subgraph, so any of the possible runtime types of the new subgraph could be returned.\n return possibleRuntimeTypes(currentType);\n case 'RootTypeResolution':\n case 'SubgraphEnteringTransition':\n assert(isObjectType(edge.tail.type), () => `Query edge should be between object type but got ${edge}`);\n return [ edge.tail.type ];\n }\n}\n\nfunction withReplacedLastElement(arr: readonly T[], newLast: T): T[] {\n assert(arr.length > 0, 'Should not have been called on empty array');\n const newArr = new Array(arr.length);\n for (let i = 0; i < arr.length - 1; i++) {\n newArr[i] = arr[i];\n }\n newArr[arr.length - 1] = newLast;\n return newArr;\n}\n\n/**\n * An immutable path in a query graph.\n *\n * Path is mostly understood in the graph theoretical sense of the term, that is as \"a connected series of edges\"\n * and a `GraphPath` is generated by traversing a graph query.\n * However, as query graph edges may have conditions, a `GraphPath` also records, for reach edges it is composed of,\n * the set of paths (an `OpPathTree` in practice) that were taken to fulfill the edge conditions (when the edge has\n * one).\n *\n * Additionally, for each edge of the path, a `GraphPath` records the \"trigger\" that made the traversal take that\n * edge. In practice, the \"trigger\" can be seen as a way to decorate a path with some additional metadata for each\n * elements of the path. In practice, that trigger is used in 2 main ways (corresponding to our 2 main query graph\n * traversals):\n * - for composition validation, the traversal of the federated query graph is driven by other transitions into the\n * supergraph API query graphs (essentially, composition validation is about finding, for every supergraph API\n * query graph path, a \"matching\" traversal of the federated query graph). In that case, for the graph paths\n * we build on the federated query graph, the \"trigger\" will be one of the `Transition` from the supergraph\n * API graph (which, granted, will be fairly similar to the one of the edge we're taking in the federated query\n * graph; in practice, triggers are more useful in the query planning case).\n * - for query planning, the traversal of the federated query graph is driven by the elements of the query we are\n * planning. Which means that the \"trigger\" for taking an edge in this case will be an `OperationElement`\n * (or null). See the specialized `OpGraphPath` that is defined for this use case.\n *\n * Lastly, some `GraphPath` can actually encode \"null\" edges: this is used during query planning in the (rare)\n * case where the query we plan for has fragment spread without type condition (or a \"useless\" one, on that doesn't\n * restrict the possible types anymore than they already were) but with some directives. In that case, we want\n * to preserve the information about the directive (to properly rebuild query plans later) but it doesn't correspond\n * to taking any edges, so we add a \"null\" edge and use the trigger to store the fragment spread.\n *\n * @param TTrigger - the type of the paths \"triggers\", metadata that can associated to each element of the path (see\n * above for more details).\n * @param RV - the type of the vertex starting the path. This simply default to `Vertex` but is used in `RootPath`/`OpRootPath`\n * to easily distinguish those paths that starts from a root of a query graph.\n * @param TNullEdge - typing information to indicate whether the path can have \"null\" edges or not. Either `null` (\n * meaning that the path may have null edges) or `never` (the path cannot have null edges).\n */\ntype PathProps = {\n /** The query graph of which this is a path. */\n readonly graph: QueryGraph,\n /** The vertex at which the path starts (the head vertex of the first edge in path, aliased here for convenience). */\n readonly root: RV,\n /** The vertex at which the path stops (the tail vertex of the last edge in path, aliased here for convenience). */\n readonly tail: Vertex,\n /** The triggers associated to each edges in the paths (see `GraphPath` for more details on triggers). */\n readonly edgeTriggers: readonly TTrigger[],\n /** The edges (stored by edge index) composing the path. */\n readonly edgeIndexes: readonly (number | TNullEdge)[],\n /**\n * For each edge in the path, if the edge has conditions, the set of paths that fulfill that condition.\n * Note that no matter which kind of traversal we are doing, fulfilling the conditions is always driven by\n * the conditions themselves, and as conditions are a graphQL result set, the resulting set of paths are\n * `OpGraphPath` (and as they are all rooted at the edge head vertex, we use the `OpPathTree` representation\n * for that set of paths).\n */\n readonly edgeConditions: readonly (OpPathTree | null)[],\n\n readonly subgraphEnteringEdge?: {\n index: number,\n edge: Edge,\n cost: number,\n },\n\n readonly ownPathIds: readonly string[],\n readonly overriddingPathIds: readonly string[],\n\n readonly edgeToTail?: Edge | TNullEdge,\n /** Names of the all the possible runtime types the tail of the path can be. */\n readonly runtimeTypesOfTail: readonly ObjectType[],\n /** If the last edge (the one getting to tail) was a DownCast, the runtime types before that edge. */\n readonly runtimeTypesBeforeTailIfLastIsCast?: readonly ObjectType[],\n\n readonly deferOnTail?: DeferDirectiveArgs,\n \n /** We may have a map of selections that get mapped to a context */\n readonly contextToSelection: readonly (Set | null)[],\n \n /** This parameter is for mapping contexts back to the parameter used to collect the field */\n readonly parameterToContext: readonly (Map | null)[],\n}\n\nexport class GraphPath implements Iterable<[Edge | TNullEdge, TTrigger, OpPathTree | null, Set | null, Map | null]> {\n private constructor(\n private readonly props: PathProps,\n ) {\n }\n\n get graph(): QueryGraph {\n return this.props.graph;\n }\n\n get root(): RV {\n return this.props.root;\n }\n\n get tail(): Vertex {\n return this.props.tail;\n }\n\n get deferOnTail(): DeferDirectiveArgs | undefined {\n return this.props.deferOnTail;\n }\n\n get subgraphEnteringEdge(): { index: number, edge: Edge, cost: number } | undefined {\n return this.props.subgraphEnteringEdge;\n }\n\n /**\n * Creates a new (empty) path starting at the provided vertex.\n */\n static create(\n graph: QueryGraph,\n root: RV\n ): GraphPath {\n // If 'graph' is a federated query graph, federation renames all root type to their default names, so we rely on this here.\n const runtimeTypes = isFederatedGraphRootType(root.type) ? [] : possibleRuntimeTypes(root.type as CompositeType);\n return new GraphPath({\n graph,\n root,\n tail: root,\n edgeTriggers: [],\n edgeIndexes: [],\n edgeConditions: [],\n ownPathIds: [],\n overriddingPathIds: [],\n runtimeTypesOfTail: runtimeTypes,\n contextToSelection: [],\n parameterToContext: [],\n });\n }\n\n /**\n * Creates a new (empty) path starting from the root vertex in `graph` corresponding to the provide `rootKind`.\n */\n static fromGraphRoot(\n graph: QueryGraph,\n rootKind: SchemaRootKind\n ): RootPath | undefined {\n const root = graph.root(rootKind);\n return root ? this.create(graph, root) : undefined;\n }\n\n /**\n * The size of the path, that is the number of edges composing it.\n *\n * Note that this only the \"main\" edges composing the path: some of those edges may have conditions for which the\n * path will also store the \"sub-paths\" necessary to fulfill said conditions, but the edges of those sub-paths are\n * _not_ counted here.\n */\n get size(): number {\n return this.props.edgeIndexes.length;\n }\n\n /**\n * That method first look for the biggest common prefix to `this` and `that` (assuming that both path are build as choices\n * of the same \"query path\"), and the count how many subgraph jumps each of the path has after said prefix.\n *\n * Note that this method always returns something but the biggest common prefix considered might well be empty.\n *\n * Please note that this method assumes that the 2 paths have the same root, and will fail if that's not the case.\n */\n countSubgraphJumpsAfterLastCommonVertex(that: GraphPath): {\n thisJumps: number,\n thatJumps: number\n } {\n const { vertex, index } = this.findLastCommonVertex(that);\n return {\n thisJumps: this.subgraphJumpsAtIdx(vertex, index),\n thatJumps: that.subgraphJumpsAtIdx(vertex, index),\n };\n }\n\n private findLastCommonVertex(that: GraphPath): { vertex: Vertex, index: number } {\n let vertex: Vertex = this.root;\n assert(that.root === vertex, () => `Expected both path to start on the same root, but 'this' has root ${vertex} while 'that' has ${that.root}`);\n\n const minSize = Math.min(this.size, that.size);\n let index = 0;\n for (; index < minSize; index++) {\n const thisEdge = this.edgeAt(index, vertex);\n const thatEdge = that.edgeAt(index, vertex);\n if (thisEdge !== thatEdge) {\n break;\n }\n if (thisEdge) {\n vertex = thisEdge.tail;\n }\n }\n return { vertex, index};\n }\n\n private subgraphJumpsAtIdx(vertex: Vertex, index: number): number {\n let jumps = 0;\n let v: Vertex = vertex;\n for (let i = index; i < this.size; i++) {\n const edge = this.edgeAt(i, v);\n if (!edge) {\n continue;\n }\n if (edge.changesSubgraph()) {\n ++jumps;\n }\n v = edge.tail;\n }\n return jumps;\n }\n\n subgraphJumps(): number {\n return this.subgraphJumpsAtIdx(this.root, 0);\n }\n\n isEquivalentSaveForTypeExplosionTo(that: GraphPath): boolean {\n // We're looking a the specific case were both path are basically equivalent except\n // for a single step of type-explosion, so if either the paths don't start and end in the\n // same vertex, or if `other` is not exactly 1 more step than `this`, we're done.\n if (this.root !== that.root || this.tail !== that.tail || this.size !== that.size - 1) {\n return false;\n }\n\n // If that's true, then we get to our comparison.\n let thisV: Vertex = this.root;\n let thatV: Vertex = that.root;\n for (let i = 0; i < this.size; i++) {\n let thisEdge = this.edgeAt(i, thisV);\n let thatEdge = that.edgeAt(i, thatV);\n if (thisEdge !== thatEdge) {\n // First difference. If it's not a \"type-explosion\", that is `that` is a cast from an\n // interface to one of the implementation, then we're not in the case we're looking for.\n if (!thisEdge || !thatEdge || !isInterfaceType(thatV.type) || thatEdge.transition.kind !== 'DownCast') {\n return false;\n }\n thatEdge = that.edgeAt(i+1, thatEdge.tail);\n if (!thatEdge) {\n return false;\n }\n thisV = thisEdge.tail;\n thatV = thatEdge.tail;\n\n // At that point, we want both path to take the \"same\" key, but because one is starting\n // from the interface while the other one from an implementation, they won't be technically\n // the \"same\" edge object. So we check that both are key, to the same subgraph and type,\n // and with the same condition.\n if (thisEdge.transition.kind !== 'KeyResolution'\n || thatEdge.transition.kind !== 'KeyResolution'\n || thisEdge.tail.source !== thatEdge.tail.source\n || thisV !== thatV\n || !thisEdge.conditions!.equals(thatEdge.conditions!)\n ) {\n return false;\n }\n\n // So far, so good. `thisV` and `thatV` are positioned on the vertex after which the path\n // must be equal again. So check that it's true, and if it is, we're good.\n // Note that for `this`, the last edge we looked at was `i`, so the next is `i+1`. And\n // for `that`, we've skipped over one more edge, so need to use `j+1`.\n for (let j = i + 1; j < this.size; j++) {\n thisEdge = this.edgeAt(j, thisV);\n thatEdge = that.edgeAt(j+1, thatV);\n if (thisEdge !== thatEdge) {\n return false;\n }\n if (thisEdge) {\n thisV = thisEdge.tail;\n thatV = thatEdge!.tail;\n }\n }\n return true;\n }\n if (thisEdge) {\n thisV = thisEdge.tail;\n thatV = thatEdge!.tail;\n }\n }\n // If we get here, both path are actually exactly the same. So technically there is not additional\n // type explosion, but they are equivalent and we can return `true`.\n return true;\n }\n\n [Symbol.iterator](): PathIterator {\n const path = this;\n return {\n currentIndex: 0,\n currentVertex: this.root,\n next(): IteratorResult<[Edge | TNullEdge, TTrigger, OpPathTree | null, Set | null, Map | null]> {\n if (this.currentIndex >= path.size) {\n return { done: true, value: undefined };\n }\n const idx = this.currentIndex++;\n const edge = path.edgeAt(idx, this.currentVertex);\n if (edge) {\n this.currentVertex = edge.tail;\n }\n return { done: false, value: [\n edge, \n path.props.edgeTriggers[idx],\n path.props.edgeConditions[idx],\n path.props.contextToSelection[idx],\n path.props.parameterToContext[idx],\n ] };\n }\n };\n }\n\n /**\n * The last edge in the path (if it isn't empty).\n */\n lastEdge(): Edge | TNullEdge | undefined {\n return this.props.edgeToTail;\n }\n\n lastTrigger(): TTrigger | undefined {\n return this.props.edgeTriggers[this.size - 1];\n }\n\n /** The possible runtime types the tail of the path can be (this is deduplicated). */\n tailPossibleRuntimeTypes(): readonly ObjectType[] {\n return this.props.runtimeTypesOfTail;\n }\n\n /**\n * Returns `true` if the last edge of the path correspond to an @interfaceObject \"fake cast\" while the the previous edge was an edge that \"entered\" the subgraph (a key edge from another subgraph).\n */\n lastIsIntefaceObjectFakeDownCastAfterEnteringSubgraph(): boolean {\n return this.lastIsInterfaceObjectFakeDownCast()\n && this.subgraphEnteringEdge?.index === this.size - 2; // size - 1 is the last index (the fake cast), so size - 2 is the previous edge.\n }\n\n private lastIsInterfaceObjectFakeDownCast(): boolean {\n return this.lastEdge()?.transition.kind === 'InterfaceObjectFakeDownCast';\n }\n\n /**\n * Creates the new path corresponding to appending to this path the provided `edge`.\n *\n * @param trigger - the trigger for taking the edge in the created path.\n * @param edge - the edge to add (which may be 'null' if this type of path allows it, but if it isn't should be an out-edge\n * for `s.tail`).\n * @param conditionsResolution - the result of resolving the conditions for this edge.\n * @param defer - if the trigger is an operation with a @defer on it, the arguments of this @defer.\n * @returns the newly created path.\n */\n add(trigger: TTrigger, edge: Edge | TNullEdge, conditionsResolution: ConditionResolution, defer?: DeferDirectiveArgs): GraphPath {\n assert(!edge || this.tail.index === edge.head.index, () => `Cannot add edge ${edge} to path ending at ${this.tail}`);\n assert(conditionsResolution.satisfied, 'Should add to a path if the conditions cannot be satisfied');\n assert(!edge || edge.conditions || edge.requiredContexts.length > 0 || !conditionsResolution.pathTree, () => `Shouldn't have conditions paths (got ${conditionsResolution.pathTree}) for edge without conditions (edge: ${edge})`);\n\n // We clear `subgraphEnteringEdge` as we enter a @defer: that is because `subgraphEnteringEdge` is used to eliminate some\n // non-optimal paths, but we don't want those optimizations to bypass a defer.\n let subgraphEnteringEdge = defer ? undefined : this.subgraphEnteringEdge;\n\n if (edge) {\n if (edge.transition.kind === 'DownCast' && this.props.edgeToTail) {\n const previousOperation = this.lastTrigger();\n if (previousOperation instanceof FragmentElement && previousOperation.appliedDirectives.length === 0) {\n // This mean we have 2 type-cast back-to-back and that means the previous operation might not be\n // useful on this path. More precisely, the previous type-cast was only useful if it restricted\n // the possible runtime types of the type on which it applied more than the current type-cast\n // does (but note that if the previous type-cast had directives, we keep it no matter what in\n // case those directives are important).\n // That is, we're in the case where we have (somewhere potentially deep in a query):\n // f { # field 'f' of type A\n // ... on B {\n // ... on C {\n // # more stuffs\n // }\n // }\n // }\n // If the intersection of A and C is non empty and included (or equal) to the intersection of A and B,\n // then there is no reason to have `... on B` at all because:\n // 1. you can do `... on C` on `f` directly since the intersection of A and C is non-empty.\n // 2. `... on C` restricts strictly more than `... on B` and so the latter can't impact the result.\n // So if we detect that we're in that situation, we remove the `... on B` (but note that this is an\n // optimization, keeping `... on B` wouldn't be incorrect, just useless).\n const runtimeTypesWithoutPreviousCast = updateRuntimeTypes(this.props.runtimeTypesBeforeTailIfLastIsCast!, edge);\n if (runtimeTypesWithoutPreviousCast.length > 0\n && runtimeTypesWithoutPreviousCast.every(t => this.props.runtimeTypesOfTail.includes(t))\n ) {\n // Note that edge is from the vertex we've eliminating from the path. So we need to get the edge goes\n // directly from the prior vertex to the new tail for that path.\n const updatedEdge = this.graph.outEdges(this.props.edgeToTail!.head).find(e => e.tail.type === edge.tail.type);\n if (updatedEdge) {\n // We replace the previous operation by the new one.\n debug.log(() => `Previous cast ${previousOperation} is made obsolete by new cast ${trigger}, removing from path.`);\n return new GraphPath({\n ...this.props,\n tail: updatedEdge.tail,\n edgeTriggers: withReplacedLastElement(this.props.edgeTriggers, trigger),\n edgeIndexes: withReplacedLastElement(this.props.edgeIndexes, updatedEdge.index),\n edgeConditions: withReplacedLastElement(this.props.edgeConditions, conditionsResolution.pathTree ?? null),\n edgeToTail: updatedEdge,\n runtimeTypesOfTail: runtimeTypesWithoutPreviousCast,\n // We know the edge is a DownCast, so if there is no new `defer` taking precedence, we just inherit the\n // prior version.\n deferOnTail: defer ?? this.props.deferOnTail,\n });\n }\n }\n }\n }\n\n // Again, we don't want to set `subgraphEnteringEdge` if we're entering a @defer (see above).\n if (!defer && edge.changesSubgraph()) {\n subgraphEnteringEdge = {\n index: this.size,\n edge,\n cost: conditionsResolution.cost,\n };\n }\n\n if (edge.transition.kind === 'KeyResolution') {\n // We're adding a key edge. If the last edge to that point is an @interfaceObject fake downcast, and if our destination\n // type is not an @interfaceObject itself, then we can eliminate that last edge as it does nothing useful, but also,\n // it has conditions and we don't need/want the key we're following to depend on those conditions, since it doesn't have\n // to.\n if (this.lastIsInterfaceObjectFakeDownCast() && isInterfaceType(edge.tail.type)) {\n return new GraphPath({\n ...this.props,\n tail: edge.tail,\n edgeTriggers: withReplacedLastElement(this.props.edgeTriggers, trigger),\n edgeIndexes: withReplacedLastElement(this.props.edgeIndexes, edge.index),\n edgeConditions: withReplacedLastElement(this.props.edgeConditions, conditionsResolution.pathTree ?? null),\n subgraphEnteringEdge,\n edgeToTail: edge,\n runtimeTypesOfTail: updateRuntimeTypes(this.props.runtimeTypesOfTail, edge),\n runtimeTypesBeforeTailIfLastIsCast: undefined, // we know last is not a cast\n deferOnTail: defer,\n });\n }\n }\n }\n \n const { edgeConditions, contextToSelection, parameterToContext } = this.mergeEdgeConditionsWithResolution(conditionsResolution);\n const lastParameterToContext = parameterToContext[parameterToContext.length-1];\n let newTrigger = trigger;\n if (lastParameterToContext !== null && (trigger as any).kind === 'Field') {\n // If this is the last edge that reaches a contextual element, we should update the trigger to use the contextual arguments\n const args = Array.from(lastParameterToContext).reduce((acc: {[key: string]: any}, [key, value]: [string, ContextAtUsageEntry]) => {\n acc[key] = new Variable(value.contextId);\n return acc;\n }, {});\n newTrigger = (trigger as Field).withUpdatedArguments(args) as TTrigger;\n }\n \n return new GraphPath({\n ...this.props,\n tail: edge ? edge.tail : this.tail,\n edgeTriggers: this.props.edgeTriggers.concat(newTrigger),\n edgeIndexes: this.props.edgeIndexes.concat((edge ? edge.index : null) as number | TNullEdge),\n edgeConditions,\n subgraphEnteringEdge,\n edgeToTail: edge,\n runtimeTypesOfTail: updateRuntimeTypes(this.props.runtimeTypesOfTail, edge),\n runtimeTypesBeforeTailIfLastIsCast: edge?.transition?.kind === 'DownCast' ? this.props.runtimeTypesOfTail : undefined,\n // If there is no new `defer` taking precedence, and the edge is downcast, then we inherit the prior version. This\n // is because we only try to re-enter subgraphs for @defer on concrete fields, and so as long as we add downcasts,\n // we should remember that we still need to try re-entering the subgraph.\n deferOnTail: defer ?? (edge && edge.transition.kind === 'DownCast' ? this.props.deferOnTail : undefined),\n contextToSelection,\n parameterToContext,\n });\n }\n \n /**\n * We are going to grow the conditions by one element with the pathTree on the resolution. Additionally, we may need to merge or replace\n * the existing elements with elements from the ContextMap\n */\n private mergeEdgeConditionsWithResolution(conditionsResolution: ConditionResolution): {\n edgeConditions: (OpPathTree | null)[],\n contextToSelection: (Set | null)[],\n parameterToContext: (Map | null)[],\n }{\n const edgeConditions = this.props.edgeConditions.concat(conditionsResolution.pathTree ?? null);\n const contextToSelection = this.props.contextToSelection.concat(null);\n const parameterToContext = this.props.parameterToContext.concat(null);\n \n if (conditionsResolution.contextMap === undefined || conditionsResolution.contextMap.size === 0) {\n return {\n edgeConditions,\n contextToSelection,\n parameterToContext,\n };\n }\n \n parameterToContext[parameterToContext.length-1] = new Map();\n \n for (const [_, entry] of conditionsResolution.contextMap) {\n const idx = edgeConditions.length - entry.levelsInQueryPath -1;\n assert(idx >= 0, 'calculated condition index must be positive');\n \n \n if (entry.pathTree) {\n edgeConditions[idx] = edgeConditions[idx]?.merge(entry.pathTree) ?? entry.pathTree;\n }\n if (contextToSelection[idx] === null) {\n contextToSelection[idx] = new Set();\n }\n contextToSelection[idx]?.add(entry.id);\n \n parameterToContext[parameterToContext.length-1]?.set(entry.paramName, { contextId: entry.id, relativePath: Array(entry.levelsInDataPath).fill(\"..\"), selectionSet: entry.selectionSet, subgraphArgType: entry.argType } );\n }\n return {\n edgeConditions,\n contextToSelection,\n parameterToContext,\n };\n }\n \n /**\n * Creates a new path corresponding to concatenating the provide path _after_ this path.\n *\n * @param tailPath - the path to concatenate at the end of this path. That path must start on the vertex at which\n * this path ends.\n * @returns the newly created path.\n */\n concat(tailPath: GraphPath): GraphPath {\n assert(this.tail.index === tailPath.root.index, () => `Cannot concat ${tailPath} after ${this}`);\n if (tailPath.size === 0) {\n return this;\n }\n\n let prevRuntimeTypes = this.props.runtimeTypesBeforeTailIfLastIsCast;\n let runtimeTypes = this.props.runtimeTypesOfTail;\n for (const [edge] of tailPath) {\n prevRuntimeTypes = runtimeTypes;\n runtimeTypes = updateRuntimeTypes(runtimeTypes, edge);\n }\n return new GraphPath({\n ...this.props,\n tail: tailPath.tail,\n edgeTriggers: this.props.edgeTriggers.concat(tailPath.props.edgeTriggers),\n edgeIndexes: this.props.edgeIndexes.concat(tailPath.props.edgeIndexes),\n edgeConditions: this.props.edgeConditions.concat(tailPath.props.edgeConditions),\n subgraphEnteringEdge: tailPath.subgraphEnteringEdge ? tailPath.subgraphEnteringEdge : this.subgraphEnteringEdge,\n ownPathIds: this.props.ownPathIds.concat(tailPath.props.ownPathIds),\n overriddingPathIds: this.props.overriddingPathIds.concat(tailPath.props.overriddingPathIds),\n edgeToTail: tailPath.props.edgeToTail,\n runtimeTypesOfTail: runtimeTypes,\n runtimeTypesBeforeTailIfLastIsCast: tailPath.props.edgeToTail?.transition?.kind === 'DownCast' ? prevRuntimeTypes : undefined,\n deferOnTail: tailPath.deferOnTail,\n });\n }\n\n checkDirectPathFromPreviousSubgraphTo(\n typeName: string,\n triggerToEdge: (graph: QueryGraph, vertex: Vertex, t: TTrigger, overrideConditions: Map) => Edge | null | undefined,\n overrideConditions: Map,\n prevSubgraphStartingVertex?: Vertex,\n ): Vertex | undefined {\n const enteringEdge = this.subgraphEnteringEdge;\n if (!enteringEdge) {\n return undefined;\n }\n \n // TODO: Temporary fix to avoid optimization if context exists.\n // permanent fix is described here: https://github.com/apollographql/federation/pull/3017#pullrequestreview-2083949094\n if (this.graph.subgraphToArgs.size > 0) {\n return undefined;\n }\n\n // Usually, the starting subgraph in which we want to look for a direct path is the head of\n // `subgraphEnteringEdge`, that is, where we were just before coming to the current subgraph.\n // But for subgraph entering edges, we're not coming from a subgraph, so instead we pass the\n // \"root\" vertex of the subgraph of interest in `prevSubgraphStartingVertex`. And if that\n // is undefined (for a subgraph entering edge), then that means the subgraph does not have\n // the root type in question (say, no mutation type), and so there can be no direct path in\n // that subgraph.\n if (enteringEdge.edge.transition.kind === 'SubgraphEnteringTransition' && !prevSubgraphStartingVertex) {\n return undefined;\n }\n\n let prevSubgraphVertex = prevSubgraphStartingVertex ?? enteringEdge.edge.head;\n for (let i = enteringEdge.index + 1; i < this.size; i++) {\n const triggerToMatch = this.props.edgeTriggers[i];\n const prevSubgraphMatchingEdge = triggerToEdge(this.graph, prevSubgraphVertex, triggerToMatch, overrideConditions);\n if (prevSubgraphMatchingEdge === null) {\n // This means the trigger doesn't make us move (it's typically an inline fragment with no conditions, just directive), which we can always match.\n continue;\n }\n // If the edge has conditions, we don't consider it a direct path as we don't know if that condition can be satisfied and at what cost.\n if (!prevSubgraphMatchingEdge || prevSubgraphMatchingEdge.conditions) {\n return undefined;\n }\n prevSubgraphVertex = prevSubgraphMatchingEdge.tail;\n }\n // If we got here, that mean we were able to match all the triggers from the path since we switched from the previous graph directly into\n // the previous graph, and so, assuming we're on the proper type, we have a direct path in that previous graph.\n return prevSubgraphVertex.type.name === typeName ? prevSubgraphVertex : undefined;\n }\n\n /**\n * The set of edges that may legally continue this path.\n */\n nextEdges(): readonly Edge[] {\n if (this.deferOnTail) {\n // If we path enters a @defer (meaning that what comes after needs to be deferred), then it's the one special case where we\n // explicitly need to ask for edges-to-self, as we _will_ force the use of a @key edge (so we can send the non-deferred part\n // immediately) and we may have to resume the deferred part in the same subgraph than the one in which we were (hence the need\n // for edges to self).\n return this.graph.outEdges(this.tail, true);\n }\n\n // In theory, we could always return `this.graph.outEdges(this.tail)` here. But in practice, `nonTrivialFollowupEdges` may give us a subset\n // of those \"out edges\" that avoids some of the edges that we know we don't need to check because they are guaranteed to be inefficient\n // after the previous `tailEdge`. Note that is purely an optimization (see https://github.com/apollographql/federation/pull/1653 for more details).\n const tailEdge = this.props.edgeToTail;\n return tailEdge\n ? this.graph.nonTrivialFollowupEdges(tailEdge)\n : this.graph.outEdges(this.tail);\n }\n\n /**\n * Whether the path is terminal, that is ends on a terminal vertex.\n */\n isTerminal() {\n return this.graph.isTerminal(this.tail);\n }\n\n /**\n * Whether this path is a `RootPath`, that is one whose starting vertex is one of the underlying query graph root.\n */\n isRootPath(): this is RootPath {\n return isRootVertex(this.root);\n }\n\n mapMainPath(mapper: (e: Edge | TNullEdge, pathIdx: number) => T): T[] {\n const result = new Array(this.size);\n let v: Vertex = this.root;\n for (let i = 0; i < this.size; i++) {\n const edge = this.edgeAt(i, v);\n result[i] = mapper(edge, i);\n if (edge) {\n v = edge.tail;\n }\n }\n return result;\n }\n\n private edgeAt(index: number, v: Vertex): Edge | TNullEdge {\n const edgeIdx = this.props.edgeIndexes[index];\n return (edgeIdx !== null ? this.graph.outEdge(v, edgeIdx) : null) as Edge | TNullEdge;\n }\n\n reduceMainPath(reducer: (accumulator: T, edge: Edge | TNullEdge, pathIdx: number) => T, initialValue: T): T {\n let value = initialValue;\n let v: Vertex = this.root;\n for (let i = 0; i < this.size; i++) {\n const edge = this.edgeAt(i, v);\n value = reducer(value, edge, i);\n if (edge) {\n v = edge.tail;\n }\n }\n return value;\n }\n\n /**\n * Whether the path forms a cycle on the its end vertex, that is if the end vertex of this path has already been encountered earlier in the path.\n */\n hasJustCycled(): boolean {\n if (this.root.index == this.tail.index) {\n return true;\n }\n let v: Vertex = this.root;\n // We ignore the last edge since it's the one leading to the current vertex.\n for (let i = 0; i < this.size - 1; i++) {\n const edge = this.edgeAt(i, v);\n if (!edge) {\n continue;\n }\n v = edge.tail;\n if (v.index == this.tail.index) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Whether any of the edge in the path has associated conditions paths.\n */\n hasAnyEdgeConditions(): boolean {\n return this.props.edgeConditions.some(c => c !== null);\n }\n\n isOnTopLevelQueryRoot(): boolean {\n if (!isRootVertex(this.root)) {\n return false;\n }\n // We walk the vertices and as soon as we take a field (or move out of the root type),\n // we know we're not on the top-level query/mutation/subscription root anymore. The reason we don't\n // just check that size <= 1 is that we could have top-level `... on Query`\n // conditions that don't actually move us.\n let vertex: Vertex = this.root;\n for (let i = 0; i < this.size; i++) {\n const edge = this.edgeAt(i, vertex);\n if (!edge) {\n continue;\n }\n if (edge.transition.kind === 'FieldCollection' || !isSchemaRootType(edge.tail.type)) {\n return false;\n }\n vertex = edge.tail;\n }\n return true;\n }\n\n truncateTrailingDowncasts(): GraphPath {\n let lastNonDowncastIdx = -1;\n let v: Vertex = this.root;\n let lastNonDowncastVertex = v;\n let lastNonDowncastEdge: Edge | undefined;\n let runtimeTypes = isFederatedGraphRootType(this.root.type) ? [] : possibleRuntimeTypes(this.root.type as CompositeType);\n let runtimeTypesAtLastNonDowncastEdge = runtimeTypes;\n for (let i = 0; i < this.size; i++) {\n const edge = this.edgeAt(i, v);\n runtimeTypes = updateRuntimeTypes(runtimeTypes, edge);\n if (edge) {\n v = edge.tail;\n if (edge.transition.kind !== 'DownCast') {\n lastNonDowncastIdx = i;\n lastNonDowncastVertex = v;\n lastNonDowncastEdge = edge;\n runtimeTypesAtLastNonDowncastEdge = runtimeTypes;\n }\n }\n }\n if (lastNonDowncastIdx < 0 || lastNonDowncastIdx === this.size -1) {\n return this;\n }\n\n const newSize = lastNonDowncastIdx + 1;\n return new GraphPath({\n ...this.props,\n tail: lastNonDowncastVertex,\n edgeTriggers: this.props.edgeTriggers.slice(0, newSize),\n edgeIndexes: this.props.edgeIndexes.slice(0, newSize),\n edgeConditions: this.props.edgeConditions.slice(0, newSize),\n edgeToTail: lastNonDowncastEdge,\n runtimeTypesOfTail: runtimeTypesAtLastNonDowncastEdge,\n runtimeTypesBeforeTailIfLastIsCast: undefined,\n });\n }\n\n markOverridding(otherOptions: GraphPath[][]): {\n thisPath: GraphPath,\n otherOptions: GraphPath[][],\n } {\n const newId = uuidv4();\n return {\n thisPath: new GraphPath({\n ...this.props,\n ownPathIds: this.props.ownPathIds.concat(newId),\n }),\n otherOptions: otherOptions.map((paths) => paths.map((p) => new GraphPath({\n ...p.props,\n overriddingPathIds: p.props.overriddingPathIds.concat(newId),\n }))),\n };\n }\n\n isOverriddenBy(otherPath: GraphPath): boolean {\n for (const overriddingId of this.props.overriddingPathIds) {\n if (otherPath.props.ownPathIds.includes(overriddingId)) {\n return true;\n }\n }\n return false;\n }\n\n tailIsInterfaceObject(): boolean {\n if (!isObjectType(this.tail.type)) {\n return false;\n }\n\n const schema = this.graph.sources.get(this.tail.source);\n const metadata = federationMetadata(schema!);\n return metadata?.isInterfaceObjectType(this.tail.type) ?? false;\n }\n\n toString(): string {\n const isRoot = isRootVertex(this.root);\n if (isRoot && this.size === 0) {\n return '_';\n }\n const pathStr = this.mapMainPath((edge, idx) => {\n if (edge) {\n if (isRoot && idx == 0) {\n return edge.tail.toString();\n }\n const label = edge.label();\n return ` -${label === \"\" ? \"\" : '-[' + label + ']-'}-> ${edge.tail}`\n }\n return ` (${this.props.edgeTriggers[idx]}) `;\n }).join('');\n const deferStr = this.deferOnTail ? ` ` : '';\n const typeStr = this.props.runtimeTypesOfTail.length > 0 ? ` (types: [${this.props.runtimeTypesOfTail.join(', ')}])` : '';\n return `${isRoot ? '' : this.root}${pathStr}${deferStr}${typeStr}`;\n }\n}\n\nexport interface PathIterator extends Iterator<[Edge | TNullEdge, TTrigger, OpPathTree | null, Set | null, Map | null]> {\n currentIndex: number,\n currentVertex: Vertex\n}\n\n/**\n * A `GraphPath` that starts on a vertex that is a root vertex (of the query graph of which this is a path).\n */\nexport type RootPath = GraphPath;\n\nexport type OpTrigger = OperationElement | PathContext;\n\n/**\n * A `GraphPath` whose triggers are `OperationElement` (essentially meaning that the path has been guided by a graphQL query).\n */\nexport type OpGraphPath = GraphPath;\n\n/**\n * An `OpGraphPath` that starts on a vertex that is a root vertex (of the query graph of which this is a path).\n */\nexport type OpRootPath = OpGraphPath;\n\nexport function isRootPath(path: OpGraphPath): path is OpRootPath {\n return isRootVertex(path.root);\n}\n\nexport function terminateWithNonRequestedTypenameField(path: OpGraphPath, overrideConditions: Map): OpGraphPath {\n // If the last step of the path was a fragment/type-condition, we want to remove it before we get __typename.\n // The reason is that this avoid cases where this method would make us build plans like:\n // {\n // foo {\n // __typename\n // ... on A {\n // __typename\n // }\n // ... on B {\n // __typename\n // }\n // }\n // Instead, we just generate:\n // {\n // foo {\n // __typename\n // }\n // }\n // Note it's ok to do this because the __typename we add is _not_ requested, it is just added in cases where we\n // need to ensure a selection is not empty, and so this transformation is fine to do.\n path = path.truncateTrailingDowncasts();\n if (!isCompositeType(path.tail.type)) {\n return path;\n }\n const typenameField = new Field(path.tail.type.typenameField()!);\n const edge = edgeForField(path.graph, path.tail, typenameField, overrideConditions);\n assert(edge, () => `We should have an edge from ${path.tail} for ${typenameField}`);\n return path.add(typenameField, edge, noConditionsResolution);\n}\n\nexport function traversePath(\n path: GraphPath,\n onEdges: (edge: Edge) => void\n){\n for (const [edge, _, conditions] of path) {\n if (conditions) {\n traversePathTree(conditions, onEdges);\n }\n onEdges(edge);\n }\n}\n\n// Note that ConditionResolver are guaranteed to be only called for edge with conditions.\nexport type ConditionResolver =\n (edge: Edge, context: PathContext, excludedDestinations: ExcludedDestinations, excludedConditions: ExcludedConditions, extraConditions?: SelectionSet) => ConditionResolution;\n\n\ntype ContextMapEntry = {\n levelsInDataPath: number,\n levelsInQueryPath: number,\n pathTree?: OpPathTree,\n selectionSet: SelectionSet,\n inboundEdge: Edge,\n paramName: string,\n argType: Type,\n id: string,\n}\n \nexport type ConditionResolution = {\n satisfied: boolean,\n cost: number,\n pathTree?: OpPathTree,\n contextMap?: Map,\n // Note that this is not guaranteed to be set even if satistied === false.\n unsatisfiedConditionReason?: UnsatisfiedConditionReason\n}\n\nexport enum UnsatisfiedConditionReason {\n NO_POST_REQUIRE_KEY,\n NO_CONTEXT_SET\n}\n\nexport const noConditionsResolution: ConditionResolution = { satisfied: true, cost: 0 };\nexport const unsatisfiedConditionsResolution: ConditionResolution = { satisfied: false, cost: -1 };\n\nexport enum UnadvanceableReason {\n UNSATISFIABLE_KEY_CONDITION,\n UNSATISFIABLE_REQUIRES_CONDITION,\n UNRESOLVABLE_INTERFACE_OBJECT,\n NO_MATCHING_TRANSITION,\n UNREACHABLE_TYPE,\n IGNORED_INDIRECT_PATH,\n UNSATISFIABLE_OVERRIDE_CONDITION,\n}\n\nexport type Unadvanceable = {\n sourceSubgraph: string,\n destSubgraph: string,\n reason: UnadvanceableReason,\n details: string\n};\n\nexport class Unadvanceables {\n constructor(readonly reasons: Unadvanceable[]) {}\n\n toString() {\n return '[' + this.reasons.map((r) => `[${r.reason}](${r.sourceSubgraph}->${r.destSubgraph}) ${r.details}`).join(', ') + ']';\n }\n}\n\nexport type UnadvanceableClosure = () => Unadvanceable | Unadvanceable[];\n\nexport class UnadvanceableClosures {\n private _unadvanceables: Unadvanceables | undefined;\n readonly closures: UnadvanceableClosure[];\n constructor(closures: UnadvanceableClosure | UnadvanceableClosure[]) {\n if (Array.isArray(closures)) {\n this.closures = closures;\n } else {\n this.closures = [closures];\n }\n }\n\n toUnadvanceables(): Unadvanceables {\n if (!this._unadvanceables) {\n this._unadvanceables = new Unadvanceables(this.closures.map((c) => c()).flat());\n }\n return this._unadvanceables;\n }\n}\n\nexport function isUnadvanceableClosures(result: any[] | UnadvanceableClosures): result is UnadvanceableClosures {\n return result instanceof UnadvanceableClosures;\n}\n\nfunction pathTransitionToEdge(graph: QueryGraph, vertex: Vertex, transition: Transition, overrideConditions: Map): Edge | null | undefined {\n for (const edge of graph.outEdges(vertex)) {\n // The edge must match the transition.\n if (!edge.matchesSupergraphTransition(transition)) {\n continue;\n }\n\n if (edge.satisfiesOverrideConditions(overrideConditions)) {\n return edge;\n }\n }\n return undefined;\n}\n\n/**\n * Wraps a 'composition validation' path (one built from `Transition`) along with the information necessary to compute\n * the indirect paths following that path, and cache the result of that computation when triggered.\n *\n * In other words, this is a `GraphPath` plus lazy memoization of the computation of its following indirect\n * options.\n *\n * The rational is that after we've reached a given path, we might never need to compute the indirect paths following it\n * (maybe all the fields we'll care about are available \"directive\" (from the same subgraph)), or we might need to compute\n * it once, or we might need them multiple times, but the way the algorithm work, we don't know this in advance. So\n * this abstraction ensure that we only compute such indirect paths lazily, if we ever need them, but while ensuring\n * we don't recompute them multiple times if we do need them multiple times.\n */\nexport class TransitionPathWithLazyIndirectPaths {\n private lazilyComputedIndirectPaths: IndirectPaths | undefined;\n\n constructor(\n readonly path: GraphPath,\n readonly conditionResolver: ConditionResolver,\n readonly overrideConditions: Map,\n ) {\n }\n\n static initial(\n initialPath: GraphPath,\n conditionResolver: ConditionResolver,\n overrideConditions: Map,\n ): TransitionPathWithLazyIndirectPaths {\n return new TransitionPathWithLazyIndirectPaths(initialPath, conditionResolver, overrideConditions);\n }\n\n indirectOptions(): IndirectPaths {\n if (!this.lazilyComputedIndirectPaths) {\n this.lazilyComputedIndirectPaths = this.computeIndirectPaths();\n }\n return this.lazilyComputedIndirectPaths;\n }\n\n private computeIndirectPaths(): IndirectPaths {\n return advancePathWithNonCollectingAndTypePreservingTransitions(\n this.path,\n emptyContext,\n this.conditionResolver,\n [],\n [],\n (t) => t,\n pathTransitionToEdge,\n this.overrideConditions,\n getFieldParentTypeForEdge,\n );\n }\n\n toString(): string {\n return this.path.toString();\n }\n}\n\n// Note: conditions resolver should return `null` if the condition cannot be satisfied. If it is satisfied, it has the choice of computing\n// the actual tree, which we need for query planning, or simply returning \"undefined\" which means \"The condition can be satisfied but I didn't\n// bother computing a tree for it\", which we use for simple validation.\n\n// Returns some a `Unadvanceables` object if there is no way to advance the path with this transition. Otherwise, it returns a list of options (paths) we can be in after advancing the transition.\n// The lists of options can be empty, which has the special meaning that the transition is guaranteed to have no results (it corresponds to unsatisfiable conditions),\n// meaning that as far as composition validation goes, we can ignore that transition (and anything that follows) and otherwise continue.\nexport function advancePathWithTransition(\n subgraphPath: TransitionPathWithLazyIndirectPaths,\n transition: Transition,\n targetType: NamedType,\n overrideConditions: Map,\n) : TransitionPathWithLazyIndirectPaths[] | UnadvanceableClosures {\n // The `transition` comes from the supergraph. Now, it is possible that a transition can be expressed on the supergraph, but correspond\n // to an 'unsatisfiable' condition on the subgraph. Let's consider:\n // - Subgraph A:\n // type Query {\n // get: [I]\n // }\n //\n // interface I {\n // k: Int\n // }\n //\n // type T1 implements I @key(fields: \"k\") {\n // k: Int\n // a: String\n // }\n //\n // type T2 implements I @key(fields: \"k\") {\n // k: Int\n // b: String\n // }\n //\n // - Subgraph B:\n // interface I {\n // k: Int\n // }\n //\n // type T1 implements I @key(fields: \"k\") {\n // k: Int\n // myself: I\n // }\n //\n // On the resulting supergraph, we will have a path for:\n // {\n // get {\n // ... on T1 {\n // myself {\n // ... on T2 {\n // b\n // }\n // }\n // }\n // }\n // }\n //\n // However, as we compute possible subgraph paths, the `myself` field will get us\n // in subgraph `B` through `T1`'s key. But then, as we look at transition `... on T2`\n // from subgraph `B`, we have no such type/transition. But this does not mean that\n // the subgraphs shouldn't compose. What it really means is that the corresponding\n // query above can be done, but is guaranteed to never return anything (essentially,\n // we can query subgraph 'B' but will never get a `T2` so the result of the query\n // should be empty).\n //\n // So we need to handle this case and we do this first. Note that the only kind of\n // transition that can give use this is a 'DownCast' transition.\n // Also note that if the subgraph type we're on is an @interfaceObject type, then we\n // also can't be in this situation as an @interfaceObject type \"stands in\" for all\n // the possible implementations of that interface. And one way to detect if the subgraph\n // type an @interfaceObject is to check if the subgraph type is an object type while the\n // supergraph type is an interface one.\n if (transition.kind === 'DownCast' && !(isInterfaceType(transition.sourceType) && isObjectType(subgraphPath.path.tail.type))) {\n // If we consider a 'downcast' transition, it means that the target of that cast is composite, but also that the\n // last type of the subgraph path also is (that type is essentially the \"source\" of the cast).\n const supergraphRuntimeTypes = possibleRuntimeTypes(targetType as CompositeType);\n const subgraphRuntimeTypes = subgraphPath.path.tailPossibleRuntimeTypes();\n const intersection = supergraphRuntimeTypes.filter(t1 => subgraphRuntimeTypes.some(t2 => t1.name === t2.name)).map(t => t.name);\n // if we intersection is empty, it means whatever field got us here can never resolve into an object of the type we're casting\n // into. Essentially, we're good building a plan for this transition and whatever comes next: it'll just return nothing.\n if (intersection.length === 0) {\n debug.log(() => `No intersection between casted type ${targetType} and the possible types in this subgraph`);\n return [];\n }\n }\n\n debug.group(() => `Trying to advance ${subgraphPath} for ${transition}`);\n debug.group('Direct options:');\n const directOptions = advancePathWithDirectTransition(\n subgraphPath.path,\n transition,\n subgraphPath.conditionResolver,\n overrideConditions,\n );\n let options: GraphPath[];\n const deadEndClosures: UnadvanceableClosure[] = [];\n if (isUnadvanceableClosures(directOptions)) {\n options = [];\n debug.groupEnd(() => 'No direct options');\n deadEndClosures.push(...directOptions.closures);\n } else {\n debug.groupEnd(() => advanceOptionsToString(directOptions));\n // If we can fulfill the transition directly (without taking an edge) and the target type is \"terminal\", then there is\n // no point in computing all the options.\n if (directOptions.length > 0 && isLeafType(targetType)) {\n debug.groupEnd(() => `reached leaf type ${targetType} so not trying indirect paths`);\n return createLazyTransitionOptions(directOptions, subgraphPath, overrideConditions);\n }\n options = directOptions;\n }\n // Otherwise, let's try non-collecting edges and see if we can find some (more) options there.\n debug.group(`Computing indirect paths:`);\n const pathsWithNonCollecting = subgraphPath.indirectOptions();\n if (pathsWithNonCollecting.paths.length > 0) {\n debug.groupEnd(() => `${pathsWithNonCollecting.paths.length} indirect paths: ${pathsWithNonCollecting.paths}`);\n debug.group('Validating indirect options:');\n for (const nonCollectingPath of pathsWithNonCollecting.paths) {\n debug.group(() => `For indirect path ${nonCollectingPath}:`);\n const pathsWithTransition = advancePathWithDirectTransition(\n nonCollectingPath,\n transition,\n subgraphPath.conditionResolver,\n overrideConditions,\n );\n if (isUnadvanceableClosures(pathsWithTransition)) {\n debug.groupEnd(() => `Cannot be advanced with ${transition}`);\n deadEndClosures.push(...pathsWithTransition.closures);\n } else {\n debug.groupEnd(() => `Adding valid option: ${pathsWithTransition}`);\n options = options.concat(pathsWithTransition);\n }\n }\n debug.groupEnd();\n } else {\n debug.groupEnd('no indirect paths');\n }\n debug.groupEnd(() => options.length > 0 ? advanceOptionsToString(options) : `Cannot advance ${transition} for this path`);\n if (options.length > 0) {\n return createLazyTransitionOptions(options, subgraphPath, overrideConditions);\n }\n\n const indirectDeadEndClosures = pathsWithNonCollecting.deadEnds.closures;\n return new UnadvanceableClosures(() => {\n const allDeadEnds = new UnadvanceableClosures(deadEndClosures.concat(indirectDeadEndClosures))\n .toUnadvanceables().reasons;\n if (transition.kind === 'FieldCollection') {\n const typeName = transition.definition.parent.name;\n const fieldName = transition.definition.name;\n const subgraphsWithDeadEnd = new Set(allDeadEnds.map(e => e.destSubgraph));\n for (const [subgraph, schema] of subgraphPath.path.graph.sources.entries()) {\n if (subgraphsWithDeadEnd.has(subgraph)) {\n continue;\n }\n const type = schema.type(typeName);\n if (type && isCompositeType(type) && type.field(fieldName)) {\n // That subgraph has the type we look for, but we have recorded no dead-ends. This means there is no edge to that type,\n // and thus that either:\n // - it has no keys.\n // - the path to advance it an @interfaceObject type, the type we look for is an implementation of that interface, and\n // there no key on the interface.\n const typenameOfTail = subgraphPath.path.tail.type.name;\n const typeOfTailInSubgraph = schema.type(typenameOfTail);\n if (!typeOfTailInSubgraph) {\n // This means that 1) the type of the path we're trying to advance is different from the transition we're considering,\n // and that should only happen if the path is on an @interfaceObject type, and 2) the subgraph we're looking at\n // actually doesn't have that interface. To be able to jump to that subgraph, we would need the interface and it\n // would need to have a resolvable key, but it has neither.\n allDeadEnds.push({\n sourceSubgraph: subgraphPath.path.tail.source,\n destSubgraph: subgraph,\n reason: UnadvanceableReason.UNREACHABLE_TYPE,\n details: `cannot move to subgraph \"${subgraph}\", which has field \"${transition.definition.coordinate}\", because interface \"${typenameOfTail}\" is not defined in this subgraph (to jump to \"${subgraph}\", it would need to both define interface \"${typenameOfTail}\" and have a @key on it)`,\n });\n } else {\n // `typeOfTailInSubgraph` exists, so it's either equal to `type`, or it's an interface of it. In any case, it's composite.\n assert(isCompositeType(typeOfTailInSubgraph), () => `Type ${typeOfTailInSubgraph} in ${subgraph} should be composite`);\n const metadata = federationMetadata(schema);\n const keys: Directive[] = metadata ? typeOfTailInSubgraph.appliedDirectivesOf(metadata.keyDirective()) : [];\n const allNonResolvable = keys.length > 0 && keys.every((k) => !(k.arguments().resolvable ?? true));\n assert(keys.length === 0 || allNonResolvable, () => `After ${subgraphPath} and for transition ${transition}, expected type ${type} in ${subgraph} to have no resolvable keys`);\n const kindOfType = typeOfTailInSubgraph === type ? 'type' : 'interface';\n const explanation = keys.length === 0\n ? `${kindOfType} \"${typenameOfTail}\" has no @key defined in subgraph \"${subgraph}\"`\n : `none of the @key defined on ${kindOfType} \"${typenameOfTail}\" in subgraph \"${subgraph}\" are resolvable (they are all declared with their \"resolvable\" argument set to false)`;\n allDeadEnds.push({\n sourceSubgraph: subgraphPath.path.tail.source,\n destSubgraph: subgraph,\n reason: UnadvanceableReason.UNREACHABLE_TYPE,\n details: `cannot move to subgraph \"${subgraph}\", which has field \"${transition.definition.coordinate}\", because ${explanation}`\n });\n }\n }\n }\n }\n \n return allDeadEnds;\n });\n}\n\nfunction createLazyTransitionOptions(\n options: GraphPath[],\n origin: TransitionPathWithLazyIndirectPaths,\n overrideConditions: Map,\n) : TransitionPathWithLazyIndirectPaths[] {\n return options.map(option => new TransitionPathWithLazyIndirectPaths(\n option,\n origin.conditionResolver,\n overrideConditions,\n ));\n}\n\n// A \"set\" of excluded destinations, that is subgraph name. Note that we use an array instead of set because this is used\n// in pretty hot paths (the whole path computation is CPU intensive) and will basically always be tiny (it's bounded\n// by the number of distinct key on a given type, so usually 2-3 max; even in completely unrealistic cases, it's hard bounded\n// by the number of subgraph), so array is going to perform a lot better than `Set` in practice.\nexport type ExcludedDestinations = readonly string[];\n\nfunction isDestinationExcluded(destination: string, excluded: ExcludedDestinations): boolean {\n return excluded.includes(destination);\n}\n\nexport function sameExcludedDestinations(ex1: ExcludedDestinations, ex2: ExcludedDestinations): boolean {\n if (ex1 === ex2) {\n return true;\n }\n if (ex1.length !== ex2.length) {\n return false;\n }\n return ex1.every((d) => ex2.includes(d));\n}\n\nfunction addDestinationExclusion(excluded: ExcludedDestinations, destination: string): ExcludedDestinations {\n return excluded.includes(destination) ? excluded : excluded.concat(destination);\n}\n\nexport type ExcludedConditions = readonly SelectionSet[];\n\nfunction isConditionExcluded(condition: SelectionSet | undefined, excluded: ExcludedConditions): boolean {\n if (!condition) {\n return false;\n }\n return excluded.find(e => condition.equals(e)) !== undefined;\n}\n\nexport function addConditionExclusion(excluded: ExcludedConditions, newExclusion: SelectionSet | undefined): ExcludedConditions {\n return newExclusion ? excluded.concat(newExclusion) : excluded;\n}\n\nfunction popMin(\n stack: GraphPath[]\n): GraphPath {\n let minIdx = 0;\n let minSize = stack[0].size;\n for (let i = 1; i < stack.length; i++) {\n if (stack[i].size < minSize) {\n minSize = stack[i].size;\n minIdx = i;\n }\n }\n const min = stack[minIdx];\n stack.splice(minIdx, 1);\n return min;\n}\n\nexport type IndirectPaths = {\n paths: GraphPath[],\n deadEnds: TDeadEnds\n}\n\nfunction advancePathWithNonCollectingAndTypePreservingTransitions(\n path: GraphPath,\n context: PathContext,\n conditionResolver: ConditionResolver,\n excludedDestinations: ExcludedDestinations,\n excludedConditions: ExcludedConditions,\n convertTransitionWithCondition: (transition: Transition, context: PathContext) => TTrigger,\n triggerToEdge: (graph: QueryGraph, vertex: Vertex, t: TTrigger, overrideConditions: Map) => Edge | null | undefined,\n overrideConditions: Map,\n getFieldParentType: (trigger: TTrigger) => CompositeType | null,\n): IndirectPaths {\n // If we're asked for indirect paths after an \"@interfaceObject fake down cast\" but that down cast comes just after a non-collecting edges, then\n // we can ignore it (skip indirect paths from there). The reason is that the presence of the non-collecting just before the fake down-cast means\n // we add looked at indirect paths just before that down cast, but that fake downcast really does nothing in practice with the subgraph it's on,\n // so any indirect path from that fake down cast will have a valid indirect path _before_ it, and so will have been taken into account independently.\n if (path.lastIsIntefaceObjectFakeDownCastAfterEnteringSubgraph()) {\n // Note: we need to register a dead-end for every subgraphs we \"could\" be going to, or the code calling this may try to infer a reason on its own\n // and we'll run into some assertion.\n return {\n paths: [],\n deadEnds: new UnadvanceableClosures(() => {\n const reachableSubgraphs = new Set(path.nextEdges().filter((e) => !e.transition.collectOperationElements && e.tail.source !== path.tail.source).map((e) => e.tail.source));\n return Array.from(reachableSubgraphs).map((s) => ({\n sourceSubgraph: path.tail.source,\n destSubgraph: s,\n reason: UnadvanceableReason.IGNORED_INDIRECT_PATH,\n details: `ignoring moving from \"${path.tail.source}\" to \"${s}\" as a more direct option exists`,\n }))\n }) as TDeadEnds,\n };\n }\n\n const isTopLevelPath = path.isOnTopLevelQueryRoot();\n const typeName = isFederatedGraphRootType(path.tail.type) ? undefined : path.tail.type.name;\n const originalSource = path.tail.source;\n // For each source, we store the best path we find for that source with the score, or `null` if we can\n // decide that we should try going to that source (typically because we can prove that this create an\n // inefficient detour for which a more direct path exists and will be found).\n const bestPathBySource = new Map, number] | null>();\n const deadEndClosures: UnadvanceableClosure[] = [];\n const toTry: GraphPath[] = [ path ];\n while (toTry.length > 0) {\n // Note that through `excluded` we avoid taking the same edge from multiple options. But that means it's important we try\n // the smallest paths first. That is, if we could in theory have path A -> B and A -> C -> B, and we can do B -> D,\n // then we want to keep A -> B -> D, not A -> C -> B -> D.\n const toAdvance = popMin(toTry);\n const nextEdges = toAdvance.nextEdges().filter(e => !e.transition.collectOperationElements);\n if (nextEdges.length === 0) {\n // The subtlety here is that this may either mean that there is no non-collecting edges from the tail of\n // this path, _or_ that there is some but they \"trivial\" since `nextEdges` above may end up calling\n // `QueryGraph.nonTrivialFollowupEdges()`. In the later, this means there is a key we could use, but\n // it get us back to the previous vertex in the path, which is useless. But we distinguish that case\n // to 1) make the debug more \"true\" and 2) much more importantly, record a \"dead-end\" for this path.\n const outEdges = toAdvance.graph.outEdges(toAdvance.tail).filter(e => !e.transition.collectOperationElements);\n if (outEdges.length > 0) {\n debug.log(() => `Nothing to try for ${toAdvance}: it only has \"trivial\" non-collecting outbound edges`);\n deadEndClosures.push(() => {\n const unadvanceables = [];\n for (const edge of outEdges) {\n if (edge.tail.source !== toAdvance.tail.source && edge.tail.source !== originalSource) {\n unadvanceables.push({\n sourceSubgraph: toAdvance.tail.source,\n destSubgraph: edge.tail.source,\n reason: UnadvanceableReason.IGNORED_INDIRECT_PATH,\n details: `ignoring moving to subgraph \"${edge.tail.source}\" using @key(fields: \"${edge.conditions?.toString(true, false)}\") of \"${edge.head.type}\" because there is a more direct path in ${edge.tail.source} that avoids ${toAdvance.tail.source} altogether`\n });\n }\n }\n return unadvanceables;\n })\n } else {\n debug.log(() => `Nothing to try for ${toAdvance}: it has no non-collecting outbound edges`);\n }\n continue;\n }\n debug.group(() => `From ${toAdvance}:`);\n for (const edge of nextEdges) {\n debug.group(() => `Testing edge ${edge}`);\n const target = edge.tail;\n\n if (isDestinationExcluded(target.source, excludedDestinations)) {\n debug.groupEnd(`Ignored: edge is excluded`);\n continue;\n }\n\n // If the edge takes us back to the subgraph in which we started, we're not really interested\n // (we've already checked for direct transition from that original subgraph). On exception though\n // is if we're just after a @defer, in which case re-entering the current subgraph is actually\n // a thing.\n if (target.source === originalSource && !toAdvance.deferOnTail) {\n debug.groupEnd('Ignored: edge get us back to our original source');\n continue;\n }\n\n // We have edges between Query objects so that if a field returns a query object, we can jump to any subgraph\n // at that point. However, there is no point of using those edges at the beginning of a path, except for when\n // we have a @defer, in which case we want to allow re-jumping to the same subgraph.\n if (isTopLevelPath && edge.transition.kind === 'RootTypeResolution' && !(toAdvance.deferOnTail && edge.isKeyOrRootTypeEdgeToSelf())) {\n debug.groupEnd(`Ignored: edge is a top-level \"RootTypeResolution\"`);\n continue;\n }\n\n const prevForSource = bestPathBySource.get(target.source);\n if (prevForSource === null) {\n debug.groupEnd(() => `Ignored: we've shown before than going to ${target.source} is not productive`);\n continue;\n }\n\n if (prevForSource\n && (prevForSource[0].size < toAdvance.size + 1\n || (prevForSource[0].size == toAdvance.size + 1 && prevForSource[1] <= 1)\n )\n ) {\n // We've already found another path that gets us to the same subgraph than the edge we're\n // about to check. If that previous path is strictly shorter than the path we'd obtain\n // with the new edge, then we don't consider this edge (it's a longer way to get to the same place).\n // And if the previous path is the same size (as the one obtained with that edge), but\n // that the previous path cost for getting the condition was 0 or 1, then the new edge cannot\n // really improve on this and we don't bother with it. Note that a cost of 0 can only happen\n // during composition validation where all costs are 0 to mean \"we don't care about costs\".\n // Meaning effectively that for validation, as soon as we have a path to a subgraph, we ignore\n // other options even if they may be \"faster\".\n debug.groupEnd(() => `Ignored: a better (shorter) path to the same subgraph already added`);\n continue;\n }\n\n if (isConditionExcluded(edge.conditions, excludedConditions)) {\n debug.groupEnd(`Ignored: edge condition is excluded`);\n continue;\n }\n\n debug.group(() => `Validating conditions ${edge.conditions}`);\n // As we validate the condition for this edge, it might be necessary to jump to another subgraph, but if for that\n // we need to jump to the same subgraph we're trying to get to, then it means there is another, shorter way to\n // go to our destination and we can return that shorter path, not the one with the edge we're trying.\n const conditionResolution = canSatisfyConditions(\n toAdvance,\n edge,\n conditionResolver,\n context,\n addDestinationExclusion(excludedDestinations, target.source),\n excludedConditions,\n getFieldParentType,\n );\n if (conditionResolution.satisfied) {\n debug.groupEnd('Condition satisfied');\n // We _can_ get to `target.source` with that edge. But if we had already found another path to\n // the same subgraph, we want to replace it by this one only if either 1) it is shorter or 2) if\n // it's of equal size, only if the condition cost are lower than the previous one.\n if (prevForSource && prevForSource[0].size === toAdvance.size + 1 && prevForSource[1] <= conditionResolution.cost) {\n debug.groupEnd('Ignored: a better (less costly) path to the same subgraph already added');\n continue;\n }\n\n // It's important we minimize the number of options this method returns, because during query planning\n // with many fields, options here translate to state explosion. This is why we eliminated above\n // edges that provably have better options.\n // But we can do a slightly more involved check. Suppose we have a few subgraph A, B and C,\n // and suppose that we're considering an edge from B to C. We can then look at which subgraph we\n // were into before reaching B (which can be \"none\" if the query starts at B), and let say that\n // it is A. In other words, if we use the edge we're considering, we'll be looking at a path doing:\n // ... -> A -> B -> -> C\n // and `toAdvance` is currently just before that last step.\n // Now, we can fairly easily check if the fields we collected in B (the ``) can\n // be also collected *directly* (without keys, nor requires) from A and if after that we could take\n // an edge to C. If we can do all that, then we know that the path we're considering is strictly\n // less efficient than doing:\n // .. -> A -> -> C\n // and we've just validated that path exists and so will be found by another branch of the algorithm.\n // In that case, we can ignore the edge, knowing a better path exists.\n // Doing this drastically reduce state explosion in a number of cases.\n const subgraphEnteringEdge = toAdvance.subgraphEnteringEdge;\n // Note that we ignore the case where the \"entering edge\" is the \"current\" type as we might end up in an infinite\n // loop when calling `hasValidDirectKeyEdge` in that case without additional care and it's not useful because this\n // very method already ensure we don't create unnecessary chains of keys for the \"current type\"\n if (subgraphEnteringEdge && subgraphEnteringEdge.edge.tail.type.name !== typeName) {\n let prevSubgraphEnteringVertex: Vertex | undefined = undefined;\n let backToPreviousSubgraph: boolean;\n if (subgraphEnteringEdge.edge.transition.kind === 'SubgraphEnteringTransition') {\n assert(toAdvance.root instanceof RootVertex, () => `${toAdvance} should be a root path if it starts with subgraph entering edge ${subgraphEnteringEdge.edge}`);\n prevSubgraphEnteringVertex = rootVertexForSubgraph(toAdvance.graph, edge.tail.source, toAdvance.root.rootKind);\n // If the entering edge is the root entering of subgraphs, then the \"prev subgraph\" is really `edge.tail.source` and\n // so `edge` always get us back to that (but `subgraphEnteringEdge.edge.head.source` would be `FEDERATED_GRAPH_ROOT_SOURCE`,\n // so the test we do in the `else` branch would not work here).\n backToPreviousSubgraph = true;\n } else {\n backToPreviousSubgraph = subgraphEnteringEdge.edge.head.source === edge.tail.source;\n }\n const prevSubgraphVertex = toAdvance.checkDirectPathFromPreviousSubgraphTo(edge.tail.type.name, triggerToEdge, overrideConditions, prevSubgraphEnteringVertex);\n const maxCost = toAdvance.subgraphEnteringEdge.cost + (backToPreviousSubgraph ? 0 : conditionResolution.cost);\n if (prevSubgraphVertex\n && (\n backToPreviousSubgraph\n || hasValidDirectKeyEdge(toAdvance.graph, prevSubgraphVertex, edge.tail.source, conditionResolver, maxCost)\n )\n ) {\n debug.groupEnd(\n () => `Ignored: edge correspond to a detour by subgraph ${edge.head.source} from subgraph ${subgraphEnteringEdge.edge.head.source}: `\n + `we have a direct path from ${subgraphEnteringEdge.edge.head.type} to ${edge.tail.type} in ${subgraphEnteringEdge.edge.head.source}`\n + (backToPreviousSubgraph ? '.' : ` and can move to ${edge.tail.source} from there`)\n );\n // Note that we just found that going to the previous subgraph is useless because there is a more direct path.\n // But we record that this previous subgraph should be avoid altogether because other some longer path\n // could try to get back to that same source but defeat this specific check due to having taken another\n // edge first (and thus the entering edge is different).\n // What we mean here is that if the path is A -> B -> and we just found that we don't want to keep\n // A -> B -> -> A because we know A -> is possible directly, then we don't want this\n // method to later add A -> B -> -> C -> A, as that is equally not useful.\n bestPathBySource.set(edge.tail.source, null);\n // We also record a dead-end because this optimization might make us return no path at all, and having\n // recorded no-dead ends would break an assertion in `advancePathWithTransition` that assumes that if\n // we have recorded no-dead end, that's because we have no key edges. But note that this 'dead end'\n // message shouldn't really ever reach users.\n deadEndClosures.push(() => {\n return {\n sourceSubgraph: toAdvance.tail.source,\n destSubgraph: edge.tail.source,\n reason: UnadvanceableReason.IGNORED_INDIRECT_PATH,\n details: `ignoring moving to subgraph \"${edge.tail.source}\" using @key(fields: \"${edge.conditions?.toString(true, false)}\") of \"${edge.head.type}\" because there is a more direct path in ${edge.tail.source} that avoids ${toAdvance.tail.source} altogether`\n };\n });\n continue;\n }\n }\n\n const updatedPath = toAdvance.add(convertTransitionWithCondition(edge.transition, context), edge, conditionResolution);\n debug.log(() => `Using edge, advance path: ${updatedPath}`);\n bestPathBySource.set(target.source, [updatedPath, conditionResolution.cost]);\n // It can be necessary to \"chain\" keys, because different subgraphs may have different keys exposed, and so we when we took\n // a key, we want to check if there is new key we can now take that take us to other subgraphs. For other 'non-collecting'\n // edges ('QueryResolution' and 'SubgraphEnteringTransition') however, chaining never give us additional value.\n // Note: one exception is the case of self-edges (which stay on the same vertex/subgraph): those will only be\n // looked at just after a @defer to handle potentially re-entering the same subgraph. When we take this, no point in\n // looking for chaining since we'll independently check the other edges already.\n if (edge.transition.kind === 'KeyResolution' && edge.head.source !== edge.tail.source) {\n toTry.push(updatedPath);\n }\n } else {\n debug.groupEnd('Condition unsatisfiable');\n deadEndClosures.push(() => {\n const source = toAdvance.tail.source;\n const dest = edge.tail.source;\n const hasOverriddenField = conditionHasOverriddenFieldsInSource(path.graph.sources.get(toAdvance.tail.source)!, edge.conditions!);\n const extraMsg = hasOverriddenField\n ? ` (note that some of those key fields are overridden in \"${source}\")`\n : \"\";\n return {\n sourceSubgraph: source,\n destSubgraph: dest,\n reason: UnadvanceableReason.UNSATISFIABLE_KEY_CONDITION,\n details: `cannot move to subgraph \"${dest}\" using @key(fields: \"${edge.conditions?.toString(true, false)}\") of \"${edge.head.type}\", the key field(s) cannot be resolved from subgraph \"${source}\"${extraMsg}`\n };\n });\n }\n debug.groupEnd(); // End of edge\n }\n debug.groupEnd();\n }\n return {\n paths: mapValues(bestPathBySource).filter(p => p !== null).map(b => b![0]),\n deadEnds: new UnadvanceableClosures(deadEndClosures) as TDeadEnds\n }\n}\n\nfunction rootVertexForSubgraph(graph: QueryGraph, subgraphName: string, rootKind: SchemaRootKind): Vertex | undefined {\n const root = graph.root(rootKind);\n assert(root, () => `Should not have ask for ${rootKind} as the graph does not have one`);\n const subgraphRootEdge = graph.outEdges(root).find((e) => e.tail.source === subgraphName);\n return subgraphRootEdge?.tail;\n}\n\nfunction conditionHasOverriddenFieldsInSource(schema: Schema, condition: SelectionSet): boolean {\n const externalDirective = federationMetadata(schema)!.externalDirective();\n return allFieldDefinitionsInSelectionSet(condition).some((field) => {\n // The subtlety here is that the definition of the fields in the condition are not the one of the subgraph we care\n // about here in general, because the conditions on key edge are those of the destination of the edge, and here\n // we want to check if the field is overridden in the source of the edge. Hence us getting the matching\n // definition in the input schema.\n const typeInSource = schema.type(field.parent.name)\n const fieldInSource = typeInSource && isObjectType(typeInSource) && typeInSource.field(field.name);\n return fieldInSource && fieldInSource.appliedDirectivesOf(externalDirective)?.pop()?.arguments().reason === '[overridden]';\n });\n}\n\nfunction hasValidDirectKeyEdge(\n graph: QueryGraph,\n from: Vertex,\n to: string,\n conditionResolver: ConditionResolver,\n maxCost: number\n): boolean {\n for (const edge of graph.outEdges(from)) {\n if (edge.transition.kind !== 'KeyResolution' || edge.tail.source !== to) {\n continue;\n }\n const resolution = conditionResolver(edge, emptyContext, [], []);\n if (!resolution.satisfied) {\n continue;\n }\n // During composition validation, we consider all conditions to have cost 1.\n if (resolution.cost <= maxCost) {\n return true;\n }\n }\n return false;\n}\n\nfunction advancePathWithDirectTransition(\n path: GraphPath,\n transition: Transition,\n conditionResolver: ConditionResolver,\n overrideConditions: Map,\n) : GraphPath[] | UnadvanceableClosures {\n assert(transition.collectOperationElements, \"Supergraphs shouldn't have transitions that don't collect elements\");\n\n if (\n transition.kind === 'FieldCollection'\n && transition.definition.parent.name !== path.tail.type.name\n && isCompositeType(path.tail.type)\n && !path.tailIsInterfaceObject()\n ) {\n // Usually, when we collect a field, the path should already be on the type of that field.\n // But one exception is due to the fact that a type condition may be \"absorbed\" by an\n // @interfaceObject, and once we'we taken a key on the interface to another subgraph\n // (the tail is not the interface object anymore), we need to \"restore\" the type condition\n // first.\n const updatedPath = advancePathWithDirectTransition(\n path,\n new DownCast(path.tail.type, transition.definition.parent),\n conditionResolver,\n overrideConditions,\n );\n // The case we described above should be the only case we capture here, and so the current\n // subgraph must have the implementation type (it may not have the field we want, but it\n // must have the type) and so we should be able to advance to it.\n assert(!isUnadvanceableClosures(updatedPath), () => `Advancing ${path} for ${transition} gave ${updatedPath}`);\n // Also note that there is currently no case where we should have more that one option.\n assert(updatedPath.length === 1, () => `Expect one path, got ${updatedPath.length}`)\n path = updatedPath[0];\n // We can now continue on dealing with the actual field.\n }\n\n const options: GraphPath[] = [];\n const deadEndClosures: UnadvanceableClosure[] = [];\n\n for (const edge of path.nextEdges()) {\n // The edge must match the transition. If it doesn't, we cannot use it.\n if (!edge.matchesSupergraphTransition(transition)) {\n continue;\n }\n\n if (\n edge.overrideCondition\n && !edge.satisfiesOverrideConditions(overrideConditions)\n ) {\n deadEndClosures.push(() => {\n return {\n destSubgraph: edge.tail.source,\n sourceSubgraph: edge.head.source,\n reason: UnadvanceableReason.UNSATISFIABLE_OVERRIDE_CONDITION,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n details: `Unable to take edge ${edge.toString()} because override condition \"${edge.overrideCondition!.label}\" is ${overrideConditions.get(edge.overrideCondition!.label)}`,\n };\n });\n continue;\n }\n\n // Additionally, we can only take an edge if we can satisfy its conditions.\n const conditionResolution = canSatisfyConditions(path, edge, conditionResolver, emptyContext, [], [], getFieldParentTypeForEdge);\n if (conditionResolution.satisfied) {\n options.push(path.add(transition, edge, conditionResolution));\n } else {\n deadEndClosures.push(() => {\n switch (edge.transition.kind) {\n case 'FieldCollection':\n {\n // Condition on a field means a @require\n const field = edge.transition.definition;\n const parentTypeInSubgraph = path.graph.sources.get(edge.head.source)!.type(field.parent.name)! as CompositeType;\n const details = conditionResolution.unsatisfiedConditionReason === UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY\n ? `@require condition on field \"${field.coordinate}\" can be satisfied but missing usable key on \"${parentTypeInSubgraph}\" in subgraph \"${edge.head.source}\" to resume query`\n : conditionResolution.unsatisfiedConditionReason === UnsatisfiedConditionReason.NO_CONTEXT_SET\n ? `could not find a match for required context for field \"${field.coordinate}\"`\n // TODO: This isn't necessarily just because an @requires\n // condition was unsatisfied, but could also be because a\n // @fromContext condition was unsatisfied.\n : `cannot satisfy @require conditions on field \"${field.coordinate}\"${warnOnKeyFieldsMarkedExternal(parentTypeInSubgraph)}`;\n return {\n sourceSubgraph: edge.head.source,\n destSubgraph: edge.head.source,\n reason: UnadvanceableReason.UNSATISFIABLE_REQUIRES_CONDITION,\n details\n };\n }\n case 'InterfaceObjectFakeDownCast':\n {\n // The condition on such edge is only __typename, so it essentially means that an @interfaceObject exists but there is no reachable subgraph\n // with a @key on an interface to find out proper implementations.\n const details = conditionResolution.unsatisfiedConditionReason === UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY\n ? `@interfaceObject type \"${edge.transition.sourceType.coordinate}\" misses a resolvable key to resume query once the implementation type has been resolved`\n : `no subgraph can be reached to resolve the implementation type of @interfaceObject type \"${edge.transition.sourceType.coordinate}\"`;\n return {\n sourceSubgraph: edge.head.source,\n destSubgraph: edge.head.source,\n reason: UnadvanceableReason.UNRESOLVABLE_INTERFACE_OBJECT,\n details\n };\n }\n default:\n assert(false, () => `Shouldn't have conditions on direct transition ${transition}`);\n }\n });\n }\n }\n if (options.length > 0) {\n return options;\n }\n\n return new UnadvanceableClosures(() => {\n const deadEnds = new UnadvanceableClosures(deadEndClosures).toUnadvanceables().reasons;\n if (deadEnds.length > 0) {\n return deadEnds;\n } else {\n let details: string;\n const subgraph = path.tail.source;\n if (transition.kind === 'FieldCollection') {\n const schema = path.graph.sources.get(subgraph)!;\n const fieldTypeName = transition.definition.parent.name;\n const typeInSubgraph = schema.type(fieldTypeName);\n if (!typeInSubgraph && path.tail.type.name !== fieldTypeName) {\n // This is due to us looking for an implementation field, but the subgraph not having that implementation because\n // it uses @interfaceObject on an interface of that implementation.\n details = `cannot find implementation type \"${fieldTypeName}\" (supergraph interface \"${path.tail.type.name}\" is declared with @interfaceObject in \"${subgraph}\")`;\n } else {\n const fieldInSubgraph = typeInSubgraph && isCompositeType(typeInSubgraph)\n ? typeInSubgraph.field(transition.definition.name)\n : undefined;\n \n if (fieldInSubgraph) {\n // the subgraph has the field but no corresponding edge. This should only happen if the field is external.\n const externalDirective = fieldInSubgraph.appliedDirectivesOf(federationMetadata(fieldInSubgraph.schema())!.externalDirective()).pop();\n assert(\n externalDirective,\n () => `${fieldInSubgraph.coordinate} in ${subgraph} is not external but there is no corresponding edge (edges from ${path} = [${path.nextEdges().join(', ')}])`\n );\n // but the field is external in the \"subgraph-extracted-from-the-supergraph\", but it might have been forced to an external\n // due to being a used-overriden field, in which case we want to amend the message to avoid confusing the user.\n // Note that the subgraph extraction marks such \"forced external due to being overriden\" by setting the \"reason\" to \"[overridden]\".\n const overriddingSources = externalDirective.arguments().reason === '[overridden]'\n ? findOverriddingSourcesIfOverridden(fieldInSubgraph, subgraph, path.graph.sources)\n : [];\n if (overriddingSources.length > 0) {\n details = `field \"${transition.definition.coordinate}\" is not resolvable because it is overridden by ${printSubgraphNames(overriddingSources)}`;\n } else {\n details = `field \"${transition.definition.coordinate}\" is not resolvable because marked @external`;\n }\n } else {\n details = `cannot find field \"${transition.definition.coordinate}\"`;\n }\n }\n } else {\n assert(transition.kind === 'DownCast', () => `Unhandled direct transition ${transition} of kind ${transition.kind}`);\n details = `cannot find type \"${transition.castedType}\"`;\n }\n return {\n sourceSubgraph: subgraph,\n destSubgraph: subgraph,\n reason: UnadvanceableReason.NO_MATCHING_TRANSITION,\n details\n };\n }\n });\n\n}\n\nfunction findOverriddingSourcesIfOverridden(\n field: FieldDefinition,\n fieldSource: string,\n sources: ReadonlyMap,\n): string[] {\n return [...sources.entries()]\n .map(([name, schema]) => {\n if (name === FEDERATED_GRAPH_ROOT_SOURCE || name === fieldSource) {\n return undefined;\n }\n const sourceMetadata = federationMetadata(schema)!;\n const typeInSource = schema.type(field.parent.name);\n if (!typeInSource || !isObjectType(typeInSource)) {\n return undefined;\n }\n const fieldInSource = typeInSource.field(field.name);\n const isOverriddingSource = fieldInSource?.appliedDirectivesOf(sourceMetadata.overrideDirective())?.pop()?.arguments()?.from === fieldSource;\n return isOverriddingSource ? name : undefined;\n })\n .filter((name) => !!name) as string[];\n}\n\nfunction warnOnKeyFieldsMarkedExternal(type: CompositeType): string {\n // Because fed 1 used to (somewhat wrongly) require @external on key fields of type extension and because fed 2 allows you\n // to avoid type extensions, users upgrading might try to remove `extend` from their schema, but forgot to remove the @external\n // on their key field. The problem is that doing that make the key field truly external, and that could easily make @require\n // condition no satisfiable (because the key you'd need to get the require is now external). To help user locate that mistake\n // we add a specific pointer to this potential problem is the type is indeed an entity.\n const metadata = federationMetadata(type.schema());\n assert(metadata, \"Type should originate from a federation subgraph schema\");\n const keyDirective = metadata.keyDirective();\n const keys = type.appliedDirectivesOf(keyDirective);\n if (keys.length === 0) {\n return \"\";\n }\n const keyFieldMarkedExternal: string[] = [];\n for (const key of keys) {\n const fieldSet = parseFieldSetArgument({ parentType: type, directive: key });\n for (const selection of fieldSet.selections()) {\n if (selection.kind === 'FieldSelection' && selection.element.definition.hasAppliedDirective(metadata.externalDirective())) {\n const fieldName = selection.element.name;\n if (!keyFieldMarkedExternal.includes(fieldName)) {\n keyFieldMarkedExternal.push(fieldName);\n }\n }\n }\n }\n if (keyFieldMarkedExternal.length === 0) {\n return \"\";\n }\n const printedFields = keyFieldMarkedExternal.map(f => `\"${f}\"`).join(', ');\n const fieldWithPlural = keyFieldMarkedExternal.length === 1 ? 'field' : 'fields';\n return ` (please ensure that this is not due to key ${fieldWithPlural} ${printedFields} being accidentally marked @external)`;\n}\n\nexport function getLocallySatisfiableKey(graph: QueryGraph, typeVertex: Vertex): SelectionSet | undefined {\n const type = typeVertex.type as CompositeType;\n const schema = graph.sources.get(typeVertex.source);\n const metadata = schema ? federationMetadata(schema) : undefined;\n assert(metadata, () => `Could not find federation metadata for source ${typeVertex.source}`);\n const keyDirective = metadata.keyDirective();\n for (const key of type.appliedDirectivesOf(keyDirective)) {\n const selection = parseFieldSetArgument({ parentType: type, directive: key });\n if (!metadata.selectionSelectsAnyExternalField(selection)) {\n return selection;\n }\n }\n return undefined;\n}\n\nfunction canSatisfyConditions(\n path: GraphPath,\n edge: Edge,\n conditionResolver: ConditionResolver,\n context: PathContext,\n excludedEdges: ExcludedDestinations,\n excludedConditions: ExcludedConditions,\n getFieldParentType: (trigger: TTrigger) => CompositeType | null,\n): ConditionResolution {\n const { conditions, requiredContexts } = edge;\n if (!conditions && requiredContexts.length === 0) {\n return noConditionsResolution;\n }\n \n let totalCost = 0;\n const contextMap = new Map();\n \n if (requiredContexts.length > 0) {\n // if one of the conditions fails to satisfy, it's ok to bail\n let someSelectionUnsatisfied = false;\n for (const cxt of requiredContexts) {\n let levelsInQueryPath = 0;\n let levelsInDataPath = 0;\n for (const [e, trigger] of [...path].reverse()) {\n const parentType = getFieldParentType(trigger);\n levelsInQueryPath += 1;\n if (parentType) {\n levelsInDataPath += 1;\n }\n if (e !== null && !contextMap.has(cxt.namedParameter) && !someSelectionUnsatisfied) {\n const matches = Array.from(cxt.typesWithContextSet).some(t => {\n if (parentType) {\n const parentInSupergraph = path.graph.schema.type(parentType.name)!;\n if (parentInSupergraph.name === t) {\n return true;\n }\n if (isObjectType(parentInSupergraph) || isInterfaceType(parentInSupergraph)) {\n if (parentInSupergraph.interfaces().some(i => i.name === t)) {\n return true;\n }\n }\n const tInSupergraph = parentInSupergraph.schema().type(t);\n if (tInSupergraph && isUnionType(tInSupergraph)) {\n return tInSupergraph.types().some(t => t.name === parentType.name); \n }\n }\n return false;\n });\n if (parentType && matches) {\n const parentInSupergraph = path.graph.schema.type(parentType.name)!;\n assert(isCompositeType(parentInSupergraph), \"Parent type should be composite type\");\n let selectionSet = parseSelectionSet({ parentType: parentInSupergraph, source: cxt.selection });\n \n // We want to ignore type conditions that are impossible/don't intersect with the parent type\n selectionSet = selectionSet.lazyMap((selection): Selection | undefined => {\n if (selection.kind === 'FragmentSelection') {\n if (selection.element.typeCondition && isObjectType(selection.element.typeCondition)) {\n if (!possibleRuntimeTypes(parentInSupergraph).includes(selection.element.typeCondition)) {\n return undefined;\n }\n }\n }\n return selection;\n })\n const resolution = conditionResolver(e, context, excludedEdges, excludedConditions, selectionSet);\n assert(edge.transition.kind === 'FieldCollection', () => `Expected edge to be a FieldCollection edge, got ${edge.transition.kind}`);\n \n const argIndices = path.graph.subgraphToArgIndices.get(cxt.subgraphName);\n assert(argIndices, () => `Expected to find arg indices for subgraph ${cxt.subgraphName}`);\n \n const id = argIndices.get(cxt.coordinate);\n assert(id !== undefined, () => `Expected to find arg index for ${cxt.coordinate}`);\n contextMap.set(cxt.namedParameter, { selectionSet, levelsInDataPath, levelsInQueryPath, inboundEdge: e, pathTree: resolution.pathTree, paramName: cxt.namedParameter, id, argType: cxt.argType });\n someSelectionUnsatisfied = someSelectionUnsatisfied || !resolution.satisfied;\n if (resolution.cost === -1 || totalCost === -1) {\n totalCost = -1;\n } else {\n totalCost += resolution.cost; \n }\n }\n }\n }\n }\n \n if (requiredContexts.some(c => !contextMap.has(c.namedParameter))) {\n // in this case there is a context that is unsatisfied. Return no path.\n debug.groupEnd('@fromContext requires a context that is not set in graph path');\n return { ...unsatisfiedConditionsResolution, unsatisfiedConditionReason: UnsatisfiedConditionReason.NO_CONTEXT_SET };\n }\n \n if (someSelectionUnsatisfied) {\n debug.groupEnd('@fromContext selection set is unsatisfied');\n return { ...unsatisfiedConditionsResolution };\n }\n \n // it's possible that we will need to create a new fetch group at this point, in which case we'll need to collect the keys\n // to jump back to this object as a precondition for satisfying it. \n debug.log('@fromContext conditions are satisfied, but validating post-context key.');\n const postContextKeyCondition = getLocallySatisfiableKey(path.graph, edge.head);\n if (!postContextKeyCondition) {\n debug.groupEnd('Post-context conditions cannot be satisfied');\n return { ...unsatisfiedConditionsResolution, unsatisfiedConditionReason: UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY };\n }\n\n if (!conditions) {\n return { contextMap, cost: totalCost, satisfied: true };\n }\n }\n \n debug.group(() => `Checking conditions ${conditions} on edge ${edge}`);\n const resolution = conditionResolver(edge, context, excludedEdges, excludedConditions);\n if (!resolution.satisfied) {\n debug.groupEnd('Conditions are not satisfied');\n return unsatisfiedConditionsResolution;\n }\n const pathTree = resolution.pathTree;\n const lastEdge = path.lastEdge();\n if (edge.transition.kind === 'FieldCollection'\n && lastEdge !== null\n && lastEdge?.transition.kind !== 'KeyResolution'\n && (!pathTree || pathTree.isAllInSameSubgraph())) {\n\n debug.log('@requires conditions are satisfied, but validating post-require key.');\n const postRequireKeyCondition = getLocallySatisfiableKey(path.graph, edge.head);\n if (!postRequireKeyCondition) {\n debug.groupEnd('Post-require conditions cannot be satisfied');\n return { ...unsatisfiedConditionsResolution, unsatisfiedConditionReason: UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY };\n }\n\n // We're in a case where we have a `@require` (we have a condition but we're a 'FieldCollection') and we\n // have to jump to other subgraph to satisfy the require, which means we need to use a key on \"the current\n // subgraph\" to resume collecting the field with the require. `getLocallySatisfiableKey` essentially tells\n // us that we have such key, and that's good enough here. Not that the way the code is organised, we don't\n // use an actual edge of the query graph, so we cannot use `conditionResolver` and so it's not easy to\n // get a proper cost or tree. That's ok in the sense that the cost of the key is negligible because we\n // know it's a \"local\" one (there is no subgraph jump) and the code to build plan will deal with adding\n // that key anyway (so not having the tree is ok).\n // TODO(Sylvain): the whole hanlding of @require is a bit too complex and hopefully we might be able to\n // clean that up, but it's unclear to me how at the moment and it may not be a small change so this will\n // have to do for now.\n }\n\n debug.groupEnd('Conditions satisfied');\n return { ...resolution, contextMap, cost: totalCost + resolution.cost };\n}\n\nfunction isTerminalOperation(operation: OperationElement): boolean {\n return operation.kind === 'Field' && isLeafType(baseType(operation.definition.type!));\n}\n\nexport type SimultaneousPaths = OpGraphPath[];\n\ntype OpIndirectPaths = IndirectPaths;\n\n/**\n * Memoize the computation of indirect paths, like `TransitionPathWithLazyIndirectPaths` does, but for query planning.\n *\n * Here again, this is an optimization that avoids computing indirect paths eagerly (since we may not need them) but\n * ensures we don't re-do their computation multiple times when we do need them multiple times.\n */\nexport class SimultaneousPathsWithLazyIndirectPaths {\n private lazilyComputedIndirectPaths: OpIndirectPaths[];\n\n constructor(\n readonly paths: SimultaneousPaths,\n readonly context: PathContext,\n readonly conditionResolver: ConditionResolver,\n readonly excludedNonCollectingEdges: ExcludedDestinations = [],\n readonly excludedConditionsOnNonCollectingEdges: ExcludedConditions = [],\n readonly overrideConditions: Map,\n ) {\n this.lazilyComputedIndirectPaths = new Array(paths.length);\n }\n\n // For a given \"input\" path (identified by an idx in `paths`), each of its indirect options.\n indirectOptions(updatedContext: PathContext, pathIdx: number): OpIndirectPaths {\n // Note that the provided context will usually be one we had during construction (the `updatedContext` will be `this.context` updated\n // by whichever operation we're looking at, but only operation with a @skip/@include will change the context so it's pretty rare),\n // which is why we save recomputation by caching the computed value in that case, but in case it's different, we compute without caching.\n if (updatedContext !== this.context) {\n return this.computeIndirectPaths(pathIdx);\n }\n if (!this.lazilyComputedIndirectPaths[pathIdx]) {\n this.lazilyComputedIndirectPaths[pathIdx] = this.computeIndirectPaths(pathIdx);\n }\n return this.lazilyComputedIndirectPaths[pathIdx];\n }\n\n private computeIndirectPaths(idx: number): OpIndirectPaths {\n return advancePathWithNonCollectingAndTypePreservingTransitions(\n this.paths[idx],\n this.context,\n this.conditionResolver,\n this.excludedNonCollectingEdges,\n this.excludedConditionsOnNonCollectingEdges,\n // the transitions taken by this function are non collecting transitions, and we ship the context as trigger (a slight hack admittedly,\n // but as we'll need the context handy for keys ...).\n (_t, context) => context,\n opPathTriggerToEdge,\n this.overrideConditions,\n getFieldParentTypeForOpTrigger,\n );\n }\n\n toString(): string {\n return simultaneousPathsToString(this.paths);\n }\n}\n\nexport function simultaneousPathsToString(simultaneousPaths: SimultaneousPaths | SimultaneousPathsWithLazyIndirectPaths, indentOnNewLine: string=\"\"): string {\n const paths = Array.isArray(simultaneousPaths) ? simultaneousPaths : simultaneousPaths.paths;\n if (paths.length === 0) {\n return '';\n }\n if (paths.length === 1) {\n return paths[0].toString();\n }\n return `{\\n${indentOnNewLine} ` + paths.join(`\\n${indentOnNewLine} `) + `\\n${indentOnNewLine}}`;\n}\n\nexport function advanceOptionsToString(options: (SimultaneousPaths | SimultaneousPathsWithLazyIndirectPaths | GraphPath)[] | undefined): string {\n if (!options) {\n return '';\n }\n if (options.length === 0) {\n return '';\n }\n if (options.length === 1) {\n return '[' + options[0] + ']';\n }\n return '[\\n ' + options.map(opt => Array.isArray(opt) ? simultaneousPathsToString(opt, \" \") : opt.toString()).join('\\n ') + '\\n]';\n}\n\n// Given a list of just computed indirect paths and a field that we're trying to advance after those paths, this\n// method fields any path that should note be considered.\n//\n// Currently, this handle the case where the key used at the end of the indirect path contains (at top level) the field\n// being queried. Or to make this more concrete, if we're trying to collect field `id`, and the path last edge was using\n// key `id`, then we can ignore that path because this imply that there is a way to `id` \"some other way\" (also see\n// the `does not evaluate plans relying on a key field to fetch that same field` test in `buildPlan` for more details).\nfunction filterNonCollectingPathsForField(\n paths: OpIndirectPaths,\n field: Field,\n): OpIndirectPaths {\n // We only handle leafs. Things are more complex non-leaf.\n if (!field.isLeafField()) {\n return paths;\n }\n\n const filtered = paths.paths.filter((p) => {\n const lastEdge = p.lastEdge();\n if (!lastEdge || lastEdge.transition.kind !== 'KeyResolution') {\n return true;\n }\n\n const conditions = lastEdge.conditions;\n return !(conditions && conditions.containsTopLevelField(field));\n });\n return filtered.length === paths.paths.length\n ? paths\n : {\n ...paths,\n paths: filtered\n };\n\n}\n\n// Returns undefined if the operation cannot be dealt with/advanced. Otherwise, it returns a list of options we can be in after advancing the operation, each option\n// being a set of simultaneous paths in the subgraphs (a single path in the simple case, but type exploding may make us explore multiple paths simultaneously).\n// The lists of options can be empty, which has the special meaning that the operation is guaranteed to have no results (it corresponds to unsatisfiable conditions),\n// meaning that as far as query planning goes, we can just ignore the operation but otherwise continue.\nexport function advanceSimultaneousPathsWithOperation(\n supergraphSchema: Schema,\n subgraphSimultaneousPaths: SimultaneousPathsWithLazyIndirectPaths,\n operation: OperationElement,\n overrideConditions: Map,\n) : SimultaneousPathsWithLazyIndirectPaths[] | undefined {\n debug.group(() => `Trying to advance ${simultaneousPathsToString(subgraphSimultaneousPaths)} for ${operation}`);\n const updatedContext = subgraphSimultaneousPaths.context.withContextOf(operation);\n const optionsForEachPath: SimultaneousPaths[][] = [];\n for (const [i, path] of subgraphSimultaneousPaths.paths.entries()) {\n let options: SimultaneousPaths[] | undefined = undefined;\n\n debug.group(() => `Computing options for ${path}`);\n const shouldReenterSubgraph = path.deferOnTail && operation.kind === 'Field';\n // If we're just entering a deferred section, then we will need to re-enter subgraphs, so we should not consider\n // direct options and instead force an indirect path.\n if (!shouldReenterSubgraph) {\n debug.group(() => `Direct options`);\n const { options: advanceOptions, hasOnlyTypeExplodedResults } = advanceWithOperation(\n supergraphSchema,\n path,\n operation,\n updatedContext,\n subgraphSimultaneousPaths.conditionResolver,\n overrideConditions,\n );\n options = advanceOptions;\n debug.groupEnd(() => advanceOptionsToString(options));\n // If we got some options, there is number of cases where there is no point looking for indirect paths:\n // - if the operation is terminal: this mean we just found a direct edge that is terminal, so no\n // indirect options could be better (this is no true for non-terminal where the direct route may\n // end up being a dead end later). One exception however is when `advanceWithOperation` type-exploded (meaning\n // that're on an interface), because in that case, the type-exploded options have already taken indirect edges\n // into account, so it's possible that an indirect edge _from the interface_ could be better, but only if\n // there wasn't a \"true\" direct edge on the interface, which is what `hasOnlyTypeExplodedResults` tells us.\n // - if we get options, but an empty set of them, which signifies the operation correspond to unsatisfiable\n // conditions and we can essentially ignore it.\n // - if the operation is a fragment in general: if we were able to find a direct option, that means the type\n // is known in the \"current\" subgraph, and so we'll still be able to take any indirect edges that we could\n // take now later, for the follow-up operation. And pushing the decision will give us more context and may\n // avoid a bunch of state explosion in practice.\n if (options && (options.length === 0 || (isTerminalOperation(operation) && !hasOnlyTypeExplodedResults) || operation.kind === 'FragmentElement')) {\n debug.groupEnd(() => `Final options for ${path}: ${advanceOptionsToString(options)}`);\n // Note that options is empty, that means this particular \"branch\" is unsatisfiable, so we should just ignore it.\n if (options.length > 0) {\n optionsForEachPath.push(options);\n }\n continue;\n }\n }\n\n // If there was not valid direct path (or we didn't check those because we enter a defer), that's ok, we'll just try with non-collecting edges.\n options = options ?? [];\n if (operation.kind === 'Field') {\n debug.group(`Computing indirect paths:`);\n // Then adds whatever options can be obtained by taking some non-collecting edges first.\n const pathsWithNonCollecting = filterNonCollectingPathsForField(\n subgraphSimultaneousPaths.indirectOptions(updatedContext, i),\n operation\n );\n debug.groupEnd(() => pathsWithNonCollecting.paths.length == 0 ? `no indirect paths` : `${pathsWithNonCollecting.paths.length} indirect paths`);\n if (pathsWithNonCollecting.paths.length > 0) {\n debug.group('Validating indirect options:');\n for (const pathWithNonCollecting of pathsWithNonCollecting.paths) {\n debug.group(() => `For indirect path ${pathWithNonCollecting}:`);\n const { options: pathWithOperation } = advanceWithOperation(\n supergraphSchema,\n pathWithNonCollecting,\n operation,\n updatedContext,\n subgraphSimultaneousPaths.conditionResolver,\n overrideConditions,\n );\n // If we can't advance the operation after that path, ignore it, it's just not an option.\n if (!pathWithOperation) {\n debug.groupEnd(() => `Ignoring: cannot be advanced with ${operation}`);\n continue;\n }\n debug.groupEnd(() => `Adding valid option: ${pathWithOperation}`);\n // advancedWithOperation can return an empty list only if the operation if a fragment with a condition that, on top of the \"current\" type\n // is unsatisfiable. But as we've only taken type preserving transitions, we cannot get an empty results at this point if we haven't\n // had one when testing direct transitions above (in which case we have exited the method early).\n assert(pathWithOperation.length > 0, () => `Unexpected empty options after non-collecting path ${pathWithNonCollecting} for ${operation}`);\n\n // There is a special case we can deal with now. Namely, suppose we have a case where a query\n // is reaching an interface I in a subgraph S1, we query some field of that interface x, and\n // say that x is provided in subgraph S2 but by an @interfaceObject for I.\n // As we look for direct options for I.x in S1 initially, as we didn't found `x`, we will have tried\n // to type-explode I (in say implementation A and B). And in some case doing so is necessary, but\n // it may also lead for the type-exploding option to look like:\n // [\n // I(S1) -[... on A]-> A(S1) -[key]-> I(S2) -[x] -> Int(S2),\n // I(S1) -[... on B]-> B(S1) -[key]-> I(S2) -[x] -> Int(S2),\n // ]\n // But as we look at indirect option now (still from I in S1), we will note that we can also\n // do:\n // I(S1) -[key]-> I(S2) -[x] -> Int(S2),\n // And while both options are technically valid, the new one really subsume the first one: there\n // is no point in type-exploding to take a key to the same exact subgraph if using the key\n // on the interface directly works.\n //\n // So here, we look for that case and remove any type-exploding option that the new path\n // render unecessary.\n // Do note that we only make that check when the new option is a single-path option, because\n // this gets kind of complicated otherwise.\n if (pathWithNonCollecting.tailIsInterfaceObject()) {\n for (const indirectOption of pathWithOperation) {\n if (indirectOption.length === 1) {\n options = options.filter((opt) => !opt.every((p) => indirectOption[0].isEquivalentSaveForTypeExplosionTo(p)));\n }\n }\n }\n options = options.concat(pathWithOperation);\n }\n debug.groupEnd();\n }\n }\n\n // If we were entering a @defer, we've skipped the potential \"direct\" options because we need an \"indirect\" one (a key/root query)\n // to be able to actualy defer. But in rare cases, it's possible we actually couldn't resolve the key fields needed to take a key\n // but could still find a direct path. If so, it means it's a corner case where we cannot do query-planner-based-@defer and have\n // to fall back on not deferring.\n if (options.length === 0 && shouldReenterSubgraph) {\n debug.group(() => `Cannot defer (no indirect options); falling back to direct options`);\n const { options: advanceOptions } = advanceWithOperation(\n supergraphSchema,\n path,\n operation,\n updatedContext,\n subgraphSimultaneousPaths.conditionResolver,\n overrideConditions,\n );\n options = advanceOptions ?? [];\n debug.groupEnd(() => advanceOptionsToString(options));\n }\n\n // At this point, if options is empty, it means we found no ways to advance the operation for this path, so we should return undefined.\n if (options.length === 0) {\n debug.groupEnd(); // end of this input path\n debug.groupEnd(() => `No valid options for ${operation}, aborting operation ${operation}`);\n return undefined;\n } else {\n debug.groupEnd(() => advanceOptionsToString(options));\n optionsForEachPath.push(options);\n }\n }\n\n const allOptions: SimultaneousPaths[] = flatCartesianProduct(optionsForEachPath);\n debug.groupEnd(() => advanceOptionsToString(allOptions));\n return createLazyOptions(\n allOptions,\n subgraphSimultaneousPaths,\n updatedContext,\n subgraphSimultaneousPaths.overrideConditions,\n );\n}\n\n\nexport function createInitialOptions(\n initialPath: OpGraphPath,\n initialContext: PathContext,\n conditionResolver: ConditionResolver,\n excludedEdges: ExcludedDestinations,\n excludedConditions: ExcludedConditions,\n overrideConditions: Map,\n): SimultaneousPathsWithLazyIndirectPaths[] {\n const lazyInitialPath = new SimultaneousPathsWithLazyIndirectPaths(\n [initialPath],\n initialContext,\n conditionResolver,\n excludedEdges,\n excludedConditions,\n overrideConditions,\n );\n if (isFederatedGraphRootType(initialPath.tail.type)) {\n const initialOptions = lazyInitialPath.indirectOptions(initialContext, 0);\n return createLazyOptions(initialOptions.paths.map(p => [p]), lazyInitialPath, initialContext, overrideConditions);\n } else {\n return [lazyInitialPath];\n }\n}\n\nfunction createLazyOptions(\n options: SimultaneousPaths[],\n origin: SimultaneousPathsWithLazyIndirectPaths,\n context: PathContext,\n overrideConditions: Map,\n) : SimultaneousPathsWithLazyIndirectPaths[] {\n return options.map(option => new SimultaneousPathsWithLazyIndirectPaths(\n option,\n context,\n origin.conditionResolver,\n origin.excludedNonCollectingEdges,\n origin.excludedConditionsOnNonCollectingEdges,\n overrideConditions,\n ));\n}\n\nfunction opPathTriggerToEdge(graph: QueryGraph, vertex: Vertex, trigger: OpTrigger, overrideConditions: Map): Edge | null | undefined {\n if (trigger instanceof PathContext) {\n return undefined;\n }\n if (trigger.kind === 'Field') {\n return edgeForField(graph, vertex, trigger, overrideConditions);\n } else {\n return trigger.typeCondition ? edgeForTypeCast(graph, vertex, trigger.typeCondition.name) : null;\n }\n}\n\n// This can be written more tersely with a bunch of reduce/flatMap and friends, but when interfaces type-explode into many\n// implementations, this can end up with fairly large arrays and be a bottleneck, and a more iterative version that pre-allocate\n// arrays is quite a bit faster.\nfunction flatCartesianProduct(arr:V[][][]): V[][] {\n const size = arr.length;\n if (size === 0) {\n return [];\n }\n\n // Track, for each element, at which index we are\n const eltIndexes = new Array(size);\n let totalCombinations = 1;\n for (let i = 0; i < size; ++i){\n const eltSize = arr[i].length;\n if(!eltSize) {\n totalCombinations = 0;\n break;\n }\n eltIndexes[i] = 0;\n totalCombinations *= eltSize;\n }\n\n const product = new Array(totalCombinations);\n for (let i = 0; i < totalCombinations; ++i){\n let itemSize = 0;\n for (let j = 0; j < size; ++j) {\n itemSize += arr[j][eltIndexes[j]].length;\n }\n const item = new Array(itemSize);\n let k = 0;\n for (let j = 0; j < size; ++j) {\n for (const v of arr[j][eltIndexes[j]]) {\n item[k++] = v;\n }\n }\n product[i] = item;\n\n for (let idx = 0; idx < size; ++idx) {\n if (eltIndexes[idx] == arr[idx].length - 1) {\n eltIndexes[idx] = 0;\n } else {\n eltIndexes[idx] += 1;\n break;\n }\n }\n }\n return product;\n}\n\nfunction anImplementationHasAProvides(fieldName: string, itf: InterfaceType): boolean {\n const metadata = federationMetadata(itf.schema());\n assert(metadata, \"Interface should have come from a federation subgraph\");\n for (const implem of itf.possibleRuntimeTypes()) {\n const field = implem.field(fieldName);\n // Note that this should only be called if field exists, but no reason to fail otherwise.\n if (field && field.hasAppliedDirective(metadata.providesDirective())) {\n return true;\n }\n }\n return false;\n}\n\n/*\n * This method is used to detect the case where using an interface field \"directly\" could fail (lead to a dead end later for the quer path)\n * _while_ type-exploding may succeed.\n *\n * In general, taking a field from an interface directly or through it's implementation by type-exploding leads to the same option, and so\n * taking one or the other is more of a matter of \"which is more efficient\". But there is a special case where this may not be the case,\n * and this is:\n * 1. when the interface is implemented by an entity type.\n * 2. the field being looked at is @shareable.\n * 3. the field type has a different set of fields (and less fields) in the \"current\" subgraph than in another one.\n *\n * Consider for instance:\n * ```\n * # Subgraph A\n * type Query {\n * i: I\n * }\n *\n * interface I {\n * s: S\n * }\n *\n * type T implements I @key(fields: \"id\") {\n * id: ID!\n * s: S @shareable\n * }\n *\n * type S @shareable {\n * x: Int\n * }\n * ```\n * ```\n * # Subgraph B\n * type T @key(fields: \"id\") {\n * id: ID!\n * s: S @shareable\n * }\n *\n * type S @shareable {\n * x: Int\n * y: Int\n * }\n * ```\n * and suppose that `{ i { s { y } } }` is queried. If we follow `I.s` in subgraph A, then the `y` field\n * cannot be found, because `S` is not an entity (not that it could also be an entity but not have a usable\n * key between the 2 subgraphs) and so we cannot \"jump\" to subgraph B. However, if we \"type-explode\" into\n * implementation `T`, then we can jump to subgraph B from that, at which point we can reach `y`.\n *\n * So the goal of this method is to detect when we might be in such a case: when we are, we will have to\n * consider type-explosion on top of the direct route in case that direct route ends up \"not panning out\"\n * (note that by the time this method is called, we're only looking at the options for type `I.s`; we\n * do not know yet if `y` is queried next and so cannot tell if type-explosion will be necessary or not).\n */\nfunction anImplementationIsEntityWithFieldShareable(path: OpGraphPath, fieldName: string, itf: InterfaceType): boolean {\n const metadata = federationMetadata(itf.schema());\n assert(metadata, \"Interface should have come from a federation subgraph\");\n for (const implem of itf.possibleRuntimeTypes()) {\n if (!implem.hasAppliedDirective(metadata.keyDirective())) {\n continue;\n }\n const field = implem.field(fieldName);\n // Note that this should only be called if field exists, but no reason to fail otherwise.\n if (!field || !field.hasAppliedDirective(metadata.shareableDirective())) {\n continue;\n }\n\n // Returning `true` for this method has a cost: it will make us consider type-explosion for `itf`, and this can\n // sometime lead to a large number of additional path to explore, which can have a substantial cost. So we want\n // to limit it if we can avoid it. As it happens, we should return `true` if it is possible that \"something\"\n // (some field) in the type of `field` is reachable in _another_ subgraph but no in the one of the current path.\n // And while it's not trivial to check this in general, there is some easy case we can elimiate. For instance,\n // if the type in the current subgraph has only leaf fields, we can check that all other subgraphs reachable\n // from the implementation have the same set of leafs.\n const type = baseType(field.type!);\n if (isLeafType(type)) {\n continue;\n }\n if (isObjectType(type) && type.fields().every((f) => isLeafType(baseType(f.type!)))) {\n const fieldNames = new Set(type.fields().map((f) => f.name));\n for (const v of path.graph.verticesForType(implem.name)) {\n if (v.source === path.tail.source) {\n continue;\n }\n const otherMetadata = federationMetadata(v.type.schema());\n assert(otherMetadata, \"Type should have come from a federation subgraph\");\n assert(isObjectType(v.type) || isInterfaceType(v.type), () => `${implem} is an object in ${path.tail.source} but a ${v.type.kind} in ${v.source}`);\n const fieldInOther = v.type.field(fieldName);\n if (!fieldInOther || !fieldInOther.hasAppliedDirective(otherMetadata.shareableDirective())) {\n // The shareable field is actually not shared here (it's either not declared, or external), so we can ignore that subgraph.\n continue;\n }\n const typeInOther = baseType(fieldInOther.type!);\n if (typeInOther.name !== type.name || !(isObjectType(typeInOther) || isInterfaceType(typeInOther))) {\n // We have a genuine difference here, so we should explore type explosion.\n return true;\n }\n const otherNames = new Set(typeInOther.fields().map((f) => f.name));\n if (!isSubset(fieldNames, otherNames)) {\n // Same, we have a genuine difference.\n return true;\n }\n // Note that if the type is the same and the fields too, then we know the type of those fields must be leaf type,\n // or merging would have complained.\n }\n // So every other instance of the type\n return false;\n }\n // Alright, we officially \"don't know\", so we return \"true\" so type-explosion is tested.\n return true;\n }\n return false;\n}\n\nfunction isProvidedEdge(edge: Edge): boolean {\n return edge.transition.kind === 'FieldCollection' && edge.transition.isPartOfProvide;\n}\n\n// The result has the same meaning than in advanceSimultaneousPathsWithOperation.\n// We also actually need to return a set of options of simultaneous paths. Cause when we type explode, we create simultaneous paths, but\n// as a field might be resolve by multiple subgraphs, we may have options created.\nfunction advanceWithOperation(\n supergraphSchema: Schema,\n path: OpGraphPath,\n operation: OperationElement,\n context: PathContext,\n conditionResolver: ConditionResolver,\n overrideConditions: Map,\n) : {\n options: SimultaneousPaths[] | undefined,\n hasOnlyTypeExplodedResults?: boolean,\n} {\n debug.group(() => `Trying to advance ${path} directly with ${operation}`);\n\n const currentType = path.tail.type;\n if (isFederatedGraphRootType(currentType)) {\n // We cannot advance any operation from there: we need to take the initial non-collecting edges first.\n debug.groupEnd('Cannot advance federated graph root with direct operations');\n return { options: undefined };\n }\n\n if (operation.kind === 'Field') {\n const field = operation.definition;\n switch (currentType.kind) {\n case 'ObjectType':\n // Just take the edge corresponding to the field, if it exists and can be used.\n const edge = nextEdgeForField(path, operation, overrideConditions);\n if (!edge) {\n debug.groupEnd(() => `No edge for field ${field} on object type ${currentType}`);\n return { options: undefined };\n }\n\n // If the current type is an @interfaceObject, it's possible that the requested field\n // is a field of an implementation of the interface. Because we found an edge, we\n // know that the interface has the field and we can use the edge, but we should redact\n // the `operation` to use the current type field, so the operation does not continue\n // referring to a type that is not in the current subgraph.\n if (path.tailIsInterfaceObject() && field.parent.name !== currentType.name) {\n const fieldOnCurrentType = currentType.field(field.name);\n assert(fieldOnCurrentType, () => `We should not have found edge ${edge} for ${field} from ${path}`)\n operation = operation.withUpdatedDefinition(fieldOnCurrentType);\n }\n\n const fieldPath = addFieldEdge(path, operation, edge, conditionResolver, context);\n debug.groupEnd(() => fieldPath\n ? `Collected field ${field} on object type ${currentType}`\n : `Cannot satisfy @requires on field ${field} for object type ${currentType}`\n );\n return { options: pathAsOptions(fieldPath) };\n case 'InterfaceType':\n // Due to @interfaceObject, we could be in a case where the field asked is not on the interface but\n // rather on one of it's implementation. This can happen if we just entered the subgraph on an interface @key\n // and coming from an @interfaceObject. In that case, we'll skip checking for an interface direct edge and\n // simply cast into that implementation below.\n const fieldIsOfAnImplementation = field.parent.name !== currentType.name;\n\n // First, we check if there is a direct edge from the interface (which only happens if we're in a subgraph that knows all of the\n // implementations of that interface globally and all of them resolve the field).\n // If there is one, then we have 2 options:\n // - either we take that edge,\n // - or we type-explode (like when we don't have a direct interface edge).\n // We want to avoid looking at both options if we can avoid it because it multiplies planning work quickly if\n // we always check both options. And in general, taking the interface edge is better than type explosion \"if it works\",\n // so we distinguish a number of cases where we know that:\n // - either type-exploding cannot work unless taking the interface edge also do (the `anImplementationIsEntityWithFieldShareable`)\n // - or that type-exploding cannot be more efficient than the direct path (when no @provides are involved; if a provide is involved\n // in one of the implementation, then type-exploding may lead to a shorter overall plan thanks to that @provides)\n const itfEdge = fieldIsOfAnImplementation ? undefined : nextEdgeForField(path, operation, overrideConditions);\n let itfPath: OpGraphPath | undefined = undefined;\n let directPathOverrideTypeExplosion = false;\n if (itfEdge) {\n itfPath = addFieldEdge(path, operation, itfEdge, conditionResolver, context);\n assert(itfPath, () => `Interface edge ${itfEdge} shouldn't have conditions`);\n // There is 2 separate case where we going to do _both_ \"direct\" and \"type-exploding\" options:\n // 1. if there is a @provides: in that case the \"type-exploding\" case can legit be more efficient and we want to\n // consider it \"all the way\"\n // 2. in the sub-case of `!anImplementationIsEntityWithFieldShareable(...)`, where we want to have the type-exploding\n // option only for the case where the \"direct\" one fails later. But in that case, we'll remember that if the direct\n // option pan out, then we can ignore the type-exploding one.\n // `directPathOverrideTypeExplosion` indicates that we're in the 2nd case above, not the 1st one.\n directPathOverrideTypeExplosion =\n field.name === typenameFieldName\n || (!isProvidedEdge(itfEdge) && !anImplementationHasAProvides(field.name, currentType));\n // We can special case terminal (leaf) fields: as long they have no @provides, then the path ends there and there is no need\n // to check type explosion \"in case the direct path don't pan out\". Additionally, if we're not in the case where an implementation\n // is an entity and the field is shareable, then there is no case where the direct case wouldn't \"pan out\" but the type-explosion\n // would, so we can ignore type-exploding there too.\n // TODO: We should re-assess this when we support @requires on interface fields (typically, should we even try to type-explode\n // if the direct edge cannot be satisfied? Probably depends on the exact semantic of @requires on interface fields).\n if (directPathOverrideTypeExplosion && (isLeafType(field.type!) || !anImplementationIsEntityWithFieldShareable(path, field.name, currentType))) {\n debug.groupEnd(() => `Collecting (leaf) field ${field} on interface ${currentType} without type-exploding`);\n return { options: pathAsOptions(itfPath) };\n }\n debug.log(() => `Collecting field ${field} on interface ${currentType} as 1st option`);\n }\n\n // There is 2 main cases to handle here:\n // - the most common is that it's a field of the interface that is queried, and\n // so we should type-explode because either didn't had a direct edge, or @provides\n // makes it potentially worthwhile to check with type explosion.\n // - but, as mentioned earlier, we could be in the case where the field queried is actually of one\n // of the implementation of the interface. In that case, we only want to consider that one\n // implementation.\n let implementations: readonly ObjectType[];\n if (fieldIsOfAnImplementation) {\n assert(\n isObjectType(field.parent) && path.tailPossibleRuntimeTypes().some((t) => t.name === field.parent.name),\n () => `${field.coordinate} requested on ${currentType}, but ${field.parent} is not an implementation`\n );\n implementations = [ field.parent ];\n debug.log(() => `Casting into requested type ${field.parent}`);\n } else {\n implementations = path.tailPossibleRuntimeTypes();\n debug.log(() => !itfPath\n ? `No direct edge: type exploding interface ${currentType} into possible runtime types [${implementations.join(', ')}]`\n : `Type exploding interface ${currentType} into possible runtime types [${implementations.join(', ')}] as 2nd option`\n );\n }\n\n // For all implementations, We need to call advanceSimultaneousPathsWithOperation on a made-up Fragment. If any\n // gives use empty options, we bail.\n const optionsByImplems: OpGraphPath[][][] = [];\n for (const implemType of implementations) {\n const castOp = new FragmentElement(currentType, implemType.name);\n debug.group(() => `Handling implementation ${implemType}`);\n const implemOptions = advanceSimultaneousPathsWithOperation(\n supergraphSchema,\n new SimultaneousPathsWithLazyIndirectPaths([path], context, conditionResolver, [], [], overrideConditions),\n castOp,\n overrideConditions,\n );\n // If we find no option for that implementation, we bail (as we need to simultaneously advance all implementations).\n if (!implemOptions) {\n debug.groupEnd();\n debug.groupEnd(() => `Cannot collect field ${field} from ${implemType}: stopping with options [${itfPath}]`);\n return { options: pathAsOptions(itfPath) };\n }\n // If the new fragment makes it so that we're on an unsatisfiable branch, we just ignore that implementation.\n if (implemOptions.length === 0) {\n debug.groupEnd(() => `Cannot ever get ${implemType} from this branch, ignoring it`);\n continue;\n }\n // For each option, we call advanceSimultaneousPathsWithOperation again on our own operation (the field),\n // which gives us some options (or not and we bail).\n let withField: SimultaneousPaths[] = [];\n debug.log(() => `Trying to collect ${field} from options ${advanceOptionsToString(implemOptions)}`);\n for (const optPaths of implemOptions) {\n debug.group(() => `For ${simultaneousPathsToString(optPaths)}`);\n const withFieldOptions = advanceSimultaneousPathsWithOperation(\n supergraphSchema,\n optPaths,\n operation,\n overrideConditions,\n );\n if (!withFieldOptions) {\n debug.groupEnd(() => `Cannot collect ${field}`);\n continue;\n }\n // Advancing a field should never get us into an unsatisfiable condition. Only fragments can.\n assert(withFieldOptions.length > 0, () => `Unexpected unsatisfiable path after ${optPaths} for ${operation}`);\n debug.groupEnd(() => `Collected field ${field}: adding ${advanceOptionsToString(withFieldOptions)}`);\n withField = withField.concat(withFieldOptions.map(opt => opt.paths));\n }\n // If we find no option to advance that implementation, we bail (as we need to simultaneously advance all implementations).\n if (withField.length === 0) {\n debug.groupEnd(); // implem group\n debug.groupEnd(() => `Cannot collect field ${field} from ${implemType}: stopping with options [${itfPath}]`);\n return { options: pathAsOptions(itfPath) };\n }\n debug.groupEnd(() => `Collected field ${field} from ${implemType}`);\n optionsByImplems.push(withField);\n }\n let allOptions = flatCartesianProduct(optionsByImplems);\n if (itfPath) {\n if (directPathOverrideTypeExplosion) {\n ({ thisPath: itfPath, otherOptions: allOptions } = itfPath.markOverridding(allOptions));\n }\n allOptions = pathAsOptions(itfPath)!.concat(allOptions);\n }\n debug.groupEnd(() => `With type-exploded options: ${advanceOptionsToString(allOptions)}`);\n return { options: allOptions, hasOnlyTypeExplodedResults: !itfPath };\n case 'UnionType':\n assert(field.name === typenameFieldName, () => `Invalid field selection ${operation} for union type ${currentType}`);\n const typenameEdge = nextEdgeForField(path, operation, overrideConditions);\n assert(typenameEdge, `Should always have an edge for __typename edge on an union`);\n debug.groupEnd(() => `Trivial collection of __typename for union ${currentType}`);\n return { options: pathAsOptions(addFieldEdge(path, operation, typenameEdge, conditionResolver, context)) };\n default:\n // Only object, interfaces and unions (only for __typename) have fields so the query should have been flagged invalid if a field was selected on something else.\n assert(false, `Unexpected ${currentType.kind} type ${currentType} from ${path.tail} given operation ${operation}`);\n }\n } else {\n assert(operation.kind === 'FragmentElement', () => \"Unhandled operation kind: \" + operation.kind);\n if (!operation.typeCondition || currentType.name === operation.typeCondition.name) {\n // If there is no typename (or the condition is the type we're already one), it means we're essentially\n // just applying some directives (could be a @skip/@include for instance). This doesn't make us take any\n // edge but if operation does have directives, we record it.\n debug.groupEnd(() => `No edge to take for condition ${operation} from current type ${currentType}`);\n const updatedPath = operation.appliedDirectives.length > 0\n ? path.add(operation, null, noConditionsResolution, operation.deferDirectiveArgs())\n : path;\n return { options: [[ updatedPath ]] };\n }\n const typeName = operation.typeCondition.name;\n switch (currentType.kind) {\n case 'InterfaceType':\n case 'UnionType':\n // If we have an edge for the type case, take that.\n const edge = nextEdgeForTypeCast(path, typeName);\n if (edge) {\n assert(!edge.conditions, \"TypeCast collecting edges shouldn't have conditions\");\n debug.groupEnd(() => `Using type-casting edge for ${typeName} from current type ${currentType}`);\n return { options: [[path.add(operation, edge, noConditionsResolution, operation.deferDirectiveArgs())]] };\n }\n // Otherwise, checks what is the intersection between the possible runtime types of the current type\n // and the ones of the cast. We need to be able to go into all those types simultaneously.\n const parentTypes = path.tailPossibleRuntimeTypes() ;\n const castedTypes = possibleRuntimeTypes(supergraphSchema.type(typeName) as CompositeType);\n const intersection = parentTypes.filter(t1 => castedTypes.some(t2 => t1.name === t2.name)).map(t => t.name);\n debug.log(() => `Trying to type-explode into intersection between ${currentType} and ${typeName} = [${intersection}]`);\n const optionsByImplems: OpGraphPath[][][] = [];\n for (const tName of intersection) {\n debug.group(() => `Trying ${tName}`);\n const castOp = new FragmentElement(currentType, tName, operation.appliedDirectives);\n const implemOptions = advanceSimultaneousPathsWithOperation(\n supergraphSchema,\n new SimultaneousPathsWithLazyIndirectPaths([path], context, conditionResolver, [], [], overrideConditions),\n castOp,\n overrideConditions,\n );\n if (!implemOptions) {\n debug.groupEnd();\n debug.groupEnd(() => `Cannot advance into ${tName} from ${currentType}: no options for ${operation}.`);\n return { options: undefined };\n }\n // If the new fragment makes it so that we're on an unsatisfiable branch, we just ignore that implementation.\n if (implemOptions.length === 0) {\n debug.groupEnd(() => `Cannot ever get ${tName} from this branch, ignoring it`);\n continue;\n }\n debug.groupEnd(() => `Advanced into ${tName} from ${currentType}: ${advanceOptionsToString(implemOptions)}`);\n optionsByImplems.push(implemOptions.map(opt => opt.paths));\n }\n const allCastOptions = flatCartesianProduct(optionsByImplems);\n debug.groupEnd(() => `Type-exploded options: ${advanceOptionsToString(allCastOptions)}`);\n return { options: allCastOptions };\n case 'ObjectType':\n // We've already handled the case of a fragment whose condition is this type. But the fragment might\n // be for either:\n // - a super-type of the current type: in which case, we're pretty much in the same case than if there\n // were no particular condition.\n // - if the current type is an @interfaceObject, then this can be an implementation type of\n // the interface in the supergraph. In that case, the type of the condition is not a\n // type known of the subgraph, but the subgraph might still be able to handle some of\n // fields, so in that case, we essentially \"ignore\" the fragment for now. We will re-add\n // it back later for fields that are not in the current subgraph after we've taken\n // a @key for the interface.\n // - another, incompatible type. This can happen for a type that intersects a super-type of the\n // current type (since graphQL allows a fragment as long as there is an intersection). In that\n // case, the whole operation simply cannot ever return anything.\n const conditionType = supergraphSchema.type(typeName)!;\n if (isAbstractType(conditionType) && possibleRuntimeTypes(conditionType).some(t => t.name == currentType.name)) {\n debug.groupEnd(() => `${typeName} is a super-type of current type ${currentType}: no edge to take`);\n // Operation type condition is applicable on the current type, so the types are already exploded but the\n // condition can reference types from the supergraph that are not present in the local subgraph.\n //\n // If operation has applied directives we need to convert to inline fragment without type condition, otherwise\n // we ignore the fragment altogether.\n const updatedPath = operation.appliedDirectives.length > 0\n ? path.add(operation.withUpdatedTypes(currentType, undefined), null, noConditionsResolution, operation.deferDirectiveArgs())\n : path;\n return { options: [[ updatedPath ]] };\n }\n\n if (path.tailIsInterfaceObject()) {\n const fakeDownCastEdge = path.nextEdges().find((e) => e.transition.kind === 'InterfaceObjectFakeDownCast' && e.transition.castedTypeName === typeName);\n if (fakeDownCastEdge) {\n const conditionResolution = canSatisfyConditions(path, fakeDownCastEdge, conditionResolver, context, [], [], getFieldParentTypeForOpTrigger);\n if (!conditionResolution.satisfied) {\n return { options: undefined };\n }\n const updatedPath = path.add(operation, fakeDownCastEdge, conditionResolution, operation.deferDirectiveArgs());\n return { options: [[ updatedPath ]] };\n }\n }\n\n // The operation we're dealing with can never return results (the type conditions applies have no intersection).\n // This means we _can_ fulfill this operation (by doing nothing and returning an empty result), which we indicate\n // by return an empty list of options.\n debug.groupEnd(() => `Cannot ever get ${typeName} from current type ${currentType}: returning empty branch`);\n return { options: [] };\n default:\n // We shouldn't have a fragment on a non-selectable type\n assert(false, `Unexpected ${currentType.kind} type ${currentType} from ${path.tail} given operation ${operation}`);\n }\n }\n}\n\nfunction addFieldEdge(\n path: OpGraphPath,\n fieldOperation: Field,\n edge: Edge,\n conditionResolver: ConditionResolver,\n context: PathContext\n): OpGraphPath | undefined {\n const conditionResolution = canSatisfyConditions(path, edge, conditionResolver, context, [], [], getFieldParentTypeForOpTrigger);\n return conditionResolution.satisfied ? path.add(fieldOperation, edge, conditionResolution) : undefined;\n}\n\nfunction pathAsOptions(path: OpGraphPath | undefined): SimultaneousPaths[] | undefined {\n return path ? [[path]] : undefined;\n}\n\nfunction nextEdgeForField(\n path: OpGraphPath,\n field: Field,\n overrideConditions: Map\n): Edge | undefined {\n return edgeForField(path.graph, path.tail, field, overrideConditions);\n}\n\nfunction edgeForField(\n graph: QueryGraph,\n vertex: Vertex,\n field: Field,\n overrideConditions: Map\n): Edge | undefined {\n const candidates = graph.outEdges(vertex)\n .filter(e =>\n e.transition.kind === 'FieldCollection'\n && field.selects(e.transition.definition, true, undefined, e.requiredContexts?.map(c => c.namedParameter))\n && e.satisfiesOverrideConditions(overrideConditions)\n );\n assert(candidates.length <= 1, () => `Vertex ${vertex} has multiple edges matching ${field} (${candidates})`);\n return candidates.length === 0 ? undefined : candidates[0];\n}\n\nfunction nextEdgeForTypeCast(\n path: OpGraphPath,\n typeName: string\n): Edge | undefined {\n return edgeForTypeCast(path.graph, path.tail, typeName);\n}\n\nfunction edgeForTypeCast(\n graph: QueryGraph,\n vertex: Vertex,\n typeName: string\n): Edge | undefined {\n const candidates = graph.outEdges(vertex).filter(e => e.transition.kind === 'DownCast' && typeName === e.transition.castedType.name);\n assert(candidates.length <= 1, () => `Vertex ${vertex} has multiple edges matching ${typeName} (${candidates})`);\n return candidates.length === 0 ? undefined : candidates[0];\n}\n\nconst getFieldParentTypeForOpTrigger = (trigger: OpTrigger): CompositeType | null => {\n if (!isPathContext(trigger)) {\n if (trigger.kind === 'Field') {\n return trigger.definition.parent;\n }\n }\n return null;\n};\n\nconst getFieldParentTypeForEdge = (transition: Transition): CompositeType | null => {\n if (transition.kind === 'FieldCollection') {\n const type = transition.definition.parent;\n if (!type || isScalarType(type) || isEnumType(type)) {\n return null;\n }\n if (isObjectType(type) || isInterfaceType(type) || isUnionType(type)) {\n return type;\n }\n }\n return null;\n}\n", "'use strict';\n\nfunction isForwardRefNode(object) {\n return typeof object === 'object' && object !== null && typeof object.id === 'string';\n}\nfunction isNodeModel(object) {\n return typeof object === 'object' && object !== null && object.$$type === 'Node' && typeof object.id === 'string';\n}\nfunction isNodeRef(node) {\n return isNodeModel(node) || isForwardRefNode(node);\n}\nfunction isNodeRefLike(node) {\n return typeof node === 'string' || isNodeRef(node);\n}\nfunction isNodeRefGroupLike(target) {\n return Array.isArray(target) && target.every(isNodeRefLike);\n}\nfunction isCompass(c) {\n return ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw', 'c'].includes(c);\n}\nfunction toNodeRef(target) {\n if (isNodeRef(target)) {\n return target;\n }\n const [id, port, compass] = target.split(':');\n if (isCompass(compass)) {\n return { id, port, compass };\n }\n return { id, port };\n}\nfunction toNodeRefGroup(targets) {\n if (targets.length < 2 && (isNodeRefLike(targets[0]) && isNodeRefLike(targets[1])) === false) {\n throw Error('EdgeTargets must have at least 2 elements.');\n }\n return targets.map((t) => toNodeRef(t));\n}\n\nconst RootModelsContext = Object.seal({\n Graph: null,\n Digraph: null,\n Subgraph: null,\n Node: null,\n Edge: null,\n});\nfunction createModelsContext(models) {\n return Object.assign(Object.seal(Object.assign({}, RootModelsContext)), models);\n}\n\nexports.RootModelsContext = RootModelsContext;\nexports.createModelsContext = createModelsContext;\nexports.isCompass = isCompass;\nexports.isForwardRefNode = isForwardRefNode;\nexports.isNodeModel = isNodeModel;\nexports.isNodeRef = isNodeRef;\nexports.isNodeRefGroupLike = isNodeRefGroupLike;\nexports.isNodeRefLike = isNodeRefLike;\nexports.toNodeRef = toNodeRef;\nexports.toNodeRefGroup = toNodeRefGroup;\n", "'use strict';\n\nfunction _pipe(...args) {\n const [o1, ...operations] = args;\n return (...t) => operations.reduce((acc, f) => f(acc), o1(...t));\n}\nfunction pipe(o1, ...operations) {\n return _pipe(o1, ...operations);\n}\nconst defer =\n (fn) =>\n (...args) =>\n (src) =>\n fn(src, ...args);\nconst toIterable = (f) => ({\n [Symbol.iterator]: f,\n});\nconst map = defer((src, selector) =>\n Array.from(\n toIterable(function* () {\n for (const v of src) {\n yield selector(v);\n }\n }),\n ),\n);\nconst filter = defer((src, pred) =>\n Array.from(\n toIterable(function* () {\n for (const x of src) {\n if (pred(x)) {\n yield x;\n }\n }\n }),\n ),\n);\n\nexports.filter = filter;\nexports.map = map;\nexports.pipe = pipe;\n", "'use strict';\n\nvar index_js = require('../utils/index.cjs');\nvar index_js$1 = require('../common/index.cjs');\n\nclass Builder {\n options;\n getLocation() {\n return this.options?.locationFunction?.() ?? null;\n }\n constructor(options) {\n this.options = options;\n }\n createElement(type, props, children = []) {\n return {\n location: this.getLocation(),\n ...props,\n type,\n children,\n };\n }\n}\n\nconst createElement = Builder.prototype.createElement.bind(new Builder());\n\nconst EOL = /\\r?\\n/;\nfunction joinBy(sep) {\n return (value) => value.join(sep);\n}\nfunction wrapWith(wrapper) {\n return (value) => wrapper + value + wrapper;\n}\nfunction wrapByPair(l, r) {\n return (value) => l + value + r;\n}\nfunction leftPadWith(left) {\n return (value) => left + value;\n}\nconst escape = (value) => value.replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"');\nconst splitByLine = (value) => value.split(EOL);\nconst indent = (style, size, eol) =>\n index_js.pipe(splitByLine, index_js.map(leftPadWith(style === 'space' ? ' '.repeat(size) : '\\n')), joinBy(eol));\nconst endOfLine = (eol) => {\n switch (eol) {\n case 'crlf':\n return '\\r\\n';\n case 'lf':\n return '\\n';\n }\n};\n\nconst AttributeListPrintPlugin = {\n match(ast) {\n return ast.type === 'AttributeList';\n },\n print(context, ast) {\n if (ast.children.length === 0) {\n return `${ast.kind.toLocaleLowerCase()} [];`;\n }\n const eol = endOfLine(context.endOfLine);\n return index_js.pipe(\n index_js.map(context.print),\n joinBy(eol),\n indent(context.indentStyle, context.indentSize, eol),\n wrapByPair(`${ast.kind.toLocaleLowerCase()} [${eol}`, `${eol}];`),\n )(ast.children);\n },\n};\n\nconst AttributePrintPlugin = {\n match(ast) {\n return ast.type === 'Attribute';\n },\n print(context, ast) {\n return `${context.print(ast.key)} = ${context.print(ast.value)};`;\n },\n};\n\nconst CommentPrintPlugin = {\n match(ast) {\n return ast.type === 'Comment';\n },\n print(context, ast) {\n const eol = endOfLine(context.endOfLine);\n switch (ast.kind) {\n case 'Block':\n return index_js.pipe(\n splitByLine,\n index_js.map(leftPadWith(' * ')),\n joinBy(eol),\n wrapByPair(`/**${eol}`, `${eol} */`),\n )(ast.value);\n case 'Macro':\n return index_js.pipe(splitByLine, index_js.map(leftPadWith('# ')), joinBy(eol))(ast.value);\n case 'Slash':\n default:\n return index_js.pipe(splitByLine, index_js.map(leftPadWith('// ')), joinBy(eol))(ast.value);\n }\n },\n};\n\nconst DotPrintPlugin = {\n match(ast) {\n return ast.type === 'Dot';\n },\n print(context, ast) {\n return ast.children.map(context.print).join(endOfLine(context.endOfLine));\n },\n};\n\nconst EdgePrintPlugin = {\n match(ast) {\n return ast.type === 'Edge';\n },\n print(context, ast) {\n const targets = index_js.pipe(index_js.map(context.print), joinBy(context.directed ? ' -> ' : ' -- '))(ast.targets);\n if (ast.children.length === 0) {\n return `${targets};`;\n }\n const eol = endOfLine(context.endOfLine);\n const contents = index_js.pipe(\n index_js.map(context.print),\n joinBy(eol),\n indent(context.indentStyle, context.indentSize, eol),\n wrapByPair(`[${eol}`, `${eol}];`),\n )(ast.children);\n return `${targets} ${contents}`;\n },\n};\n\nconst GraphPrintPlugin = {\n match(ast) {\n return ast.type === 'Graph';\n },\n print(context, ast) {\n context.directed = ast.directed;\n const parts = [];\n if (ast.strict) {\n parts.push('strict');\n }\n parts.push(ast.directed ? 'digraph' : 'graph');\n if (ast.id) {\n parts.push(context.print(ast.id));\n }\n if (ast.children.length === 0) {\n return `${parts.join(' ')} {}`;\n }\n const eol = endOfLine(context.endOfLine);\n const contents = index_js.pipe(\n index_js.map(context.print),\n joinBy(eol),\n indent(context.indentStyle, context.indentSize, eol),\n wrapByPair(`{${eol}`, `${eol}}`),\n )(ast.children);\n return `${parts.join(' ')} ${contents}`;\n },\n};\n\nconst quoteLiteralValue = index_js.pipe(escape, wrapWith('\"'));\nconst quoteHTMLLikeLiteralValue = wrapByPair('<', '>');\nconst LiteralPrintPlugin = {\n match(ast) {\n return ast.type === 'Literal';\n },\n print(context, ast) {\n switch (ast.quoted) {\n case 'html':\n return quoteHTMLLikeLiteralValue(ast.value);\n case true:\n return quoteLiteralValue(ast.value);\n case false:\n default:\n return escape(ast.value);\n }\n },\n};\n\nconst NodePrintPlugin = {\n match(ast) {\n return ast.type === 'Node';\n },\n print(context, ast) {\n const id = context.print(ast.id);\n if (ast.children.length === 0) {\n return `${id};`;\n }\n const eol = endOfLine(context.endOfLine);\n const contents = index_js.pipe(\n index_js.map(context.print),\n joinBy(eol),\n indent(context.indentStyle, context.indentSize, eol),\n wrapByPair(`[${eol}`, `${eol}];`),\n )(ast.children);\n return `${id} ${contents}`;\n },\n};\n\nconst NodeRefGroupPrintPlugin = {\n match(ast) {\n return ast.type === 'NodeRefGroup';\n },\n print(context, ast) {\n return index_js.pipe(index_js.map(context.print), joinBy(' '), wrapByPair('{', '}'))(ast.children);\n },\n};\n\nconst NodeRefPrintPlugin = {\n match(ast) {\n return ast.type === 'NodeRef';\n },\n print(context, ast) {\n const parts = [context.print(ast.id)];\n if (ast.port) {\n parts.push(context.print(ast.port));\n }\n if (ast.compass) {\n parts.push(context.print(ast.compass));\n }\n return parts.join(':');\n },\n};\n\nconst SubgraphPrintPlugin = {\n match(ast) {\n return ast.type === 'Subgraph';\n },\n print(context, ast) {\n const parts = ['subgraph'];\n if (ast.id) {\n parts.push(context.print(ast.id));\n }\n if (ast.children.length === 0) {\n return `${parts.join(' ')} {}`;\n }\n const eol = endOfLine(context.endOfLine);\n const contents = index_js.pipe(\n index_js.map(context.print),\n joinBy(eol),\n indent(context.indentStyle, context.indentSize, eol),\n wrapByPair(`{${eol}`, `${eol}}`),\n )(ast.children);\n return `${parts.join(' ')} ${contents}`;\n },\n};\n\nconst defaultPlugins$2 = [\n AttributeListPrintPlugin,\n AttributePrintPlugin,\n CommentPrintPlugin,\n DotPrintPlugin,\n EdgePrintPlugin,\n GraphPrintPlugin,\n LiteralPrintPlugin,\n NodePrintPlugin,\n NodeRefGroupPrintPlugin,\n NodeRefPrintPlugin,\n SubgraphPrintPlugin,\n];\n\nclass Printer {\n options;\n #plugins = [...defaultPlugins$2];\n constructor(options = {}) {\n this.options = options;\n }\n print(ast) {\n const plugins = [...this.#plugins];\n const { indentSize = 2, indentStyle = 'space', endOfLine = 'lf' } = this.options;\n const context = {\n directed: true,\n indentSize,\n indentStyle,\n endOfLine,\n print(a) {\n for (const plugin of plugins) {\n if (plugin.match(a)) {\n return plugin.print(context, a);\n }\n }\n throw Error();\n },\n };\n return context.print(ast);\n }\n}\n\nfunction stringify(ast, options) {\n const result = new Printer(options).print(ast);\n if (!result) {\n throw new Error();\n }\n return result;\n}\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || ' ';\n if (str.length > targetLength) {\n return str;\n }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\nlet DotSyntaxError$1 = class DotSyntaxError extends Error {\n static buildMessage(expected, found) {\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, (ch) => '\\\\x0' + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => '\\\\x' + hex(ch));\n }\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, (ch) => '\\\\x0' + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => '\\\\x' + hex(ch));\n }\n function describeExpectation(expectation) {\n switch (expectation.type) {\n case 'literal':\n return '\"' + literalEscape(expectation.text) + '\"';\n case 'class':\n const escapedParts = expectation.parts.map((part) => {\n return Array.isArray(part) ? classEscape(part[0]) + '-' + classEscape(part[1]) : classEscape(part);\n });\n return '[' + (expectation.inverted ? '^' : '') + escapedParts + ']';\n case 'any':\n return 'any character';\n case 'end':\n return 'end of input';\n case 'other':\n return expectation.description;\n }\n }\n function describeExpected(expected1) {\n const descriptions = expected1.map(describeExpectation);\n let i;\n let j;\n descriptions.sort();\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n case 2:\n return descriptions[0] + ' or ' + descriptions[1];\n default:\n return descriptions.slice(0, -1).join(', ') + ', or ' + descriptions[descriptions.length - 1];\n }\n }\n function describeFound(found1) {\n return found1 ? '\"' + literalEscape(found1) + '\"' : 'end of input';\n }\n return 'Expected ' + describeExpected(expected) + ' but ' + describeFound(found) + ' found.';\n }\n message;\n expected;\n found;\n location;\n name;\n constructor(message, expected, found, location) {\n super();\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = 'DotSyntaxError';\n if (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(this, DotSyntaxError$1.prototype);\n } else {\n this.__proto__ = DotSyntaxError$1.prototype;\n }\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, DotSyntaxError$1);\n }\n }\n format(sources) {\n let str = 'Error: ' + this.message;\n if (this.location) {\n let src = null;\n let k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].grammarSource === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n let s = this.location.start;\n let loc = this.location.source + ':' + s.line + ':' + s.column;\n if (src) {\n let e = this.location.end;\n let filler = peg$padEnd('', s.line.toString().length, ' ');\n let line = src[s.line - 1];\n let last = s.line === e.line ? e.column : line.length + 1;\n str +=\n '\\n --> ' +\n loc +\n '\\n' +\n filler +\n ' |\\n' +\n s.line +\n ' | ' +\n line +\n '\\n' +\n filler +\n ' | ' +\n peg$padEnd('', s.column - 1, ' ') +\n peg$padEnd('', last - s.column, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n }\n};\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n const peg$FAILED = {};\n const peg$source = options.grammarSource;\n const peg$startRuleFunctions = {\n Dot: peg$parseDot,\n Graph: peg$parseGraph,\n Subgraph: peg$parseSubgraph,\n Node: peg$parseNode,\n Edge: peg$parseEdge,\n AttributeList: peg$parseAttributeList,\n Attribute: peg$parseAttribute,\n ClusterStatements: peg$parseClusterStatements,\n };\n let peg$startRuleFunction = peg$parseDot;\n const peg$c0 = function (v) {\n return v;\n };\n const peg$c1 = function (c1, graph, c2) {\n return b.createElement('Dot', {}, [...c1, graph, ...c2]);\n };\n const peg$c2 = 'strict';\n const peg$c3 = peg$literalExpectation('strict', true);\n const peg$c4 = 'graph';\n const peg$c5 = peg$literalExpectation('graph', true);\n const peg$c6 = 'digraph';\n const peg$c7 = peg$literalExpectation('digraph', true);\n const peg$c8 = '{';\n const peg$c9 = peg$literalExpectation('{', false);\n const peg$c10 = '}';\n const peg$c11 = peg$literalExpectation('}', false);\n const peg$c12 = function (_strict, _kind, id, children) {\n const strict = !!_strict;\n const kind = _kind.toLowerCase();\n const directed = kind === 'digraph';\n for (const edgeop of edgeops) {\n if (directed) {\n if (edgeop.operator !== '->') {\n error(`In digraph, it's necessary to describe with \"->\" operator to create edge.`, edgeop.location);\n }\n } else {\n if (edgeop.operator !== '--') {\n error(`In graph, it's necessary to describe with \"--\" operator to create edge.`, edgeop.location);\n }\n }\n }\n return b.createElement(\n 'Graph',\n id !== null\n ? {\n id,\n directed,\n strict,\n }\n : {\n directed,\n strict,\n },\n children,\n );\n };\n const peg$c13 = ';';\n const peg$c14 = peg$literalExpectation(';', false);\n const peg$c15 = function (keyValue) {\n return b.createElement(\n 'Attribute',\n {\n ...keyValue,\n },\n [],\n );\n };\n const peg$c16 = 'node';\n const peg$c17 = peg$literalExpectation('node', true);\n const peg$c18 = 'edge';\n const peg$c19 = peg$literalExpectation('edge', true);\n const peg$c20 = function (_kind, children) {\n return b.createElement(\n 'AttributeList',\n {\n kind: `${_kind.slice(0, 1).toUpperCase()}${_kind.slice(1).toLowerCase()}`,\n },\n children,\n );\n };\n const peg$c21 = function (id, rhs, _children) {\n return b.createElement(\n 'Edge',\n {\n targets: [id, ...rhs],\n },\n _children ?? [],\n );\n };\n const peg$c22 = function (id, _children) {\n return b.createElement(\n 'Node',\n {\n id,\n },\n _children ?? [],\n );\n };\n const peg$c23 = '=';\n const peg$c24 = peg$literalExpectation('=', false);\n const peg$c25 = function (key, value) {\n return { key, value };\n };\n const peg$c26 = ',';\n const peg$c27 = peg$literalExpectation(',', false);\n const peg$c28 = function (kv) {\n return b.createElement(\n 'Attribute',\n {\n ...kv,\n location: location(),\n },\n [],\n );\n };\n const peg$c29 = '[';\n const peg$c30 = peg$literalExpectation('[', false);\n const peg$c31 = ']';\n const peg$c32 = peg$literalExpectation(']', false);\n const peg$c33 = function (list) {\n return list;\n };\n const peg$c34 = function (id, v) {\n return v;\n };\n const peg$c35 = function (id, rest) {\n return b.createElement('NodeRefGroup', {}, [id, ...rest]);\n };\n const peg$c36 = '->';\n const peg$c37 = peg$literalExpectation('->', false);\n const peg$c38 = '--';\n const peg$c39 = peg$literalExpectation('--', false);\n const peg$c40 = function (operator) {\n return { operator, location: location() };\n };\n const peg$c41 = function (edgeop, id, rest) {\n edgeops.push(edgeop);\n return [id].concat(rest || []);\n };\n const peg$c42 = function (id, port) {\n return b.createElement(\n 'NodeRef',\n {\n id,\n ...port,\n },\n [],\n );\n };\n const peg$c43 = peg$otherExpectation('port');\n const peg$c44 = ':';\n const peg$c45 = peg$literalExpectation(':', false);\n const peg$c46 = function (port, compass) {\n return compass;\n };\n const peg$c47 = function (port, compass) {\n if (['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].includes(port)) {\n return { compass: port };\n } else if (compass) {\n return { port, compass };\n }\n return { port };\n };\n const peg$c48 = 'subgraph';\n const peg$c49 = peg$literalExpectation('subgraph', true);\n const peg$c50 = function (id) {\n return id;\n };\n const peg$c51 = function (id, _children) {\n const children = _children ?? [];\n return b.createElement('Subgraph', id ? { id } : {}, children);\n };\n const peg$c52 = 'n';\n const peg$c53 = peg$literalExpectation('n', false);\n const peg$c54 = 'ne';\n const peg$c55 = peg$literalExpectation('ne', false);\n const peg$c56 = 'e';\n const peg$c57 = peg$literalExpectation('e', false);\n const peg$c58 = 'se';\n const peg$c59 = peg$literalExpectation('se', false);\n const peg$c60 = 's';\n const peg$c61 = peg$literalExpectation('s', false);\n const peg$c62 = 'sw';\n const peg$c63 = peg$literalExpectation('sw', false);\n const peg$c64 = 'w';\n const peg$c65 = peg$literalExpectation('w', false);\n const peg$c66 = 'nw';\n const peg$c67 = peg$literalExpectation('nw', false);\n const peg$c68 = function (value) {\n return { value, quoted: false };\n };\n const peg$c69 = '\"';\n const peg$c70 = peg$literalExpectation('\"', false);\n const peg$c71 = function (value) {\n return { value, quoted: true };\n };\n const peg$c72 = function (v) {\n return b.createElement(\n 'Literal',\n {\n ...v,\n },\n [],\n );\n };\n const peg$c73 = function (value) {\n return b.createElement(\n 'Literal',\n {\n value,\n quoted: false,\n },\n [],\n );\n };\n const peg$c74 = '/*';\n const peg$c75 = peg$literalExpectation('/*', false);\n const peg$c76 = '*/';\n const peg$c77 = peg$literalExpectation('*/', false);\n const peg$c78 = peg$anyExpectation();\n const peg$c79 = function (v) {\n return b.createElement(\n 'Comment',\n {\n kind: 'Block',\n value: dedent(v.join('').replace(/[ \\t]*\\*/g, '')),\n },\n [],\n );\n };\n const peg$c80 = function (lines) {\n return b.createElement(\n 'Comment',\n {\n kind: 'Slash',\n value: dedent(lines.join('\\n')),\n },\n [],\n );\n };\n const peg$c81 = '//';\n const peg$c82 = peg$literalExpectation('//', false);\n const peg$c83 = function (v) {\n return v.join('');\n };\n const peg$c84 = function (lines) {\n return b.createElement(\n 'Comment',\n {\n kind: 'Macro',\n value: dedent(lines.join('\\n')),\n },\n [],\n );\n };\n const peg$c85 = '#';\n const peg$c86 = peg$literalExpectation('#', false);\n const peg$c87 = peg$otherExpectation('UNICODE_STRING');\n const peg$c88 = function (first, rest) {\n return first + rest.join('');\n };\n const peg$c89 = function (first, rest) {\n return first + rest;\n };\n const peg$c90 = '$';\n const peg$c91 = peg$literalExpectation('$', false);\n const peg$c92 = '_';\n const peg$c93 = peg$literalExpectation('_', false);\n const peg$c94 = peg$otherExpectation('NUMBER');\n const peg$c95 = '-';\n const peg$c96 = peg$literalExpectation('-', false);\n const peg$c97 = '.';\n const peg$c98 = peg$literalExpectation('.', false);\n const peg$c99 = /^[0-9]/;\n const peg$c100 = peg$classExpectation([['0', '9']], false, false);\n const peg$c101 = function (n) {\n return text();\n };\n const peg$c102 = function (v) {\n return b.createElement(\n 'Literal',\n {\n value: v.slice(1, v.length - 1),\n quoted: 'html',\n },\n [],\n );\n };\n const peg$c103 = '<';\n const peg$c104 = peg$literalExpectation('<', false);\n const peg$c105 = '>';\n const peg$c106 = peg$literalExpectation('>', false);\n const peg$c107 = function (v) {\n return '<' + v.join('') + '>';\n };\n const peg$c108 = function (chars) {\n return b.createElement(\n 'Literal',\n {\n value: chars.join(''),\n quoted: true,\n },\n [],\n );\n };\n const peg$c109 = function () {\n return text();\n };\n const peg$c110 = '\\\\';\n const peg$c111 = peg$literalExpectation('\\\\', false);\n const peg$c112 = function (v) {\n return v[1] === '\"' ? '\"' : v[0] + v[1];\n };\n const peg$c113 = function () {\n return '';\n };\n const peg$c114 = /^[\\n\\r\\u2028\\u2029]/;\n const peg$c115 = peg$classExpectation(['\\n', '\\r', '\\u2028', '\\u2029'], false, false);\n const peg$c116 = peg$otherExpectation('end of line');\n const peg$c117 = '\\n';\n const peg$c118 = peg$literalExpectation('\\n', false);\n const peg$c119 = '\\r\\n';\n const peg$c120 = peg$literalExpectation('\\r\\n', false);\n const peg$c121 = '\\r';\n const peg$c122 = peg$literalExpectation('\\r', false);\n const peg$c123 = '\\u2028';\n const peg$c124 = peg$literalExpectation('\\u2028', false);\n const peg$c125 = '\\u2029';\n const peg$c126 = peg$literalExpectation('\\u2029', false);\n const peg$c134 = peg$otherExpectation('whitespace');\n const peg$c135 = peg$otherExpectation('WHITESPACE');\n const peg$c136 = /^[\\n\\r]/;\n const peg$c137 = peg$classExpectation(['\\n', '\\r'], false, false);\n const peg$c138 = /^[ \\t]/;\n const peg$c139 = peg$classExpectation([' ', '\\t'], false, false);\n const peg$c140 =\n /^[a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137-\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148-\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C-\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA-\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9-\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC-\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF-\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F-\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0-\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB-\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE-\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6-\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FC7\\u1FD0-\\u1FD3\\u1FD6-\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6-\\u1FF7\\u210A\\u210E-\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C-\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65-\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73-\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3-\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]/;\n const peg$c141 = peg$classExpectation(\n [\n ['a', 'z'],\n '\\xB5',\n ['\\xDF', '\\xF6'],\n ['\\xF8', '\\xFF'],\n '\\u0101',\n '\\u0103',\n '\\u0105',\n '\\u0107',\n '\\u0109',\n '\\u010B',\n '\\u010D',\n '\\u010F',\n '\\u0111',\n '\\u0113',\n '\\u0115',\n '\\u0117',\n '\\u0119',\n '\\u011B',\n '\\u011D',\n '\\u011F',\n '\\u0121',\n '\\u0123',\n '\\u0125',\n '\\u0127',\n '\\u0129',\n '\\u012B',\n '\\u012D',\n '\\u012F',\n '\\u0131',\n '\\u0133',\n '\\u0135',\n ['\\u0137', '\\u0138'],\n '\\u013A',\n '\\u013C',\n '\\u013E',\n '\\u0140',\n '\\u0142',\n '\\u0144',\n '\\u0146',\n ['\\u0148', '\\u0149'],\n '\\u014B',\n '\\u014D',\n '\\u014F',\n '\\u0151',\n '\\u0153',\n '\\u0155',\n '\\u0157',\n '\\u0159',\n '\\u015B',\n '\\u015D',\n '\\u015F',\n '\\u0161',\n '\\u0163',\n '\\u0165',\n '\\u0167',\n '\\u0169',\n '\\u016B',\n '\\u016D',\n '\\u016F',\n '\\u0171',\n '\\u0173',\n '\\u0175',\n '\\u0177',\n '\\u017A',\n '\\u017C',\n ['\\u017E', '\\u0180'],\n '\\u0183',\n '\\u0185',\n '\\u0188',\n ['\\u018C', '\\u018D'],\n '\\u0192',\n '\\u0195',\n ['\\u0199', '\\u019B'],\n '\\u019E',\n '\\u01A1',\n '\\u01A3',\n '\\u01A5',\n '\\u01A8',\n ['\\u01AA', '\\u01AB'],\n '\\u01AD',\n '\\u01B0',\n '\\u01B4',\n '\\u01B6',\n ['\\u01B9', '\\u01BA'],\n ['\\u01BD', '\\u01BF'],\n '\\u01C6',\n '\\u01C9',\n '\\u01CC',\n '\\u01CE',\n '\\u01D0',\n '\\u01D2',\n '\\u01D4',\n '\\u01D6',\n '\\u01D8',\n '\\u01DA',\n ['\\u01DC', '\\u01DD'],\n '\\u01DF',\n '\\u01E1',\n '\\u01E3',\n '\\u01E5',\n '\\u01E7',\n '\\u01E9',\n '\\u01EB',\n '\\u01ED',\n ['\\u01EF', '\\u01F0'],\n '\\u01F3',\n '\\u01F5',\n '\\u01F9',\n '\\u01FB',\n '\\u01FD',\n '\\u01FF',\n '\\u0201',\n '\\u0203',\n '\\u0205',\n '\\u0207',\n '\\u0209',\n '\\u020B',\n '\\u020D',\n '\\u020F',\n '\\u0211',\n '\\u0213',\n '\\u0215',\n '\\u0217',\n '\\u0219',\n '\\u021B',\n '\\u021D',\n '\\u021F',\n '\\u0221',\n '\\u0223',\n '\\u0225',\n '\\u0227',\n '\\u0229',\n '\\u022B',\n '\\u022D',\n '\\u022F',\n '\\u0231',\n ['\\u0233', '\\u0239'],\n '\\u023C',\n ['\\u023F', '\\u0240'],\n '\\u0242',\n '\\u0247',\n '\\u0249',\n '\\u024B',\n '\\u024D',\n ['\\u024F', '\\u0293'],\n ['\\u0295', '\\u02AF'],\n '\\u0371',\n '\\u0373',\n '\\u0377',\n ['\\u037B', '\\u037D'],\n '\\u0390',\n ['\\u03AC', '\\u03CE'],\n ['\\u03D0', '\\u03D1'],\n ['\\u03D5', '\\u03D7'],\n '\\u03D9',\n '\\u03DB',\n '\\u03DD',\n '\\u03DF',\n '\\u03E1',\n '\\u03E3',\n '\\u03E5',\n '\\u03E7',\n '\\u03E9',\n '\\u03EB',\n '\\u03ED',\n ['\\u03EF', '\\u03F3'],\n '\\u03F5',\n '\\u03F8',\n ['\\u03FB', '\\u03FC'],\n ['\\u0430', '\\u045F'],\n '\\u0461',\n '\\u0463',\n '\\u0465',\n '\\u0467',\n '\\u0469',\n '\\u046B',\n '\\u046D',\n '\\u046F',\n '\\u0471',\n '\\u0473',\n '\\u0475',\n '\\u0477',\n '\\u0479',\n '\\u047B',\n '\\u047D',\n '\\u047F',\n '\\u0481',\n '\\u048B',\n '\\u048D',\n '\\u048F',\n '\\u0491',\n '\\u0493',\n '\\u0495',\n '\\u0497',\n '\\u0499',\n '\\u049B',\n '\\u049D',\n '\\u049F',\n '\\u04A1',\n '\\u04A3',\n '\\u04A5',\n '\\u04A7',\n '\\u04A9',\n '\\u04AB',\n '\\u04AD',\n '\\u04AF',\n '\\u04B1',\n '\\u04B3',\n '\\u04B5',\n '\\u04B7',\n '\\u04B9',\n '\\u04BB',\n '\\u04BD',\n '\\u04BF',\n '\\u04C2',\n '\\u04C4',\n '\\u04C6',\n '\\u04C8',\n '\\u04CA',\n '\\u04CC',\n ['\\u04CE', '\\u04CF'],\n '\\u04D1',\n '\\u04D3',\n '\\u04D5',\n '\\u04D7',\n '\\u04D9',\n '\\u04DB',\n '\\u04DD',\n '\\u04DF',\n '\\u04E1',\n '\\u04E3',\n '\\u04E5',\n '\\u04E7',\n '\\u04E9',\n '\\u04EB',\n '\\u04ED',\n '\\u04EF',\n '\\u04F1',\n '\\u04F3',\n '\\u04F5',\n '\\u04F7',\n '\\u04F9',\n '\\u04FB',\n '\\u04FD',\n '\\u04FF',\n '\\u0501',\n '\\u0503',\n '\\u0505',\n '\\u0507',\n '\\u0509',\n '\\u050B',\n '\\u050D',\n '\\u050F',\n '\\u0511',\n '\\u0513',\n '\\u0515',\n '\\u0517',\n '\\u0519',\n '\\u051B',\n '\\u051D',\n '\\u051F',\n '\\u0521',\n '\\u0523',\n '\\u0525',\n '\\u0527',\n ['\\u0561', '\\u0587'],\n ['\\u1D00', '\\u1D2B'],\n ['\\u1D6B', '\\u1D77'],\n ['\\u1D79', '\\u1D9A'],\n '\\u1E01',\n '\\u1E03',\n '\\u1E05',\n '\\u1E07',\n '\\u1E09',\n '\\u1E0B',\n '\\u1E0D',\n '\\u1E0F',\n '\\u1E11',\n '\\u1E13',\n '\\u1E15',\n '\\u1E17',\n '\\u1E19',\n '\\u1E1B',\n '\\u1E1D',\n '\\u1E1F',\n '\\u1E21',\n '\\u1E23',\n '\\u1E25',\n '\\u1E27',\n '\\u1E29',\n '\\u1E2B',\n '\\u1E2D',\n '\\u1E2F',\n '\\u1E31',\n '\\u1E33',\n '\\u1E35',\n '\\u1E37',\n '\\u1E39',\n '\\u1E3B',\n '\\u1E3D',\n '\\u1E3F',\n '\\u1E41',\n '\\u1E43',\n '\\u1E45',\n '\\u1E47',\n '\\u1E49',\n '\\u1E4B',\n '\\u1E4D',\n '\\u1E4F',\n '\\u1E51',\n '\\u1E53',\n '\\u1E55',\n '\\u1E57',\n '\\u1E59',\n '\\u1E5B',\n '\\u1E5D',\n '\\u1E5F',\n '\\u1E61',\n '\\u1E63',\n '\\u1E65',\n '\\u1E67',\n '\\u1E69',\n '\\u1E6B',\n '\\u1E6D',\n '\\u1E6F',\n '\\u1E71',\n '\\u1E73',\n '\\u1E75',\n '\\u1E77',\n '\\u1E79',\n '\\u1E7B',\n '\\u1E7D',\n '\\u1E7F',\n '\\u1E81',\n '\\u1E83',\n '\\u1E85',\n '\\u1E87',\n '\\u1E89',\n '\\u1E8B',\n '\\u1E8D',\n '\\u1E8F',\n '\\u1E91',\n '\\u1E93',\n ['\\u1E95', '\\u1E9D'],\n '\\u1E9F',\n '\\u1EA1',\n '\\u1EA3',\n '\\u1EA5',\n '\\u1EA7',\n '\\u1EA9',\n '\\u1EAB',\n '\\u1EAD',\n '\\u1EAF',\n '\\u1EB1',\n '\\u1EB3',\n '\\u1EB5',\n '\\u1EB7',\n '\\u1EB9',\n '\\u1EBB',\n '\\u1EBD',\n '\\u1EBF',\n '\\u1EC1',\n '\\u1EC3',\n '\\u1EC5',\n '\\u1EC7',\n '\\u1EC9',\n '\\u1ECB',\n '\\u1ECD',\n '\\u1ECF',\n '\\u1ED1',\n '\\u1ED3',\n '\\u1ED5',\n '\\u1ED7',\n '\\u1ED9',\n '\\u1EDB',\n '\\u1EDD',\n '\\u1EDF',\n '\\u1EE1',\n '\\u1EE3',\n '\\u1EE5',\n '\\u1EE7',\n '\\u1EE9',\n '\\u1EEB',\n '\\u1EED',\n '\\u1EEF',\n '\\u1EF1',\n '\\u1EF3',\n '\\u1EF5',\n '\\u1EF7',\n '\\u1EF9',\n '\\u1EFB',\n '\\u1EFD',\n ['\\u1EFF', '\\u1F07'],\n ['\\u1F10', '\\u1F15'],\n ['\\u1F20', '\\u1F27'],\n ['\\u1F30', '\\u1F37'],\n ['\\u1F40', '\\u1F45'],\n ['\\u1F50', '\\u1F57'],\n ['\\u1F60', '\\u1F67'],\n ['\\u1F70', '\\u1F7D'],\n ['\\u1F80', '\\u1F87'],\n ['\\u1F90', '\\u1F97'],\n ['\\u1FA0', '\\u1FA7'],\n ['\\u1FB0', '\\u1FB4'],\n ['\\u1FB6', '\\u1FB7'],\n '\\u1FBE',\n ['\\u1FC2', '\\u1FC4'],\n ['\\u1FC6', '\\u1FC7'],\n ['\\u1FD0', '\\u1FD3'],\n ['\\u1FD6', '\\u1FD7'],\n ['\\u1FE0', '\\u1FE7'],\n ['\\u1FF2', '\\u1FF4'],\n ['\\u1FF6', '\\u1FF7'],\n '\\u210A',\n ['\\u210E', '\\u210F'],\n '\\u2113',\n '\\u212F',\n '\\u2134',\n '\\u2139',\n ['\\u213C', '\\u213D'],\n ['\\u2146', '\\u2149'],\n '\\u214E',\n '\\u2184',\n ['\\u2C30', '\\u2C5E'],\n '\\u2C61',\n ['\\u2C65', '\\u2C66'],\n '\\u2C68',\n '\\u2C6A',\n '\\u2C6C',\n '\\u2C71',\n ['\\u2C73', '\\u2C74'],\n ['\\u2C76', '\\u2C7B'],\n '\\u2C81',\n '\\u2C83',\n '\\u2C85',\n '\\u2C87',\n '\\u2C89',\n '\\u2C8B',\n '\\u2C8D',\n '\\u2C8F',\n '\\u2C91',\n '\\u2C93',\n '\\u2C95',\n '\\u2C97',\n '\\u2C99',\n '\\u2C9B',\n '\\u2C9D',\n '\\u2C9F',\n '\\u2CA1',\n '\\u2CA3',\n '\\u2CA5',\n '\\u2CA7',\n '\\u2CA9',\n '\\u2CAB',\n '\\u2CAD',\n '\\u2CAF',\n '\\u2CB1',\n '\\u2CB3',\n '\\u2CB5',\n '\\u2CB7',\n '\\u2CB9',\n '\\u2CBB',\n '\\u2CBD',\n '\\u2CBF',\n '\\u2CC1',\n '\\u2CC3',\n '\\u2CC5',\n '\\u2CC7',\n '\\u2CC9',\n '\\u2CCB',\n '\\u2CCD',\n '\\u2CCF',\n '\\u2CD1',\n '\\u2CD3',\n '\\u2CD5',\n '\\u2CD7',\n '\\u2CD9',\n '\\u2CDB',\n '\\u2CDD',\n '\\u2CDF',\n '\\u2CE1',\n ['\\u2CE3', '\\u2CE4'],\n '\\u2CEC',\n '\\u2CEE',\n '\\u2CF3',\n ['\\u2D00', '\\u2D25'],\n '\\u2D27',\n '\\u2D2D',\n '\\uA641',\n '\\uA643',\n '\\uA645',\n '\\uA647',\n '\\uA649',\n '\\uA64B',\n '\\uA64D',\n '\\uA64F',\n '\\uA651',\n '\\uA653',\n '\\uA655',\n '\\uA657',\n '\\uA659',\n '\\uA65B',\n '\\uA65D',\n '\\uA65F',\n '\\uA661',\n '\\uA663',\n '\\uA665',\n '\\uA667',\n '\\uA669',\n '\\uA66B',\n '\\uA66D',\n '\\uA681',\n '\\uA683',\n '\\uA685',\n '\\uA687',\n '\\uA689',\n '\\uA68B',\n '\\uA68D',\n '\\uA68F',\n '\\uA691',\n '\\uA693',\n '\\uA695',\n '\\uA697',\n '\\uA723',\n '\\uA725',\n '\\uA727',\n '\\uA729',\n '\\uA72B',\n '\\uA72D',\n ['\\uA72F', '\\uA731'],\n '\\uA733',\n '\\uA735',\n '\\uA737',\n '\\uA739',\n '\\uA73B',\n '\\uA73D',\n '\\uA73F',\n '\\uA741',\n '\\uA743',\n '\\uA745',\n '\\uA747',\n '\\uA749',\n '\\uA74B',\n '\\uA74D',\n '\\uA74F',\n '\\uA751',\n '\\uA753',\n '\\uA755',\n '\\uA757',\n '\\uA759',\n '\\uA75B',\n '\\uA75D',\n '\\uA75F',\n '\\uA761',\n '\\uA763',\n '\\uA765',\n '\\uA767',\n '\\uA769',\n '\\uA76B',\n '\\uA76D',\n '\\uA76F',\n ['\\uA771', '\\uA778'],\n '\\uA77A',\n '\\uA77C',\n '\\uA77F',\n '\\uA781',\n '\\uA783',\n '\\uA785',\n '\\uA787',\n '\\uA78C',\n '\\uA78E',\n '\\uA791',\n '\\uA793',\n '\\uA7A1',\n '\\uA7A3',\n '\\uA7A5',\n '\\uA7A7',\n '\\uA7A9',\n '\\uA7FA',\n ['\\uFB00', '\\uFB06'],\n ['\\uFB13', '\\uFB17'],\n ['\\uFF41', '\\uFF5A'],\n ],\n false,\n false,\n );\n const peg$c142 =\n /^[\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5-\\u06E6\\u07F4-\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C-\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D-\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA7F8-\\uA7F9\\uA9CF\\uAA70\\uAADD\\uAAF3-\\uAAF4\\uFF70\\uFF9E-\\uFF9F]/;\n const peg$c143 = peg$classExpectation(\n [\n ['\\u02B0', '\\u02C1'],\n ['\\u02C6', '\\u02D1'],\n ['\\u02E0', '\\u02E4'],\n '\\u02EC',\n '\\u02EE',\n '\\u0374',\n '\\u037A',\n '\\u0559',\n '\\u0640',\n ['\\u06E5', '\\u06E6'],\n ['\\u07F4', '\\u07F5'],\n '\\u07FA',\n '\\u081A',\n '\\u0824',\n '\\u0828',\n '\\u0971',\n '\\u0E46',\n '\\u0EC6',\n '\\u10FC',\n '\\u17D7',\n '\\u1843',\n '\\u1AA7',\n ['\\u1C78', '\\u1C7D'],\n ['\\u1D2C', '\\u1D6A'],\n '\\u1D78',\n ['\\u1D9B', '\\u1DBF'],\n '\\u2071',\n '\\u207F',\n ['\\u2090', '\\u209C'],\n ['\\u2C7C', '\\u2C7D'],\n '\\u2D6F',\n '\\u2E2F',\n '\\u3005',\n ['\\u3031', '\\u3035'],\n '\\u303B',\n ['\\u309D', '\\u309E'],\n ['\\u30FC', '\\u30FE'],\n '\\uA015',\n ['\\uA4F8', '\\uA4FD'],\n '\\uA60C',\n '\\uA67F',\n ['\\uA717', '\\uA71F'],\n '\\uA770',\n '\\uA788',\n ['\\uA7F8', '\\uA7F9'],\n '\\uA9CF',\n '\\uAA70',\n '\\uAADD',\n ['\\uAAF3', '\\uAAF4'],\n '\\uFF70',\n ['\\uFF9E', '\\uFF9F'],\n ],\n false,\n false,\n );\n const peg$c144 =\n /^[\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58-\\u0C59\\u0C60-\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5-\\u1CF6\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A-\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\n const peg$c145 = peg$classExpectation(\n [\n '\\xAA',\n '\\xBA',\n '\\u01BB',\n ['\\u01C0', '\\u01C3'],\n '\\u0294',\n ['\\u05D0', '\\u05EA'],\n ['\\u05F0', '\\u05F2'],\n ['\\u0620', '\\u063F'],\n ['\\u0641', '\\u064A'],\n ['\\u066E', '\\u066F'],\n ['\\u0671', '\\u06D3'],\n '\\u06D5',\n ['\\u06EE', '\\u06EF'],\n ['\\u06FA', '\\u06FC'],\n '\\u06FF',\n '\\u0710',\n ['\\u0712', '\\u072F'],\n ['\\u074D', '\\u07A5'],\n '\\u07B1',\n ['\\u07CA', '\\u07EA'],\n ['\\u0800', '\\u0815'],\n ['\\u0840', '\\u0858'],\n '\\u08A0',\n ['\\u08A2', '\\u08AC'],\n ['\\u0904', '\\u0939'],\n '\\u093D',\n '\\u0950',\n ['\\u0958', '\\u0961'],\n ['\\u0972', '\\u0977'],\n ['\\u0979', '\\u097F'],\n ['\\u0985', '\\u098C'],\n ['\\u098F', '\\u0990'],\n ['\\u0993', '\\u09A8'],\n ['\\u09AA', '\\u09B0'],\n '\\u09B2',\n ['\\u09B6', '\\u09B9'],\n '\\u09BD',\n '\\u09CE',\n ['\\u09DC', '\\u09DD'],\n ['\\u09DF', '\\u09E1'],\n ['\\u09F0', '\\u09F1'],\n ['\\u0A05', '\\u0A0A'],\n ['\\u0A0F', '\\u0A10'],\n ['\\u0A13', '\\u0A28'],\n ['\\u0A2A', '\\u0A30'],\n ['\\u0A32', '\\u0A33'],\n ['\\u0A35', '\\u0A36'],\n ['\\u0A38', '\\u0A39'],\n ['\\u0A59', '\\u0A5C'],\n '\\u0A5E',\n ['\\u0A72', '\\u0A74'],\n ['\\u0A85', '\\u0A8D'],\n ['\\u0A8F', '\\u0A91'],\n ['\\u0A93', '\\u0AA8'],\n ['\\u0AAA', '\\u0AB0'],\n ['\\u0AB2', '\\u0AB3'],\n ['\\u0AB5', '\\u0AB9'],\n '\\u0ABD',\n '\\u0AD0',\n ['\\u0AE0', '\\u0AE1'],\n ['\\u0B05', '\\u0B0C'],\n ['\\u0B0F', '\\u0B10'],\n ['\\u0B13', '\\u0B28'],\n ['\\u0B2A', '\\u0B30'],\n ['\\u0B32', '\\u0B33'],\n ['\\u0B35', '\\u0B39'],\n '\\u0B3D',\n ['\\u0B5C', '\\u0B5D'],\n ['\\u0B5F', '\\u0B61'],\n '\\u0B71',\n '\\u0B83',\n ['\\u0B85', '\\u0B8A'],\n ['\\u0B8E', '\\u0B90'],\n ['\\u0B92', '\\u0B95'],\n ['\\u0B99', '\\u0B9A'],\n '\\u0B9C',\n ['\\u0B9E', '\\u0B9F'],\n ['\\u0BA3', '\\u0BA4'],\n ['\\u0BA8', '\\u0BAA'],\n ['\\u0BAE', '\\u0BB9'],\n '\\u0BD0',\n ['\\u0C05', '\\u0C0C'],\n ['\\u0C0E', '\\u0C10'],\n ['\\u0C12', '\\u0C28'],\n ['\\u0C2A', '\\u0C33'],\n ['\\u0C35', '\\u0C39'],\n '\\u0C3D',\n ['\\u0C58', '\\u0C59'],\n ['\\u0C60', '\\u0C61'],\n ['\\u0C85', '\\u0C8C'],\n ['\\u0C8E', '\\u0C90'],\n ['\\u0C92', '\\u0CA8'],\n ['\\u0CAA', '\\u0CB3'],\n ['\\u0CB5', '\\u0CB9'],\n '\\u0CBD',\n '\\u0CDE',\n ['\\u0CE0', '\\u0CE1'],\n ['\\u0CF1', '\\u0CF2'],\n ['\\u0D05', '\\u0D0C'],\n ['\\u0D0E', '\\u0D10'],\n ['\\u0D12', '\\u0D3A'],\n '\\u0D3D',\n '\\u0D4E',\n ['\\u0D60', '\\u0D61'],\n ['\\u0D7A', '\\u0D7F'],\n ['\\u0D85', '\\u0D96'],\n ['\\u0D9A', '\\u0DB1'],\n ['\\u0DB3', '\\u0DBB'],\n '\\u0DBD',\n ['\\u0DC0', '\\u0DC6'],\n ['\\u0E01', '\\u0E30'],\n ['\\u0E32', '\\u0E33'],\n ['\\u0E40', '\\u0E45'],\n ['\\u0E81', '\\u0E82'],\n '\\u0E84',\n ['\\u0E87', '\\u0E88'],\n '\\u0E8A',\n '\\u0E8D',\n ['\\u0E94', '\\u0E97'],\n ['\\u0E99', '\\u0E9F'],\n ['\\u0EA1', '\\u0EA3'],\n '\\u0EA5',\n '\\u0EA7',\n ['\\u0EAA', '\\u0EAB'],\n ['\\u0EAD', '\\u0EB0'],\n ['\\u0EB2', '\\u0EB3'],\n '\\u0EBD',\n ['\\u0EC0', '\\u0EC4'],\n ['\\u0EDC', '\\u0EDF'],\n '\\u0F00',\n ['\\u0F40', '\\u0F47'],\n ['\\u0F49', '\\u0F6C'],\n ['\\u0F88', '\\u0F8C'],\n ['\\u1000', '\\u102A'],\n '\\u103F',\n ['\\u1050', '\\u1055'],\n ['\\u105A', '\\u105D'],\n '\\u1061',\n ['\\u1065', '\\u1066'],\n ['\\u106E', '\\u1070'],\n ['\\u1075', '\\u1081'],\n '\\u108E',\n ['\\u10D0', '\\u10FA'],\n ['\\u10FD', '\\u1248'],\n ['\\u124A', '\\u124D'],\n ['\\u1250', '\\u1256'],\n '\\u1258',\n ['\\u125A', '\\u125D'],\n ['\\u1260', '\\u1288'],\n ['\\u128A', '\\u128D'],\n ['\\u1290', '\\u12B0'],\n ['\\u12B2', '\\u12B5'],\n ['\\u12B8', '\\u12BE'],\n '\\u12C0',\n ['\\u12C2', '\\u12C5'],\n ['\\u12C8', '\\u12D6'],\n ['\\u12D8', '\\u1310'],\n ['\\u1312', '\\u1315'],\n ['\\u1318', '\\u135A'],\n ['\\u1380', '\\u138F'],\n ['\\u13A0', '\\u13F4'],\n ['\\u1401', '\\u166C'],\n ['\\u166F', '\\u167F'],\n ['\\u1681', '\\u169A'],\n ['\\u16A0', '\\u16EA'],\n ['\\u1700', '\\u170C'],\n ['\\u170E', '\\u1711'],\n ['\\u1720', '\\u1731'],\n ['\\u1740', '\\u1751'],\n ['\\u1760', '\\u176C'],\n ['\\u176E', '\\u1770'],\n ['\\u1780', '\\u17B3'],\n '\\u17DC',\n ['\\u1820', '\\u1842'],\n ['\\u1844', '\\u1877'],\n ['\\u1880', '\\u18A8'],\n '\\u18AA',\n ['\\u18B0', '\\u18F5'],\n ['\\u1900', '\\u191C'],\n ['\\u1950', '\\u196D'],\n ['\\u1970', '\\u1974'],\n ['\\u1980', '\\u19AB'],\n ['\\u19C1', '\\u19C7'],\n ['\\u1A00', '\\u1A16'],\n ['\\u1A20', '\\u1A54'],\n ['\\u1B05', '\\u1B33'],\n ['\\u1B45', '\\u1B4B'],\n ['\\u1B83', '\\u1BA0'],\n ['\\u1BAE', '\\u1BAF'],\n ['\\u1BBA', '\\u1BE5'],\n ['\\u1C00', '\\u1C23'],\n ['\\u1C4D', '\\u1C4F'],\n ['\\u1C5A', '\\u1C77'],\n ['\\u1CE9', '\\u1CEC'],\n ['\\u1CEE', '\\u1CF1'],\n ['\\u1CF5', '\\u1CF6'],\n ['\\u2135', '\\u2138'],\n ['\\u2D30', '\\u2D67'],\n ['\\u2D80', '\\u2D96'],\n ['\\u2DA0', '\\u2DA6'],\n ['\\u2DA8', '\\u2DAE'],\n ['\\u2DB0', '\\u2DB6'],\n ['\\u2DB8', '\\u2DBE'],\n ['\\u2DC0', '\\u2DC6'],\n ['\\u2DC8', '\\u2DCE'],\n ['\\u2DD0', '\\u2DD6'],\n ['\\u2DD8', '\\u2DDE'],\n '\\u3006',\n '\\u303C',\n ['\\u3041', '\\u3096'],\n '\\u309F',\n ['\\u30A1', '\\u30FA'],\n '\\u30FF',\n ['\\u3105', '\\u312D'],\n ['\\u3131', '\\u318E'],\n ['\\u31A0', '\\u31BA'],\n ['\\u31F0', '\\u31FF'],\n ['\\u3400', '\\u4DB5'],\n ['\\u4E00', '\\u9FCC'],\n ['\\uA000', '\\uA014'],\n ['\\uA016', '\\uA48C'],\n ['\\uA4D0', '\\uA4F7'],\n ['\\uA500', '\\uA60B'],\n ['\\uA610', '\\uA61F'],\n ['\\uA62A', '\\uA62B'],\n '\\uA66E',\n ['\\uA6A0', '\\uA6E5'],\n ['\\uA7FB', '\\uA801'],\n ['\\uA803', '\\uA805'],\n ['\\uA807', '\\uA80A'],\n ['\\uA80C', '\\uA822'],\n ['\\uA840', '\\uA873'],\n ['\\uA882', '\\uA8B3'],\n ['\\uA8F2', '\\uA8F7'],\n '\\uA8FB',\n ['\\uA90A', '\\uA925'],\n ['\\uA930', '\\uA946'],\n ['\\uA960', '\\uA97C'],\n ['\\uA984', '\\uA9B2'],\n ['\\uAA00', '\\uAA28'],\n ['\\uAA40', '\\uAA42'],\n ['\\uAA44', '\\uAA4B'],\n ['\\uAA60', '\\uAA6F'],\n ['\\uAA71', '\\uAA76'],\n '\\uAA7A',\n ['\\uAA80', '\\uAAAF'],\n '\\uAAB1',\n ['\\uAAB5', '\\uAAB6'],\n ['\\uAAB9', '\\uAABD'],\n '\\uAAC0',\n '\\uAAC2',\n ['\\uAADB', '\\uAADC'],\n ['\\uAAE0', '\\uAAEA'],\n '\\uAAF2',\n ['\\uAB01', '\\uAB06'],\n ['\\uAB09', '\\uAB0E'],\n ['\\uAB11', '\\uAB16'],\n ['\\uAB20', '\\uAB26'],\n ['\\uAB28', '\\uAB2E'],\n ['\\uABC0', '\\uABE2'],\n ['\\uAC00', '\\uD7A3'],\n ['\\uD7B0', '\\uD7C6'],\n ['\\uD7CB', '\\uD7FB'],\n ['\\uF900', '\\uFA6D'],\n ['\\uFA70', '\\uFAD9'],\n '\\uFB1D',\n ['\\uFB1F', '\\uFB28'],\n ['\\uFB2A', '\\uFB36'],\n ['\\uFB38', '\\uFB3C'],\n '\\uFB3E',\n ['\\uFB40', '\\uFB41'],\n ['\\uFB43', '\\uFB44'],\n ['\\uFB46', '\\uFBB1'],\n ['\\uFBD3', '\\uFD3D'],\n ['\\uFD50', '\\uFD8F'],\n ['\\uFD92', '\\uFDC7'],\n ['\\uFDF0', '\\uFDFB'],\n ['\\uFE70', '\\uFE74'],\n ['\\uFE76', '\\uFEFC'],\n ['\\uFF66', '\\uFF6F'],\n ['\\uFF71', '\\uFF9D'],\n ['\\uFFA0', '\\uFFBE'],\n ['\\uFFC2', '\\uFFC7'],\n ['\\uFFCA', '\\uFFCF'],\n ['\\uFFD2', '\\uFFD7'],\n ['\\uFFDA', '\\uFFDC'],\n ],\n false,\n false,\n );\n const peg$c146 = /^[\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC]/;\n const peg$c147 = peg$classExpectation(\n [\n '\\u01C5',\n '\\u01C8',\n '\\u01CB',\n '\\u01F2',\n ['\\u1F88', '\\u1F8F'],\n ['\\u1F98', '\\u1F9F'],\n ['\\u1FA8', '\\u1FAF'],\n '\\u1FBC',\n '\\u1FCC',\n '\\u1FFC',\n ],\n false,\n false,\n );\n const peg$c148 =\n /^[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178-\\u0179\\u017B\\u017D\\u0181-\\u0182\\u0184\\u0186-\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193-\\u0194\\u0196-\\u0198\\u019C-\\u019D\\u019F-\\u01A0\\u01A2\\u01A4\\u01A6-\\u01A7\\u01A9\\u01AC\\u01AE-\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7-\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A-\\u023B\\u023D-\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9-\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0-\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E-\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D-\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA\\uFF21-\\uFF3A]/;\n const peg$c149 = peg$classExpectation(\n [\n ['A', 'Z'],\n ['\\xC0', '\\xD6'],\n ['\\xD8', '\\xDE'],\n '\\u0100',\n '\\u0102',\n '\\u0104',\n '\\u0106',\n '\\u0108',\n '\\u010A',\n '\\u010C',\n '\\u010E',\n '\\u0110',\n '\\u0112',\n '\\u0114',\n '\\u0116',\n '\\u0118',\n '\\u011A',\n '\\u011C',\n '\\u011E',\n '\\u0120',\n '\\u0122',\n '\\u0124',\n '\\u0126',\n '\\u0128',\n '\\u012A',\n '\\u012C',\n '\\u012E',\n '\\u0130',\n '\\u0132',\n '\\u0134',\n '\\u0136',\n '\\u0139',\n '\\u013B',\n '\\u013D',\n '\\u013F',\n '\\u0141',\n '\\u0143',\n '\\u0145',\n '\\u0147',\n '\\u014A',\n '\\u014C',\n '\\u014E',\n '\\u0150',\n '\\u0152',\n '\\u0154',\n '\\u0156',\n '\\u0158',\n '\\u015A',\n '\\u015C',\n '\\u015E',\n '\\u0160',\n '\\u0162',\n '\\u0164',\n '\\u0166',\n '\\u0168',\n '\\u016A',\n '\\u016C',\n '\\u016E',\n '\\u0170',\n '\\u0172',\n '\\u0174',\n '\\u0176',\n ['\\u0178', '\\u0179'],\n '\\u017B',\n '\\u017D',\n ['\\u0181', '\\u0182'],\n '\\u0184',\n ['\\u0186', '\\u0187'],\n ['\\u0189', '\\u018B'],\n ['\\u018E', '\\u0191'],\n ['\\u0193', '\\u0194'],\n ['\\u0196', '\\u0198'],\n ['\\u019C', '\\u019D'],\n ['\\u019F', '\\u01A0'],\n '\\u01A2',\n '\\u01A4',\n ['\\u01A6', '\\u01A7'],\n '\\u01A9',\n '\\u01AC',\n ['\\u01AE', '\\u01AF'],\n ['\\u01B1', '\\u01B3'],\n '\\u01B5',\n ['\\u01B7', '\\u01B8'],\n '\\u01BC',\n '\\u01C4',\n '\\u01C7',\n '\\u01CA',\n '\\u01CD',\n '\\u01CF',\n '\\u01D1',\n '\\u01D3',\n '\\u01D5',\n '\\u01D7',\n '\\u01D9',\n '\\u01DB',\n '\\u01DE',\n '\\u01E0',\n '\\u01E2',\n '\\u01E4',\n '\\u01E6',\n '\\u01E8',\n '\\u01EA',\n '\\u01EC',\n '\\u01EE',\n '\\u01F1',\n '\\u01F4',\n ['\\u01F6', '\\u01F8'],\n '\\u01FA',\n '\\u01FC',\n '\\u01FE',\n '\\u0200',\n '\\u0202',\n '\\u0204',\n '\\u0206',\n '\\u0208',\n '\\u020A',\n '\\u020C',\n '\\u020E',\n '\\u0210',\n '\\u0212',\n '\\u0214',\n '\\u0216',\n '\\u0218',\n '\\u021A',\n '\\u021C',\n '\\u021E',\n '\\u0220',\n '\\u0222',\n '\\u0224',\n '\\u0226',\n '\\u0228',\n '\\u022A',\n '\\u022C',\n '\\u022E',\n '\\u0230',\n '\\u0232',\n ['\\u023A', '\\u023B'],\n ['\\u023D', '\\u023E'],\n '\\u0241',\n ['\\u0243', '\\u0246'],\n '\\u0248',\n '\\u024A',\n '\\u024C',\n '\\u024E',\n '\\u0370',\n '\\u0372',\n '\\u0376',\n '\\u0386',\n ['\\u0388', '\\u038A'],\n '\\u038C',\n ['\\u038E', '\\u038F'],\n ['\\u0391', '\\u03A1'],\n ['\\u03A3', '\\u03AB'],\n '\\u03CF',\n ['\\u03D2', '\\u03D4'],\n '\\u03D8',\n '\\u03DA',\n '\\u03DC',\n '\\u03DE',\n '\\u03E0',\n '\\u03E2',\n '\\u03E4',\n '\\u03E6',\n '\\u03E8',\n '\\u03EA',\n '\\u03EC',\n '\\u03EE',\n '\\u03F4',\n '\\u03F7',\n ['\\u03F9', '\\u03FA'],\n ['\\u03FD', '\\u042F'],\n '\\u0460',\n '\\u0462',\n '\\u0464',\n '\\u0466',\n '\\u0468',\n '\\u046A',\n '\\u046C',\n '\\u046E',\n '\\u0470',\n '\\u0472',\n '\\u0474',\n '\\u0476',\n '\\u0478',\n '\\u047A',\n '\\u047C',\n '\\u047E',\n '\\u0480',\n '\\u048A',\n '\\u048C',\n '\\u048E',\n '\\u0490',\n '\\u0492',\n '\\u0494',\n '\\u0496',\n '\\u0498',\n '\\u049A',\n '\\u049C',\n '\\u049E',\n '\\u04A0',\n '\\u04A2',\n '\\u04A4',\n '\\u04A6',\n '\\u04A8',\n '\\u04AA',\n '\\u04AC',\n '\\u04AE',\n '\\u04B0',\n '\\u04B2',\n '\\u04B4',\n '\\u04B6',\n '\\u04B8',\n '\\u04BA',\n '\\u04BC',\n '\\u04BE',\n ['\\u04C0', '\\u04C1'],\n '\\u04C3',\n '\\u04C5',\n '\\u04C7',\n '\\u04C9',\n '\\u04CB',\n '\\u04CD',\n '\\u04D0',\n '\\u04D2',\n '\\u04D4',\n '\\u04D6',\n '\\u04D8',\n '\\u04DA',\n '\\u04DC',\n '\\u04DE',\n '\\u04E0',\n '\\u04E2',\n '\\u04E4',\n '\\u04E6',\n '\\u04E8',\n '\\u04EA',\n '\\u04EC',\n '\\u04EE',\n '\\u04F0',\n '\\u04F2',\n '\\u04F4',\n '\\u04F6',\n '\\u04F8',\n '\\u04FA',\n '\\u04FC',\n '\\u04FE',\n '\\u0500',\n '\\u0502',\n '\\u0504',\n '\\u0506',\n '\\u0508',\n '\\u050A',\n '\\u050C',\n '\\u050E',\n '\\u0510',\n '\\u0512',\n '\\u0514',\n '\\u0516',\n '\\u0518',\n '\\u051A',\n '\\u051C',\n '\\u051E',\n '\\u0520',\n '\\u0522',\n '\\u0524',\n '\\u0526',\n ['\\u0531', '\\u0556'],\n ['\\u10A0', '\\u10C5'],\n '\\u10C7',\n '\\u10CD',\n '\\u1E00',\n '\\u1E02',\n '\\u1E04',\n '\\u1E06',\n '\\u1E08',\n '\\u1E0A',\n '\\u1E0C',\n '\\u1E0E',\n '\\u1E10',\n '\\u1E12',\n '\\u1E14',\n '\\u1E16',\n '\\u1E18',\n '\\u1E1A',\n '\\u1E1C',\n '\\u1E1E',\n '\\u1E20',\n '\\u1E22',\n '\\u1E24',\n '\\u1E26',\n '\\u1E28',\n '\\u1E2A',\n '\\u1E2C',\n '\\u1E2E',\n '\\u1E30',\n '\\u1E32',\n '\\u1E34',\n '\\u1E36',\n '\\u1E38',\n '\\u1E3A',\n '\\u1E3C',\n '\\u1E3E',\n '\\u1E40',\n '\\u1E42',\n '\\u1E44',\n '\\u1E46',\n '\\u1E48',\n '\\u1E4A',\n '\\u1E4C',\n '\\u1E4E',\n '\\u1E50',\n '\\u1E52',\n '\\u1E54',\n '\\u1E56',\n '\\u1E58',\n '\\u1E5A',\n '\\u1E5C',\n '\\u1E5E',\n '\\u1E60',\n '\\u1E62',\n '\\u1E64',\n '\\u1E66',\n '\\u1E68',\n '\\u1E6A',\n '\\u1E6C',\n '\\u1E6E',\n '\\u1E70',\n '\\u1E72',\n '\\u1E74',\n '\\u1E76',\n '\\u1E78',\n '\\u1E7A',\n '\\u1E7C',\n '\\u1E7E',\n '\\u1E80',\n '\\u1E82',\n '\\u1E84',\n '\\u1E86',\n '\\u1E88',\n '\\u1E8A',\n '\\u1E8C',\n '\\u1E8E',\n '\\u1E90',\n '\\u1E92',\n '\\u1E94',\n '\\u1E9E',\n '\\u1EA0',\n '\\u1EA2',\n '\\u1EA4',\n '\\u1EA6',\n '\\u1EA8',\n '\\u1EAA',\n '\\u1EAC',\n '\\u1EAE',\n '\\u1EB0',\n '\\u1EB2',\n '\\u1EB4',\n '\\u1EB6',\n '\\u1EB8',\n '\\u1EBA',\n '\\u1EBC',\n '\\u1EBE',\n '\\u1EC0',\n '\\u1EC2',\n '\\u1EC4',\n '\\u1EC6',\n '\\u1EC8',\n '\\u1ECA',\n '\\u1ECC',\n '\\u1ECE',\n '\\u1ED0',\n '\\u1ED2',\n '\\u1ED4',\n '\\u1ED6',\n '\\u1ED8',\n '\\u1EDA',\n '\\u1EDC',\n '\\u1EDE',\n '\\u1EE0',\n '\\u1EE2',\n '\\u1EE4',\n '\\u1EE6',\n '\\u1EE8',\n '\\u1EEA',\n '\\u1EEC',\n '\\u1EEE',\n '\\u1EF0',\n '\\u1EF2',\n '\\u1EF4',\n '\\u1EF6',\n '\\u1EF8',\n '\\u1EFA',\n '\\u1EFC',\n '\\u1EFE',\n ['\\u1F08', '\\u1F0F'],\n ['\\u1F18', '\\u1F1D'],\n ['\\u1F28', '\\u1F2F'],\n ['\\u1F38', '\\u1F3F'],\n ['\\u1F48', '\\u1F4D'],\n '\\u1F59',\n '\\u1F5B',\n '\\u1F5D',\n '\\u1F5F',\n ['\\u1F68', '\\u1F6F'],\n ['\\u1FB8', '\\u1FBB'],\n ['\\u1FC8', '\\u1FCB'],\n ['\\u1FD8', '\\u1FDB'],\n ['\\u1FE8', '\\u1FEC'],\n ['\\u1FF8', '\\u1FFB'],\n '\\u2102',\n '\\u2107',\n ['\\u210B', '\\u210D'],\n ['\\u2110', '\\u2112'],\n '\\u2115',\n ['\\u2119', '\\u211D'],\n '\\u2124',\n '\\u2126',\n '\\u2128',\n ['\\u212A', '\\u212D'],\n ['\\u2130', '\\u2133'],\n ['\\u213E', '\\u213F'],\n '\\u2145',\n '\\u2183',\n ['\\u2C00', '\\u2C2E'],\n '\\u2C60',\n ['\\u2C62', '\\u2C64'],\n '\\u2C67',\n '\\u2C69',\n '\\u2C6B',\n ['\\u2C6D', '\\u2C70'],\n '\\u2C72',\n '\\u2C75',\n ['\\u2C7E', '\\u2C80'],\n '\\u2C82',\n '\\u2C84',\n '\\u2C86',\n '\\u2C88',\n '\\u2C8A',\n '\\u2C8C',\n '\\u2C8E',\n '\\u2C90',\n '\\u2C92',\n '\\u2C94',\n '\\u2C96',\n '\\u2C98',\n '\\u2C9A',\n '\\u2C9C',\n '\\u2C9E',\n '\\u2CA0',\n '\\u2CA2',\n '\\u2CA4',\n '\\u2CA6',\n '\\u2CA8',\n '\\u2CAA',\n '\\u2CAC',\n '\\u2CAE',\n '\\u2CB0',\n '\\u2CB2',\n '\\u2CB4',\n '\\u2CB6',\n '\\u2CB8',\n '\\u2CBA',\n '\\u2CBC',\n '\\u2CBE',\n '\\u2CC0',\n '\\u2CC2',\n '\\u2CC4',\n '\\u2CC6',\n '\\u2CC8',\n '\\u2CCA',\n '\\u2CCC',\n '\\u2CCE',\n '\\u2CD0',\n '\\u2CD2',\n '\\u2CD4',\n '\\u2CD6',\n '\\u2CD8',\n '\\u2CDA',\n '\\u2CDC',\n '\\u2CDE',\n '\\u2CE0',\n '\\u2CE2',\n '\\u2CEB',\n '\\u2CED',\n '\\u2CF2',\n '\\uA640',\n '\\uA642',\n '\\uA644',\n '\\uA646',\n '\\uA648',\n '\\uA64A',\n '\\uA64C',\n '\\uA64E',\n '\\uA650',\n '\\uA652',\n '\\uA654',\n '\\uA656',\n '\\uA658',\n '\\uA65A',\n '\\uA65C',\n '\\uA65E',\n '\\uA660',\n '\\uA662',\n '\\uA664',\n '\\uA666',\n '\\uA668',\n '\\uA66A',\n '\\uA66C',\n '\\uA680',\n '\\uA682',\n '\\uA684',\n '\\uA686',\n '\\uA688',\n '\\uA68A',\n '\\uA68C',\n '\\uA68E',\n '\\uA690',\n '\\uA692',\n '\\uA694',\n '\\uA696',\n '\\uA722',\n '\\uA724',\n '\\uA726',\n '\\uA728',\n '\\uA72A',\n '\\uA72C',\n '\\uA72E',\n '\\uA732',\n '\\uA734',\n '\\uA736',\n '\\uA738',\n '\\uA73A',\n '\\uA73C',\n '\\uA73E',\n '\\uA740',\n '\\uA742',\n '\\uA744',\n '\\uA746',\n '\\uA748',\n '\\uA74A',\n '\\uA74C',\n '\\uA74E',\n '\\uA750',\n '\\uA752',\n '\\uA754',\n '\\uA756',\n '\\uA758',\n '\\uA75A',\n '\\uA75C',\n '\\uA75E',\n '\\uA760',\n '\\uA762',\n '\\uA764',\n '\\uA766',\n '\\uA768',\n '\\uA76A',\n '\\uA76C',\n '\\uA76E',\n '\\uA779',\n '\\uA77B',\n ['\\uA77D', '\\uA77E'],\n '\\uA780',\n '\\uA782',\n '\\uA784',\n '\\uA786',\n '\\uA78B',\n '\\uA78D',\n '\\uA790',\n '\\uA792',\n '\\uA7A0',\n '\\uA7A2',\n '\\uA7A4',\n '\\uA7A6',\n '\\uA7A8',\n '\\uA7AA',\n ['\\uFF21', '\\uFF3A'],\n ],\n false,\n false,\n );\n const peg$c150 = /^[\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]/;\n const peg$c151 = peg$classExpectation(\n [\n ['\\u16EE', '\\u16F0'],\n ['\\u2160', '\\u2182'],\n ['\\u2185', '\\u2188'],\n '\\u3007',\n ['\\u3021', '\\u3029'],\n ['\\u3038', '\\u303A'],\n ['\\uA6E6', '\\uA6EF'],\n ],\n false,\n false,\n );\n const peg$c152 =\n /^[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]/;\n const peg$c153 = peg$classExpectation(\n [\n ['0', '9'],\n ['\\u0660', '\\u0669'],\n ['\\u06F0', '\\u06F9'],\n ['\\u07C0', '\\u07C9'],\n ['\\u0966', '\\u096F'],\n ['\\u09E6', '\\u09EF'],\n ['\\u0A66', '\\u0A6F'],\n ['\\u0AE6', '\\u0AEF'],\n ['\\u0B66', '\\u0B6F'],\n ['\\u0BE6', '\\u0BEF'],\n ['\\u0C66', '\\u0C6F'],\n ['\\u0CE6', '\\u0CEF'],\n ['\\u0D66', '\\u0D6F'],\n ['\\u0E50', '\\u0E59'],\n ['\\u0ED0', '\\u0ED9'],\n ['\\u0F20', '\\u0F29'],\n ['\\u1040', '\\u1049'],\n ['\\u1090', '\\u1099'],\n ['\\u17E0', '\\u17E9'],\n ['\\u1810', '\\u1819'],\n ['\\u1946', '\\u194F'],\n ['\\u19D0', '\\u19D9'],\n ['\\u1A80', '\\u1A89'],\n ['\\u1A90', '\\u1A99'],\n ['\\u1B50', '\\u1B59'],\n ['\\u1BB0', '\\u1BB9'],\n ['\\u1C40', '\\u1C49'],\n ['\\u1C50', '\\u1C59'],\n ['\\uA620', '\\uA629'],\n ['\\uA8D0', '\\uA8D9'],\n ['\\uA900', '\\uA909'],\n ['\\uA9D0', '\\uA9D9'],\n ['\\uAA50', '\\uAA59'],\n ['\\uABF0', '\\uABF9'],\n ['\\uFF10', '\\uFF19'],\n ],\n false,\n false,\n );\n let peg$currPos = 0;\n let peg$savedPos = 0;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = 0;\n let peg$maxFailExpected = [];\n let peg$silentFails = 0;\n let peg$result;\n if (options.startRule !== undefined) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error('Can\\'t start parsing from rule \"' + options.startRule + '\".');\n }\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n function error(message, location1) {\n location1 = location1 !== undefined ? location1 : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildSimpleError(message, location1);\n }\n function peg$literalExpectation(text1, ignoreCase) {\n return { type: 'literal', text: text1, ignoreCase: ignoreCase };\n }\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: 'class', parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n function peg$anyExpectation() {\n return { type: 'any' };\n }\n function peg$endExpectation() {\n return { type: 'end' };\n }\n function peg$otherExpectation(description) {\n return { type: 'other', description: description };\n }\n function peg$computePosDetails(pos) {\n let details = peg$posDetailsCache[pos];\n let p;\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n p++;\n }\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n function peg$computeLocation(startPos, endPos) {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n return {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column,\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column,\n },\n };\n }\n function peg$fail(expected1) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n peg$maxFailExpected.push(expected1);\n }\n function peg$buildSimpleError(message, location1) {\n return new DotSyntaxError$1(message, [], '', location1);\n }\n function peg$buildStructuredError(expected1, found, location1) {\n return new DotSyntaxError$1(DotSyntaxError$1.buildMessage(expected1, found), expected1, found, location1);\n }\n function peg$parseDot() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_dot();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseGraph() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_graph();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseNode() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_node();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseAttributeList() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_attributes();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseAttribute() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_attribute();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseEdge() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_edge();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseSubgraph() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_subgraph();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseNodeRef() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_node_ref();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseAttibutesItem() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_attibutes_item();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseComment() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_comment();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseClusterStatements() {\n let s0, s1;\n s0 = [];\n s1 = peg$parseAttribute();\n if (s1 === peg$FAILED) {\n s1 = peg$parseAttributeList();\n if (s1 === peg$FAILED) {\n s1 = peg$parseEdge();\n if (s1 === peg$FAILED) {\n s1 = peg$parseSubgraph();\n if (s1 === peg$FAILED) {\n s1 = peg$parseNode();\n if (s1 === peg$FAILED) {\n s1 = peg$parseComment();\n }\n }\n }\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseAttribute();\n if (s1 === peg$FAILED) {\n s1 = peg$parseAttributeList();\n if (s1 === peg$FAILED) {\n s1 = peg$parseEdge();\n if (s1 === peg$FAILED) {\n s1 = peg$parseSubgraph();\n if (s1 === peg$FAILED) {\n s1 = peg$parseNode();\n if (s1 === peg$FAILED) {\n s1 = peg$parseComment();\n }\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parse_dot() {\n let s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseComment();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseComment();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseGraph();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseComment();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseComment();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_graph() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c2) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c3);\n }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c4) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c6) {\n s3 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_literal();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s7 = peg$c8;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseClusterStatements();\n if (s8 !== peg$FAILED) {\n s9 = peg$parse__();\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s10 = peg$c10;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c11);\n }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c12(s1, s3, s5, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_attribute() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse_key_value();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s3 = peg$c13;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c15(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_attributes() {\n let s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c4) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c16) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c17);\n }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c18) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c19);\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_attribute_list();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s4 = peg$c13;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_edge() {\n let s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n s1 = peg$parse_edge_target();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_edge_rhs();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_attribute_list();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c13;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_node() {\n let s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n s1 = peg$parse_literal();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_attribute_list();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c13;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_key_value() {\n let s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n s1 = peg$parse_literal();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c23;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c24);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_literal();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_attibutes_item() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parse_key_value();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c26;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c27);\n }\n }\n if (s3 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s3 = peg$c13;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c28(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_attribute_list() {\n let s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s2 = peg$c29;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseAttibutesItem();\n if (s4 === peg$FAILED) {\n s4 = peg$parseComment();\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseAttibutesItem();\n if (s4 === peg$FAILED) {\n s4 = peg$parseComment();\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c31;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c32);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_edge_target_group() {\n let s0, s1, s2, s3, s4, s5, s6;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c8;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNodeRef();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c26;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c27);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c13;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseNodeRef();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c34(s2, s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c26;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c27);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c13;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseNodeRef();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c34(s2, s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c26;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c27);\n }\n }\n if (s4 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s4 = peg$c13;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s6 = peg$c10;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c11);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c35(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_edge_target() {\n let s0;\n s0 = peg$parse_edge_target_group();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNodeRef();\n }\n return s0;\n }\n function peg$parse_edge_operator() {\n let s0, s1;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c36) {\n s1 = peg$c36;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c37);\n }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c38) {\n s1 = peg$c38;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parse_edge_rhs() {\n let s0, s1, s2, s3, s4, s5, s6;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_edge_operator();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_edge_target();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_edge_rhs();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c41(s2, s4, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_node_ref() {\n let s0, s1, s2;\n s0 = peg$currPos;\n s1 = peg$parse_literal();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_port();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_port() {\n let s0, s1, s2, s3, s4, s5;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c44;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c45);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_literal();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c44;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c45);\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_compass();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s4 = peg$c46(s2, s5);\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c43);\n }\n }\n return s0;\n }\n function peg$parse_subgraph_id() {\n let s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c48) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_literal();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c50(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_subgraph() {\n let s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n s1 = peg$parse_subgraph_id();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseClusterStatements();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c10;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c11);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c51(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_compass_keyword() {\n let s0;\n if (input.charCodeAt(peg$currPos) === 110) {\n s0 = peg$c52;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c53);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c54) {\n s0 = peg$c54;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c55);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 101) {\n s0 = peg$c56;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c57);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c58) {\n s0 = peg$c58;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c59);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 115) {\n s0 = peg$c60;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c61);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s0 = peg$c62;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c63);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 119) {\n s0 = peg$c64;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c65);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c66) {\n s0 = peg$c66;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c67);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parse_compass() {\n let s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_compass_keyword();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s1;\n s2 = peg$c68(s2);\n }\n s1 = s2;\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s2 = peg$c69;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c70);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_compass_keyword();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s4 = peg$c69;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c70);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s1;\n s2 = peg$c71(s3);\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c72(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parse_literal() {\n let s0, s1;\n s0 = peg$parseQUOTED_STRING();\n if (s0 === peg$FAILED) {\n s0 = peg$parseHTML_STRING();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseSTRING();\n if (s1 === peg$FAILED) {\n s1 = peg$parseNUMBER_STRING();\n if (s1 === peg$FAILED) {\n s1 = peg$parseNUMBER();\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c73(s1);\n }\n s0 = s1;\n }\n }\n return s0;\n }\n function peg$parse_comment() {\n let s0;\n s0 = peg$parse_block_comment();\n if (s0 === peg$FAILED) {\n s0 = peg$parse_slash_comment();\n if (s0 === peg$FAILED) {\n s0 = peg$parse_macro_comment();\n }\n }\n return s0;\n }\n function peg$parse_block_comment() {\n let s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c74) {\n s1 = peg$c74;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c75);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c76) {\n s5 = peg$c76;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c77);\n }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s4 = peg$c0(s5);\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c76) {\n s5 = peg$c76;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c77);\n }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s4 = peg$c0(s5);\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c76) {\n s3 = peg$c76;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c77);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c79(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_slash_comment() {\n let s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_slash_comment_line();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_slash_comment_line();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c80(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parse_slash_comment_line() {\n let s0, s1, s2, s3, s4, s5, s6;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c81) {\n s2 = peg$c81;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c82);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parse_newline();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c0(s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parse_newline();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c0(s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_newline();\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c83(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parse_macro_comment() {\n let s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_macro_comment_line();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_macro_comment_line();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c84(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parse_macro_comment_line() {\n let s0, s1, s2, s3, s4, s5, s6;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 35) {\n s2 = peg$c85;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c86);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parse_newline();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c0(s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parse_newline();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c0(s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_newline();\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c83(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseSTRING() {\n let s0, s1, s2, s3;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseStringStart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseStringPart();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseStringPart();\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c88(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c87);\n }\n }\n return s0;\n }\n function peg$parseNUMBER_STRING() {\n let s0, s1, s2;\n s0 = peg$currPos;\n s1 = peg$parseNUMBER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSTRING();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c89(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseStringStart() {\n let s0;\n s0 = peg$parseUnicodeLetter();\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 36) {\n s0 = peg$c90;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c91);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 95) {\n s0 = peg$c92;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c93);\n }\n }\n }\n }\n return s0;\n }\n function peg$parseStringPart() {\n let s0;\n s0 = peg$parseStringStart();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNd();\n }\n return s0;\n }\n function peg$parseNUMBER() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s2 = peg$c95;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c96);\n }\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c97;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c98);\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c99.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c99.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n if (peg$c99.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (peg$c99.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s6 = peg$c97;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c98);\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n if (peg$c99.test(input.charAt(peg$currPos))) {\n s8 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n if (peg$c99.test(input.charAt(peg$currPos))) {\n s8 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c101();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c94);\n }\n }\n return s0;\n }\n function peg$parseHTML_STRING() {\n let s0, s1;\n s0 = peg$currPos;\n s1 = peg$parsehtml_raw_string();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c102(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsehtml_raw_string() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s1 = peg$c103;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c104);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsehtml_char();\n if (s3 === peg$FAILED) {\n s3 = peg$parsehtml_raw_string();\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehtml_char();\n if (s3 === peg$FAILED) {\n s3 = peg$parsehtml_raw_string();\n }\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s3 = peg$c105;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c106);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c107(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsehtml_char() {\n let s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 62) {\n s4 = peg$c105;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c106);\n }\n }\n if (s4 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s4 = peg$c103;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c104);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c0(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 62) {\n s4 = peg$c105;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c106);\n }\n }\n if (s4 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s4 = peg$c103;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c104);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c0(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c83(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parseQUOTED_STRING() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c69;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c70);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseDoubleStringCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseDoubleStringCharacter();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c69;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c70);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c108(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseDoubleStringCharacter() {\n let s0, s1, s2;\n s0 = peg$parseQuoteEscape();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s2 = peg$c69;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c70);\n }\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parseLineTerminator();\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSourceCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c109();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseLineContinuation();\n }\n }\n return s0;\n }\n function peg$parseQuoteEscape() {\n let s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s2 = peg$c110;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c111);\n }\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c112(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parseLineContinuation() {\n let s0, s1, s2;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c110;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c111);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLineTerminatorSequence();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c113();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseLineTerminator() {\n let s0;\n if (peg$c114.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c115);\n }\n }\n return s0;\n }\n function peg$parseLineTerminatorSequence() {\n let s0;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c117;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c118);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c119) {\n s0 = peg$c119;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c120);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 13) {\n s0 = peg$c121;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c122);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 8232) {\n s0 = peg$c123;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c124);\n }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 8233) {\n s0 = peg$c125;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c126);\n }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n if (peg$silentFails === 0) {\n peg$fail(peg$c116);\n }\n }\n return s0;\n }\n function peg$parseSourceCharacter() {\n let s0;\n if (input.length > peg$currPos) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n return s0;\n }\n function peg$parse_() {\n let s0, s1;\n peg$silentFails++;\n s0 = [];\n s1 = peg$parse_whitespace();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parse_whitespace();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c134);\n }\n }\n return s0;\n }\n function peg$parse__() {\n let s0, s1;\n peg$silentFails++;\n s0 = [];\n s1 = peg$parse_whitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parse_newline();\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parse_whitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parse_newline();\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c135);\n }\n }\n return s0;\n }\n function peg$parse_newline() {\n let s0;\n if (peg$c136.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c137);\n }\n }\n return s0;\n }\n function peg$parse_whitespace() {\n let s0;\n if (peg$c138.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c139);\n }\n }\n return s0;\n }\n function peg$parseUnicodeLetter() {\n let s0;\n s0 = peg$parseLu();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLl();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLm();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLo();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNl();\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parseLl() {\n let s0;\n if (peg$c140.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c141);\n }\n }\n return s0;\n }\n function peg$parseLm() {\n let s0;\n if (peg$c142.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c143);\n }\n }\n return s0;\n }\n function peg$parseLo() {\n let s0;\n if (peg$c144.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c145);\n }\n }\n return s0;\n }\n function peg$parseLt() {\n let s0;\n if (peg$c146.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c147);\n }\n }\n return s0;\n }\n function peg$parseLu() {\n let s0;\n if (peg$c148.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c149);\n }\n }\n return s0;\n }\n function peg$parseNl() {\n let s0;\n if (peg$c150.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c151);\n }\n }\n return s0;\n }\n function peg$parseNd() {\n let s0;\n if (peg$c152.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c153);\n }\n }\n return s0;\n }\n function dedent(value) {\n const str = value.trim();\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n const indentLengths = matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0);\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indentLengths)}}`, 'g');\n return str.replace(pattern, '\\n');\n }\n return str;\n }\n const edgeops = [];\n const b = new Builder({\n locationFunction: location,\n });\n peg$result = peg$startRuleFunction();\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos),\n );\n }\n}\nconst parse$1 = peg$parse;\n\nfunction parse(input, options) {\n return parse$1(input, options);\n}\nconst DotSyntaxError = DotSyntaxError$1;\n\nfunction convertAttribute(key, value) {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n const isHTMLLike = /^<.+>$/ms.test(trimmed);\n if (isHTMLLike) {\n return createElement(\n 'Attribute',\n {\n key: createElement('Literal', { value: key, quoted: false }, []),\n value: createElement('Literal', { value: trimmed.slice(1, trimmed.length - 1), quoted: 'html' }, []),\n },\n [],\n );\n } else {\n return createElement(\n 'Attribute',\n {\n key: createElement('Literal', { value: key, quoted: false }, []),\n value: createElement('Literal', { value: value, quoted: true }, []),\n },\n [],\n );\n }\n }\n return createElement(\n 'Attribute',\n {\n key: createElement('Literal', { value: key, quoted: false }, []),\n value: createElement('Literal', { value: String(value), quoted: false }, []),\n },\n [],\n );\n}\n\nfunction convertComment(value, kind) {\n return createElement(\n 'Comment',\n {\n kind: kind,\n value: value,\n },\n [],\n );\n}\n\nfunction convertClusterChildren(context, model) {\n return Array.from(\n (function* () {\n for (const [key, value] of model.values) {\n yield convertAttribute(key, value);\n }\n for (const attrs of Object.values(model.attributes)) {\n if (attrs.size > 0) {\n if (attrs.comment) {\n yield convertComment(attrs.comment, context.commentKind);\n }\n yield context.convert(attrs);\n }\n }\n for (const node of model.nodes) {\n if (node.comment) {\n yield convertComment(node.comment, context.commentKind);\n }\n yield context.convert(node);\n }\n for (const subgraph of model.subgraphs) {\n if (subgraph.comment) {\n yield convertComment(subgraph.comment, context.commentKind);\n }\n yield context.convert(subgraph);\n }\n for (const edge of model.edges) {\n if (edge.comment) {\n yield convertComment(edge.comment, context.commentKind);\n }\n yield context.convert(edge);\n }\n })(),\n );\n}\n\nconst AttributeListPlugin = {\n match(model) {\n return model.$$type === 'AttributeList';\n },\n convert(context, model) {\n return createElement(\n 'AttributeList',\n {\n kind: model.$$kind,\n },\n model.values.map(([key, value]) => convertAttribute(key, value)),\n );\n },\n};\n\nconst EdgePlugin$1 = {\n match(model) {\n return model.$$type === 'Edge';\n },\n convert(context, model) {\n return createElement(\n 'Edge',\n {\n targets: model.targets.map((target) => {\n if (index_js$1.isNodeModel(target)) {\n return createElement(\n 'NodeRef',\n {\n id: createElement(\n 'Literal',\n {\n value: target.id,\n quoted: true,\n },\n [],\n ),\n },\n [],\n );\n } else if (index_js$1.isForwardRefNode(target)) {\n return createElement(\n 'NodeRef',\n {\n id: createElement(\n 'Literal',\n {\n value: target.id,\n quoted: true,\n },\n [],\n ),\n port: target.port\n ? createElement(\n 'Literal',\n {\n value: target.port,\n quoted: true,\n },\n [],\n )\n : undefined,\n compass: target.compass\n ? createElement(\n 'Literal',\n {\n value: target.compass,\n quoted: true,\n },\n [],\n )\n : undefined,\n },\n [],\n );\n } else {\n return createElement(\n 'NodeRefGroup',\n {},\n target.map((n) => {\n if (index_js$1.isNodeModel(n)) {\n return createElement(\n 'NodeRef',\n {\n id: createElement(\n 'Literal',\n {\n value: n.id,\n quoted: true,\n },\n [],\n ),\n },\n [],\n );\n }\n return createElement(\n 'NodeRef',\n {\n id: createElement(\n 'Literal',\n {\n value: n.id,\n quoted: true,\n },\n [],\n ),\n port: n.port\n ? createElement(\n 'Literal',\n {\n value: n.port,\n quoted: true,\n },\n [],\n )\n : undefined,\n compass: n.compass\n ? createElement(\n 'Literal',\n {\n value: n.compass,\n quoted: true,\n },\n [],\n )\n : undefined,\n },\n [],\n );\n }),\n );\n }\n }),\n },\n [\n ...(model.attributes.comment ? [convertComment(model.attributes.comment, context.commentKind)] : []),\n ...model.attributes.values.map(([key, value]) => convertAttribute(key, value)),\n ],\n );\n },\n};\n\nconst GraphPlugin$1 = {\n match(model) {\n return model.$$type === 'Graph';\n },\n convert(context, model) {\n return createElement('Dot', {}, [\n ...(model.comment ? [convertComment(model.comment, context.commentKind)] : []),\n createElement(\n 'Graph',\n {\n directed: model.directed,\n strict: model.strict,\n id: model.id\n ? createElement(\n 'Literal',\n {\n value: model.id,\n quoted: true,\n },\n [],\n )\n : undefined,\n },\n convertClusterChildren(context, model),\n ),\n ]);\n },\n};\n\nconst NodePlugin$1 = {\n match(model) {\n return model.$$type === 'Node';\n },\n convert(context, model) {\n return createElement(\n 'Node',\n {\n id: createElement(\n 'Literal',\n {\n value: model.id,\n quoted: true,\n },\n [],\n ),\n },\n [\n ...(model.attributes.comment ? [convertComment(model.attributes.comment, context.commentKind)] : []),\n ...model.attributes.values.map(([key, value]) => convertAttribute(key, value)),\n ],\n );\n },\n};\n\nconst SubgraphPlugin$1 = {\n match(model) {\n return model.$$type === 'Subgraph';\n },\n convert(context, model) {\n return createElement(\n 'Subgraph',\n {\n id: model.id\n ? createElement(\n 'Literal',\n {\n value: model.id,\n quoted: true,\n },\n [],\n )\n : undefined,\n },\n convertClusterChildren(context, model),\n );\n },\n};\n\nconst defaultPlugins$1 = [AttributeListPlugin, EdgePlugin$1, NodePlugin$1, GraphPlugin$1, SubgraphPlugin$1];\n\nclass FromModelConverter {\n options;\n #plugins = [...defaultPlugins$1];\n constructor(options = {}) {\n this.options = options;\n }\n convert(model) {\n const plugins = [...this.#plugins];\n const { commentKind = 'Slash' } = this.options;\n const context = {\n commentKind,\n convert(m) {\n for (const plugin of plugins) {\n if (plugin.match(m)) {\n return plugin.convert(context, m);\n }\n }\n throw Error();\n },\n };\n return context.convert(model);\n }\n}\n\nfunction fromModel(model, options) {\n return new FromModelConverter(options).convert(model);\n}\n\nclass CommentHolder {\n comment = null;\n set(comment) {\n this.comment = comment;\n }\n reset() {\n this.comment = null;\n }\n apply(model, location) {\n if (location && this.comment?.location) {\n if (this.comment?.kind === 'Block') {\n if (this.comment.location.end.line === location.start.line - 1) {\n model.comment = this.comment.value;\n }\n } else {\n if (this.comment.location.end.line === location.start.line) {\n model.comment = this.comment.value;\n }\n }\n } else {\n model.comment = this.comment?.value;\n }\n this.reset();\n }\n}\n\nconst DotPlugin = {\n match(ast) {\n return ast.type === 'Dot';\n },\n convert(context, ast) {\n const commentHolder = new CommentHolder();\n for (const stmt of ast.children) {\n switch (stmt.type) {\n case 'Comment':\n commentHolder.set(stmt);\n break;\n case 'Graph':\n const graph = context.convert(stmt);\n commentHolder.apply(graph, stmt.location);\n return graph;\n }\n }\n throw Error();\n },\n};\n\nfunction convertToEdgeTargetTuple(edge) {\n return edge.targets.map((t) => {\n switch (t.type) {\n case 'NodeRef':\n return { id: t.id.value, port: t.port?.value, compass: t.compass?.value };\n case 'NodeRefGroup':\n return t.children.map((t) => ({ id: t.id.value, port: t.port?.value, compass: t.compass?.value }));\n }\n });\n}\n\nconst EdgePlugin = {\n match(ast) {\n return ast.type === 'Edge';\n },\n convert(context, ast) {\n const edge = new context.models.Edge(\n convertToEdgeTargetTuple(ast),\n ast.children\n .filter((v) => v.type === 'Attribute')\n .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n );\n return edge;\n },\n};\n\nfunction applyStatements(graph, statements) {\n const commentHolder = new CommentHolder();\n for (const stmt of statements) {\n switch (stmt.type) {\n case 'Subgraph':\n const subgraph = stmt.id ? graph.subgraph(stmt.id.value) : graph.subgraph();\n applyStatements(subgraph, stmt.children);\n commentHolder.apply(subgraph, stmt.location);\n break;\n case 'Attribute':\n graph.set(stmt.key.value, stmt.value.value);\n commentHolder.reset();\n break;\n case 'Node':\n commentHolder.apply(\n graph.node(\n stmt.id.value,\n stmt.children\n .filter((v) => v.type === 'Attribute')\n .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n ),\n stmt.location,\n );\n break;\n case 'Edge':\n commentHolder.apply(\n graph.edge(\n convertToEdgeTargetTuple(stmt),\n stmt.children\n .filter((v) => v.type === 'Attribute')\n .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n ),\n stmt.location,\n );\n break;\n case 'AttributeList':\n const attrs = stmt.children\n .filter((v) => v.type === 'Attribute')\n .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {});\n switch (stmt.kind) {\n case 'Edge':\n graph.edge(attrs);\n break;\n case 'Node':\n graph.node(attrs);\n break;\n case 'Graph':\n graph.graph(attrs);\n break;\n }\n commentHolder.reset();\n break;\n case 'Comment':\n commentHolder.set(stmt);\n }\n }\n}\n\nconst GraphPlugin = {\n match(ast) {\n return ast.type === 'Graph';\n },\n convert(context, ast) {\n const G = ast.directed ? context.models.Digraph : context.models.Graph;\n const graph = new G(ast.id?.value, ast.strict);\n applyStatements(graph, ast.children);\n return graph;\n },\n};\n\nconst SubgraphPlugin = {\n match(ast) {\n return ast.type === 'Subgraph';\n },\n convert(context, ast) {\n const subgraph = new context.models.Subgraph(ast.id?.value);\n applyStatements(subgraph, ast.children);\n return subgraph;\n },\n};\n\nconst NodePlugin = {\n match(ast) {\n return ast.type === 'Node';\n },\n convert(context, ast) {\n const node = new context.models.Node(\n ast.id.value,\n ast.children\n .filter((v) => v.type === 'Attribute')\n .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n );\n return node;\n },\n};\n\nconst defaultPlugins = [NodePlugin, EdgePlugin, SubgraphPlugin, GraphPlugin, DotPlugin];\n\nclass ToModelConverter {\n options;\n plugins = [...defaultPlugins];\n constructor(options = {}) {\n this.options = options;\n }\n convert(ast) {\n const plugins = [...this.plugins];\n const context = {\n models: index_js$1.createModelsContext(this.options.models ?? {}),\n convert(m) {\n for (const plugin of plugins) {\n if (plugin.match(m)) {\n return plugin.convert(context, m);\n }\n }\n throw Error();\n },\n };\n return context.convert(ast);\n }\n}\n\nfunction toModel(ast, options) {\n return new ToModelConverter(options).convert(ast);\n}\n\nexports.Builder = Builder;\nexports.DotSyntaxError = DotSyntaxError;\nexports.FromModelConverter = FromModelConverter;\nexports.Printer = Printer;\nexports.ToModelConverter = ToModelConverter;\nexports.createElement = createElement;\nexports.fromModel = fromModel;\nexports.parse = parse;\nexports.stringify = stringify;\nexports.toModel = toModel;\n", "'use strict';\n\nvar index_js = require('../common/index.cjs');\nvar index_js$1 = require('../ast/index.cjs');\n\nconst attribute = new Proxy(Object.freeze({}), {\n get: (_, key) => key,\n});\n\nclass DotObject {}\n\nclass AttributesBase extends DotObject {\n #attrs = new Map();\n constructor(attributes) {\n super();\n if (attributes !== undefined) {\n this.apply(attributes);\n }\n }\n get values() {\n return Array.from(this.#attrs.entries());\n }\n get size() {\n return this.#attrs.size;\n }\n get(key) {\n return this.#attrs.get(key);\n }\n set(key, value) {\n if (value !== null && value !== undefined) {\n this.#attrs.set(key, value);\n }\n }\n delete(key) {\n this.#attrs.delete(key);\n }\n apply(attributes) {\n const entries = Array.isArray(attributes) ? attributes : Object.entries(attributes);\n for (const [key, value] of entries) {\n this.set(key, value);\n }\n }\n clear() {\n this.#attrs.clear();\n }\n}\n\nclass AttributeList extends AttributesBase {\n $$kind;\n get $$type() {\n return 'AttributeList';\n }\n comment;\n constructor($$kind, attributes) {\n super(attributes);\n this.$$kind = $$kind;\n }\n}\n\nclass GraphBase extends AttributesBase {\n #models = index_js.RootModelsContext;\n id;\n comment;\n attributes = Object.freeze({\n graph: new AttributeList('Graph'),\n edge: new AttributeList('Edge'),\n node: new AttributeList('Node'),\n });\n get nodes() {\n return Array.from(this.#objects.nodes.values());\n }\n get edges() {\n return Array.from(this.#objects.edges.values());\n }\n get subgraphs() {\n return Array.from(this.#objects.subgraphs.values());\n }\n #objects = {\n nodes: new Map(),\n edges: new Set(),\n subgraphs: new Set(),\n };\n with(models) {\n this.#models = index_js.createModelsContext(models);\n }\n addNode(node) {\n this.#objects.nodes.set(node.id, node);\n }\n addEdge(edge) {\n this.#objects.edges.add(edge);\n }\n addSubgraph(subgraph) {\n this.#objects.subgraphs.add(subgraph);\n }\n existNode(nodeId) {\n return this.#objects.nodes.has(nodeId);\n }\n existEdge(edge) {\n return this.#objects.edges.has(edge);\n }\n existSubgraph(subgraph) {\n return this.#objects.subgraphs.has(subgraph);\n }\n createSubgraph(...args) {\n const subgraph = new this.#models.Subgraph(...args);\n subgraph.with(this.#models);\n this.addSubgraph(subgraph);\n return subgraph;\n }\n removeNode(node) {\n this.#objects.nodes.delete(typeof node === 'string' ? node : node.id);\n }\n removeEdge(edge) {\n this.#objects.edges.delete(edge);\n }\n removeSubgraph(subgraph) {\n this.#objects.subgraphs.delete(subgraph);\n }\n createNode(id, attributes) {\n const node = new this.#models.Node(id, attributes);\n this.addNode(node);\n return node;\n }\n getSubgraph(id) {\n return Array.from(this.#objects.subgraphs.values()).find((subgraph) => subgraph.id === id);\n }\n getNode(id) {\n return this.#objects.nodes.get(id);\n }\n createEdge(targets, attributes) {\n const ts = targets.map((t) =>\n index_js.isNodeRefGroupLike(t) ? index_js.toNodeRefGroup(t) : index_js.toNodeRef(t),\n );\n const edge = new this.#models.Edge(ts, attributes);\n this.addEdge(edge);\n return edge;\n }\n subgraph(...args) {\n const id = args.find((arg) => typeof arg === 'string');\n const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n const callback = args.find((arg) => typeof arg === 'function');\n const subgraph = id ? this.getSubgraph(id) ?? this.createSubgraph(id) : this.createSubgraph();\n if (attributes !== undefined) {\n subgraph.apply(attributes);\n }\n if (callback !== undefined) {\n callback(subgraph);\n }\n return subgraph;\n }\n node(firstArg, ...args) {\n if (typeof firstArg === 'string') {\n const id = firstArg;\n const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n const callback = args.find((arg) => typeof arg === 'function');\n const node = this.getNode(id) ?? this.createNode(id);\n if (attributes !== undefined) {\n node.attributes.apply(attributes);\n }\n if (callback !== undefined) {\n callback(node);\n }\n return node;\n }\n if (typeof firstArg === 'object' && firstArg !== null) {\n this.attributes.node.apply(firstArg);\n }\n }\n edge(firstArg, ...args) {\n if (Array.isArray(firstArg)) {\n const targets = firstArg;\n const attributes = args.find((arg) => typeof arg === 'object');\n const callback = args.find((arg) => typeof arg === 'function');\n const edge = this.createEdge(targets, attributes);\n if (callback !== undefined) {\n callback(edge);\n }\n return edge;\n }\n if (typeof firstArg === 'object' && firstArg !== null) {\n this.attributes.edge.apply(firstArg);\n }\n }\n graph(attributes) {\n this.attributes.graph.apply(attributes);\n }\n}\n\nclass RootGraph extends GraphBase {\n get $$type() {\n return 'Graph';\n }\n id;\n strict;\n constructor(...args) {\n super();\n this.id = args.find((arg) => typeof arg === 'string');\n this.strict = args.find((arg) => typeof arg === 'boolean') ?? false;\n const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n if (attributes !== undefined) {\n this.apply(attributes);\n }\n }\n}\n\nclass Digraph extends RootGraph {\n get directed() {\n return true;\n }\n}\n\nclass Graph extends RootGraph {\n get directed() {\n return false;\n }\n}\n\nclass Subgraph extends GraphBase {\n get $$type() {\n return 'Subgraph';\n }\n id;\n constructor(...args) {\n super();\n this.id = args.find((arg) => typeof arg === 'string');\n const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n if (attributes !== undefined) {\n this.apply(attributes);\n }\n }\n isSubgraphCluster() {\n if (typeof this.id === 'string') {\n return this.id.startsWith('cluster');\n }\n return false;\n }\n}\n\nclass AttributesGroup extends AttributesBase {\n comment;\n}\n\nclass Node extends DotObject {\n id;\n get $$type() {\n return 'Node';\n }\n comment;\n attributes;\n constructor(id, attributes) {\n super();\n this.id = id;\n this.attributes = new AttributesGroup(attributes);\n }\n port(port) {\n if (typeof port === 'string') {\n return { id: this.id, port };\n }\n return { id: this.id, ...port };\n }\n}\n\nclass Edge extends DotObject {\n targets;\n get $$type() {\n return 'Edge';\n }\n comment;\n attributes;\n constructor(targets, attributes) {\n super();\n this.targets = targets;\n if (targets.length < 2 && (index_js.isNodeRefLike(targets[0]) && index_js.isNodeRefLike(targets[1])) === false) {\n throw Error('The element of Edge target is missing or not satisfied as Edge target.');\n }\n this.attributes = new AttributesGroup(attributes);\n }\n}\n\nObject.assign(index_js.RootModelsContext, {\n Graph,\n Digraph,\n Subgraph,\n Node,\n Edge,\n});\n\nfunction ModelFactoryBuilder(directed, strictMode) {\n return (...args) => {\n const G = directed ? this.Digraph : this.Graph;\n const id = args.find((arg) => typeof arg === 'string');\n const attributes = args.find((arg) => typeof arg === 'object');\n const callback = args.find((arg) => typeof arg === 'function');\n const g = new G(id, strictMode, attributes);\n g.with(this);\n if (typeof callback === 'function') {\n callback(g);\n }\n return g;\n };\n}\nfunction createModelFactories(strict, context = index_js.RootModelsContext) {\n return Object.freeze({\n digraph: ModelFactoryBuilder.call(context, true, strict),\n graph: ModelFactoryBuilder.call(context, false, strict),\n });\n}\n\nconst noStrict = createModelFactories(false);\nconst digraph = noStrict.digraph;\nconst graph = noStrict.graph;\nconst strict = createModelFactories(true);\nfunction withContext(models) {\n const context = index_js.createModelsContext(models);\n return Object.freeze({\n ...createModelFactories(false, context),\n strict: createModelFactories(true, context),\n });\n}\n\nfunction toDot(model, options) {\n const ast = index_js$1.fromModel(model, options?.convert);\n return index_js$1.stringify(ast, options?.print);\n}\n\nfunction fromDot(dot, options) {\n const ast = index_js$1.parse(dot, options?.parse);\n if (\n Array.isArray(ast) ||\n ast.type === 'Attribute' ||\n ast.type === 'AttributeList' ||\n ast.type === 'Comment' ||\n ast.type === 'NodeRef' ||\n ast.type === 'NodeRefGroup' ||\n ast.type === 'Literal'\n ) {\n throw new Error();\n }\n return index_js$1.toModel(ast, options?.convert);\n}\n\nexports.AttributeList = AttributeList;\nexports.AttributesBase = AttributesBase;\nexports.AttributesGroup = AttributesGroup;\nexports.Digraph = Digraph;\nexports.DotObject = DotObject;\nexports.Edge = Edge;\nexports.Graph = Graph;\nexports.GraphBase = GraphBase;\nexports.Node = Node;\nexports.RootGraph = RootGraph;\nexports.Subgraph = Subgraph;\nexports.attribute = attribute;\nexports.digraph = digraph;\nexports.fromDot = fromDot;\nexports.graph = graph;\nexports.strict = strict;\nexports.toDot = toDot;\nexports.withContext = withContext;\n", "'use strict';\n\nvar index_js = require('./common/index.cjs');\nvar index_js$1 = require('./core/index.cjs');\n\nObject.keys(index_js).forEach(function (k) {\n if (k !== 'default' && !exports.hasOwnProperty(k))\n Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () {\n return index_js[k];\n },\n });\n});\nObject.keys(index_js$1).forEach(function (k) {\n if (k !== 'default' && !exports.hasOwnProperty(k))\n Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () {\n return index_js$1[k];\n },\n });\n});\n", "/* Functions used to output query graphs as [graphviz dot](https://graphviz.org/doc/info/lang.html) outputs. */\n\nimport { simpleTraversal, Edge, QueryGraph, QueryGraphState, Vertex } from \"./querygraph\";\nimport { attribute, digraph, RootGraphModel, GraphBaseModel, EdgeModel, NodeModel, toDot as graphvizToDot } from 'ts-graphviz';\nimport { RootPath, traversePath } from \"./graphPath\";\n\nfunction setDefaultGraphAttributes(_: RootGraphModel) {\n //vizGraph.attributes.edge.set(attribute.labelfloat, true);\n}\n\nexport function toDot(graph: QueryGraph, config?: DotGraphConfig): string {\n const vizGraph = digraph(graph.name);\n setDefaultGraphAttributes(vizGraph);\n addToVizGraphAndHighlight(graph, vizGraph, config);\n return graphvizToDot(vizGraph);\n}\n\nexport function groupToDot(\n name: string,\n graphs: Map,\n configs: Map = new Map(),\n): string {\n const vizGraph = digraph(name);\n setDefaultGraphAttributes(vizGraph);\n for (const [group, graph] of graphs.entries()) {\n const cluster = vizGraph.createSubgraph(`cluster_${group}`, {\n [attribute.label]: `${group}`,\n [attribute.style]: \"filled\",\n [attribute.color]: \"grey95\"\n });\n addToVizGraphAndHighlight(graph, cluster, configs.get(group));\n }\n return graphvizToDot(vizGraph);\n}\n\nfunction addToVizGraphAndHighlight(graph: QueryGraph, vizGraph: GraphBaseModel, config?: DotGraphConfig) {\n const state = addToVizGraph(graph, vizGraph, config?.noTerminal);\n highlightPaths(state, config?.highlightedPaths);\n}\n\nexport type DotGraphConfig = {\n highlightedPaths?: HighlitedPath[],\n noTerminal?: boolean\n}\n\n// Colors chosen from https://graphviz.org/doc/info/colors.html, picked so that\n// they are not too close to each other.\nconst colors = [\n 'blue',\n 'darkgreen',\n 'red',\n 'yellow',\n 'orange',\n 'lightseagreen'\n];\n\nexport function pickHighlights(paths: RootPath[], excluded: string[] = []): HighlitedPath[] {\n const usableColors = colors.filter(c => !excluded.includes(c));\n return paths.map((path, i) => { return { path, color: usableColors[i % usableColors.length]}});\n}\n\ntype HighlitedPath = {\n path: RootPath,\n color: string\n}\n\nfunction addToVizGraph(graph: QueryGraph, vizGraph: GraphBaseModel, noTerminal: boolean = false): QueryGraphState {\n const vizSubGraphs = new Map();\n for (const source of graph.sources.keys()) {\n if (source != graph.name) {\n // Note: the fact the subgraph name is prefixed by \"cluster\" is a graphviz thing (https://graphviz.org/Gallery/directed/cluster.html)\n vizSubGraphs.set(source, vizGraph.createSubgraph(`cluster_${source}`, {\n [attribute.label]: `Subgraph \"${source}\"`,\n [attribute.color]: \"black\",\n [attribute.style]: \"\" // Reset to non-filled\n }));\n }\n }\n const getNode = function (vertex: Vertex): NodeModel {\n const existingNode = state.getVertexState(vertex);\n if (existingNode) {\n return existingNode;\n }\n let newNode: NodeModel;\n if (vertex.source == graph.name) {\n newNode = vizGraph.createNode(vertex.type.name);\n } else {\n const vizSubGraph = vizSubGraphs.get(vertex.source);\n // Do note that we graphviz identify nodes by their name, so we can't just use the type name as\n // this would collapse the vertices from different subgraphs. So we include the source in the\n // name, even if it's not that useful graphically since we already group vertices by subgraphs.\n newNode = vizSubGraph.createNode(`${vertex.type.name}@${vertex.source}`);\n }\n state.setVertexState(vertex, newNode);\n return newNode;\n }\n const pickGraphForEdge = function (head: Vertex, tail: Vertex): GraphBaseModel {\n if (head.source == tail.source && head.source != graph.name) {\n return vizSubGraphs.get(head.source);\n }\n return vizGraph;\n }\n const state = new QueryGraphState();\n const onEdge = function (edge: Edge): boolean {\n const head = edge.head;\n const tail = edge.tail;\n if (noTerminal && graph.isTerminal(tail)) {\n return false;\n }\n const headNode = getNode(head);\n const tailNode = getNode(tail);\n const attributes = {\n [attribute.label]: edge.label(),\n };\n state.setEdgeState(edge, pickGraphForEdge(head, tail).createEdge([headNode, tailNode], attributes));\n return true;\n }\n simpleTraversal(graph, _ => undefined, onEdge);\n return state;\n}\n\nfunction highlightPaths(state: QueryGraphState, toHighlights?: HighlitedPath[]) {\n toHighlights?.forEach(h => highlightPath(state, h));\n}\n\nfunction highlightPath(state: QueryGraphState, toHighlight: HighlitedPath) {\n traversePath(toHighlight.path, e => {\n for (const vAttrs of [state.getVertexState(e.head)?.attributes, state.getVertexState(e.tail)?.attributes ]) {\n vAttrs?.set(attribute.color, toHighlight.color);\n vAttrs?.set(attribute.fontcolor, toHighlight.color);\n }\n const eAttrs = state.getEdgeState(e)?.attributes;\n eAttrs?.set(attribute.color, toHighlight.color);\n eAttrs?.set(attribute.fontcolor, toHighlight.color);\n });\n}\n", "import { SelectionSet, assert } from \"@apollo/federation-internals\";\nimport { ConditionResolution, ConditionResolver, ExcludedConditions, ExcludedDestinations, sameExcludedDestinations } from \"./graphPath\";\nimport { PathContext } from \"./pathContext\";\nimport { Edge, QueryGraphState } from \"./querygraph\";\n\nexport function cachingConditionResolver(resolver: ConditionResolver): ConditionResolver {\n // For every edge having a condition, we cache the resolution its conditions when possible.\n // We save resolution with the set of excluded edges that were used to compute it: the reason we do this is\n // that excluded edges impact the resolution, so we should only used a cached value if we know the excluded\n // edges are the same as when caching, and while we could decide to cache only when we have no excluded edges\n // at all, this would sub-optimal for types that have multiple keys, as the algorithm will always at least\n // include the previous key edges to the excluded edges of other keys. In other words, if we only cached\n // when we have no excluded edges, we'd only ever use the cache for the first key of every type. However,\n // as the algorithm always try keys in the same order (the order of the edges in the query graph), including\n // the excluded edges we see on the first ever call is actually the proper thing to do.\n const cache = new QueryGraphState();\n return (edge: Edge, context: PathContext, excludedDestinations: ExcludedDestinations, excludedConditions: ExcludedConditions, extraConditions?: SelectionSet) => {\n assert(edge.conditions || extraConditions, 'Should not have been called for edge without conditions');\n\n // We don't cache if there is a context or excluded conditions because those would impact the resolution and\n // we don't want to cache a value per-context and per-excluded-conditions (we also don't cache per-excluded-edges though\n // instead we cache a value only for the first-see excluded edges; see above why that work in practice).\n // TODO: we could actually have a better handling of the context: it doesn't really change how we'd resolve the condition, it's only\n // that the context, if not empty, would have to be added to the trigger of key edges in the resolution path tree when appropriate\n // and we currently don't handle that. But we could cache with an empty context, and then apply the proper transformation on the\n // cached value `pathTree` when the context is not empty. That said, the context is about active @include/@skip and it's not use\n // that commonly, so this is probably not an urgent improvement.\n if (!context.isEmpty() || excludedConditions.length > 0 || extraConditions) {\n return resolver(edge, context, excludedDestinations, excludedConditions, extraConditions);\n }\n\n const cachedResolutionAndExcludedEdges = cache.getEdgeState(edge);\n if (cachedResolutionAndExcludedEdges) {\n const [cachedResolution, forExcludedEdges] = cachedResolutionAndExcludedEdges;\n return sameExcludedDestinations(forExcludedEdges, excludedDestinations)\n ? cachedResolution\n : resolver(edge, context, excludedDestinations, excludedConditions, extraConditions);\n } else {\n const resolution = resolver(edge, context, excludedDestinations, excludedConditions, extraConditions);\n cache.setEdgeState(edge, [resolution, excludedDestinations]);\n return resolution;\n }\n };\n}\n", "import { Schema, Selection, SelectionSet } from \"@apollo/federation-internals\";\nimport {\n ConditionResolution,\n ConditionResolver,\n ExcludedConditions,\n ExcludedDestinations,\n GraphPath,\n OpGraphPath,\n SimultaneousPathsWithLazyIndirectPaths,\n addConditionExclusion,\n advanceOptionsToString,\n advanceSimultaneousPathsWithOperation,\n unsatisfiedConditionsResolution\n} from \"./graphPath\";\nimport { Edge, QueryGraph } from \"./querygraph\";\nimport { PathContext } from \"./pathContext\";\nimport { cachingConditionResolver } from \"./conditionsCaching\";\n\nclass ConditionValidationState {\n constructor(\n // Selection that belongs to the condition we're validating.\n readonly selection: Selection,\n // All the possible \"simultaneous paths\" we could be in the subgraph when we reach this state selection.\n readonly subgraphOptions: SimultaneousPathsWithLazyIndirectPaths[],\n ) {}\n\n advance(supergraph: Schema): ConditionValidationState[] | null {\n const newOptions: SimultaneousPathsWithLazyIndirectPaths[] = [];\n for (const paths of this.subgraphOptions) {\n const pathsOptions = advanceSimultaneousPathsWithOperation(\n supergraph,\n paths,\n this.selection.element,\n // In this particular case, we're traversing the selections of a\n // FieldSet. By providing _no_ overrides here, it'll ensure that we\n // don't incorrectly validate any cases where overridden fields are in\n // a FieldSet, it's just disallowed completely.\n new Map(),\n );\n if (!pathsOptions) {\n continue;\n }\n newOptions.push(...pathsOptions);\n }\n\n // If we got no options, it means that particular selection of the conditions cannot be satisfied, so the\n // overall condition cannot.\n if (newOptions.length === 0) {\n return null;\n }\n return this.selection.selectionSet ? this.selection.selectionSet.selections().map(\n s => new ConditionValidationState(\n s,\n newOptions,\n )\n ) : [];\n }\n\n toString(): string {\n return `${this.selection} <=> ${advanceOptionsToString(this.subgraphOptions)}`;\n }\n}\n\n/**\n * Creates a `ConditionResolver` that only validates that the condition can be satisfied, but without\n * trying compare/evaluate the potential various ways to validate said conditions. Concretely, the\n * `ConditionResolution` values returned by the create resolver will never contain a `pathTree` (or\n * an `unsatisfiedConditionReason` for that matter) and the cost will always default to 1 if the\n * conditions are satisfied.\n */\nexport function simpleValidationConditionResolver({\n supergraph,\n queryGraph,\n withCaching,\n}: {\n supergraph: Schema,\n queryGraph: QueryGraph,\n withCaching?: boolean,\n}): ConditionResolver {\n const resolver = (\n edge: Edge,\n context: PathContext,\n excludedDestinations: ExcludedDestinations,\n excludedConditions: ExcludedConditions,\n extraConditions?: SelectionSet,\n ): ConditionResolution => {\n const conditions = (extraConditions ?? edge.conditions)!; // TODO: ensure that only one is set\n excludedConditions = addConditionExclusion(excludedConditions, conditions);\n\n const initialPath: OpGraphPath = GraphPath.create(queryGraph, edge.head);\n const initialOptions = [\n new SimultaneousPathsWithLazyIndirectPaths(\n [initialPath],\n context,\n simpleValidationConditionResolver({ supergraph, queryGraph, withCaching }),\n excludedDestinations,\n excludedConditions,\n new Map(),\n )\n ];\n\n const stack: ConditionValidationState[] = [];\n for (const selection of conditions.selections()) {\n stack.push(\n new ConditionValidationState(\n selection,\n initialOptions,\n ),\n );\n }\n\n while (stack.length > 0) {\n const state = stack.pop()!;\n const newStates = state.advance(supergraph);\n if (newStates === null) {\n return unsatisfiedConditionsResolution;\n }\n newStates.forEach(s => stack.push(s));\n }\n // If we exhaust the stack, it means we've been able to find \"some\" path for every possible selection in the condition, so the\n // condition is validated. Note that we use a cost of 1 for all conditions as we don't care about efficiency.\n return { satisfied: true, cost: 1 };\n };\n return withCaching ? cachingConditionResolver(resolver) : resolver;\n}\n", "/* Functions used to output query graphs as [mermaid graphs](https://mermaid.js.org/syntax/flowchart.html). */\n\nimport { ObjectType } from \"@apollo/federation-internals\";\nimport { Edge, FEDERATED_GRAPH_ROOT_SOURCE, QueryGraph, Vertex, isFederatedGraphRootType, simpleTraversal } from \"./querygraph\";\n\nexport type MermaidOptions = {\n includeRootTypeLinks?: boolean,\n}\n\nexport class MermaidGraph {\n private readonly before: string[] = [];\n private readonly after: string[] = [];\n private readonly subgraphs = new Map();\n\n private isBuilt = false;\n\n constructor(\n private readonly graph: QueryGraph,\n private readonly options: MermaidOptions = {},\n ) {\n for (const name of graph.sources.keys()) {\n if (name === this.graph.name || name === FEDERATED_GRAPH_ROOT_SOURCE) {\n continue;\n }\n this.subgraphs.set(name, []);\n }\n }\n\n private subgraphName(vertex: Vertex): string | undefined {\n if (vertex.source === this.graph.name || vertex.source === FEDERATED_GRAPH_ROOT_SOURCE) {\n return undefined;\n }\n return vertex.source;\n }\n\n private vertexName(vertex: Vertex): string {\n if (isFederatedGraphRootType(vertex.type)) {\n return `root-${vertex.type.name.slice(1, vertex.type.name.length-1)}`;\n }\n const sg = this.subgraphName(vertex);\n const n = sg ? `${vertex.type.name}-${sg}` : `${vertex.type.name}`;\n return vertex.provideId ? `${n}-${vertex.provideId}` : n;\n }\n\n addVertex(vertex: Vertex): void {\n const sg = this.subgraphName(vertex);\n const addTo = sg ? this.subgraphs.get(sg)! : this.before;\n if (isFederatedGraphRootType(vertex.type)) {\n addTo.push(`${this.vertexName(vertex)}([\"root(${vertex.type.name.slice(1, vertex.type.name.length)})\"])`);\n } else {\n addTo.push(`${this.vertexName(vertex)}[\"${vertex.toString()}\"]`);\n }\n }\n\n addEdge(edge: Edge): boolean {\n switch (edge.transition.kind) {\n case 'FieldCollection':\n if (edge.transition.definition.name.startsWith('_')) {\n return false;\n }\n break;\n case 'RootTypeResolution':\n if (!(this.options.includeRootTypeLinks ?? true)) {\n return false;\n }\n break;\n case 'SubgraphEnteringTransition':\n const rt = edge.tail.type as ObjectType;\n if (rt.fields().filter((f) => !f.name.startsWith('_')).length === 0) {\n return false;\n }\n break;\n }\n\n const head = this.vertexName(edge.head);\n const tail = this.vertexName(edge.tail);\n const addTo = edge.head.source !== this.graph.name && edge.head.source === edge.tail.source\n ? this.subgraphs.get(edge.head.source)!\n : this.after;\n const label = edge.label();\n if (label.length === 0) {\n addTo.push(`${head} --> ${tail}`);\n } else {\n addTo.push(`${head} -->|\"${label}\"| ${tail}`);\n }\n return true;\n }\n\n build(): void {\n if (this.isBuilt) {\n return;\n }\n\n simpleTraversal(\n this.graph,\n (v) => this.addVertex(v),\n (e) => this.addEdge(e),\n );\n\n this.isBuilt = true;\n }\n\n toString(): string {\n this.build();\n\n const final = [ 'flowchart TD' ];\n this.before.forEach((b) => final.push(' ' + b));\n for (const [name, data] of this.subgraphs.entries()) {\n final.push(` subgraph ${name}`);\n data.forEach((d) => final.push(' ' + d));\n final.push(' end');\n }\n this.after.forEach((a) => final.push(' ' + a));\n return final.join('\\n');\n }\n}\n", "export * from './querygraph';\nexport * from './graphPath';\nexport * from './pathTree';\nexport * from './graphviz';\nexport * from './transition';\nexport * from './pathContext';\nexport * from './conditionsCaching';\nexport * from './conditionsValidation';\nexport * from './mermaid';\n", "import { NamedSchemaElement, SubgraphASTNode } from \"@apollo/federation-internals\";\nimport { printLocation } from \"graphql\";\n\nexport enum HintLevel {\n WARN = 60,\n INFO = 40,\n DEBUG = 20,\n}\n\nexport type HintCodeDefinition = {\n code: string,\n // Note that we keep the name separately, because while it can be obtained easily enough\n // with `HintLevel[value]` on the JS/TS-side, the name would otherwise be lost when\n // serializing the related objects to JSON for rover.\n level: { value: HintLevel, name: string},\n description: string,\n}\n\nfunction makeCodeDefinition({\n code,\n level,\n description,\n}: {\n code: string,\n level: HintLevel,\n description: string,\n}): HintCodeDefinition {\n return ({\n code,\n level: { value: level, name: HintLevel[level]},\n description,\n });\n}\n\nconst INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE = makeCodeDefinition({\n code: 'INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE',\n level: HintLevel.INFO,\n description: 'Indicates that a field does not have the exact same types in all subgraphs, but that the types are \"compatible\"'\n + ' (2 types are compatible if one is a non-nullable version of the other, a list version, a subtype, or a'\n + ' combination of the former).',\n});\n\nconst INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE = makeCodeDefinition({\n code: 'INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE',\n level: HintLevel.INFO,\n description: 'Indicates that an argument type (of a field/input field/directive definition) does not have the exact same type'\n + ' in all subgraphs, but that the types are \"compatible\" (two types are compatible if one is a non-nullable'\n + ' version of the other, a list version, a subtype, or a combination of the former).',\n});\n\nconst INCONSISTENT_DEFAULT_VALUE_PRESENCE = makeCodeDefinition({\n code: 'INCONSISTENT_DEFAULT_VALUE_PRESENCE',\n level: HintLevel.WARN,\n description: 'Indicates that an argument definition (of a field/input field/directive definition) has a default value in only'\n + ' some of the subgraphs that define the argument.',\n});\n\nconst INCONSISTENT_ENTITY = makeCodeDefinition({\n code: 'INCONSISTENT_ENTITY',\n level: HintLevel.INFO,\n description: 'Indicates that an object is declared as an entity (has a `@key`) in only some of the subgraphs in which the object is defined.',\n});\n\nconst INCONSISTENT_OBJECT_VALUE_TYPE_FIELD = makeCodeDefinition({\n code: 'INCONSISTENT_OBJECT_VALUE_TYPE_FIELD',\n level: HintLevel.DEBUG,\n description: 'Indicates that a field of an object \"value type\" (has no `@key` in any subgraph) is not defined in all the subgraphs that declare the type.',\n});\n\nconst INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD = makeCodeDefinition({\n code: 'INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD',\n level: HintLevel.DEBUG,\n description: 'Indicates that a field of an interface \"value type\" (has no `@key` in any subgraph) is not defined in all the subgraphs that declare the type.',\n});\n\nconst INCONSISTENT_INPUT_OBJECT_FIELD = makeCodeDefinition({\n code: 'INCONSISTENT_INPUT_OBJECT_FIELD',\n level: HintLevel.WARN,\n description: 'Indicates that a field of an input object type definition is only defined in a subset of the subgraphs that declare the input object.',\n});\n\nconst INCONSISTENT_UNION_MEMBER = makeCodeDefinition({\n code: 'INCONSISTENT_UNION_MEMBER',\n level: HintLevel.DEBUG,\n description: 'Indicates that a member of a union type definition is only defined in a subset of the subgraphs that declare the union.',\n});\n\nconst INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM = makeCodeDefinition({\n code: 'INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM',\n level: HintLevel.WARN,\n description: 'Indicates that a value of an enum type definition (that is only used as an Input type) has not been merged into the supergraph because it is defined in only a subset of the subgraphs that declare the enum',\n});\n\nconst INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM = makeCodeDefinition({\n code: 'INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM',\n level: HintLevel.DEBUG,\n description: 'Indicates that a value of an enum type definition (that is only used as an Output type, or is unused) has been merged in the supergraph but is defined in only a subset of the subgraphs that declare the enum',\n});\n\nconst INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE = makeCodeDefinition({\n code: 'INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE',\n level: HintLevel.DEBUG,\n description: 'Indicates that a type system directive definition is marked repeatable in only a subset of the subgraphs that declare the directive (and will be repeatable in the supergraph).',\n});\n\nconst INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS = makeCodeDefinition({\n code: 'INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS',\n level: HintLevel.DEBUG,\n description: 'Indicates that a type system directive definition is declared with inconsistent locations across subgraphs (and will use the union of all locations in the supergraph).',\n});\n\nconst INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE = makeCodeDefinition({\n code: 'INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE',\n level: HintLevel.WARN,\n description: 'Indicates that an executable directive definition is declared in only some of the subgraphs.',\n});\n\nconst NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION = makeCodeDefinition({\n code: 'NO_EXECUTABLE_DIRECTIVE_INTERSECTION',\n level: HintLevel.WARN,\n description: 'Indicates that, for an executable directive definition, no location for it appears in all subgraphs.',\n});\n\nconst INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE = makeCodeDefinition({\n code: 'INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE',\n level: HintLevel.WARN,\n description: 'Indicates that an executable directive definition is marked repeatable in only a subset of the subgraphs (and will not be repeatable in the supergraph).',\n});\n\nconst INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS = makeCodeDefinition({\n code: 'INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS',\n level: HintLevel.WARN,\n description: 'Indicates that an executiable directive definition is declared with inconsistent locations across subgraphs (and will use the intersection of all locations in the supergraph).',\n});\n\nconst INCONSISTENT_DESCRIPTION = makeCodeDefinition({\n code: 'INCONSISTENT_DESCRIPTION',\n level: HintLevel.WARN,\n description: 'Indicates that an element has a description in more than one subgraph, and the descriptions are not equal.',\n});\n\nconst INCONSISTENT_ARGUMENT_PRESENCE = makeCodeDefinition({\n code: 'INCONSISTENT_ARGUMENT_PRESENCE',\n level: HintLevel.WARN,\n description: 'Indicates that an optional argument (of a field or directive definition) is not present in all subgraphs and will not be part of the supergraph.',\n});\n\nconst FROM_SUBGRAPH_DOES_NOT_EXIST = makeCodeDefinition({\n code: 'FROM_SUBGRAPH_DOES_NOT_EXIST',\n level: HintLevel.WARN,\n description: 'Source subgraph specified by @override directive does not exist',\n});\n\nconst OVERRIDDEN_FIELD_CAN_BE_REMOVED = makeCodeDefinition({\n code: 'OVERRIDDEN_FIELD_CAN_BE_REMOVED',\n level: HintLevel.INFO,\n description: 'Field has been overridden by another subgraph. Consider removing.',\n});\n\nconst OVERRIDE_DIRECTIVE_CAN_BE_REMOVED = makeCodeDefinition({\n code: 'OVERRIDE_DIRECTIVE_CAN_BE_REMOVED',\n level: HintLevel.INFO,\n description: 'Field with @override directive no longer exists in source subgraph, the directive can be safely removed',\n});\n\nconst OVERRIDE_MIGRATION_IN_PROGRESS = makeCodeDefinition({\n code: 'OVERRIDE_MIGRATION_IN_PROGRESS',\n level: HintLevel.INFO,\n description: 'Field is currently being migrated with progressive @override. Once the migration is complete, remove the field from the original subgraph.',\n});\n\nconst UNUSED_ENUM_TYPE = makeCodeDefinition({\n code: 'UNUSED_ENUM_TYPE',\n level: HintLevel.DEBUG,\n description: 'Indicates that an enum type is defined in some subgraphs but is unused (no field/argument references it). All the values from subgraphs defining that enum will be included in the supergraph.',\n});\n\nconst INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS = makeCodeDefinition({\n code: 'INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS',\n level: HintLevel.WARN,\n description: 'A non-repeatable directive is applied to a schema element in different subgraphs but with arguments that are different.',\n});\n\nconst MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS = makeCodeDefinition({\n code: 'MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS',\n level: HintLevel.INFO,\n description: 'A non-repeatable directive has been applied to a schema element in different subgraphs with different arguments and the arguments values were merged using the directive configured strategies.',\n});\n\nconst DIRECTIVE_COMPOSITION_INFO = makeCodeDefinition({\n code: 'DIRECTIVE_COMPOSITION_INFO',\n level: HintLevel.INFO,\n description: 'Indicates that an issue was detected when composing custom directives.',\n});\n\nconst DIRECTIVE_COMPOSITION_WARN = makeCodeDefinition({\n code: 'DIRECTIVE_COMPOSITION_WARN',\n level: HintLevel.WARN,\n description: 'Indicates that an issue was detected when composing custom directives.',\n});\n\nconst INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN = makeCodeDefinition({\n code: 'INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN',\n level: HintLevel.WARN,\n description: 'Indicates that a @shareable field returns different sets of runtime types in the different subgraphs in which it is defined.',\n});\n\nconst IMPLICITLY_UPGRADED_FEDERATION_VERSION = makeCodeDefinition({\n code: 'IMPLICITLY_UPGRADED_FEDERATION_VERSION',\n level: HintLevel.INFO,\n description: 'Indicates that a directive requires a higher federation version than is explicitly linked.'\n + ' In this case, the supergraph uses the federation version required by the directive.'\n});\n\nconst CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS = makeCodeDefinition({\n code: 'CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS',\n level: HintLevel.INFO,\n description: 'Indicates that the argument will not be present in the supergraph because it is contextual in at least one subgraph.'\n});\n\nexport const HINTS = {\n INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE,\n INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE,\n INCONSISTENT_DEFAULT_VALUE_PRESENCE,\n INCONSISTENT_ENTITY,\n INCONSISTENT_OBJECT_VALUE_TYPE_FIELD,\n INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD,\n INCONSISTENT_INPUT_OBJECT_FIELD,\n INCONSISTENT_UNION_MEMBER,\n INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM,\n INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM,\n INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE,\n INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS,\n INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE,\n NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION,\n INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE,\n INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS,\n INCONSISTENT_DESCRIPTION,\n INCONSISTENT_ARGUMENT_PRESENCE,\n FROM_SUBGRAPH_DOES_NOT_EXIST,\n OVERRIDDEN_FIELD_CAN_BE_REMOVED,\n OVERRIDE_DIRECTIVE_CAN_BE_REMOVED,\n OVERRIDE_MIGRATION_IN_PROGRESS,\n UNUSED_ENUM_TYPE,\n INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n DIRECTIVE_COMPOSITION_INFO,\n DIRECTIVE_COMPOSITION_WARN,\n INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN,\n IMPLICITLY_UPGRADED_FEDERATION_VERSION,\n CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,\n}\n\nexport class CompositionHint {\n public readonly nodes?: readonly SubgraphASTNode[];\n public readonly coordinate?: string;\n\n constructor(\n readonly definition: HintCodeDefinition,\n readonly message: string,\n readonly element: NamedSchemaElement | undefined,\n nodes?: readonly SubgraphASTNode[] | SubgraphASTNode\n ) {\n this.nodes = nodes\n ? (Array.isArray(nodes) ? (nodes.length === 0 ? undefined : nodes) : [nodes])\n : undefined;\n this.coordinate = element?.coordinate;\n }\n\n toString(): string {\n return `[${this.definition.code}]: ${this.message}`\n }\n}\n\n/**\n * Prints a composition hint to a string, alongside useful location information\n * about relevant positions in the subgraph sources.\n */\nexport function printHint(hint: CompositionHint): string {\n let output = hint.toString();\n\n if (hint.nodes) {\n for (const node of hint.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n }\n\n return output;\n}\n", "import { addSubgraphToASTNode, assert, ErrorCodeDefinition, joinStrings, MultiMap, NamedSchemaElement, printSubgraphNames, SubgraphASTNode } from '@apollo/federation-internals';\nimport { ASTNode, GraphQLError } from 'graphql';\nimport { CompositionHint, HintCodeDefinition } from '../hints';\nimport { Sources } from './merge';\n\nexport class MismatchReporter {\n pushError: (error: GraphQLError) => void;\n pushHint: (hint: CompositionHint) => void;\n\n constructor(readonly names: readonly string[], pushError: (error: GraphQLError) => void, pushHint: (hint: CompositionHint) => void) {\n this.pushError = pushError;\n this.pushHint = pushHint;\n }\n\n reportMismatchError(\n code: ErrorCodeDefinition,\n message: string,\n mismatchedElement:TMismatched,\n subgraphElements: Sources,\n mismatchAccessor: (elt: TMismatched, isSupergraph: boolean) => string | undefined\n ) {\n this.reportMismatch(\n mismatchedElement,\n subgraphElements,\n mismatchAccessor,\n (elt, names) => `${elt} in ${names}`,\n (elt, names) => `${elt} in ${names}`,\n (distribution, nodes) => {\n this.pushError(code.err(\n message + joinStrings(distribution, ' and ', ' but '),\n { nodes }\n ));\n },\n elt => !elt\n );\n }\n\n reportMismatchErrorWithoutSupergraph(\n code: ErrorCodeDefinition,\n message: string,\n subgraphElements: Sources,\n mismatchAccessor: (elt: TMismatched, isSupergraph: boolean) => string | undefined\n ) {\n this.reportMismatch(\n undefined,\n subgraphElements,\n mismatchAccessor,\n () => '',\n (elt, names) => `${elt} in ${names}`,\n (distribution, nodes) => {\n this.pushError(code.err(\n message + joinStrings(distribution, ' and ', ' but '),\n { nodes }\n ));\n },\n elt => !elt\n );\n }\n\n reportMismatchErrorWithSpecifics({\n code,\n message,\n mismatchedElement,\n subgraphElements,\n mismatchAccessor,\n supergraphElementPrinter,\n otherElementsPrinter,\n ignorePredicate,\n includeMissingSources = false,\n extraNodes,\n }: {\n code: ErrorCodeDefinition,\n message: string,\n mismatchedElement: TMismatched,\n subgraphElements: Sources,\n mismatchAccessor: (elt: TMismatched | undefined, isSupergraph: boolean) => string | undefined,\n supergraphElementPrinter: (elt: string, subgraphs: string | undefined) => string,\n otherElementsPrinter: (elt: string, subgraphs: string) => string,\n ignorePredicate?: (elt: TMismatched | undefined) => boolean,\n includeMissingSources?: boolean,\n extraNodes?: SubgraphASTNode[],\n }) {\n this.reportMismatch(\n mismatchedElement,\n subgraphElements,\n mismatchAccessor,\n supergraphElementPrinter,\n otherElementsPrinter,\n (distribution, nodes) => {\n this.pushError(code.err(\n message + distribution[0] + joinStrings(distribution.slice(1), ' and '),\n { nodes: nodes.concat(extraNodes ?? []) }\n ));\n },\n ignorePredicate,\n includeMissingSources\n );\n }\n\n reportMismatchHint({\n code,\n message,\n supergraphElement,\n subgraphElements,\n targetedElement,\n elementToString,\n supergraphElementPrinter,\n otherElementsPrinter,\n ignorePredicate,\n includeMissingSources = false,\n noEndOfMessageDot = false,\n }: {\n code: HintCodeDefinition,\n message: string,\n supergraphElement: TMismatched,\n subgraphElements: Sources,\n targetedElement?: NamedSchemaElement\n elementToString: (elt: TMismatched, isSupergraph: boolean) => string | undefined,\n supergraphElementPrinter: (elt: string, subgraphs: string | undefined) => string,\n otherElementsPrinter: (elt: string, subgraphs: string) => string,\n ignorePredicate?: (elt: TMismatched | undefined) => boolean,\n includeMissingSources?: boolean,\n noEndOfMessageDot?: boolean\n }) {\n this.reportMismatch(\n supergraphElement,\n subgraphElements,\n elementToString,\n supergraphElementPrinter,\n otherElementsPrinter,\n (distribution, astNodes) => {\n this.pushHint(new CompositionHint(\n code,\n message + distribution[0] + joinStrings(distribution.slice(1), ' and ') + (noEndOfMessageDot ? '' : '.'),\n targetedElement ?? ((supergraphElement instanceof NamedSchemaElement) ? supergraphElement as NamedSchemaElement : undefined),\n astNodes\n ));\n },\n ignorePredicate,\n includeMissingSources\n );\n }\n\n // Not meant to be used directly: use `reportMismatchError` or `reportMismatchHint` instead.\n private reportMismatch(\n supergraphElement:TMismatched | undefined,\n subgraphElements: Sources,\n mismatchAccessor: (element: TMismatched, isSupergraph: boolean) => string | undefined,\n supergraphElementPrinter: (elt: string, subgraphs: string | undefined) => string,\n otherElementsPrinter: (elt: string, subgraphs: string) => string,\n reporter: (distribution: string[], astNode: SubgraphASTNode[]) => void,\n ignorePredicate?: (elt: TMismatched | undefined) => boolean,\n includeMissingSources: boolean = false\n ) {\n const distributionMap = new MultiMap();\n const astNodes: SubgraphASTNode[] = [];\n const processSubgraphElt = (name: string, subgraphElt: TMismatched) => {\n if (ignorePredicate && ignorePredicate(subgraphElt)) {\n return;\n }\n const elt = mismatchAccessor(subgraphElt, false);\n distributionMap.add(elt ?? '', name);\n if (subgraphElt.sourceAST) {\n astNodes.push(addSubgraphToASTNode(subgraphElt.sourceAST, name));\n }\n }\n if (includeMissingSources) {\n for (const [i, name] of this.names.entries()) {\n const subgraphElt = subgraphElements.get(i);\n if (!subgraphElt) {\n distributionMap.add('', name);\n continue;\n }\n processSubgraphElt(name, subgraphElt);\n }\n } else {\n for (const [i, subgraphElt] of subgraphElements.entries()) {\n if (!subgraphElt) {\n continue;\n }\n processSubgraphElt(this.names[i], subgraphElt);\n }\n }\n const supergraphMismatch = (supergraphElement && mismatchAccessor(supergraphElement, true)) ?? '';\n assert(distributionMap.size > 1, () => `Should not have been called for ${supergraphElement}`);\n const distribution = [];\n // We always add the \"supergraph\" first (proper formatting of hints rely on this in particular).\n const subgraphsLikeSupergraph = distributionMap.get(supergraphMismatch);\n distribution.push(supergraphElementPrinter(supergraphMismatch, subgraphsLikeSupergraph ? printSubgraphNames(subgraphsLikeSupergraph) : undefined));\n for (const [v, names] of distributionMap.entries()) {\n if (v === supergraphMismatch) {\n continue;\n }\n distribution.push(otherElementsPrinter(v, printSubgraphNames(names)));\n }\n reporter(distribution, astNodes);\n }\n}\n", "import {\n assert,\n CoreFeature,\n DirectiveDefinition,\n Subgraphs,\n ERRORS,\n SubgraphASTNode,\n didYouMean,\n suggestionList,\n MultiMap,\n Subgraph,\n Directive,\n isDefined,\n} from '@apollo/federation-internals';\nimport { GraphQLError } from 'graphql';\nimport { CompositionHint, HINTS } from './hints';\nimport { MismatchReporter } from './merging/reporter';\nimport { sourcesFromArray } from './merging';\n\n/**\n * Return true if the directive from the same core feature has a different name in the subgraph\n * @param subgraph - the subgraph to compare against\n * @param directiveName - the name of directive before renaming\n * @param expectedName - the name of the directive as we expect it to be used\n * @param identity - the identity of the core feature\n *\n * @returns true if the subgraph uses the directive, and it is named differently than expected\n */\nconst directiveHasDifferentNameInSubgraph = ({\n subgraph,\n origName,\n expectedName,\n identity,\n}: {\n subgraph: Subgraph,\n origName: string,\n expectedName: string,\n identity: string,\n}): boolean => {\n const imp = subgraph.schema.coreFeatures?.getByIdentity(identity)?.imports?.find(imp => imp.name === `@${origName}`);\n if (!imp) {\n return false;\n }\n const importedName = imp.as ?? imp.name;\n return importedName !== `@${expectedName}`;\n};\n\nconst allEqual = (arr: T[]) => arr.every((val: T) => val === arr[0]);\n\ntype FeatureAndSubgraph = {\n feature: CoreFeature,\n subgraphName: string,\n isComposed: boolean,\n};\n\n/**\n * We don't want to allow for composing any of our own features\n */\nconst DISALLOWED_IDENTITIES = [\n 'https://specs.apollo.dev/core',\n 'https://specs.apollo.dev/join',\n 'https://specs.apollo.dev/link',\n 'https://specs.apollo.dev/tag',\n 'https://specs.apollo.dev/inaccessible',\n 'https://specs.apollo.dev/federation',\n 'https://specs.apollo.dev/authenticated',\n 'https://specs.apollo.dev/requiresScopes',\n 'https://specs.apollo.dev/source',\n 'https://specs.apollo.dev/context',\n 'https://specs.apollo.dev/cost',\n];\n\nexport class ComposeDirectiveManager {\n // map of subgraphs to directives being composed\n mergeDirectiveMap: Map>;\n\n // map of identities to the latest CoreFeature+Subgraph it can be found on\n latestFeatureMap: Map;\n\n // map of directive names to identity,origName\n directiveIdentityMap: Map;\n\n mismatchReporter: MismatchReporter;\n\n constructor(\n readonly subgraphs: Subgraphs,\n readonly pushError: (error: GraphQLError) => void,\n readonly pushHint: (hint: CompositionHint) => void,\n ) {\n this.mergeDirectiveMap = new Map();\n this.latestFeatureMap = new Map();\n this.directiveIdentityMap = new Map();\n this.mismatchReporter = new MismatchReporter(subgraphs.names(), pushError, pushHint);\n }\n\n /**\n * Get from a coreIdentity to a SubgraphASTNode[]\n */\n private coreFeatureASTs(coreIdentity: string): SubgraphASTNode[] {\n return this.subgraphs.values()\n .flatMap(sg => {\n const ast = sg.schema.coreFeatures?.getByIdentity(coreIdentity)?.directive.sourceAST;\n return ast === undefined ? [] : [{ ...ast, subgraph: sg.name }];\n });\n }\n\n /**\n * If features are compatible (i.e. they have the same major version), return the latest\n * Otherwise return undefined\n */\n private getLatestIfCompatible(coreIdentity: string, subgraphsUsed: string[]): FeatureAndSubgraph | undefined {\n let raisedHint = false;\n const pairs = this.subgraphs.values()\n .map(sg => {\n const feature = sg.schema.coreFeatures?.getByIdentity(coreIdentity);\n if (!feature) {\n return undefined;\n }\n return {\n feature,\n subgraphName: sg.name,\n isComposed: subgraphsUsed.includes(sg.name),\n };\n })\n .filter(isDefined);\n\n // get the majorVersion iff they are consistent otherwise return undefined\n const latest = pairs.reduce((acc: FeatureAndSubgraph | null | undefined, pair: FeatureAndSubgraph) => {\n // if acc is null, that means that we are on our first element\n // if acc is undefined, that means we have detected a version conflict\n if (acc === null) {\n return pair;\n }\n if (acc === undefined) {\n return acc;\n }\n if (acc.feature.url.version.major !== pair.feature.url.version.major) {\n // if one of the versions is not composed, it's a hint, otherwise an error\n if (acc.isComposed && pair.isComposed) {\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Core feature \"${coreIdentity}\" requested to be merged has major version mismatch across subgraphs`,\n {\n nodes: this.coreFeatureASTs(coreIdentity),\n },\n ));\n return undefined;\n }\n if (!raisedHint) {\n this.pushHint(new CompositionHint(\n HINTS.DIRECTIVE_COMPOSITION_INFO,\n `Non-composed core feature \"${coreIdentity}\" has major version mismatch across subgraphs`,\n undefined,\n this.coreFeatureASTs(coreIdentity),\n ));\n raisedHint = true;\n }\n return acc.isComposed ? acc : pair;\n }\n\n // we don't want to return anything as latest unless it is composed\n if (acc.isComposed && !pair.isComposed) {\n return acc;\n } else if (!acc.isComposed && pair.isComposed) {\n return pair;\n }\n return (acc.feature.url.version.minor > pair.feature.url.version.minor) ? acc : pair;\n }, null);\n\n if (!latest?.isComposed) {\n return undefined;\n }\n return latest;\n }\n\n private forFederationDirective(sg: Subgraph, composeInstance: Directive, directive: DirectiveDefinition) {\n const directivesComposedByDefault = [\n sg.metadata().tagDirective(),\n sg.metadata().inaccessibleDirective(),\n sg.metadata().authenticatedDirective(),\n sg.metadata().requiresScopesDirective(),\n sg.metadata().policyDirective(),\n sg.metadata().contextDirective(),\n ].map(d => d.name);\n if (directivesComposedByDefault.includes(directive.name)) {\n this.pushHint(new CompositionHint(\n HINTS.DIRECTIVE_COMPOSITION_INFO,\n `Directive \"@${directive.name}\" should not be explicitly manually composed since it is a federation directive composed by default`,\n directive,\n composeInstance.sourceAST ? {\n ...composeInstance.sourceAST,\n subgraph: sg.name,\n } : undefined,\n ));\n } else {\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Composing federation directive \"${composeInstance.arguments().name}\" in subgraph \"${sg.name}\" is not supported`,\n { nodes: composeInstance.sourceAST },\n ));\n }\n }\n\n /**\n * In order to ensure that we properly hint or error when there is a major version incompatibility\n * it's important that we collect all used core features, even if the directives within them will not be composed\n * Returns a set of identities\n */\n private allCoreFeaturesUsedBySubgraphs(): Set {\n const identities = new Set();\n this.subgraphs.values().forEach(sg => {\n if (sg.schema.coreFeatures) {\n for (const feature of sg.schema.coreFeatures.allFeatures()) {\n identities.add(feature.url.identity);\n }\n }\n });\n return identities;\n }\n\n validate(): { errors: GraphQLError[], hints: CompositionHint[] } {\n const errors: GraphQLError[] = [];\n const hints: CompositionHint[] = [];\n const wontMergeFeatures = new Set();\n const wontMergeDirectiveNames = new Set();\n\n type MergeDirectiveItem = {\n sgName: string,\n feature: CoreFeature,\n directiveName: string,\n directiveNameAs: string,\n composeDirective: Directive, // the directive instance causing the directive to be composed\n };\n\n const itemsBySubgraph = new MultiMap();\n const itemsByDirectiveName = new MultiMap();\n const itemsByOrigDirectiveName = new MultiMap();\n\n // gather default-composed directive names from subgraphs\n const tagNamesInSubgraphs = this.subgraphs.values().map(sg => sg.metadata().federationDirectiveNameInSchema('tag'));\n const inaccessibleNamesInSubgraphs = this.subgraphs.values().map(sg => sg.metadata().federationDirectiveNameInSchema('inaccessible'));\n\n\n // iterate over subgraphs to build up the MultiMap's\n for (const sg of this.subgraphs) {\n const composeDirectives = sg.metadata()\n .composeDirective()\n .applications();\n\n for (const composeInstance of composeDirectives) {\n if (composeInstance.arguments().name[0] !== '@') {\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Argument to @composeDirective \"${composeInstance.arguments().name}\" in subgraph \"${sg.name}\" must have a leading \"@\"`,\n { nodes: composeInstance.sourceAST },\n ));\n continue;\n }\n\n const name = composeInstance.arguments().name.slice(1);\n const directive = sg.schema.directive(name);\n if (directive) {\n const featureDetails = sg.schema.coreFeatures?.sourceFeature(directive);\n if (featureDetails) {\n const identity = featureDetails.feature.url.identity;\n\n // make sure that core feature is not blacklisted\n if (DISALLOWED_IDENTITIES.includes(identity)) {\n this.forFederationDirective(sg, composeInstance, directive);\n } else if (tagNamesInSubgraphs.includes(name)) {\n const subgraphs: string[] = [];\n this.subgraphs.names().forEach((sg, idx) => {\n if (tagNamesInSubgraphs[idx] === name) {\n subgraphs.push(sg);\n }\n });\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Directive \"@${name}\" in subgraph \"${sg.name}\" cannot be composed because it conflicts with automatically composed federation directive \"@tag\". Conflict exists in subgraph(s): (${subgraphs.join(',')})`,\n { nodes: composeInstance.sourceAST },\n ));\n } else if (inaccessibleNamesInSubgraphs.includes(name)) {\n const subgraphs: string[] = [];\n this.subgraphs.names().forEach((sg, idx) => {\n if (inaccessibleNamesInSubgraphs[idx] === name) {\n subgraphs.push(sg);\n }\n });\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Directive \"@${name}\" in subgraph \"${sg.name}\" cannot be composed because it conflicts with automatically composed federation directive \"@inaccessible\". Conflict exists in subgraph(s): (${subgraphs.join(',')})`,\n { nodes: composeInstance.sourceAST },\n ));\n } else {\n const item = {\n composeDirective: composeInstance,\n sgName: sg.name,\n feature: featureDetails.feature,\n directiveName: featureDetails.nameInFeature,\n directiveNameAs: name,\n };\n\n itemsBySubgraph.add(sg.name, item);\n itemsByDirectiveName.add(name, item);\n itemsByOrigDirectiveName.add(item.directiveName, item);\n }\n } else {\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Directive \"@${name}\" in subgraph \"${sg.name}\" cannot be composed because it is not a member of a core feature`,\n { nodes: composeInstance.sourceAST },\n ));\n }\n } else {\n const words = suggestionList(`@${name}`, sg.schema.directives().map(d => `@${d.name}`));\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Could not find matching directive definition for argument to @composeDirective \"@${name}\" in subgraph \"${sg.name}\".${didYouMean(words)}`,\n { nodes: composeInstance.sourceAST },\n ));\n }\n }\n }\n\n // for each feature, determine if the versions are compatible\n for (const identity of this.allCoreFeaturesUsedBySubgraphs()) {\n // for the feature, find all subgraphs for which the feature has a directive composed\n const subgraphsUsed = this.subgraphs.values()\n .map(sg => {\n const items = itemsBySubgraph.get(sg.name);\n if (items && items.find(item => item.feature.url.identity === identity)) {\n return sg.name;\n }\n return undefined;\n })\n .filter(isDefined);\n\n const latest = this.getLatestIfCompatible(identity, subgraphsUsed);\n if (latest) {\n this.latestFeatureMap.set(identity, [latest.feature, latest.subgraphName]);\n } else {\n wontMergeFeatures.add(identity);\n }\n }\n\n // ensure that the specified directive is the same in all subgraphs\n for (const [name, items] of itemsByDirectiveName.entries()) {\n if (!allEqual(items.map(item => item.directiveName))) {\n wontMergeDirectiveNames.add(name);\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Composed directive \"@${name}\" does not refer to the same directive in every subgraph`,\n {\n nodes: items.map(item => item.composeDirective.sourceAST).filter(isDefined),\n }\n ));\n }\n if (!allEqual(items.map(item => item.feature.url.identity))) {\n wontMergeDirectiveNames.add(name);\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Composed directive \"@${name}\" is not linked by the same core feature in every subgraph`,\n {\n nodes: items.map(item => item.composeDirective.sourceAST).filter(isDefined),\n }\n ));\n }\n }\n\n // ensure that directive is exported with the same name in all subgraphs\n // also check that subgraphs that don't export the directive don't have inconsistent naming.\n for (const [name, items] of itemsByOrigDirectiveName.entries()) {\n if (!allEqual(items.map(item => item.directiveNameAs))) {\n for (const item of items) {\n wontMergeDirectiveNames.add(item.directiveNameAs);\n }\n\n this.mismatchReporter.reportMismatchErrorWithoutSupergraph(\n ERRORS.DIRECTIVE_COMPOSITION_ERROR,\n 'Composed directive is not named consistently in all subgraphs',\n sourcesFromArray(this.subgraphs.values()\n .map(sg => {\n const item = items.find(item => sg.name === item.sgName);\n return item ? {\n item,\n sg,\n } : undefined;\n })\n .map((val) => {\n if (!val) {\n return undefined;\n }\n const sourceAST = val.sg.schema.coreFeatures?.getByIdentity('https://specs.apollo.dev/foo')?.directive.sourceAST;\n return sourceAST ? {\n sourceAST,\n item: val.item,\n } : undefined;\n })),\n (elt) => elt ? `\"@${elt.item.directiveNameAs}\"` : undefined\n );\n }\n const nonExportedSubgraphs = this.subgraphs.values()\n .filter(sg => !items.map(item => item.sgName).includes(sg.name));\n const subgraphsWithDifferentNaming = nonExportedSubgraphs.filter(subgraph => directiveHasDifferentNameInSubgraph({\n subgraph,\n origName: items[0].directiveName,\n expectedName: items[0].directiveNameAs,\n identity: items[0].feature.url.identity,\n }));\n if (subgraphsWithDifferentNaming.length > 0) {\n this.pushHint(new CompositionHint(\n HINTS.DIRECTIVE_COMPOSITION_WARN,\n `Composed directive \"@${name}\" is named differently in a subgraph that doesn't export it. Consistent naming will be required to export it.`,\n undefined,\n subgraphsWithDifferentNaming\n .map((subgraph : Subgraph): SubgraphASTNode | undefined => {\n const ast = subgraph.schema.coreFeatures?.getByIdentity(items[0].feature.url.identity)?.directive.sourceAST;\n return ast ? {\n ...ast,\n subgraph: subgraph.name,\n } : undefined;\n })\n .filter(isDefined),\n ));\n }\n }\n\n // now for anything that wasn't in the blacklist, add it to the map\n for (const [subgraph, items] of itemsBySubgraph.entries()) {\n const directivesForSubgraph = new Set();\n for (const item of items) {\n if (!wontMergeFeatures.has(item.feature.url.identity) && !wontMergeDirectiveNames.has(item.directiveNameAs)) {\n directivesForSubgraph.add(item.directiveNameAs);\n }\n this.directiveIdentityMap.set(item.directiveNameAs, [item.feature.url.identity, item.directiveName]);\n }\n this.mergeDirectiveMap.set(subgraph, directivesForSubgraph);\n }\n\n return {\n errors,\n hints,\n };\n }\n\n shouldComposeDirective({ subgraphName, directiveName }: {\n subgraphName: string,\n directiveName: string,\n }): boolean {\n const sg = this.mergeDirectiveMap.get(subgraphName);\n return !!sg && sg.has(directiveName);\n }\n\n directiveExistsInSupergraph(directiveName: string): boolean {\n return !!this.directiveIdentityMap.get(directiveName);\n }\n\n getLatestDirectiveDefinition(directiveName: string): DirectiveDefinition | undefined {\n const val = this.directiveIdentityMap.get(directiveName);\n if (val) {\n const [identity, origName] = val;\n const entry = this.latestFeatureMap.get(identity);\n assert(entry, 'core feature identity must exist in map');\n const [feature, subgraphName] = entry;\n const subgraph = this.subgraphs.get(subgraphName);\n assert(subgraph, `subgraph \"${subgraphName}\" does not exist`);\n\n // we need to convert from the name that is used in the schemas that export the directive\n // to the name used in the schema that is the latest version, which may or may not export\n // See test \"exported directive not imported everywhere. imported with different name\"\n const nameInSchema = subgraph.schema.coreFeatures?.getByIdentity(identity)?.directiveNameInSchema(origName);\n if (nameInSchema) {\n const directive = subgraph.schema.directive(nameInSchema);\n if (!directive) {\n this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n `Core feature \"${identity}\" in subgraph \"${subgraphName}\" does not have a directive definition for \"@${directiveName}\"`,\n {\n nodes: feature.directive.sourceAST,\n },\n ));\n }\n return directive;\n }\n }\n return undefined;\n }\n\n private directivesForFeature(identity: string): [string,string][] {\n // TODO: This is inefficient\n const directives: { [key: string]: string} = {};\n for (const [name, val] of this.directiveIdentityMap) {\n const [id, origName] = val;\n if (id === identity) {\n if (!(name in directives)) {\n directives[name] = origName;\n }\n }\n }\n return Object.entries(directives);\n }\n /**\n * Returns all core features, along with the directives referenced from that CoreFeature\n */\n allComposedCoreFeatures(): [CoreFeature, [string,string][]][] {\n return Array.from(this.latestFeatureMap.values())\n .map(value => value[0])\n .filter(feature => !DISALLOWED_IDENTITIES.includes(feature.url.identity))\n .map(feature => ([\n feature,\n this.directivesForFeature(feature.url.identity),\n ]));\n }\n}\n", "import { assert, coreFeatureDefinitionIfKnown, DirectiveCompositionSpecification, DirectiveDefinition, FeatureUrl, isDefined, mapValues, Subgraphs } from \"@apollo/federation-internals\";\n\nexport type CoreDirectiveInSubgraphs = {\n url: FeatureUrl,\n name: string,\n definitionsPerSubgraph: Map,\n compositionSpec: DirectiveCompositionSpecification,\n}\n\nexport function collectCoreDirectivesToCompose(\n subgraphs: Subgraphs,\n): CoreDirectiveInSubgraphs[] {\n // Groups directives by their feature and major version (we use negative numbers for pre-1.0 version\n // numbers on the minor, since all minors are incompatible).\n const directivesPerFeatureAndVersion = new Map>>();\n\n for (const subgraph of subgraphs) {\n const features = subgraph.schema.coreFeatures;\n assert(features, 'Subgraphs should be core schemas');\n for (const directive of subgraph.schema.directives()) {\n const source = features.sourceFeature(directive);\n // We ignore directives that are not \"core\" ones, or the ones that are defined but unused (note that this\n // happen to ignore execution directives as a by-product)\n if (!source || directive.applications().size === 0) {\n continue;\n }\n\n const url = source.feature.url;\n const fqn = `${source.nameInFeature}-${url.identity}`\n let forFeature = directivesPerFeatureAndVersion.get(fqn);\n if (!forFeature) {\n forFeature = new Map();\n directivesPerFeatureAndVersion.set(fqn, forFeature);\n }\n\n const major = url.version.major > 0 ? url.version.major : -url.version.minor;\n let forVersion = forFeature.get(major);\n if (forVersion) {\n // Update the url if we've found a more recent minor for that major\n if (url.version.compareTo(forVersion.url.version) > 0) {\n forVersion.url = url;\n }\n } else {\n forVersion = {\n url,\n name: source.nameInFeature,\n definitionsPerSubgraph: new Map(),\n }\n forFeature.set(major, forVersion);\n }\n forVersion.definitionsPerSubgraph.set(subgraph.name, directive);\n }\n }\n\n return mapValues(directivesPerFeatureAndVersion)\n .flatMap((perVersion) => mapValues(perVersion))\n .map((d) => {\n const featureDefinition = coreFeatureDefinitionIfKnown(d.url);\n const compositionSpec = featureDefinition?.compositionSpecification(d.name);\n if (!compositionSpec) {\n return undefined;\n }\n return {\n ...d,\n compositionSpec,\n };\n })\n .filter(isDefined);\n}\n", "import {\n ArgumentDefinition,\n assert,\n arrayEquals,\n DirectiveDefinition,\n EnumType,\n FieldDefinition,\n InputObjectType,\n InterfaceType,\n NamedType,\n newNamedType,\n ObjectType,\n Schema,\n SchemaDefinition,\n SchemaElement,\n UnionType,\n sameType,\n isStrictSubtype,\n ListType,\n NonNullType,\n Type,\n NullableType,\n NamedSchemaElementWithType,\n valueEquals,\n valueToString,\n InputFieldDefinition,\n allSchemaRootKinds,\n Directive,\n isFederationField,\n SchemaRootKind,\n CompositeType,\n Subgraphs,\n JOIN_VERSIONS,\n NamedSchemaElement,\n errorCauses,\n isObjectType,\n SubgraphASTNode,\n addSubgraphToASTNode,\n firstOf,\n Extension,\n isInterfaceType,\n sourceASTs,\n ERRORS,\n FederationMetadata,\n printSubgraphNames,\n federationIdentity,\n linkIdentity,\n coreIdentity,\n FEDERATION_OPERATION_TYPES,\n LINK_VERSIONS,\n federationMetadata,\n errorCode,\n withModifiedErrorNodes,\n didYouMean,\n suggestionList,\n EnumValue,\n baseType,\n isEnumType,\n isNonNullType,\n isExecutableDirectiveLocation,\n parseFieldSetArgument,\n isCompositeType,\n isDefined,\n addSubgraphToError,\n printHumanReadableList,\n ArgumentMerger,\n JoinSpecDefinition,\n CoreSpecDefinition,\n FeatureVersion,\n FEDERATION_VERSIONS,\n LinkDirectiveArgs,\n sourceIdentity,\n FeatureUrl,\n isFederationDirectiveDefinedInSchema,\n parseContext,\n CoreFeature,\n Subgraph,\n StaticArgumentsTransform,\n isNullableType,\n isFieldDefinition,\n Post20FederationDirectiveDefinition,\n DirectiveCompositionSpecification,\n FeatureDefinition,\n CoreImport,\n inaccessibleIdentity,\n} from \"@apollo/federation-internals\";\nimport { ASTNode, GraphQLError, DirectiveLocation } from \"graphql\";\nimport {\n CompositionHint,\n HintCodeDefinition,\n HINTS,\n} from \"../hints\";\nimport { ComposeDirectiveManager } from '../composeDirectiveManager';\nimport { MismatchReporter } from './reporter';\nimport { inspect } from \"util\";\nimport { collectCoreDirectivesToCompose, CoreDirectiveInSubgraphs } from \"./coreDirectiveCollector\";\nimport { CompositionOptions } from \"../compose\";\n\n// A Sources map represents the contributions from each subgraph of the given\n// element type T. The numeric keys correspond to the indexes of the subgraphs\n// in the original Subgraphs/names/subgraphsSchema arrays. When merging a\n// specific type or field, this Map will ideally contain far fewer entries than\n// the total number of subgraphs, though it will sometimes need to contain\n// explicitly undefined entries (hence T | undefined).\nexport type Sources = Map;\n\n// Like Array.prototype.map, but for Sources maps.\nfunction mapSources(\n sources: Sources,\n mapper: (source: T | undefined, index: number) => R,\n): Sources {\n const result: Sources = new Map;\n sources.forEach((source, idx) => {\n result.set(idx, mapper(source, idx));\n });\n return result;\n}\n\n// Removes all undefined sources from a given Sources map. In other words,\n// this is not the same as Array.prototype.filter, which takes an arbitrary\n// boolean predicate.\nfunction filterSources(sources: Sources): Sources {\n const result: Sources = new Map;\n sources.forEach((source, idx) => {\n if (typeof source !== 'undefined') {\n result.set(idx, source);\n }\n });\n return result;\n}\n\n// Like Array.prototype.some, but for Sources maps.\nfunction someSources(sources: Sources, predicate: (source: T | undefined, index: number) => boolean | undefined): boolean {\n for (const [idx, source] of sources.entries()) {\n if (predicate(source, idx)) {\n return true;\n }\n }\n return false;\n}\n\n// Converts an array of T | undefined into a dense Sources map.\nexport function sourcesFromArray(array: (T | undefined)[]): Sources {\n const sources: Sources = new Map;\n array.forEach((source, idx) => {\n sources.set(idx, source);\n });\n return sources;\n}\n\nexport type MergeResult = MergeSuccess | MergeFailure;\n\ntype FieldMergeContextProperties = {\n usedOverridden: boolean,\n unusedOverridden: boolean,\n overrideWithUnknownTarget: boolean,\n overrideLabel: string | undefined,\n}\n\n// for each source, specify additional properties that validate functions can set\nclass FieldMergeContext {\n _props: Map;\n\n constructor(sources: Sources | InputFieldDefinition>) {\n this._props = new Map;\n sources.forEach((_, i) => {\n this._props.set(i, {\n usedOverridden: false,\n unusedOverridden: false,\n overrideWithUnknownTarget: false,\n overrideLabel: undefined,\n });\n });\n }\n\n isUsedOverridden(idx: number) {\n return !!this._props.get(idx)?.usedOverridden;\n }\n\n isUnusedOverridden(idx: number) {\n return !!this._props.get(idx)?.unusedOverridden;\n }\n\n hasOverrideWithUnknownTarget(idx: number) {\n return !!this._props.get(idx)?.overrideWithUnknownTarget;\n }\n\n overrideLabel(idx: number) {\n return this._props.get(idx)?.overrideLabel;\n }\n\n setUsedOverridden(idx: number) {\n this._props.get(idx)!.usedOverridden = true;\n }\n\n setUnusedOverridden(idx: number) {\n this._props.get(idx)!.unusedOverridden = true;\n }\n\n setOverrideWithUnknownTarget(idx: number) {\n this._props.get(idx)!.overrideWithUnknownTarget = true;\n }\n\n setOverrideLabel(idx: number, label: string) {\n this._props.get(idx)!.overrideLabel = label;\n }\n\n some(predicate: (props: FieldMergeContextProperties, index: number) => boolean) {\n for (const [i, props] of this._props.entries()) {\n if (predicate(props, i)) {\n return true;\n }\n }\n return false;\n }\n}\n\nexport interface MergeSuccess {\n supergraph: Schema;\n hints: CompositionHint[];\n errors?: undefined;\n}\n\nexport interface MergeFailure {\n errors: GraphQLError[];\n supergraph?: undefined;\n hints?: undefined;\n}\n\nexport function isMergeSuccessful(mergeResult: MergeResult): mergeResult is MergeSuccess {\n return !isMergeFailure(mergeResult);\n}\n\nexport function isMergeFailure(mergeResult: MergeResult): mergeResult is MergeFailure {\n return !!mergeResult.errors;\n}\n\nexport function mergeSubgraphs(subgraphs: Subgraphs, options: CompositionOptions = {}): MergeResult {\n assert(subgraphs.values().every((s) => s.isFed2Subgraph()), 'Merging should only be applied to federation 2 subgraphs');\n return new Merger(subgraphs, options).merge();\n}\n\nfunction copyTypeReference(source: Type, dest: Schema): Type {\n switch (source.kind) {\n case 'ListType':\n return new ListType(copyTypeReference(source.ofType, dest));\n case 'NonNullType':\n return new NonNullType(copyTypeReference(source.ofType, dest) as NullableType);\n default:\n const type = dest.type(source.name);\n assert(type, () => `Cannot find type ${source} in destination schema (with types: ${dest.types().join(', ')})`);\n return type;\n }\n}\n\nconst NON_MERGED_CORE_FEATURES = [ federationIdentity, linkIdentity, coreIdentity ];\n\nfunction isMergedType(type: NamedType): boolean {\n if (type.isIntrospectionType() || FEDERATION_OPERATION_TYPES.map((s) => s.name).includes(type.name)) {\n return false;\n }\n\n const coreFeatures = type.schema().coreFeatures;\n const typeFeature = coreFeatures?.sourceFeature(type)?.feature.url.identity;\n return !(typeFeature && NON_MERGED_CORE_FEATURES.includes(typeFeature));\n}\n\nfunction isMergedField(field: InputFieldDefinition | FieldDefinition): boolean {\n return field.kind !== 'FieldDefinition' || !isFederationField(field);\n}\n\nfunction isGraphQLBuiltInDirective(def: DirectiveDefinition): boolean {\n // `def.isBuiltIn` is not entirely reliable here because if it will be `false`\n // if the user has manually redefined the built-in directive (if they do,\n // we validate the definition is \"compabitle\" with the built-in version, but\n // otherwise return the use one). But when merging, we want to essentially\n // ignore redefinitions, so we instead just check if the \"name\" is that of\n // built-in directive.\n return !!def.schema().builtInDirective(def.name);\n}\n\nfunction printTypes(types: T[]): string {\n return printHumanReadableList(\n types.map((t) => `\"${t.coordinate}\"`),\n {\n prefix: 'type',\n prefixPlural: 'types',\n }\n );\n}\n\n// Access the type set as a particular root in the provided `SchemaDefinition`, but ignoring \"query\" type\n// that only exists due to federation operations. In other words, if a subgraph don't have a query type,\n// but one was automatically added for _entities and _services, this method returns 'undefined'.\n// This mainly avoid us trying to set the supergraph root in the rare case where the supergraph has\n// no actual queries (knowing that subgraphs will _always_ have a queries since they have at least\n// the federation ones).\nfunction filteredRoot(def: SchemaDefinition, rootKind: SchemaRootKind): ObjectType | undefined {\n const type = def.root(rootKind)?.type;\n return type && hasMergedFields(type) ? type : undefined;\n}\n\nfunction hasMergedFields(type: ObjectType): boolean {\n for (const field of type.fields()) {\n if (isMergedField(field)) {\n return true;\n }\n }\n return false;\n}\n\nfunction indexOfMax(arr: number[]): number {\n if (arr.length === 0) {\n return -1;\n }\n let indexOfMax = 0;\n for (let i = 1; i < arr.length; i++) {\n if (arr[i] > arr[indexOfMax]) {\n indexOfMax = i;\n }\n }\n return indexOfMax;\n}\n\nfunction descriptionString(toIndent: string, indentation: string): string {\n return indentation + '\"\"\"\\n' + indentation + toIndent.replace('\\n', '\\n' + indentation) + '\\n' + indentation + '\"\"\"';\n}\n\nfunction locationString(locations: DirectiveLocation[]): string {\n if (locations.length === 0) {\n return \"\";\n }\n return (locations.length === 1 ? 'location ' : 'locations ') + '\"' + locations.join(', ') + '\"';\n}\n\ntype EnumTypeUsagePosition = 'Input' | 'Output' | 'Both';\ntype EnumTypeUsage = {\n position: EnumTypeUsagePosition,\n examples: {\n Input?: {coordinate: string, sourceAST?: SubgraphASTNode},\n Output?: {coordinate: string, sourceAST?: SubgraphASTNode},\n },\n}\n\ninterface OverrideArgs {\n from: string;\n label?: string;\n}\n\ninterface MergedDirectiveInfo {\n definition: DirectiveDefinition;\n argumentsMerger?: ArgumentMerger;\n staticArgumentTransform?: StaticArgumentsTransform;\n}\n\nclass Merger {\n readonly names: readonly string[];\n readonly subgraphsSchema: readonly Schema[];\n readonly errors: GraphQLError[] = [];\n readonly hints: CompositionHint[] = [];\n readonly merged: Schema = new Schema();\n readonly subgraphNamesToJoinSpecName: Map;\n readonly mergedFederationDirectiveNames = new Set();\n readonly mergedFederationDirectiveInSupergraphByDirectiveName =\n new Map();\n readonly enumUsages = new Map();\n private composeDirectiveManager: ComposeDirectiveManager;\n private mismatchReporter: MismatchReporter;\n private appliedDirectivesToMerge: {\n names: Set,\n sources: Sources>,\n dest: SchemaElement,\n }[];\n private joinSpec: JoinSpecDefinition;\n private linkSpec: CoreSpecDefinition;\n private inaccessibleDirectiveInSupergraph?: DirectiveDefinition;\n private latestFedVersionUsed: FeatureVersion;\n private joinDirectiveIdentityURLs = new Set();\n private schemaToImportNameToFeatureUrl = new Map>();\n private fieldsWithFromContext: Set;\n private fieldsWithOverride: Set;\n\n constructor(readonly subgraphs: Subgraphs, readonly options: CompositionOptions) {\n this.latestFedVersionUsed = this.getLatestFederationVersionUsed();\n this.joinSpec = JOIN_VERSIONS.getMinimumRequiredVersion(this.latestFedVersionUsed);\n this.linkSpec = LINK_VERSIONS.getMinimumRequiredVersion(this.latestFedVersionUsed);\n this.fieldsWithFromContext = this.getFieldsWithFromContextDirective();\n this.fieldsWithOverride = this.getFieldsWithOverrideDirective();\n \n this.names = subgraphs.names();\n this.composeDirectiveManager = new ComposeDirectiveManager(\n this.subgraphs,\n (error: GraphQLError) => { this.errors.push(error) },\n (hint: CompositionHint) => { this.hints.push(hint) },\n );\n this.mismatchReporter = new MismatchReporter(\n this.names,\n (error: GraphQLError) => { this.errors.push(error); },\n (hint: CompositionHint) => { this.hints.push(hint); },\n );\n\n this.subgraphsSchema = subgraphs.values().map(({ schema }) => {\n if (!this.schemaToImportNameToFeatureUrl.has(schema)) {\n this.schemaToImportNameToFeatureUrl.set(\n schema,\n this.computeMapFromImportNameToIdentityUrl(schema),\n );\n }\n return schema;\n });\n\n this.subgraphNamesToJoinSpecName = this.prepareSupergraph();\n this.appliedDirectivesToMerge = [];\n\n [ // Represent any applications of directives imported from these spec URLs\n // using @join__directive in the merged supergraph.\n sourceIdentity,\n ].forEach(url => this.joinDirectiveIdentityURLs.add(url));\n }\n\n private getLatestFederationVersionUsed(): FeatureVersion {\n const versions = this.subgraphs.values()\n .map((s) => this.getLatestFederationVersionUsedInSubgraph(s))\n .filter(isDefined);\n\n return FeatureVersion.max(versions) ?? FEDERATION_VERSIONS.latest().version;\n }\n\n private getLatestFederationVersionUsedInSubgraph(subgraph: Subgraph): FeatureVersion | undefined {\n const linkedFederationVersion = subgraph.metadata()?.federationFeature()?.url.version;\n if (!linkedFederationVersion) {\n return undefined;\n }\n\n // Check if any of the directives imply a newer version of federation than is explicitly linked\n const versionsFromFeatures: FeatureVersion[] = [];\n for (const feature of subgraph.schema.coreFeatures?.allFeatures() ?? []) {\n const version = feature.minimumFederationVersion();\n if (version) {\n versionsFromFeatures.push(version);\n }\n }\n const impliedFederationVersion = FeatureVersion.max(versionsFromFeatures);\n if (!impliedFederationVersion?.satisfies(linkedFederationVersion) || linkedFederationVersion >= impliedFederationVersion) {\n return linkedFederationVersion;\n }\n\n // If some of the directives are causing an implicit upgrade, put one in the hint\n let featureCausingUpgrade: CoreFeature | undefined;\n for (const feature of subgraph.schema.coreFeatures?.allFeatures() ?? []) {\n if (feature.minimumFederationVersion() == impliedFederationVersion) {\n featureCausingUpgrade = feature;\n break;\n }\n }\n\n if (featureCausingUpgrade) {\n this.hints.push(new CompositionHint(\n HINTS.IMPLICITLY_UPGRADED_FEDERATION_VERSION,\n `Subgraph ${subgraph.name} has been implicitly upgraded from federation ${linkedFederationVersion} to ${impliedFederationVersion}`,\n featureCausingUpgrade.directive.definition,\n featureCausingUpgrade.directive.sourceAST ?\n addSubgraphToASTNode(featureCausingUpgrade.directive.sourceAST, subgraph.name) :\n undefined\n ));\n }\n\n return impliedFederationVersion;\n }\n\n\n private prepareSupergraph(): Map {\n // TODO: we will soon need to look for name conflicts for @core and @join with potentially user-defined directives and\n // pass a `as` to the methods below if necessary. However, as we currently don't propagate any subgraph directives to\n // the supergraph outside of a few well-known ones, we don't bother yet.\n this.linkSpec.addToSchema(this.merged);\n const errors = this.linkSpec.applyFeatureToSchema(this.merged, this.joinSpec, undefined, this.joinSpec.defaultCorePurpose);\n assert(errors.length === 0, \"We shouldn't have errors adding the join spec to the (still empty) supergraph schema\");\n\n const directivesMergeInfo = collectCoreDirectivesToCompose(this.subgraphs);\n this.validateAndMaybeAddSpecs(directivesMergeInfo);\n return this.joinSpec.populateGraphEnum(this.merged, this.subgraphs);\n }\n\n private validateAndMaybeAddSpecs(directivesMergeInfo: CoreDirectiveInSubgraphs[]) {\n const supergraphInfoByIdentity = new Map<\n string,\n {\n specInSupergraph: FeatureDefinition;\n directives: {\n nameInFeature: string;\n nameInSupergraph: string;\n compositionSpec: DirectiveCompositionSpecification;\n }[];\n }\n >;\n\n for (const {url, name, definitionsPerSubgraph, compositionSpec} of directivesMergeInfo) {\n // No composition specification means that it shouldn't be composed.\n if (!compositionSpec) {\n return;\n }\n\n let nameInSupergraph: string | undefined;\n for (const subgraph of this.subgraphs) {\n const directive = definitionsPerSubgraph.get(subgraph.name);\n if (!directive) {\n continue;\n }\n\n if (!nameInSupergraph) {\n nameInSupergraph = directive.name;\n } else if (nameInSupergraph !== directive.name) {\n this.mismatchReporter.reportMismatchError(\n ERRORS.LINK_IMPORT_NAME_MISMATCH,\n `The \"@${name}\" directive (from ${url}) is imported with mismatched name between subgraphs: it is imported as `,\n directive,\n sourcesFromArray(this.subgraphs.values().map((s) => definitionsPerSubgraph.get(s.name))),\n (def) => `\"@${def.name}\"`,\n );\n return;\n }\n }\n\n // If we get here with `nameInSupergraph` unset, it means there is no usage for the directive at all and we\n // don't bother adding the spec to the supergraph.\n if (nameInSupergraph) {\n const specInSupergraph = compositionSpec.supergraphSpecification(this.latestFedVersionUsed);\n let supergraphInfo = supergraphInfoByIdentity.get(specInSupergraph.url.identity);\n if (supergraphInfo) {\n assert(\n specInSupergraph.url.equals(supergraphInfo.specInSupergraph.url),\n `Spec ${specInSupergraph.url} directives disagree on version for supergraph`,\n );\n } else {\n supergraphInfo = {\n specInSupergraph,\n directives: [],\n };\n supergraphInfoByIdentity.set(specInSupergraph.url.identity, supergraphInfo);\n }\n supergraphInfo.directives.push({\n nameInFeature: name,\n nameInSupergraph,\n compositionSpec,\n });\n }\n }\n\n for (const { specInSupergraph, directives } of supergraphInfoByIdentity.values()) {\n const imports: CoreImport[] = [];\n for (const { nameInFeature, nameInSupergraph } of directives) {\n const defaultNameInSupergraph = CoreFeature.directiveNameInSchemaForCoreArguments(\n specInSupergraph.url,\n specInSupergraph.url.name,\n [],\n nameInFeature,\n );\n if (nameInSupergraph !== defaultNameInSupergraph) {\n imports.push(nameInFeature === nameInSupergraph\n ? { name: `@${nameInFeature}` }\n : { name: `@${nameInFeature}`, as: `@${nameInSupergraph}` }\n );\n }\n }\n const errors = this.linkSpec.applyFeatureToSchema(\n this.merged,\n specInSupergraph,\n undefined,\n specInSupergraph.defaultCorePurpose,\n imports,\n );\n assert(\n errors.length === 0,\n \"We shouldn't have errors adding the join spec to the (still empty) supergraph schema\"\n );\n const feature = this.merged.coreFeatures?.getByIdentity(specInSupergraph.url.identity);\n assert(feature, 'Should have found the feature we just added');\n for (const { nameInFeature, nameInSupergraph, compositionSpec } of directives) {\n const argumentsMerger = compositionSpec.argumentsMerger?.call(null, this.merged, feature);\n if (argumentsMerger instanceof GraphQLError) {\n // That would mean we made a mistake in the declaration of a hard-coded directive,\n // so we just throw right away so this can be caught and corrected.\n throw argumentsMerger;\n }\n this.mergedFederationDirectiveNames.add(nameInSupergraph);\n this.mergedFederationDirectiveInSupergraphByDirectiveName.set(nameInSupergraph, {\n definition: this.merged.directive(nameInSupergraph)!,\n argumentsMerger,\n staticArgumentTransform: compositionSpec.staticArgumentTransform,\n });\n // If we encounter the @inaccessible directive, we need to record its\n // definition so certain merge validations that care about @inaccessible\n // can act accordingly.\n if (\n specInSupergraph.identity === inaccessibleIdentity\n && nameInFeature === specInSupergraph.url.name\n ) {\n this.inaccessibleDirectiveInSupergraph = this.merged.directive(nameInSupergraph)!;\n }\n }\n }\n }\n\n private joinSpecName(subgraphIndex: number): string {\n return this.subgraphNamesToJoinSpecName.get(this.names[subgraphIndex])!;\n }\n\n private metadata(idx: number): FederationMetadata {\n return this.subgraphs.values()[idx].metadata();\n }\n\n private isMergedDirective(subgraphName: string, definition: DirectiveDefinition | Directive): boolean {\n // If it's a directive application, then we skip it unless it's a graphQL built-in\n // (even if the definition itself allows executable locations, this particular\n // application is an type-system element and we don't want to merge it).\n if (this.composeDirectiveManager.shouldComposeDirective({ subgraphName, directiveName: definition.name })) {\n return true;\n }\n if (definition instanceof Directive) {\n // We have special code in `Merger.prepareSupergraph` to include the _definition_ of merged federation\n // directives in the supergraph, so we don't have to merge those _definition_, but we *do* need to merge\n // the applications.\n // Note that this is a temporary solution: a more principled way to have directive propagated\n // is coming and will remove the hard-coding.\n return this.mergedFederationDirectiveNames.has(definition.name) || isGraphQLBuiltInDirective(definition.definition!);\n } else if (isGraphQLBuiltInDirective(definition)) {\n // We never \"merge\" graphQL built-in definitions, since they are built-in and\n // don't need to be defined.\n return false;\n }\n return definition.hasExecutableLocations();\n }\n\n merge(): MergeResult {\n\n this.composeDirectiveManager.validate();\n this.addCoreFeatures();\n // We first create empty objects for all the types and directives definitions that will exists in the\n // supergraph. This allow to be able to reference those from that point on.\n this.addTypesShallow();\n this.addDirectivesShallow();\n\n const objectTypes: ObjectType[] = [];\n const interfaceTypes: InterfaceType[] = [];\n const unionTypes: UnionType[] = [];\n const enumTypes: EnumType[] = [];\n const nonUnionEnumTypes: NamedType[] = [];\n\n this.merged.types().forEach(type => {\n if (\n this.linkSpec.isSpecType(type) ||\n this.joinSpec.isSpecType(type)\n ) {\n return;\n }\n\n switch (type.kind) {\n case 'UnionType':\n unionTypes.push(type);\n return;\n case 'EnumType':\n enumTypes.push(type);\n return;\n case 'ObjectType':\n objectTypes.push(type);\n break;\n case 'InterfaceType':\n interfaceTypes.push(type);\n break;\n }\n\n nonUnionEnumTypes.push(type);\n });\n\n // Then, for object and interface types, we merge the 'implements' relationship, and we merge the unions.\n // We do this first because being able to know if a type is a subtype of another one (which relies on those\n // 2 things) is used when merging fields.\n for (const objectType of objectTypes) {\n this.mergeImplements(this.subgraphsTypes(objectType), objectType);\n }\n for (const interfaceType of interfaceTypes) {\n this.mergeImplements(this.subgraphsTypes(interfaceType), interfaceType);\n }\n for (const unionType of unionTypes) {\n this.mergeType(this.subgraphsTypes(unionType), unionType);\n }\n\n // We merge the roots first as it only depend on the type existing, not being fully merged, and when\n // we merge types next, we actually rely on this having been called to detect \"root types\"\n // (in order to skip the _entities and _service fields on that particular type, and to avoid\n // calling root type a \"value type\" when hinting).\n this.mergeSchemaDefinition(\n sourcesFromArray(this.subgraphsSchema.map(s => s.schemaDefinition)),\n this.merged.schemaDefinition,\n );\n\n // We've already merged unions above and we've going to merge enums last\n for (const type of nonUnionEnumTypes) {\n this.mergeType(this.subgraphsTypes(type), type);\n }\n\n for (const definition of this.merged.directives()) {\n // we should skip the supergraph specific directives, that is the @core and @join directives.\n if (this.linkSpec.isSpecDirective(definition) || this.joinSpec.isSpecDirective(definition)) {\n continue;\n }\n this.mergeDirectiveDefinition(\n sourcesFromArray(this.subgraphsSchema.map(s => s.directive(definition.name))),\n definition,\n );\n }\n\n // We merge enum dead last because enums can be used as both input and output types and the merging behavior\n // depends on their usage and it's easier to check said usage if everything else has been merge (at least\n // anything that may use an enum type, so all fields and arguments).\n for (const enumType of enumTypes) {\n this.mergeType(this.subgraphsTypes(enumType), enumType);\n }\n\n if (!this.merged.schemaDefinition.rootType('query')) {\n this.errors.push(ERRORS.NO_QUERIES.err(\"No queries found in any subgraph: a supergraph must have a query root type.\"));\n }\n\n this.mergeAllAppliedDirectives();\n\n // When @interfaceObject is used in a subgraph, then that subgraph essentially provides fields both\n // to the interface but also to all its implementations. But so far, we only merged the type definition\n // itself, so we now need to potentially add the field to the implementations if missing.\n // Note that we do this after everything else have been merged because this method will essentially\n // copy things from interface in the merged schema into their implementation in that same schema so\n // we want to make sure everything is ready.\n this.addMissingInterfaceObjectFieldsToImplementations();\n\n // If we already encountered errors, `this.merged` is probably incomplete. Let's not risk adding errors that\n // are only an artifact of that incompleteness as it's confusing.\n if (this.errors.length === 0) {\n this.postMergeValidations();\n\n if (this.errors.length === 0) {\n try {\n // TODO: Errors thrown by the `validate` below are likely to be confusing for users, because they\n // refer to a document they don't know about (the merged-but-not-returned supergraph) and don't\n // point back to the subgraphs in any way.\n // Given the subgraphs are valid and given how merging works (it takes the union of what is in the\n // subgraphs), there is only so much things that can be invalid in the supergraph at this point. We\n // should make sure we add all such validation to `postMergeValidations` with good error messages (that points\n // to subgraphs appropriately). and then simply _assert_ that `Schema.validate()` doesn't throw as a sanity\n // check.\n this.merged.validate();\n // Lastly, we validate that the API schema of the supergraph can be successfully compute, which currently will surface issues around\n // misuses of `@inaccessible` (there should be other errors in theory, but if there is, better find it now rather than later).\n this.merged.toAPISchema();\n } catch (e) {\n const causes = errorCauses(e);\n if (causes) {\n this.errors.push(...this.updateInaccessibleErrorsWithLinkToSubgraphs(causes));\n } else {\n // Not a GraphQLError, so probably a programming error. Let's re-throw so it can be more easily tracked down.\n throw e;\n }\n }\n }\n }\n\n if (this.errors.length > 0) {\n return { errors: this.errors };\n } else {\n return {\n supergraph: this.merged,\n hints: this.hints\n }\n }\n }\n\n // Amongst other thing, this will ensure all the definitions of a given name are of the same kind\n // and report errors otherwise.\n private addTypesShallow() {\n const mismatchedTypes = new Set();\n const typesWithInterfaceObject = new Set();\n for (const subgraph of this.subgraphs) {\n const metadata = subgraph.metadata();\n\n // We include the built-ins in general (even if we skip some federation specific ones): if a subgraph built-in\n // is not a supergraph built-in, we should add it as a normal type.\n for (const type of subgraph.schema.allTypes()) {\n if (!isMergedType(type)) {\n continue;\n }\n\n let expectedKind = type.kind;\n if (metadata.isInterfaceObjectType(type)) {\n expectedKind = 'InterfaceType';\n typesWithInterfaceObject.add(type.name);\n }\n const previous = this.merged.type(type.name);\n if (!previous) {\n this.merged.addType(newNamedType(expectedKind, type.name));\n } else if (previous.kind !== expectedKind) {\n mismatchedTypes.add(type.name);\n }\n }\n }\n mismatchedTypes.forEach(t => this.reportMismatchedTypeDefinitions(t));\n\n // Most invalid use of @interfaceObject are reported as a mismatch above, but one exception is the\n // case where a type is used only with @interfaceObject, but there is no corresponding interface\n // definition in any subgraph.\n for (const itfObjectType of typesWithInterfaceObject) {\n if (mismatchedTypes.has(itfObjectType)) {\n continue;\n }\n\n if (!this.subgraphsSchema.some((s) => s.type(itfObjectType)?.kind === 'InterfaceType')) {\n const subgraphsWithType = this.subgraphs.values().filter((s) => s.schema.type(itfObjectType) !== undefined);\n // Note that there is meaningful way in which the supergraph could work in this situation, expect maybe if\n // the type is unused, because validation composition would complain it cannot find the `__typename` in path\n // leading to that type. But the error here is a bit more \"direct\"/user friendly than what post-merging\n // validation would return, so we make this a hard error, not just a warning.\n this.errors.push(ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n `Type \"${itfObjectType}\" is declared with @interfaceObject in all the subgraphs in which is is defined (it is defined in ${printSubgraphNames(subgraphsWithType.map((s) => s.name))} but should be defined as an interface in at least one subgraph)`,\n { nodes: sourceASTs(...subgraphsWithType.map((s) => s.schema.type(itfObjectType))) },\n ));\n }\n }\n }\n\n private addCoreFeatures() {\n const features = this.composeDirectiveManager.allComposedCoreFeatures();\n for (const [feature, directives] of features) {\n const imports = directives.map(([asName, origName]) => {\n if (asName === origName) {\n return `@${asName}`;\n } else {\n return {\n name: `@${origName}`,\n as: `@${asName}`,\n };\n }\n });\n this.merged.schemaDefinition.applyDirective('link', {\n url: feature.url.toString(),\n import: imports,\n });\n }\n }\n\n private addDirectivesShallow() {\n // Like for types, we initially add all the directives that are defined in any subgraph.\n // However, in practice and for \"execution\" directives, we will only keep the the ones\n // that are in _all_ subgraphs. But we're do the remove later, and while this is all a\n // bit round-about, it's a tad simpler code-wise to do this way.\n this.subgraphsSchema.forEach((subgraph, idx) => {\n for (const directive of subgraph.allDirectives()) {\n if (!this.isMergedDirective(this.names[idx], directive)) {\n continue;\n }\n if (!this.merged.directive(directive.name)) {\n this.merged.addDirectiveDefinition(new DirectiveDefinition(directive.name));\n }\n }\n });\n }\n\n private reportMismatchedTypeDefinitions(mismatchedType: string) {\n const supergraphType = this.merged.type(mismatchedType)!;\n const typeKindToString = (t: NamedType) => {\n const metadata = federationMetadata(t.schema());\n if (metadata?.isInterfaceObjectType(t)) {\n return 'Interface Object Type (Object Type with @interfaceObject)';\n } else {\n return t.kind.replace(\"Type\", \" Type\");\n }\n };\n this.mismatchReporter.reportMismatchError(\n ERRORS.TYPE_KIND_MISMATCH,\n `Type \"${mismatchedType}\" has mismatched kind: it is defined as `,\n supergraphType,\n sourcesFromArray(this.subgraphsSchema.map(s => s.type(mismatchedType))),\n typeKindToString\n );\n }\n\n private subgraphsTypes(supergraphType: T): Sources {\n return sourcesFromArray(this.subgraphs.values().map(subgraph => {\n const type = subgraph.schema.type(supergraphType.name);\n if (!type) {\n return;\n }\n\n // At this point, we have already reported errors for type mismatches (and so composition\n // will fail, we just try to gather more errors), so simply ignore versions of the type\n // that don't have the \"proper\" kind.\n const kind = subgraph.metadata().isInterfaceObjectType(type) ? 'InterfaceType' : type.kind;\n if (kind !== supergraphType.kind) {\n return;\n }\n\n return type as T;\n }));\n }\n\n private mergeImplements(sources: Sources, dest: T) {\n const implemented = new Set();\n const joinImplementsDirective = this.joinSpec.implementsDirective(this.merged)!;\n for (const [idx, source] of sources.entries()) {\n if (source) {\n const name = this.joinSpecName(idx);\n for (const itf of source.interfaces()) {\n implemented.add(itf.name);\n dest.applyDirective(joinImplementsDirective, { graph: name, interface: itf.name });\n }\n }\n }\n implemented.forEach(itf => dest.addImplementedInterface(itf));\n }\n\n private mergeDescription>(sources: Sources, dest: T) {\n const descriptions: string[] = [];\n const counts: number[] = [];\n for (const source of sources.values()) {\n if (!source || source.description === undefined) {\n continue;\n }\n\n const idx = descriptions.indexOf(source.description);\n if (idx < 0) {\n descriptions.push(source.description);\n // Very much a hack but simple enough: while we do merge 'empty-string' description if that's all we have (debatable behavior in the first place,\n // but graphQL-js does print such description and fed 1 has historically merged them so ...), we really don't want to favor those if we\n // have any non-empty description, even if we have more empty ones across subgraphs. So we use a super-negative base count if the description\n // is empty so that our `indexOfMax` below never pick them if there is a choice.\n counts.push(source.description === '' ? Number.MIN_SAFE_INTEGER : 1);\n } else {\n counts[idx]++;\n }\n }\n\n if (descriptions.length > 0) {\n // we don't want to raise a hint if a description is \"\"\n const nonEmptyDescriptions = descriptions.filter(desc => desc !== '');\n if (descriptions.length === 1) {\n dest.description = descriptions[0];\n } else if (nonEmptyDescriptions.length === 1) {\n dest.description = nonEmptyDescriptions[0];\n } else {\n const idx = indexOfMax(counts);\n dest.description = descriptions[idx];\n // TODO: Currently showing full descriptions in the hint messages, which is probably fine in some cases. However\n // this might get less helpful if the description appears to differ by a very small amount (a space, a single character typo)\n // and even more so the bigger the description is, and we could improve the experience here. For instance, we could\n // print the supergraph description but then show other descriptions as diffs from that (using, say, https://www.npmjs.com/package/diff).\n // And we could even switch between diff/non-diff modes based on the levenshtein distances between the description we found.\n // That said, we should decide if we want to bother here: maybe we can leave it to studio so handle a better experience (as\n // it can more UX wise).\n const name = dest instanceof NamedSchemaElement ? `Element \"${dest.coordinate}\"` : 'The schema definition';\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_DESCRIPTION,\n message: `${name} has inconsistent descriptions across subgraphs. `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: elt => elt.description,\n supergraphElementPrinter: (desc, subgraphs) => `The supergraph will use description (from ${subgraphs}):\\n${descriptionString(desc, ' ')}`,\n otherElementsPrinter: (desc: string, subgraphs) => `\\nIn ${subgraphs}, the description is:\\n${descriptionString(desc, ' ')}`,\n ignorePredicate: elt => elt?.description === undefined,\n noEndOfMessageDot: true, // Skip the end-of-message '.' since it would look ugly in that specific case\n });\n }\n }\n }\n\n // Note that we know when we call this method that all the types in sources and dest have the same kind.\n // We could express this through a generic argument, but typescript is not smart enough to save us\n // type-casting even if we do, and in fact, using a generic forces a case on `dest` for some reason.\n // So we don't bother.\n private mergeType(sources: Sources, dest: NamedType) {\n this.checkForExtensionWithNoBase(sources, dest);\n this.mergeDescription(sources, dest);\n this.addJoinType(sources, dest);\n this.recordAppliedDirectivesToMerge(sources, dest);\n this.addJoinDirectiveDirectives(sources, dest);\n switch (dest.kind) {\n case 'ScalarType':\n // Since we don't handle applied directives yet, we have nothing specific to do for scalars.\n break;\n case 'ObjectType':\n this.mergeObject(sources as Sources, dest);\n break;\n case 'InterfaceType':\n // Note that due to @interfaceObject, we can have some ObjectType in the sources, not just interfaces.\n this.mergeInterface(sources as Sources, dest);\n break;\n case 'UnionType':\n this.mergeUnion(sources as Sources, dest);\n break;\n case 'EnumType':\n this.mergeEnum(sources as Sources, dest);\n break;\n case 'InputObjectType':\n this.mergeInput(sources as Sources, dest);\n break;\n }\n }\n\n private checkForExtensionWithNoBase(sources: Sources, dest: NamedType) {\n if (isObjectType(dest) && dest.isRootType()) {\n return;\n }\n\n const defSubgraphs: string[] = [];\n const extensionSubgraphs: string[] = [];\n const extensionASTs: (ASTNode|undefined)[] = [];\n\n for (const [i, source] of sources.entries()) {\n if (!source) {\n continue;\n }\n if (source.hasNonExtensionElements()) {\n defSubgraphs.push(this.names[i]);\n }\n if (source.hasExtensionElements()) {\n extensionSubgraphs.push(this.names[i]);\n extensionASTs.push(firstOf>(source.extensions().values())!.sourceAST);\n }\n }\n if (extensionSubgraphs.length > 0 && defSubgraphs.length === 0) {\n for (const [i, subgraph] of extensionSubgraphs.entries()) {\n this.errors.push(ERRORS.EXTENSION_WITH_NO_BASE.err(\n `[${subgraph}] Type \"${dest}\" is an extension type, but there is no type definition for \"${dest}\" in any subgraph.`,\n { nodes: extensionASTs[i] },\n ));\n }\n }\n }\n\n private addJoinType(sources: Sources, dest: NamedType) {\n const joinTypeDirective = this.joinSpec.typeDirective(this.merged);\n for (const [idx, source] of sources.entries()) {\n if (!source) {\n continue;\n }\n\n // There is either 1 join__type per-key, or if there is no key, just one for the type.\n const sourceMetadata = this.subgraphs.values()[idx].metadata();\n // Note that mechanically we don't need to substitute `undefined` for `false` below (`false` is the\n // default value), but doing so 1) yield smaller supergraph (because the parameter isn't included)\n // and 2) this avoid needless discrepancies compared to supergraphs generated before @interfaceObject was added.\n const isInterfaceObject = sourceMetadata.isInterfaceObjectType(source) ? true : undefined;\n const keys = source.appliedDirectivesOf(sourceMetadata.keyDirective());\n const name = this.joinSpecName(idx);\n\n if (!keys.length) {\n dest.applyDirective(joinTypeDirective, { graph: name, isInterfaceObject });\n } else {\n for (const key of keys) {\n const extension = key.ofExtension() || source.hasAppliedDirective(sourceMetadata.extendsDirective()) ? true : undefined;\n const { resolvable } = key.arguments();\n dest.applyDirective(joinTypeDirective, { graph: name, key: key.arguments().fields, extension, resolvable, isInterfaceObject });\n }\n }\n }\n }\n\n private mergeObject(sources: Sources, dest: ObjectType) {\n const isEntity = this.hintOnInconsistentEntity(sources, dest);\n const isValueType = !isEntity && !dest.isRootType();\n const isSubscription = dest.isSubscriptionRootType();\n\n const added = this.addFieldsShallow(sources, dest);\n if (!added.size) {\n // This can happen for a type that existing in the subgraphs but had only non-merged fields\n // (currently, this can only be the 'Query' type, in the rare case where the federated schema\n // exposes no queries) .\n dest.remove();\n } else {\n added.forEach((subgraphFields, destField) => {\n if (isValueType) {\n this.hintOnInconsistentValueTypeField(sources, dest, destField);\n }\n const mergeContext = this.validateOverride(subgraphFields, destField);\n\n if (isSubscription) {\n this.validateSubscriptionField(subgraphFields);\n }\n\n this.mergeField({\n sources: subgraphFields,\n dest: destField,\n mergeContext,\n });\n this.validateFieldSharing(subgraphFields, destField, mergeContext);\n });\n }\n }\n\n // Return whether the type is an entity in at least one subgraph.\n private hintOnInconsistentEntity(sources: Sources, dest: ObjectType): boolean {\n const sourceAsEntity: ObjectType[] = [];\n const sourceAsNonEntity: ObjectType[] = [];\n for (const source of sources.values()) {\n if (!source) {\n continue;\n }\n if (source.hasAppliedDirective('key')) {\n sourceAsEntity.push(source);\n } else {\n sourceAsNonEntity.push(source);\n }\n }\n if (sourceAsEntity.length > 0 && sourceAsNonEntity.length > 0) {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_ENTITY,\n message: `Type \"${dest}\" is declared as an entity (has a @key applied) in some but not all defining subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n // All we use the string of the next line for is to categorize source with a @key of the others.\n elementToString: type => type.hasAppliedDirective('key') ? 'yes' : 'no',\n // Note that the first callback is for element that are \"like the supergraph\". As the supergraph has no @key ...\n supergraphElementPrinter: (_, subgraphs) => `it has no @key in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but has some @key in ${subgraphs}`,\n });\n }\n return sourceAsEntity.length > 0;\n }\n\n // Assume it is called on a field of a value type\n private hintOnInconsistentValueTypeField(\n sources: Sources,\n dest: ObjectType | InterfaceType,\n field: FieldDefinition,\n ) {\n let hintId: HintCodeDefinition;\n let typeDescription: string;\n switch (dest.kind) {\n case 'ObjectType':\n hintId = HINTS.INCONSISTENT_OBJECT_VALUE_TYPE_FIELD;\n typeDescription = 'non-entity object'\n break;\n case 'InterfaceType':\n hintId = HINTS.INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD;\n typeDescription = 'interface'\n break;\n }\n for (const [index, source] of sources.entries()) {\n // As soon as we find a subgraph that has the type but not the field, we hint.\n if (source && !source.field(field.name) && !this.areAllFieldsExternal(index, source)) {\n this.mismatchReporter.reportMismatchHint({\n code: hintId,\n message: `Field \"${field.coordinate}\" of ${typeDescription} type \"${dest}\" is defined in some but not all subgraphs that define \"${dest}\": `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: type => type.field(field.name) ? 'yes' : 'no',\n supergraphElementPrinter: (_, subgraphs) => `\"${field.coordinate}\" is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n });\n break;\n }\n }\n }\n\n private addMissingInterfaceObjectFieldsToImplementations() {\n // For each merged object types, we check if we're missing a field from one of the implemented interface.\n // If we do, then we look if one of the subgraph provides that field as a (non-external) interface object\n // type, and if that's the case, we add the field to the object.\n for (const type of this.merged.objectTypes()) {\n for (const implementedItf of type.interfaces()) {\n for (const itfField of implementedItf.fields()) {\n if (type.field(itfField.name)) {\n continue;\n }\n\n // Note that we don't blindly add the field yet, that would be incorrect in many cases (and we\n // have a specific validation that return a user-friendly error in such incorrect cases, see\n // `postMergeValidations`). We must first check that there is some subgraph that implement\n // that field as an \"interface object\", since in that case the field will genuinely be provided\n // by that subgraph at runtime.\n if (this.isFieldProvidedByAnInterfaceObject(itfField.name, implementedItf.name)) {\n // Note it's possible that interface is abstracted away (as an interface object) in multiple\n // subgraphs, so we don't bother with the field definition in those subgraphs, but rather\n // just copy the merged definition from the interface.\n const implemField = type.addField(itfField.name, itfField.type);\n // Cases could probably be made for both either copying or not copying the description\n // and applied directives from the interface field, but we copy both here as it feels\n // more likely to be what user expects (assume they care either way). It's unlikely\n // this will be an issue to anyone, but we can always make this behaviour tunable\n // \"somehow\" later if the need arise. Feels highly overkill at this point though.\n implemField.description = itfField.description;\n this.copyNonJoinAppliedDirectives(itfField, implemField);\n for (const itfArg of itfField.arguments()) {\n const implemArg = implemField.addArgument(itfArg.name, itfArg.type, itfArg.defaultValue);\n implemArg.description = itfArg.description;\n this.copyNonJoinAppliedDirectives(itfArg, implemArg);\n }\n\n // We add a special @join__field for those added field with no `graph` target. This\n // clarify to the later extraction process that this particular field doesn't come\n // from any particular subgraph (it comes indirectly from an @interfaceObject type,\n // but it's very much indirect so ...).\n implemField.applyDirective(this.joinSpec.fieldDirective(this.merged), { graph: undefined });\n\n\n // If we had to add a field here, it means that, for this particular implementation, the\n // field is only provided through the @interfaceObject. But because the field wasn't\n // merged, it also mean we haven't validated field sharing for that field, and we could\n // have field sharing concerns if the field is provided by multiple @interfaceObject.\n // So we validate field sharing now (it's convenient to wait until now as now that\n // the field is part of the supergraph, we can just call `validateFieldSharing` with\n // all sources `undefined` and it wil still find and check the `@interfaceObject`).\n const sources: Sources> = new Map;\n for (let i = 0; i < this.names.length; ++i) {\n // We don't usually want undefined sources in our Sources maps,\n // but both validateFieldSharing and FieldMergeContext need the\n // undefined sources to be registered in order to do their work.\n sources.set(i, undefined);\n }\n this.validateFieldSharing(sources, implemField, new FieldMergeContext(sources));\n }\n }\n }\n }\n }\n\n private copyNonJoinAppliedDirectives(source: SchemaElement, dest: SchemaElement) {\n // This method is used to copy \"user provided\" applied directives from interface fields to some\n // implementation type when @interfaceObject is used. But we shouldn't copy the `join` spec directive\n // as those are for the interface field but are invalid for the implementation field.\n source.appliedDirectives.forEach((d) => {\n if (!this.joinSpec.isSpecDirective(d.definition!)) {\n dest.applyDirective(d.name, {...d.arguments()})\n }\n });\n }\n\n private isFieldProvidedByAnInterfaceObject(fieldName: string, interfaceName: string): boolean {\n return this.subgraphs.values().some((s) => {\n const meta = s.metadata();\n const type = s.schema.type(interfaceName);\n const field = type && meta.isInterfaceObjectType(type) ? type.field(fieldName) : undefined;\n return field && !meta.isFieldExternal(field);\n });\n }\n\n private addFieldsShallow(\n sources: Sources,\n dest: T,\n ) {\n type FieldDef = FieldDefinition | InputFieldDefinition;\n const added = new Map>();\n const fieldsToAdd = new Map>();\n function fieldSet(sourceIndex: number): Set {\n let set = fieldsToAdd.get(sourceIndex);\n if (!set) fieldsToAdd.set(sourceIndex, set = new Set);\n return set;\n }\n\n const extraSources: Sources = new Map;\n\n sources.forEach((source, sourceIndex) => {\n const schema = this.subgraphsSchema[sourceIndex];\n const fields = fieldSet(sourceIndex);\n\n // If a source is undefined, it may still have an @interfaceObject object\n // for one of the interfaces implemented by the object in question.\n if (isObjectType(dest) || isInterfaceType(dest)) {\n for (const itf of dest.interfaces()) {\n const itfType = schema.type(itf.name);\n const subgraph = this.subgraphs.get(this.names[sourceIndex]);\n if (\n itfType &&\n isObjectType(itfType) &&\n subgraph?.metadata().isInterfaceObjectType(itfType)\n ) {\n // This marks the subgraph as having a relevant @interfaceObject,\n // even though we do not actively add the itfType.fields().\n extraSources.set(sourceIndex, undefined);\n }\n }\n }\n\n if (source) {\n for (const field of source.fields()) {\n fields.add(field);\n }\n }\n\n if (schema.type(dest.name)) {\n // Our needsJoinField logic adds @join__field if any subgraphs define\n // the parent type containing the field but not the field itself. In\n // those cases, for each field we add, we need to add undefined entries\n // for each subgraph that defines the parent object/interface/input\n // type. We do this by populating extraSources with undefined entries\n // here, then create each new Sources map from that starting set (see\n // `new Map(extraSources)` below).\n extraSources.set(sourceIndex, undefined);\n }\n });\n\n fieldsToAdd.forEach((fieldSet, sourceIndex) => {\n fieldSet.forEach(field => {\n if (field && isMergedField(field)) {\n const destField = dest.field(field.name) || dest.addField(field.name);\n let sources = added.get(destField)!;\n if (!sources) {\n sources = new Map(extraSources);\n added.set(destField, sources);\n }\n sources.set(sourceIndex, field);\n }\n });\n });\n\n // Although Map> makes the work of this method\n // easier, we return a more specific type that depends conditionally on T,\n // so (for example) callers receive a Map,\n // Sources> when T extends ObjectType, rather\n // than the more generic Map>.\n type FieldDefExact = T extends ObjectType | InterfaceType\n ? FieldDefinition\n : T extends InputObjectType ? InputFieldDefinition : never;\n return added as Map>;\n }\n\n private isExternal(sourceIdx: number, field: FieldDefinition | InputFieldDefinition) {\n return this.metadata(sourceIdx).isFieldExternal(field);\n }\n\n private isFullyExternal(sourceIdx: number, field: FieldDefinition | InputFieldDefinition) {\n return this.metadata(sourceIdx).isFieldFullyExternal(field);\n }\n\n private areAllFieldsExternal(sourceIdx: number, type: ObjectType | InterfaceType): boolean {\n return type.fields().every(f => this.isExternal(sourceIdx, f));\n }\n\n private validateAndFilterExternal(sources: Sources>): Sources> {\n const filtered: Sources> = new Map;\n for (const [i, source] of sources.entries()) {\n // If the source doesn't have the field or it is not external, we mirror the input\n if (!source || !this.isExternal(i, source)) {\n filtered.set(i, source);\n } else {\n // Otherwise, we filter out the source, but also \"validate\" it.\n filtered.set(i, undefined);\n\n // We don't allow \"merged\" directives on external fields because as far as merging goes, external fields don't really\n // exists and allowing \"merged\" directives on them is dodgy. To take examples, having a `@deprecated` or `@tag` on\n // an external feels unclear semantically: should it deprecate/tag the field? Essentially we're saying that \"no it\n // shouldn't\" and so it's clearer to reject it.\n // Note that if we change our mind on this semantic and wanted directives on external to propagate, then we'll also\n // need to update the merging of fields since external fields are filtered out (by this very method).\n for (const directive of source.appliedDirectives) {\n if (this.isMergedDirective(source.name, directive)) {\n // Contrarily to most of the errors during merging that \"merge\" errors for related elements, we're logging one\n // error for every application here. But this is because there error is somewhat subgraph specific and is\n // unlikely to span multiple subgraphs. In fact, we could almost have thrown this error during subgraph validation\n // if this wasn't for the fact that it is only thrown for directives being merged and so is more logical to\n // be thrown only when merging.\n this.errors.push(ERRORS.MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL.err(\n `[${this.names[i]}] Cannot apply merged directive ${directive} to external field \"${source.coordinate}\"`,\n { nodes: directive.sourceAST },\n ));\n }\n }\n }\n }\n return filtered;\n }\n\n private hasExternal(sources: Sources>): boolean {\n for (const [i, source] of sources.entries()) {\n if (source && this.isExternal(i, source)) {\n return true;\n }\n }\n return false;\n }\n\n private isShareable(sourceIdx: number, field: FieldDefinition): boolean {\n return this.metadata(sourceIdx).isFieldShareable(field);\n }\n\n private getOverrideDirective(sourceIdx: number, field: FieldDefinition): Directive | undefined {\n // Check the directive on the field, then on the enclosing type.\n const metadata = this.metadata(sourceIdx);\n const overrideDirective = metadata.isFed2Schema() ? metadata.overrideDirective() : undefined;\n const allFieldOverrides = overrideDirective ? field.appliedDirectivesOf(overrideDirective) : [];\n return allFieldOverrides[0]; // if array is empty, will return undefined\n }\n\n private overrideConflictsWithOtherDirective({\n idx,\n field,\n subgraphName,\n fromIdx,\n fromField,\n }: {\n idx: number;\n field: FieldDefinition | undefined;\n subgraphName: string;\n fromIdx: number;\n fromField: FieldDefinition | undefined;\n }): { result: boolean, conflictingDirective?: DirectiveDefinition, subgraph?: string } {\n const fromMetadata = this.metadata(fromIdx);\n for (const directive of [fromMetadata.requiresDirective(), fromMetadata.providesDirective()]) {\n if (fromField?.hasAppliedDirective(directive)) {\n return {\n result: true,\n conflictingDirective: directive,\n subgraph: this.names[fromIdx],\n };\n }\n }\n if (field && this.isExternal(idx, field)) {\n return {\n result: true,\n conflictingDirective: fromMetadata.externalDirective(),\n subgraph: subgraphName,\n };\n }\n return { result: false };\n }\n\n /**\n * Validates whether or not the use of the @override directive is correct.\n * return value is a list of fields that has been filtered to ignore overridden fields\n */\n private validateOverride(sources: Sources>, dest: FieldDefinition): FieldMergeContext {\n const result = new FieldMergeContext(sources);\n if (!this.fieldsWithOverride.has(dest.coordinate)) {\n return result;\n }\n\n // For any field, we can't have more than one @override directive\n type MappedValue = {\n idx: number,\n name: string,\n isInterfaceField?: boolean,\n isInterfaceObject?: boolean,\n interfaceObjectAbstractingFields?: FieldDefinition[],\n overrideDirective?: Directive, OverrideArgs>,\n };\n\n type ReduceResultType = {\n subgraphsWithOverride: string[],\n subgraphMap: { [key: string]: MappedValue },\n };\n\n // convert sources to a map so we don't have to keep scanning through the array to find a source\n const mapped = mapSources(sources, (source, idx) => {\n if (!source) {\n // While the subgraph may not have the field directly, it could have \"stand-in\" for that field\n // through @interfaceObject, and it is those stand-ins that would be effectively overridden.\n const interfaceObjectAbstractingFields = this.fieldsInSourceIfAbstractedByInterfaceObject(dest, idx);\n if (interfaceObjectAbstractingFields.length > 0) {\n return {\n idx,\n name: this.names[idx],\n interfaceObjectAbstractingFields,\n };\n }\n\n return undefined;\n }\n\n return {\n idx,\n name: this.names[idx],\n isInterfaceField: isInterfaceType(source.parent),\n isInterfaceObject: this.metadata(idx).isInterfaceObjectType(source.parent),\n overrideDirective: this.getOverrideDirective(idx, source),\n };\n });\n\n const { subgraphsWithOverride, subgraphMap } = Array.from(\n mapped.values()\n ).reduce((acc: ReduceResultType, elem) => {\n if (elem !== undefined) {\n acc.subgraphMap[elem.name] = elem;\n if (elem.overrideDirective !== undefined) {\n acc.subgraphsWithOverride.push(elem.name);\n }\n }\n return acc;\n }, { subgraphsWithOverride: [], subgraphMap: {} });\n\n // for each subgraph that has an @override directive, check to see if any errors or hints should be surfaced\n subgraphsWithOverride.forEach((subgraphName) => {\n const { overrideDirective, idx, isInterfaceObject, isInterfaceField } = subgraphMap[subgraphName];\n if (!overrideDirective) return;\n\n const overridingSubgraphASTNode = overrideDirective.sourceAST ? addSubgraphToASTNode(overrideDirective.sourceAST, subgraphName) : undefined;\n if (isInterfaceField) {\n this.errors.push(ERRORS.OVERRIDE_ON_INTERFACE.err(\n `@override cannot be used on field \"${dest.coordinate}\" on subgraph \"${subgraphName}\": @override is not supported on interface type fields.`,\n { nodes: overridingSubgraphASTNode }\n ));\n return;\n }\n\n if (isInterfaceObject) {\n this.errors.push(ERRORS.OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n `@override is not yet supported on fields of @interfaceObject types: cannot be used on field \"${dest.coordinate}\" on subgraph \"${subgraphName}\".`,\n { nodes: overridingSubgraphASTNode }\n ));\n return;\n }\n\n const sourceSubgraphName = overrideDirective.arguments().from;\n if (!this.names.includes(sourceSubgraphName)) {\n result.setOverrideWithUnknownTarget(idx);\n const suggestions = suggestionList(sourceSubgraphName, this.names);\n const extraMsg = didYouMean(suggestions);\n this.hints.push(new CompositionHint(\n HINTS.FROM_SUBGRAPH_DOES_NOT_EXIST,\n `Source subgraph \"${sourceSubgraphName}\" for field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" does not exist.${extraMsg}`,\n dest,\n overridingSubgraphASTNode,\n ));\n } else if (sourceSubgraphName === subgraphName) {\n this.errors.push(ERRORS.OVERRIDE_FROM_SELF_ERROR.err(\n `Source and destination subgraphs \"${sourceSubgraphName}\" are the same for overridden field \"${dest.coordinate}\"`,\n { nodes: overrideDirective.sourceAST },\n ));\n } else if (subgraphsWithOverride.includes(sourceSubgraphName)) {\n this.errors.push(ERRORS.OVERRIDE_SOURCE_HAS_OVERRIDE.err(\n `Field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" is also marked with directive @override in subgraph \"${sourceSubgraphName}\". Only one @override directive is allowed per field.`,\n { nodes: sourceASTs(overrideDirective, subgraphMap[sourceSubgraphName].overrideDirective) }\n ));\n } else if (subgraphMap[sourceSubgraphName] === undefined) {\n this.hints.push(new CompositionHint(\n HINTS.OVERRIDE_DIRECTIVE_CAN_BE_REMOVED,\n `Field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" no longer exists in the from subgraph. The @override directive can be removed.`,\n dest,\n overridingSubgraphASTNode,\n ));\n } else {\n // For now, we don't supporting overriding a field that is not truly in the source subgraph, but is instead abstracted by\n // one or more @interfaceObject.\n const { interfaceObjectAbstractingFields } = subgraphMap[sourceSubgraphName];\n if (interfaceObjectAbstractingFields) {\n const abstractingTypes = printTypes(interfaceObjectAbstractingFields.map((f) => f.parent));\n this.errors.push(ERRORS.OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n `Invalid @override on field \"${dest.coordinate}\" of subgraph \"${subgraphName}\": source subgraph \"${sourceSubgraphName}\" does not have field \"${dest.coordinate}\" but abstract it in ${abstractingTypes} and overriding abstracted fields is not supported.`,\n { nodes: sourceASTs(overrideDirective, subgraphMap[sourceSubgraphName].overrideDirective) }\n ));\n return;\n }\n\n // check to make sure that there is no conflicting @provides, @requires, or @external directives\n const fromIdx = this.names.indexOf(sourceSubgraphName);\n const fromField = sources.get(fromIdx);\n const { result: hasIncompatible, conflictingDirective, subgraph } = this.overrideConflictsWithOtherDirective({\n idx,\n field: sources.get(idx),\n subgraphName,\n fromIdx: this.names.indexOf(sourceSubgraphName),\n fromField: sources.get(fromIdx),\n });\n if (hasIncompatible) {\n assert(conflictingDirective !== undefined, 'conflictingDirective should not be undefined');\n this.errors.push(ERRORS.OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n `@override cannot be used on field \"${fromField?.coordinate}\" on subgraph \"${subgraphName}\" since \"${fromField?.coordinate}\" on \"${subgraph}\" is marked with directive \"@${conflictingDirective.name}\"`,\n { nodes: sourceASTs(overrideDirective, conflictingDirective) }\n ));\n } else {\n // if we get here, then the @override directive is valid\n // if the field being overridden is used, then we need to add an @external directive\n assert(fromField, 'fromField should not be undefined');\n const overriddenSubgraphASTNode = fromField.sourceAST ? addSubgraphToASTNode(fromField.sourceAST, sourceSubgraphName) : undefined;\n const overrideLabel = overrideDirective.arguments().label;\n const overriddenFieldIsReferenced = !!this.metadata(fromIdx).isFieldUsed(fromField);\n if (this.isExternal(fromIdx, fromField)) {\n // The from field is explicitly marked external by the user (which means it is \"used\" and cannot be completely\n // removed) so the @override can be removed.\n this.hints.push(new CompositionHint(\n HINTS.OVERRIDE_DIRECTIVE_CAN_BE_REMOVED,\n `Field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" is not resolved anymore by the from subgraph (it is marked \"@external\" in \"${sourceSubgraphName}\"). The @override directive can be removed.`,\n dest,\n overridingSubgraphASTNode,\n ));\n } else if (overriddenFieldIsReferenced) {\n result.setUsedOverridden(fromIdx);\n if (!overrideLabel) {\n this.hints.push(new CompositionHint(\n HINTS.OVERRIDDEN_FIELD_CAN_BE_REMOVED,\n `Field \"${dest.coordinate}\" on subgraph \"${sourceSubgraphName}\" is overridden. It is still used in some federation directive(s) (@key, @requires, and/or @provides) and/or to satisfy interface constraint(s), but consider marking it @external explicitly or removing it along with its references.`,\n dest,\n overriddenSubgraphASTNode,\n )\n );\n }\n } else {\n result.setUnusedOverridden(fromIdx);\n if (!overrideLabel) {\n this.hints.push(new CompositionHint(\n HINTS.OVERRIDDEN_FIELD_CAN_BE_REMOVED,\n `Field \"${dest.coordinate}\" on subgraph \"${sourceSubgraphName}\" is overridden. Consider removing it.`,\n dest,\n overriddenSubgraphASTNode,\n ));\n }\n }\n\n // capture an override label if it exists\n if (overrideLabel) {\n const labelRegex = /^[a-zA-Z][a-zA-Z0-9_\\-:./]*$/;\n // Enforce that the label matches the following pattern: percent(x)\n // where x is a float between 0 and 100 with no more than 8 decimal places\n const percentRegex = /^percent\\((\\d{1,2}(\\.\\d{1,8})?|100)\\)$/;\n if (labelRegex.test(overrideLabel)) {\n result.setOverrideLabel(idx, overrideLabel);\n result.setOverrideLabel(fromIdx, overrideLabel);\n } else if (percentRegex.test(overrideLabel)) {\n const parts = percentRegex.exec(overrideLabel);\n if (parts) {\n const percent = parseFloat(parts[1]);\n if (percent >= 0 && percent <= 100) {\n result.setOverrideLabel(idx, overrideLabel);\n result.setOverrideLabel(fromIdx, overrideLabel);\n }\n }\n }\n\n if (!result.overrideLabel(idx)) {\n this.errors.push(ERRORS.OVERRIDE_LABEL_INVALID.err(\n `Invalid @override label \"${overrideLabel}\" on field \"${dest.coordinate}\" on subgraph \"${subgraphName}\": labels must start with a letter and after that may contain alphanumerics, underscores, minuses, colons, periods, or slashes. Alternatively, labels may be of the form \"percent(x)\" where x is a float between 0-100 inclusive.`,\n { nodes: overridingSubgraphASTNode }\n ));\n }\n\n const message = overriddenFieldIsReferenced\n ? `Field \"${dest.coordinate}\" on subgraph \"${sourceSubgraphName}\" is currently being migrated via progressive @override. It is still used in some federation directive(s) (@key, @requires, and/or @provides) and/or to satisfy interface constraint(s). Once the migration is complete, consider marking it @external explicitly or removing it along with its references.`\n : `Field \"${dest.coordinate}\" is currently being migrated with progressive @override. Once the migration is complete, remove the field from subgraph \"${sourceSubgraphName}\".`;\n\n this.hints.push(new CompositionHint(\n HINTS.OVERRIDE_MIGRATION_IN_PROGRESS,\n message,\n dest,\n overriddenSubgraphASTNode,\n ));\n }\n }\n }\n });\n\n return result;\n }\n\n /**\n * Given a supergraph field `f` for an object type `T` and a given subgraph (identified by its index) where\n * `T` is not defined, check if that subgraph defines one or more of the interface of `T` as @interfaceObject,\n * and if so return any instance of `f` on those @interfaceObject.\n */\n private fieldsInSourceIfAbstractedByInterfaceObject(destField: FieldDefinition, sourceIdx: number): FieldDefinition[] {\n const parentInSupergraph = destField.parent;\n const schema = this.subgraphsSchema[sourceIdx];\n if (!isObjectType(parentInSupergraph) || schema.type(parentInSupergraph.name)) {\n return [];\n }\n\n return parentInSupergraph.interfaces().map((itfType) => {\n if (!itfType.field(destField.name)) {\n return undefined;\n }\n const typeInSchema = schema.type(itfType.name);\n // Note that since the type is an interface in the supergraph, we can assume that\n // if it is an object type in the subgraph, then it is an @interfaceObject.\n if (!typeInSchema || !isObjectType(typeInSchema)) {\n return undefined;\n }\n return typeInSchema.field(destField.name);\n }).filter(isDefined);\n }\n\n private mergeField({\n sources,\n dest,\n mergeContext = new FieldMergeContext(sources),\n }: {\n sources: Sources>,\n dest: FieldDefinition,\n mergeContext: FieldMergeContext,\n }) {\n let everySourceIsExternal = true;\n for (const [i, s] of sources.entries()) {\n if (s === undefined) {\n everySourceIsExternal = everySourceIsExternal &&\n this.fieldsInSourceIfAbstractedByInterfaceObject(dest, i)\n .every((f) => this.isExternal(i, f));\n } else {\n everySourceIsExternal = everySourceIsExternal && this.isExternal(i, s);\n }\n if (!everySourceIsExternal) {\n break;\n }\n }\n\n if (everySourceIsExternal) {\n const nodes: ASTNode[] = [];\n const definingSubgraphs: string[] = [];\n sources.forEach((source, i) => {\n if (source) {\n definingSubgraphs.push(this.names[i]);\n if (source.sourceAST) {\n nodes.push(source.sourceAST);\n }\n return;\n }\n\n const itfObjectFields = this.fieldsInSourceIfAbstractedByInterfaceObject(dest, i);\n if (itfObjectFields.length === 0) {\n return;\n }\n\n definingSubgraphs.push(\n `${this.names[i]} (through @interaceObject ${printTypes(itfObjectFields.map((f) => f.parent))})`\n );\n });\n\n this.errors.push(ERRORS.EXTERNAL_MISSING_ON_BASE.err(\n `Field \"${dest.coordinate}\" is marked @external on all the subgraphs in which it is listed (${printSubgraphNames(definingSubgraphs)}).`,\n { nodes }\n ));\n\n return;\n }\n\n const withoutExternal = this.validateAndFilterExternal(sources);\n\n // Note that we don't truly merge externals: we don't want, for instance, a field that is non-nullable everywhere to appear nullable in the\n // supergraph just because someone fat-fingered the type in an external definition. But after merging the non-external definitions, we\n // validate the external ones are consistent.\n this.mergeDescription(withoutExternal, dest);\n this.recordAppliedDirectivesToMerge(withoutExternal, dest);\n this.addArgumentsShallow(withoutExternal, dest);\n for (const destArg of dest.arguments()) {\n const subgraphArgs = mapSources(withoutExternal, f => f?.argument(destArg.name));\n this.mergeArgument(subgraphArgs, destArg);\n }\n // Note that due to @interfaceObject, it's possible that `withoutExternal` is \"empty\" (has no\n // non-undefined at all) but to still get here. That is, we can have:\n // ```\n // # First subgraph\n // interface I {\n // id: ID!\n // x: Int\n // }\n //\n // type T implements I @key(fields: \"id\") {\n // id: ID!\n // x: Int @external\n // y: Int @requires(fields: \"x\")\n // }\n // ```\n // and\n // ```\n // # Second subgraph\n // type I @interfaceObject @key(fields: \"id\") {\n // id: ID!\n // x: Int\n // }\n // ```\n // In that case, it is valid to mark `T.x` external because it is provided by\n // another subgraph, the second one, through the interfaceObject object on I.\n // But because the first subgraph is the only one to have `T` and `x` is\n // external there, `withoutExternal` will be false.\n //\n // Anyway, we still need to merge a type in the supergraph, so in that case\n // we use merge the external declarations directly.\n const allTypesEqual = this.mergeTypeReference(\n someSources(withoutExternal, isDefined) ? withoutExternal : sources,\n dest,\n );\n\n if (this.hasExternal(sources)) {\n this.validateExternalFields(sources, dest, allTypesEqual);\n }\n this.addJoinField({ sources, dest, allTypesEqual, mergeContext });\n this.addJoinDirectiveDirectives(sources, dest);\n }\n\n private validateFieldSharing(sources: Sources>, dest: FieldDefinition, mergeContext: FieldMergeContext) {\n const shareableSources: { subgraph: string, idx: number}[] = [];\n const nonShareableSources: { subgraph: string, idx: number}[] = [];\n const allResolving: { subgraph: string, field: FieldDefinition }[] = [];\n\n const categorizeField = (idx: number, subgraph: string, field: FieldDefinition) => {\n if (!this.isFullyExternal(idx, field)) {\n allResolving.push({ subgraph, field });\n if (this.isShareable(idx, field)) {\n shareableSources.push({subgraph, idx});\n } else {\n nonShareableSources.push({subgraph, idx});\n }\n }\n };\n\n for (const [i, source] of sources.entries()) {\n const subgraph = '\"' + this.names[i] + '\"';\n if (!source) {\n const itfObjectFields = this.fieldsInSourceIfAbstractedByInterfaceObject(dest, i);\n // In theory, a type can implement multiple interfaces and all of them could be a @interfaceObject in\n // the source and provide the field. If so, we want to consider each as a different source of the\n // field.\n itfObjectFields.forEach((field) => categorizeField(i, subgraph + ` (through @interfaceObject field \"${field.coordinate}\")`, field));\n continue;\n }\n\n if (mergeContext.isUsedOverridden(i) || mergeContext.isUnusedOverridden(i)) {\n continue;\n }\n\n categorizeField(i, subgraph, source);\n }\n\n if (nonShareableSources.length > 0 && (shareableSources.length > 0 || nonShareableSources.length > 1)) {\n const printSubgraphs = (l: {subgraph: string}[]) => printHumanReadableList(\n l.map(({subgraph}) => subgraph),\n // When @interfaceObject is involved, the strings we print can be somewhat long, so we increase the cutoff size somewhat.\n { prefix: 'subgraph', prefixPlural: 'subgraphs', cutoff_output_length: 500 }\n );\n const resolvingSubgraphs = printSubgraphs(allResolving);\n const nonShareables = shareableSources.length > 0 ? printSubgraphs(nonShareableSources) : 'all of them';\n\n // An easy-to-make error that can lead here is the mispelling of the `from` argument of an @override. Because in that case, the\n // @override will essentially be ignored (we'll have logged a warning, but the error we're about to log will overshadow it) and\n // the 2 field insteances will violate the sharing rules. But because in that case the error is ultimately with @override, it\n // can be hard for user to understand why they get a shareability error, so we detect this case and offer an additional hint\n // at what the problem might be in the error message (note that even if we do find an @override with a unknown target, we\n // cannot be 100% sure this is the issue, because this could also be targeting a subgraph that has just been removed, in which\n // case the shareable error is legit; so keep the shareabilty error with a strong hint is hopefully good enough in practice).\n // Note: if there is multiple non-shareable fields with \"target-less overrides\", we only hint about one of them, because that's\n // easier and almost surely good enough to bring the attention of the user to potential typo in @override usage.\n const subgraphWithTargetlessOverride = nonShareableSources.find(({idx}) => mergeContext.hasOverrideWithUnknownTarget(idx));\n let extraHint = '';\n if (subgraphWithTargetlessOverride !== undefined) {\n extraHint = ` (please note that \"${dest.coordinate}\" has an @override directive in ${subgraphWithTargetlessOverride.subgraph} that targets an unknown subgraph so this could be due to misspelling the @override(from:) argument)`;\n }\n this.errors.push(ERRORS.INVALID_FIELD_SHARING.err(\n `Non-shareable field \"${dest.coordinate}\" is resolved from multiple subgraphs: it is resolved from ${resolvingSubgraphs} and defined as non-shareable in ${nonShareables}${extraHint}`,\n { nodes: sourceASTs(...allResolving.map(({field}) => field)) },\n ));\n }\n }\n\n private validateExternalFields(sources: Sources>, dest: FieldDefinition, allTypesEqual: boolean) {\n let hasInvalidTypes = false;\n const invalidArgsPresence = new Set();\n const invalidArgsTypes = new Set();\n const invalidArgsDefaults = new Set();\n for (const [i, source] of sources.entries()) {\n if (!source || !this.isExternal(i, source)) {\n continue;\n }\n // To be valid, an external field must use the same type as the merged field (or \"at least\" a subtype).\n if (!(sameType(dest.type!, source.type!) || (!allTypesEqual && this.isStrictSubtype(dest.type!, source.type!)))) {\n hasInvalidTypes = true;\n }\n\n // For arguments, it should at least have all the arguments of the merged, and their type needs to be supertypes (contravariance).\n // We also require the default is that of the supergraph (maybe we could relax that, but we should decide how we want\n // to deal with field with arguments in @key, @provides, @requires first as this could impact it).\n for (const destArg of dest.arguments()) {\n const name = destArg.name;\n const arg = source.argument(name);\n if (!arg) {\n invalidArgsPresence.add(name);\n continue;\n }\n if (!sameType(destArg.type!, arg.type!) && !this.isStrictSubtype(arg.type!, destArg.type!)) {\n invalidArgsTypes.add(name);\n }\n if (destArg.defaultValue !== arg.defaultValue) {\n invalidArgsDefaults.add(name);\n }\n }\n }\n\n if (hasInvalidTypes) {\n this.mismatchReporter.reportMismatchError(\n ERRORS.EXTERNAL_TYPE_MISMATCH,\n `Type of field \"${dest.coordinate}\" is incompatible across subgraphs (where marked @external): it has `,\n dest,\n sources,\n field => `type \"${field.type}\"`\n );\n }\n for (const arg of invalidArgsPresence) {\n const destArg = dest.argument(arg)!;\n this.mismatchReporter.reportMismatchErrorWithSpecifics({\n code: ERRORS.EXTERNAL_ARGUMENT_MISSING,\n message: `Field \"${dest.coordinate}\" is missing argument \"${destArg.coordinate}\" in some subgraphs where it is marked @external: `,\n mismatchedElement: destArg,\n subgraphElements: this.argumentSources(sources, destArg),\n mismatchAccessor: arg => arg ? `argument \"${arg.coordinate}\"` : undefined,\n supergraphElementPrinter: (elt, subgraphs) => `${elt} is declared in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs} (where \"${dest.coordinate}\" is @external).`,\n includeMissingSources: true,\n });\n }\n for (const arg of invalidArgsTypes) {\n const destArg = dest.argument(arg)!;\n this.mismatchReporter.reportMismatchError(\n ERRORS.EXTERNAL_ARGUMENT_TYPE_MISMATCH,\n `Type of argument \"${destArg.coordinate}\" is incompatible across subgraphs (where \"${dest.coordinate}\" is marked @external): it has `,\n destArg,\n this.argumentSources(sources, destArg),\n arg => `type \"${arg.type}\"`\n );\n }\n for (const arg of invalidArgsDefaults) {\n const destArg = dest.argument(arg)!;\n this.mismatchReporter.reportMismatchError(\n ERRORS.EXTERNAL_ARGUMENT_DEFAULT_MISMATCH,\n `Argument \"${destArg.coordinate}\" has incompatible defaults across subgraphs (where \"${dest.coordinate}\" is marked @external): it has `,\n destArg,\n this.argumentSources(sources, destArg),\n arg => arg.defaultValue !== undefined ? `default value ${valueToString(arg.defaultValue, arg.type)}` : 'no default value'\n );\n }\n }\n\n private argumentSources(sources: Sources>, destArg: ArgumentDefinition>) {\n const argSources: Sources>> = new Map;\n for (const [i, source] of sources.entries()) {\n argSources.set(i, source?.argument(destArg.name));\n }\n return argSources;\n }\n\n private needsJoinField | InputFieldDefinition>({\n sources,\n parentName,\n allTypesEqual,\n mergeContext,\n }: {\n sources: Sources,\n parentName: string,\n allTypesEqual: boolean,\n mergeContext: FieldMergeContext,\n }): boolean {\n // If not all the types are equal, then we need to put a join__field to preserve the proper type information.\n if (!allTypesEqual) {\n return true;\n }\n if (mergeContext.some(({ usedOverridden, overrideLabel }) => usedOverridden || !!overrideLabel)) {\n return true;\n }\n\n for (const source of sources.values()) {\n const coordinate = source?.coordinate;\n if (coordinate && this.fieldsWithFromContext.has(coordinate)) {\n return true;\n }\n }\n\n // We can avoid the join__field if:\n // 1) the field exists in all sources having the field parent type,\n // 2) none of the field instance has a @requires or @provides.\n // 3) none of the field is @external.\n for (const [idx, source] of sources.entries()) {\n const overridden = mergeContext.isUnusedOverridden(idx);\n if (source && !overridden) {\n const sourceMeta = this.subgraphs.values()[idx].metadata();\n if (this.isExternal(idx, source)\n || source.hasAppliedDirective(sourceMeta.providesDirective())\n || source.hasAppliedDirective(sourceMeta.requiresDirective())\n ) {\n return true;\n }\n } else {\n // This subgraph does not have the field, so if it has the field type, we need a join__field.\n if (this.subgraphsSchema[idx].type(parentName)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private addJoinField | InputFieldDefinition>(\n {\n sources,\n dest,\n allTypesEqual,\n mergeContext,\n }: {\n sources: Sources,\n dest: T,\n allTypesEqual: boolean,\n mergeContext: FieldMergeContext,\n }) {\n if (!this.needsJoinField({\n sources,\n parentName: dest.parent.name,\n allTypesEqual,\n mergeContext,\n })) {\n return;\n }\n const joinFieldDirective = this.joinSpec.fieldDirective(this.merged);\n for (const [idx, source] of sources.entries()) {\n const usedOverridden = mergeContext.isUsedOverridden(idx);\n const unusedOverridden = mergeContext.isUnusedOverridden(idx);\n const overrideLabel = mergeContext.overrideLabel(idx);\n if (!source || (unusedOverridden && !overrideLabel)) {\n continue;\n }\n\n const fromContextDirective = this.subgraphs.values()[idx].metadata().fromContextDirective();\n\n const contextArguments = (source.kind === 'FieldDefinition' ? source.arguments() : [])\n .map((arg): {\n context: string,\n name: string,\n type: string,\n selection: string,\n } | undefined => {\n if (!isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n return undefined;\n }\n const appliedDirectives = arg.appliedDirectivesOf(fromContextDirective);\n if (appliedDirectives.length === 0) {\n return undefined;\n }\n assert(appliedDirectives.length === 1, 'There should be at most one @fromContext directive applied to an argument');\n const directive = appliedDirectives[0];\n const { context, selection } = parseContext(directive.arguments().field);\n // these are validated in the subgraph validation phase\n assert(context, 'Context should be defined');\n assert(selection, 'Selection should be defined');\n return {\n context: `${this.subgraphs.values()[idx].name}__${context}`,\n name: arg.name,\n type: arg.type!.toString(),\n selection,\n };\n })\n .filter(isDefined);\n\n const external = this.isExternal(idx, source);\n const sourceMeta = this.subgraphs.values()[idx].metadata();\n const name = this.joinSpecName(idx);\n dest.applyDirective(joinFieldDirective, {\n graph: name,\n requires: this.getFieldSet(source, sourceMeta.requiresDirective()),\n provides: this.getFieldSet(source, sourceMeta.providesDirective()),\n override: source.appliedDirectivesOf(sourceMeta.overrideDirective()).pop()?.arguments()?.from,\n type: allTypesEqual ? undefined : source.type?.toString(),\n external: external ? true : undefined,\n usedOverridden: usedOverridden ? true : undefined,\n overrideLabel: mergeContext.overrideLabel(idx),\n contextArguments: contextArguments.length > 0 ? contextArguments : undefined,\n });\n }\n }\n private getFieldSet(element: SchemaElement, directive: DirectiveDefinition<{fields: string}>): string | undefined {\n const applications = element.appliedDirectivesOf(directive);\n assert(applications.length <= 1, () => `Found more than one application of ${directive} on ${element}`);\n return applications.length === 0 ? undefined : applications[0].arguments().fields;\n }\n\n // Returns `true` if the type references were all completely equal and `false` if some subtyping happened (or\n // if types were incompatible since an error is logged in this case but the method does not throw).\n private mergeTypeReference>(\n sources: Sources,\n dest: TElement,\n isInputPosition: boolean = false\n ): boolean {\n let destType: TType | undefined;\n let hasSubtypes = false;\n let hasIncompatible = false;\n for (const source of sources.values()) {\n if (!source) {\n continue;\n }\n // Note that subtyping checks below relies on\n const sourceType = source.type!;\n if (!destType || sameType(destType, sourceType)) {\n destType = sourceType;\n } else if (this.isStrictSubtype(destType, sourceType)) {\n hasSubtypes = true;\n if (isInputPosition) {\n destType = sourceType;\n }\n } else if (this.isStrictSubtype(sourceType, destType)) {\n hasSubtypes = true;\n if (!isInputPosition) {\n destType = sourceType;\n }\n } else {\n hasIncompatible = true;\n }\n }\n\n assert(destType, () => `We should have found at least one subgraph with a type for ${dest.coordinate}`);\n // Note that destType is direct reference to one of the subgraph, so we need to copy it into our merged schema.\n dest.type = copyTypeReference(destType, this.merged) as TType;\n\n const isArgument = dest instanceof ArgumentDefinition;\n const elementKind: string = isArgument ? 'argument' : 'field';\n\n const base = baseType(dest.type);\n // Collecting enum usage for the sake of merging enums later.\n if (isEnumType(base)) {\n const existing = this.enumUsages.get(base.name);\n const thisPosition = isInputPosition ? 'Input' : 'Output';\n const position = existing && existing.position !== thisPosition ? 'Both' : thisPosition;\n const examples = existing?.examples ?? {};\n if (!examples[thisPosition]) {\n let idx = -1;\n for (const [i, source] of sources.entries()) {\n if (source) {\n idx = i;\n break;\n }\n }\n if (idx >= 0) {\n const example = sources.get(idx)!;\n examples[thisPosition] = {\n coordinate: example.coordinate,\n sourceAST: example.sourceAST ? addSubgraphToASTNode(example.sourceAST, this.names[idx]) : undefined,\n };\n }\n }\n this.enumUsages.set(base.name, { position, examples });\n }\n\n if (hasIncompatible) {\n this.mismatchReporter.reportMismatchError(\n isArgument ? ERRORS.ARGUMENT_TYPE_MISMATCH : ERRORS.FIELD_TYPE_MISMATCH,\n `Type of ${elementKind} \"${dest.coordinate}\" is incompatible across subgraphs: it has `,\n dest,\n sources,\n field => `type \"${field.type}\"`\n );\n return false;\n } else if (hasSubtypes) {\n // Note that we use the type `toString` representation as a way to group which subgraphs have the exact same type.\n // Doing so is actually equivalent of checking `sameType` (more precisely, it is equivalent if we ignore the kind\n // of named types, but if 2 subgraphs differs in kind for the same type name (say one has \"X\" be a scalar and the\n // other an interface) we know we've already registered an error and the hint her won't matter).\n this.mismatchReporter.reportMismatchHint({\n code: isArgument ? HINTS.INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE : HINTS.INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE,\n message: `Type of ${elementKind} \"${dest.coordinate}\" is inconsistent but compatible across subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: field => field.type!.toString(),\n supergraphElementPrinter: (elt, subgraphs) => `will use type \"${elt}\" (from ${subgraphs}) in supergraph but \"${dest.coordinate}\" has `,\n otherElementsPrinter: (elt, subgraphs) => `${isInputPosition ? 'supertype' : 'subtype'} \"${elt}\" in ${subgraphs}`\n });\n return false;\n }\n return true;\n }\n\n private isStrictSubtype(type: Type, maybeSubType: Type): boolean {\n // To be as generic as possible, when we check if a type is a direct subtype of another (which happens if either\n // the subtype is one of the member of an union type, or the subtype explicitly implements an interface), we want\n // to use the union/interface definitions from the merged schema. This is why we have merged interface implementation\n // relationships and unions first.\n return isStrictSubtype(\n type,\n maybeSubType,\n this.options.allowedFieldTypeMergingSubtypingRules,\n (union, maybeMember) => (this.merged.type(union.name)! as UnionType).hasTypeMember(maybeMember.name),\n (maybeImplementer, itf) => (this.merged.type(maybeImplementer.name)! as (ObjectType | InterfaceType)).implementsInterface(itf)\n );\n }\n\n private addArgumentsShallow | DirectiveDefinition>(sources: Sources, dest: T) {\n const argNames = new Set();\n for (const source of sources.values()) {\n if (!source) {\n continue;\n }\n source.arguments().forEach((arg) => argNames.add(arg.name));\n }\n\n for (const argName of argNames) {\n // We add the argument unconditionally even if we're going to remove it in\n // some path. Done because this helps reusing our \"reportMismatchHint\" method\n // in those cases.\n const arg = dest.addArgument(argName);\n\n // helper function to determine if an argument is contextual in a given subgraph\n const isContextualArg = (index: number, arg: ArgumentDefinition> | ArgumentDefinition>) => {\n const fromContextDirective = this.metadata(index).fromContextDirective();\n return fromContextDirective && isFederationDirectiveDefinedInSchema(fromContextDirective) && arg.appliedDirectivesOf(fromContextDirective).length >= 1;\n }\n\n const isContextualMap = new Map();\n let sawContextualArgs = false;\n sources.forEach((s, idx) => {\n const arg = s?.argument(argName);\n const isContextual = arg && isContextualArg(idx, arg) || false;\n isContextualMap.set(idx, isContextual);\n if (isContextual) {\n sawContextualArgs = true;\n }\n });\n\n if (sawContextualArgs) {\n // if the argument is contextual in some subgraph, then it should also be contextual in other subgraphs,\n // unless it is nullable. Also, we need to remove it from the supergraph\n isContextualMap.forEach((isContextual, idx) => {\n const argument = sources.get(idx)?.argument(argName);\n const argType = argument?.type;\n if (!isContextual && argument && argType && isNonNullType(argType) && argument.defaultValue === undefined) {\n this.errors.push(ERRORS.CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS.err(\n `Argument \"${arg.coordinate}\" is contextual in at least one subgraph but in \"${argument.coordinate}\" it does not have @fromContext, is not nullable and has no default value.`,\n { nodes: sourceASTs(sources.get(idx)?.argument(argName)) },\n ));\n }\n\n if (!isContextual && argument && argType && (isNullableType(argType) || argument.defaultValue !== undefined)) {\n // in this case, we want to issue a hint that the argument will not be present in the supergraph schema\n this.mismatchReporter.pushHint(new CompositionHint(\n HINTS.CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,\n `Contextual argument \"${argument.coordinate}\" will not be included in the supergraph since it is contextual in at least one subgraph`,\n undefined,\n ));\n }\n });\n\n arg.remove();\n continue;\n }\n\n // If all the sources that have the field have the argument, we do merge it\n // and we're good, but otherwise ...\n if (someSources(sources, (s) => s && !s.argument(argName))) {\n // ... we don't merge the argument: some subgraphs wouldn't know what\n // to make of it and that would be dodgy at best. If the argument is\n // optional in all sources, then we can compose properly and just issue a\n // hint. But if it is mandatory, then we have to fail composition, otherwise\n // the query planner would have no choice but to generate invalidate queries.\n const nonOptionalSources = filterSources(\n mapSources(sources, (s, i) => s && s.argument(argName)?.isRequired() ? this.names[i] : undefined),\n );\n if (nonOptionalSources.size > 0) {\n const nonOptionalSubgraphs = printSubgraphNames(Array.from(nonOptionalSources.values()).filter(isDefined));\n const missingSources = printSubgraphNames(Array.from(\n mapSources(sources, (s, i) => s && !s.argument(argName) ? this.names[i] : undefined).values()\n ).filter(isDefined));\n this.errors.push(ERRORS.REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH.err(\n `Argument \"${arg.coordinate}\" is required in some subgraphs but does not appear in all subgraphs: it is required in ${nonOptionalSubgraphs} but does not appear in ${missingSources}`,\n { nodes: sourceASTs(...mapSources(sources, (s) => s?.argument(argName)).values()) },\n ));\n } else {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_ARGUMENT_PRESENCE,\n message: `Optional argument \"${arg.coordinate}\" will not be included in the supergraph as it does not appear in all subgraphs: `,\n supergraphElement: arg,\n subgraphElements: mapSources(sources, (s) => s ? s.argument(argName) : undefined),\n elementToString: _ => 'yes',\n supergraphElementPrinter: (_, subgraphs) => `it is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n includeMissingSources: true\n });\n }\n // Note that we remove the element after the hint/error because we access it in the hint message generation.\n arg.remove();\n }\n }\n }\n\n private mergeArgument(sources: Sources>, dest: ArgumentDefinition) {\n this.mergeDescription(sources, dest);\n this.recordAppliedDirectivesToMerge(sources, dest);\n this.mergeTypeReference(sources, dest, true);\n this.mergeDefaultValue(sources, dest, 'Argument');\n }\n\n private mergeDefaultValue | InputFieldDefinition>(sources: Sources, dest: T, kind: string) {\n let destDefault;\n let hasSeenSource = false;\n let isInconsistent = false;\n let isIncompatible = false;\n for (const source of sources.values()) {\n if (!source) {\n continue;\n }\n // Because default values are always in input/contra-variant positions, we use an intersection strategy. Namely,\n // the result only has a default if _all_ have a default (which has to be the same, but we error if we found\n // 2 different defaults no matter what). Essentially, an argument/input field can only be made optional\n // in the supergraph API if it is optional in all subgraphs, or we may query a subgraph that expects the\n // value to be provided when it isn't. Note that an alternative could be to use an union strategy instead\n // but have the router/gateway fill in the default for subgraphs that don't know it, but that imply parsing\n // all the subgraphs fetches and we probably don't want that.\n const sourceDefault = source.defaultValue;\n if (destDefault === undefined) {\n // Note that we set destDefault even if we have seen a source before and maybe thus be inconsistent.\n // We won't use that value later if we're inconsistent, but keeping it allows us to always error out\n // if we any 2 incompatible defaults.\n destDefault = sourceDefault;\n // destDefault may be undefined either because we haven't seen any source (having the argument)\n // or because we've seen one but that source had no default. In the later case (`hasSeenSource`),\n // if the new source _has_ a default, then we're inconsistent.\n if (hasSeenSource && sourceDefault !== undefined) {\n isInconsistent = true;\n }\n } else if (!valueEquals(destDefault, sourceDefault)) {\n isInconsistent = true;\n // It's only incompatible if neither is undefined\n if (sourceDefault !== undefined) {\n isIncompatible = true;\n }\n }\n hasSeenSource = true;\n }\n // Note that we set the default if isIncompatible mostly to help the building of the error message. But\n // as we'll error out, it doesn't really matter.\n if (!isInconsistent || isIncompatible) {\n dest.defaultValue = destDefault;\n }\n\n if (isIncompatible) {\n this.mismatchReporter.reportMismatchError(\n kind === 'Argument' ? ERRORS.ARGUMENT_DEFAULT_MISMATCH : ERRORS.INPUT_FIELD_DEFAULT_MISMATCH,\n `${kind} \"${dest.coordinate}\" has incompatible default values across subgraphs: it has `,\n dest,\n sources,\n arg => arg.defaultValue !== undefined ? `default value ${valueToString(arg.defaultValue, arg.type)}` : 'no default value'\n );\n } else if (isInconsistent) {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_DEFAULT_VALUE_PRESENCE,\n message: `${kind} \"${dest.coordinate}\" has a default value in only some subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: arg => arg.defaultValue !== undefined ? valueToString(arg.defaultValue, arg.type) : undefined,\n supergraphElementPrinter: (_, subgraphs) => `will not use a default in the supergraph (there is no default in ${subgraphs}) but `,\n otherElementsPrinter: (elt, subgraphs) => `\"${dest.coordinate}\" has default value ${elt} in ${subgraphs}`\n });\n }\n }\n\n private mergeInterface(sources: Sources, dest: InterfaceType) {\n const hasKey = this.validateInterfaceKeys(sources, dest);\n this.validateInterfaceObjects(sources, dest);\n\n const added = this.addFieldsShallow(sources, dest);\n added.forEach((subgraphFields, destField) => {\n if (!hasKey) {\n this.hintOnInconsistentValueTypeField(sources, dest, destField);\n }\n const mergeContext = this.validateOverride(subgraphFields, destField);\n this.mergeField({\n sources: subgraphFields,\n dest: destField,\n mergeContext,\n });\n });\n }\n\n // Returns whether the interface has a key (even a non-resolvable one) in any subgraph.\n private validateInterfaceKeys(sources: Sources, dest: InterfaceType): boolean {\n // Remark: it might be ok to filter @inaccessible types in `supergraphImplementations`, but this requires\n // some more thinking (and I'm not even sure it makes a practical difference given the rules for validity\n // of @inaccessible) and it will be backward compatible to filter them later, while the reverse wouldn't\n // technically be, so we stay on the safe side.\n const supergraphImplementations = dest.possibleRuntimeTypes();\n\n // Validate that if a source defines a (resolvable) @key on an interface, then that subgraph defines\n // all the implementations of that interface in the supergraph.\n let hasKey = false;\n for (const [idx, source] of sources.entries()) {\n if (!source || !isInterfaceType(source)) {\n continue;\n }\n const sourceMetadata = this.subgraphs.values()[idx].metadata();\n const keys = source.appliedDirectivesOf(sourceMetadata.keyDirective());\n hasKey ||= keys.length > 0;\n const resolvableKey = keys.find((k) => k.arguments().resolvable !== false);\n if (!resolvableKey) {\n continue;\n }\n\n const implementationsInSubgraph = source.possibleRuntimeTypes();\n if (implementationsInSubgraph.length < supergraphImplementations.length) {\n const missingImplementations = supergraphImplementations.filter((superImpl) => !implementationsInSubgraph.some((subgImpl) => superImpl.name === subgImpl.name));\n this.errors.push(addSubgraphToError(\n ERRORS.INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE.err(\n `Interface type \"${source.coordinate}\" has a resolvable key (${resolvableKey}) in subgraph \"${this.names[idx]}\" but that subgraph is missing some of the supergraph implementation types of \"${dest.coordinate}\". `\n + `Subgraph \"${this.names[idx]}\" should define ${printTypes(missingImplementations)} (and have ${missingImplementations.length > 1 ? 'them' : 'it'} implement \"${source.coordinate}\").`,\n { nodes: resolvableKey.sourceAST},\n ),\n this.names[idx],\n ));\n }\n }\n return hasKey;\n }\n\n private validateInterfaceObjects(sources: Sources, dest: InterfaceType) {\n const supergraphImplementations = dest.possibleRuntimeTypes();\n\n // Validates that if a source defines the interface as an @interfaceObject, then it doesn't define any\n // of the implementations. We can discuss if there is ways to lift that limitation later, but an\n // @interfaceObject already \"provides\" fields for all the underlying impelmentations, so also defining\n // one those implementation would require additional care for shareability and more. This also feel\n // like this can get easily be done by mistake and gets rather confusing, so it's worth some additional\n // consideration before allowing.\n for (const [idx, source] of sources.entries()) {\n if (!source || !this.metadata(idx).isInterfaceObjectType(source)) {\n continue;\n }\n\n const subgraphName = this.names[idx];\n const schema = source.schema();\n const definedImplementations = supergraphImplementations.map((i) => schema.type(i.name)).filter(isDefined);\n if (definedImplementations.length > 0) {\n this.errors.push(addSubgraphToError(\n ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n `Interface type \"${dest.coordinate}\" is defined as an @interfaceObject in subgraph \"${subgraphName}\" so that subgraph should not define any of the implementation types of \"${dest.coordinate}\", but it defines ${printTypes(definedImplementations)}`,\n { nodes: sourceASTs(source, ...definedImplementations) },\n ),\n subgraphName,\n ));\n }\n }\n }\n\n private mergeUnion(sources: Sources, dest: UnionType) {\n for (const source of sources.values()) {\n if (!source) {\n continue;\n }\n for (const type of source.types()) {\n if (!dest.hasTypeMember(type.name)) {\n dest.addType(type.name);\n }\n }\n }\n for (const type of dest.types()) {\n this.addJoinUnionMember(sources, dest, type);\n this.hintOnInconsistentUnionMember(sources, dest, type.name);\n }\n }\n\n private addJoinUnionMember(sources: Sources, dest: UnionType, member: ObjectType) {\n const joinUnionMemberDirective = this.joinSpec.unionMemberDirective(this.merged);\n // We should always be merging with the latest join spec, so this should exists, but well, in prior versions where\n // the directive didn't existed, we simply did had any replacement so ...\n if (!joinUnionMemberDirective) {\n return;\n }\n\n for (const [idx, source] of sources.entries()) {\n if (!source?.hasTypeMember(member.name)) {\n continue;\n }\n\n const name = this.joinSpecName(idx);\n dest.applyDirective(joinUnionMemberDirective, {\n graph: name,\n member: member.name,\n });\n }\n }\n\n private hintOnInconsistentUnionMember(\n sources: Sources,\n dest: UnionType,\n memberName: string\n ) {\n for (const source of sources.values()) {\n // As soon as we find a subgraph that has the type but not the member, we hint.\n if (source && !source.hasTypeMember(memberName)) {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_UNION_MEMBER,\n message: `Union type \"${dest}\" includes member type \"${memberName}\" in some but not all defining subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: type => type.hasTypeMember(memberName) ? 'yes' : 'no',\n supergraphElementPrinter: (_, subgraphs) => `\"${memberName}\" is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n });\n return;\n }\n }\n }\n\n private mergeEnum(sources: Sources, dest: EnumType) {\n let usage = this.enumUsages.get(dest.name);\n if (!usage) {\n // If the enum is unused, we have a choice to make. We could skip the enum entirely (after all, exposing an unreferenced type mostly \"pollutes\" the supergraph API), but\n // some evidence shows that many a user have such unused enums in federation 1 and having those removed from their API might be surprising. We could merge it as\n // an \"input-only\" or as a \"input/ouput\" type, but the hints/errors generated in both those cases would be confusing in that case, and while we could amend them\n // for this case, it would complicate things and doesn't feel like it would feel very justified. So we merge it as an \"output\" type, which is the least contraining\n // option. We do raise an hint though so users can notice this.\n usage = { position: 'Output', examples: {}};\n this.hints.push(new CompositionHint(\n HINTS.UNUSED_ENUM_TYPE,\n `Enum type \"${dest}\" is defined but unused. It will be included in the supergraph with all the values appearing in any subgraph (\"as if\" it was only used as an output type).`,\n dest\n ));\n }\n\n for (const source of sources.values()) {\n if (!source) {\n continue;\n }\n for (const value of source.values) {\n // Note that we add all the values we see as a simple way to know which values there is to consider. But some of those value may\n // be removed later in `mergeEnumValue`\n if (!dest.value(value.name)) {\n dest.addValue(value.name);\n }\n }\n }\n\n for (const value of dest.values) {\n this.mergeEnumValue(sources, dest, value, usage);\n }\n\n // We could be left with an enum type with no values, and that's invalid in graphQL\n if (dest.values.length === 0) {\n this.errors.push(ERRORS.EMPTY_MERGED_ENUM_TYPE.err(\n `None of the values of enum type \"${dest}\" are defined consistently in all the subgraphs defining that type. As only values common to all subgraphs are merged, this would result in an empty type.`,\n { nodes: sourceASTs(...sources.values()) },\n ));\n }\n }\n\n private mergeEnumValue(\n sources: Sources,\n dest: EnumType,\n value: EnumValue,\n { position, examples }: EnumTypeUsage,\n ) {\n // We merge directives (and description while at it) on the value even though we might remove it later in that function,\n // but we do so because:\n // 1. this will catch any problems merging the description/directives (which feels like a good thing).\n // 2. it easier to see if the value is marked @inaccessible.\n const valueSources = mapSources(sources, s => s?.value(value.name));\n this.mergeDescription(valueSources, value);\n this.recordAppliedDirectivesToMerge(valueSources, value);\n this.addJoinEnumValue(valueSources, value);\n\n const isInaccessible = this.inaccessibleDirectiveInSupergraph\n && value.hasAppliedDirective(this.inaccessibleDirectiveInSupergraph);\n // The merging strategy depends on the enum type usage:\n // - if it is _only_ used in position of Input type, we merge it with an \"intersection\" strategy (like other input types/things).\n // - if it is _only_ used in position of Output type, we merge it with an \"union\" strategy (like other output types/things).\n // - otherwise, it's used as both input and output and we can only merge it if it has the same values in all subgraphs.\n // So in particular, the value will be in the supergraph only if it is either an \"output only\" enum, or if the value is in all subgraphs.\n // Note that (like for input object fields), manually marking the value as @inaccessible let's use skips any check and add the value\n // regardless of inconsistencies.\n if (\n !isInaccessible &&\n position !== 'Output' &&\n someSources(sources, (source) => source && !source.value(value.name))\n ) {\n // We have a source (subgraph) that _has_ the enum type but not that particular enum value. If we've in the \"both input and output usages\",\n // that's where we have to fail. But if we're in the \"only input\" case, we simply don't merge that particular value and hint about it.\n if (position === 'Both') {\n const inputExample = examples.Input!;\n const outputExample = examples.Output!;\n this.mismatchReporter.reportMismatchErrorWithSpecifics({\n code: ERRORS.ENUM_VALUE_MISMATCH,\n message: `Enum type \"${dest}\" is used as both input type (for example, as type of \"${inputExample.coordinate}\") and output type (for example, as type of \"${outputExample.coordinate}\"), but value \"${value}\" is not defined in all the subgraphs defining \"${dest}\": `,\n mismatchedElement: dest,\n subgraphElements: sources,\n mismatchAccessor: (type) => type?.value(value.name) ? 'yes' : 'no',\n supergraphElementPrinter: (_, subgraphs) => `\"${value}\" is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n extraNodes: sourceASTs(inputExample, outputExample),\n });\n // We leave the value in the merged output in that case because:\n // 1. it's harmless to do so; we have an error so we won't return a supergraph.\n // 2. it avoids generating an additional \"enum type is empty\" error in `mergeEnum` if all the values are inconsistent.\n } else {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM,\n message: `Value \"${value}\" of enum type \"${dest}\" will not be part of the supergraph as it is not defined in all the subgraphs defining \"${dest}\": `,\n supergraphElement: dest,\n subgraphElements: sources,\n targetedElement: value,\n elementToString: (type) => type.value(value.name) ? 'yes' : 'no',\n supergraphElementPrinter: (_, subgraphs) => `\"${value}\" is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n });\n // We remove the value after the generation of the hint/errors because `reportMismatchHint` will show the message for the subgraphs that are \"like\" the supergraph\n // first, and the message flows better if we say which subgraph defines the value first, so we want the value to still be present for the generation of the\n // message.\n value.remove();\n }\n } else if (position === 'Output') {\n this.hintOnInconsistentOutputEnumValue(sources, dest, value);\n }\n }\n\n private addJoinEnumValue(sources: Sources, dest: EnumValue) {\n const joinEnumValueDirective = this.joinSpec.enumValueDirective(this.merged);\n // We should always be merging with the latest join spec, so this should exists, but well, in prior versions where\n // the directive didn't existed, we simply did had any replacement so ...\n if (!joinEnumValueDirective) {\n return;\n }\n\n for (const [idx, source] of sources.entries()) {\n if (!source) {\n continue;\n }\n\n const name = this.joinSpecName(idx);\n dest.applyDirective(joinEnumValueDirective, {\n graph: name,\n });\n }\n }\n\n private hintOnInconsistentOutputEnumValue(\n sources: Sources,\n dest: EnumType,\n value: EnumValue,\n ) {\n const valueName: string = value.name\n for (const source of sources.values()) {\n // As soon as we find a subgraph that has the type but not the member, we hint.\n if (source && !source.value(valueName)) {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM,\n message: `Value \"${valueName}\" of enum type \"${dest}\" has been added to the supergraph but is only defined in a subset of the subgraphs defining \"${dest}\": `,\n supergraphElement: dest,\n subgraphElements: sources,\n targetedElement: value,\n elementToString: type => type.value(valueName) ? 'yes' : 'no',\n supergraphElementPrinter: (_, subgraphs) => `\"${valueName}\" is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n });\n return;\n }\n }\n }\n\n private mergeInput(inputSources: Sources, dest: InputObjectType) {\n // Like for other inputs, we add all the fields found in any subgraphs initially as a simple mean to have a complete list of\n // field to iterate over, but we will remove those that are not in all subgraphs.\n const added = this.addFieldsShallow(inputSources, dest);\n added.forEach((subgraphFields, destField) => {\n // We merge the details of the field first, even if we may remove it afterwards because 1) this ensure we always checks type\n // compatibility between definitions and 2) we actually want to see if the result is marked inaccessible or not and it makes\n // that easier.\n this.mergeInputField(subgraphFields, destField);\n const isInaccessible = this.inaccessibleDirectiveInSupergraph\n && destField.hasAppliedDirective(this.inaccessibleDirectiveInSupergraph);\n // Note that if the field is manually marked @inaccessible, we can always accept it to be inconsistent between subgraphs since\n // it won't be exposed in the API, and we don't hint about it because we're just doing what the user is explicitely asking.\n if (!isInaccessible && someSources(subgraphFields, field => !field)) {\n // One of the subgraph has the input type but not that field. If the field is optional, we remove it for the supergraph\n // and issue a hint. But if it is required, we have to error out.\n const nonOptionalSources = filterSources(\n mapSources(subgraphFields, (field, i) => field?.isRequired() ? this.names[i] : undefined),\n );\n if (nonOptionalSources.size > 0) {\n const nonOptionalSubgraphs = printSubgraphNames(Array.from(nonOptionalSources.values()).filter(isDefined));\n const missingSources = printSubgraphNames(Array.from(\n mapSources(subgraphFields, (field, i) => !field ? this.names[i] : undefined).values()\n ).filter(isDefined));\n this.errors.push(ERRORS.REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH.err(\n `Input object field \"${destField.coordinate}\" is required in some subgraphs but does not appear in all subgraphs: it is required in ${nonOptionalSubgraphs} but does not appear in ${missingSources}`,\n { nodes: sourceASTs(...subgraphFields.values()) },\n ));\n } else {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_INPUT_OBJECT_FIELD,\n message: `Input object field \"${destField.name}\" will not be added to \"${dest}\" in the supergraph as it does not appear in all subgraphs: `,\n supergraphElement: destField,\n subgraphElements: subgraphFields,\n elementToString: _ => 'yes',\n // Note that the first callback is for element that are \"like the supergraph\" and we've pass `destField` which we havne't yet removed.\n supergraphElementPrinter: (_, subgraphs) => `it is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n includeMissingSources: true\n });\n }\n // Note that we remove the element after the hint/error because we access the parent in the hint message.\n destField.remove();\n }\n });\n\n // We could be left with an input type with no fields, and that's invalid in graphQL\n if (!dest.hasFields()) {\n this.errors.push(ERRORS.EMPTY_MERGED_INPUT_TYPE.err(\n `None of the fields of input object type \"${dest}\" are consistently defined in all the subgraphs defining that type. As only fields common to all subgraphs are merged, this would result in an empty type.`,\n { nodes: sourceASTs(...inputSources.values()) },\n ));\n }\n }\n\n private mergeInputField(sources: Sources, dest: InputFieldDefinition) {\n this.mergeDescription(sources, dest);\n this.recordAppliedDirectivesToMerge(sources, dest);\n const allTypesEqual = this.mergeTypeReference(sources, dest, true);\n const mergeContext = new FieldMergeContext(sources);\n this.addJoinField({ sources, dest, allTypesEqual, mergeContext });\n this.mergeDefaultValue(sources, dest, 'Input field');\n }\n\n private mergeDirectiveDefinition(sources: Sources, dest: DirectiveDefinition) {\n // We have 2 behavior depending on the kind of directives:\n // 1) for the few handpicked type system directives that we merge, we always want to keep\n // them (it's ok if a subgraph decided to not include the definition because that particular\n // subgraph didn't use the directive on its own definitions). For those, we essentially take\n // a \"union\" strategy.\n // 2) for other directives, the ones we keep for their 'execution' locations, we instead\n // use an \"intersection\" strategy: we only keep directives that are defined everywhere.\n // The reason is that those directives may be used anywhere in user queries (those made\n // against the supergraph API), and hence can end up in queries to any subgraph, and as\n // a consequence all subgraphs need to be able to handle any application of the directive.\n // Which we can only guarantee if all the subgraphs know the directive, and that the directive\n // definition is the intersection of all definitions (meaning that if there divergence in\n // locations, we only expose locations that are common everywhere).\n if (this.composeDirectiveManager.directiveExistsInSupergraph(dest.name)) {\n this.mergeCustomCoreDirective(dest);\n } else if (someSources(sources, (s, idx) => s && this.isMergedDirective(this.names[idx], s))) {\n this.mergeExecutableDirectiveDefinition(sources, dest);\n }\n }\n\n // Note: as far as directive definition goes, we currently only merge directive having execution location, and only for\n // thos locations. Any type system directive definition that propagates to the supergraph (graphQL built-ins and `@tag`)\n // is currently handled in an hard-coded way. This will change very soon however so keeping this code around to be\n // re-enabled by a future commit.\n //private mergeTypeSystemDirectiveDefinition(sources: (DirectiveDefinition | undefined)[], dest: DirectiveDefinition) {\n // this.addArgumentsShallow(sources, dest);\n // for (const destArg of dest.arguments()) {\n // const subgraphArgs = sources.map(f => f?.argument(destArg.name));\n // this.mergeArgument(subgraphArgs, destArg);\n // }\n\n // let repeatable: boolean | undefined = undefined;\n // let inconsistentRepeatable = false;\n // let locations: DirectiveLocation[] | undefined = undefined;\n // let inconsistentLocations = false;\n // for (const source of sources) {\n // if (!source) {\n // continue;\n // }\n // if (repeatable === undefined) {\n // repeatable = source.repeatable;\n // } else if (repeatable !== source.repeatable) {\n // inconsistentRepeatable = true;\n // }\n\n // const sourceLocations = this.extractLocations(source);\n // if (!locations) {\n // locations = sourceLocations;\n // } else {\n // if (!arrayEquals(locations, sourceLocations)) {\n // inconsistentLocations = true;\n // }\n // // This create duplicates, but `addLocations` below eliminate them.\n // sourceLocations.forEach(loc => {\n // if (!locations!.includes(loc)) {\n // locations!.push(loc);\n // }\n // });\n // }\n // }\n // dest.repeatable = repeatable!;\n // dest.addLocations(...locations!);\n\n // if (inconsistentRepeatable) {\n // this.mismatchReporter.reportMismatchHint(\n // HINTS.INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE,\n // `Type system directive \"${dest}\" is marked repeatable in the supergraph but it is inconsistently marked repeatable in subgraphs: `,\n // dest,\n // sources,\n // directive => directive.repeatable ? 'yes' : 'no',\n // // Note that the first callback is for element that are \"like the supergraph\". And the supergraph will be repeatable on inconsistencies.\n // (_, subgraphs) => `it is repeatable in ${subgraphs}`,\n // (_, subgraphs) => ` but not in ${subgraphs}`,\n // );\n // }\n // if (inconsistentLocations) {\n // this.mismatchReporter.reportMismatchHint(\n // HINTS.INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS,\n // `Type system directive \"${dest}\" has inconsistent locations across subgraphs `,\n // dest,\n // sources,\n // directive => locationString(this.extractLocations(directive)),\n // // Note that the first callback is for element that are \"like the supergraph\".\n // (locs, subgraphs) => `and will use ${locs} (union of all subgraphs) in the supergraph, but has: ${subgraphs ? `${locs} in ${subgraphs} and ` : ''}`,\n // (locs, subgraphs) => `${locs} in ${subgraphs}`,\n // );\n // }\n //}\n\n private mergeCustomCoreDirective(dest: DirectiveDefinition) {\n const def = this.composeDirectiveManager.getLatestDirectiveDefinition(dest.name);\n if (def) {\n dest.repeatable = def.repeatable;\n dest.description = def.description;\n dest.addLocations(...def.locations);\n this.addArgumentsShallow(sourcesFromArray([def]), dest);\n for (const arg of def.arguments()) {\n const destArg = dest.argument(arg.name);\n assert(destArg, 'argument must exist on destination directive');\n this.mergeArgument(sourcesFromArray([arg]), destArg);\n }\n }\n }\n\n private mergeExecutableDirectiveDefinition(sources: Sources, dest: DirectiveDefinition) {\n let repeatable: boolean | undefined = undefined;\n let inconsistentRepeatable = false;\n let locations: DirectiveLocation[] | undefined = undefined;\n let inconsistentLocations = false;\n for (const source of sources.values()) {\n if (!source) {\n // An executable directive could appear in any place of a query and thus get to any subgraph, so we cannot keep an\n // executable directive unless it is in all subgraphs. We use an 'intersection' strategy.\n const usages = dest.remove();\n assert(usages.length === 0, () => `Found usages of executable directive ${dest}: ${usages}`);\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE,\n message: `Executable directive \"${dest}\" will not be part of the supergraph as it does not appear in all subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: _ => 'yes',\n supergraphElementPrinter: (_, subgraphs) => `it is defined in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n includeMissingSources: true,\n });\n return;\n }\n\n if (repeatable === undefined) {\n repeatable = source.repeatable;\n } else if (repeatable !== source.repeatable) {\n inconsistentRepeatable = true;\n // Again, we use an intersection strategy: we can let users repeat the directive on a query only if\n // all subgraphs know it as repeatable.\n repeatable = false;\n }\n\n const sourceLocations = this.extractExecutableLocations(source);\n if (!locations) {\n locations = sourceLocations;\n } else {\n if (!arrayEquals(locations, sourceLocations)) {\n inconsistentLocations = true;\n }\n // Still an intersection: we can only allow locations that all subgraphs understand.\n locations = locations.filter(loc => sourceLocations.includes(loc));\n if (locations.length === 0) {\n const usages = dest.remove();\n assert(usages.length === 0, () => `Found usages of executable directive ${dest}: ${usages}`);\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION,\n message: `Executable directive \"${dest}\" has no location that is common to all subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: directive => locationString(this.extractExecutableLocations(directive)),\n // Note that the first callback is for element that are \"like the supergraph\" and only the subgraph will have no locations (the\n // source that do not have the directive are not included).\n supergraphElementPrinter: () => `it will not appear in the supergraph as there no intersection between `,\n otherElementsPrinter: (locs, subgraphs) => `${locs} in ${subgraphs}`,\n });\n return;\n }\n }\n }\n dest.repeatable = repeatable!;\n dest.addLocations(...locations!);\n\n this.mergeDescription(sources, dest);\n\n if (inconsistentRepeatable) {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE,\n message: `Executable directive \"${dest}\" will not be marked repeatable in the supergraph as it is inconsistently marked repeatable in subgraphs: `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: directive => directive.repeatable ? 'yes' : 'no',\n supergraphElementPrinter: (_, subgraphs) => `it is not repeatable in ${subgraphs}`,\n otherElementsPrinter: (_, subgraphs) => ` but is repeatable in ${subgraphs}`,\n });\n }\n if (inconsistentLocations) {\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS,\n message: `Executable directive \"${dest}\" has inconsistent locations across subgraphs `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: directive => locationString(this.extractExecutableLocations(directive)),\n supergraphElementPrinter: (locs, subgraphs) => `and will use ${locs} (intersection of all subgraphs) in the supergraph, but has: ${subgraphs ? `${locs} in ${subgraphs} and ` : ''}`,\n otherElementsPrinter: (locs, subgraphs) => `${locs} in ${subgraphs}`,\n });\n }\n\n // Doing args last, mostly so we don't bother adding if the directive doesn't make it in.\n this.addArgumentsShallow(sources, dest);\n for (const destArg of dest.arguments()) {\n const subgraphArgs = mapSources(sources, f => f?.argument(destArg.name));\n this.mergeArgument(subgraphArgs, destArg);\n }\n }\n\n private extractExecutableLocations(source: DirectiveDefinition): DirectiveLocation[] {\n // We sort the locations so that the return list of locations essentially act like a set.\n return this.filterExecutableDirectiveLocations(source).concat().sort();\n }\n\n private filterExecutableDirectiveLocations(source: DirectiveDefinition): readonly DirectiveLocation[] {\n return source.locations.filter(loc => isExecutableDirectiveLocation(loc));\n }\n\n // In general, we want to merge applied directives after merging elements, the one exception\n // is @inaccessible, which is necessary to exist in the supergraph for EnumValues to properly\n // determine whether the fact that a value is both input / output will matter\n private recordAppliedDirectivesToMerge(sources: Sources>, dest: SchemaElement) {\n const inaccessibleName = this.inaccessibleDirectiveInSupergraph?.name;\n const names = this.gatherAppliedDirectiveNames(sources);\n\n if (inaccessibleName && names.has(inaccessibleName)) {\n this.mergeAppliedDirective(inaccessibleName, sources, dest);\n names.delete(inaccessibleName);\n }\n this.appliedDirectivesToMerge.push({\n names,\n sources,\n dest,\n });\n }\n\n // to be called after elements are merged\n private mergeAllAppliedDirectives() {\n for (const { names, sources, dest } of this.appliedDirectivesToMerge) {\n // There is some cases where we had to call the method that records directives to merged\n // on a `dest` that ended up being removed from the ouptut (typically because we needed\n // to known if that `dest` was @inaccessible before deciding if it should be kept or\n // not). So check that the `dest` is still there (still \"attached\") and skip it entirely\n // otherwise.\n if (!dest.isAttached()) {\n continue;\n }\n for (const name of names) {\n this.mergeAppliedDirective(name, sources, dest);\n }\n }\n this.appliedDirectivesToMerge = [];\n }\n\n private gatherAppliedDirectiveNames(sources: Sources>): Set {\n const names = new Set();\n sources.forEach((source, idx) => {\n if (source) {\n for (const directive of source.appliedDirectives) {\n if (this.isMergedDirective(this.names[idx], directive)) {\n names.add(directive.name);\n }\n }\n }\n });\n return names;\n }\n\n private mergeAppliedDirective(name: string, sources: Sources>, dest: SchemaElement) {\n // TODO: we currently \"only\" merge together applications that have the exact same arguments (with defaults expanded however),\n // but when an argument is an input object type, we should (?) ignore those fields that will not be included in the supergraph\n // due the intersection merging of input types, otherwise the merged value may be invalid for the supergraph.\n let perSource: { directives: Directive[], subgraphIndex: number}[] = [];\n sources.forEach((source, index) => {\n if (source) {\n const directives: Directive[] = source.appliedDirectivesOf(name);\n if (directives.length > 0) {\n perSource.push({ directives, subgraphIndex: index });\n }\n }\n });\n\n if (perSource.length === 0) {\n return;\n }\n\n const directiveInSupergraph = this.mergedFederationDirectiveInSupergraphByDirectiveName.get(name);\n \n if (dest.schema().directive(name)?.repeatable) {\n // For repeatable directives, we simply include each application found but with exact duplicates removed\n while (perSource.length > 0) {\n const directive = perSource[0].directives[0];\n const subgraphIndex = perSource[0].subgraphIndex;\n \n const transformedArgs = directiveInSupergraph && directiveInSupergraph.staticArgumentTransform && directiveInSupergraph.staticArgumentTransform(this.subgraphs.values()[subgraphIndex], directive.arguments(false));\n dest.applyDirective(directive.name, transformedArgs ?? directive.arguments(false));\n // We remove every instances of this particular application. That is we remove any other applicaiton with\n // the same arguments. Note that when doing so, we include default values. This allows \"merging\" 2 applications\n // when one rely on the default value while another don't but explicitely uses that exact default value.\n perSource = perSource\n .map(ds => ({ directives: ds.directives.filter(d => !this.sameDirectiveApplication(directive, d)), subgraphIndex: ds.subgraphIndex }))\n .filter(ds => ds.directives.length);\n }\n } else {\n // When non-repeatable, we use a similar strategy than for descriptions: we count the occurence of each _different_ application (different arguments)\n // and if there is more than one option (that is, if not all subgraph have the same application), we use in the supergraph whichever application appeared\n // in the most subgraph and warn that we have had to ignore some other applications (of course, if the directive has no arguments, this is moot and\n // we'll never warn, but this is handled by the general code below.\n const differentApplications: Directive[] = [];\n const counts: number[] = [];\n for (const { directives: source } of perSource) {\n assert(source.length === 1, () => `Non-repeatable directive shouldn't have multiple application ${source} in a subgraph`)\n const application = source[0];\n const idx = differentApplications.findIndex((existing) => this.sameDirectiveApplication(existing, application));\n if (idx < 0) {\n differentApplications.push(application);\n counts.push(1);\n } else {\n counts[idx]++;\n }\n }\n\n assert(differentApplications.length > 0, 'We exited early when there was no applications, so we should have found one');\n if (differentApplications.length === 1) {\n dest.applyDirective(name, differentApplications[0].arguments(false));\n } else {\n const info = this.mergedFederationDirectiveInSupergraphByDirectiveName.get(name);\n if (info && info.argumentsMerger) {\n const mergedArguments = Object.create(null);\n const applicationsArguments = differentApplications.map((a) => a.arguments(true));\n for (const argDef of info.definition.arguments()) {\n const values = applicationsArguments.map((args) => args[argDef.name]);\n mergedArguments[argDef.name] = info.argumentsMerger.merge(argDef.name, values);\n }\n dest.applyDirective(name, mergedArguments);\n this.mismatchReporter.pushHint(new CompositionHint(\n HINTS.MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n `Directive @${name} is applied to \"${(dest as any)['coordinate'] ?? dest}\" in multiple subgraphs with different arguments. Merging strategies used by arguments: ${info.argumentsMerger}`,\n undefined,\n ));\n } else {\n const idx = indexOfMax(counts);\n // We apply the directive to the destination first, we allows `reportMismatchHint` to find which application is used in\n // the supergraph.\n dest.applyDirective(name, differentApplications[idx].arguments(false));\n this.mismatchReporter.reportMismatchHint({\n code: HINTS.INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n message: `Non-repeatable directive @${name} is applied to \"${(dest as any)['coordinate'] ?? dest}\" in multiple subgraphs but with incompatible arguments. `,\n supergraphElement: dest,\n subgraphElements: sources,\n elementToString: (elt) => {\n const args = elt.appliedDirectivesOf(name).pop()?.arguments();\n return args === undefined\n ? undefined\n : Object.values(args).length === 0 ? 'no arguments' : (`arguments ${valueToString(args)}`);\n },\n supergraphElementPrinter: (application, subgraphs) => `The supergraph will use ${application} (from ${subgraphs}), but found `,\n otherElementsPrinter: (application, subgraphs) => `${application} in ${subgraphs}`,\n });\n }\n }\n }\n }\n\n private sameDirectiveApplication(application1: Directive, application2: Directive): boolean {\n // Note that when comparing arguments, we include default values. This means that we consider it the same thing (as far as\n // merging application goes) to rely on a default value or to pass that very exact value explicitely. In theory we\n // could make the difference between the two, but this feel more surprising/convenient.\n // TODO: we use valueEquals on the whole argument object rather than on individual values. This\n // work just fine given how valueEquals is defined today, but we might want to clean this nonetheless.\n return application1.name === application2.name\n && valueEquals(application1.arguments(true), application2.arguments(true));\n }\n\n private mergeSchemaDefinition(sources: Sources, dest: SchemaDefinition) {\n this.mergeDescription(sources, dest);\n this.recordAppliedDirectivesToMerge(sources, dest);\n // Before merging, we actually rename all the root types to their default name\n // in subgraphs (see federation.ts, `prepareSubgraphsForFederation`), so this\n // method should never report an error in practice as there should never be\n // a name discrepancy. That said, it's easy enough to double-check this, which\n // might at least help debugging case where we forgot to call\n // `prepareSubgraphsForFederation`.\n for (const rootKind of allSchemaRootKinds) {\n let rootType: string | undefined;\n let isIncompatible = false;\n for (const source of sources.values()) {\n if (!source) continue;\n const sourceType = filteredRoot(source, rootKind);\n if (!sourceType) continue;\n if (rootType) {\n isIncompatible = isIncompatible || rootType !== sourceType.name;\n } else {\n rootType = sourceType.name;\n }\n }\n if (!rootType) {\n continue;\n }\n dest.setRoot(rootKind, rootType);\n\n // Because we rename all root type in subgraphs to their default names, we shouldn't ever have incompatibilities here.\n assert(!isIncompatible, () => `Should not have incompatible root type for ${rootKind}`);\n }\n this.addJoinDirectiveDirectives(sources, dest);\n }\n\n private shouldUseJoinDirectiveForURL(url: FeatureUrl | undefined): boolean {\n return Boolean(\n url &&\n this.joinDirectiveIdentityURLs.has(url.identity)\n );\n }\n\n private computeMapFromImportNameToIdentityUrl(\n schema: Schema,\n ): Map {\n // For each @link directive on the schema definition, store its normalized\n // identity url in a Map, reachable from all its imported names.\n const map = new Map();\n for (const linkDirective of schema.schemaDefinition.appliedDirectivesOf('link')) {\n const { url, import: imports } = linkDirective.arguments();\n const parsedUrl = FeatureUrl.maybeParse(url);\n if (parsedUrl && imports) {\n for (const i of imports) {\n if (typeof i === 'string') {\n map.set(i, parsedUrl);\n } else {\n map.set(i.as ?? i.name, parsedUrl);\n }\n }\n }\n }\n return map;\n }\n\n // This method gets called at various points during the merge to allow\n // subgraph directive applications to be reflected (unapplied) in the\n // supergraph, using the @join__directive(graphs,name,args) directive.\n private addJoinDirectiveDirectives(\n sources: Sources>,\n dest: SchemaElement,\n ) {\n const joinsByDirectiveName: {\n [directiveName: string]: Array<{\n graphs: string[];\n args: Record;\n }>\n } = Object.create(null);\n\n for (const [idx, source] of sources.entries()) {\n if (!source) continue;\n const graph = this.joinSpecName(idx);\n\n // We compute this map only once per subgraph, as it takes time\n // proportional to the size of the schema.\n const linkImportIdentityURLMap =\n this.schemaToImportNameToFeatureUrl.get(source.schema());\n if (!linkImportIdentityURLMap) continue;\n\n for (const directive of source.appliedDirectives) {\n let shouldIncludeAsJoinDirective = false;\n\n if (directive.name === 'link') {\n const { url } = directive.arguments();\n const parsedUrl = FeatureUrl.maybeParse(url);\n if (typeof url === 'string' && parsedUrl) {\n shouldIncludeAsJoinDirective =\n this.shouldUseJoinDirectiveForURL(parsedUrl);\n }\n } else {\n // To be consistent with other code accessing\n // linkImportIdentityURLMap, we ensure directive names start with a\n // leading @.\n const nameWithAtSymbol =\n directive.name.startsWith('@') ? directive.name : '@' + directive.name;\n shouldIncludeAsJoinDirective = this.shouldUseJoinDirectiveForURL(\n linkImportIdentityURLMap.get(nameWithAtSymbol),\n );\n }\n\n if (shouldIncludeAsJoinDirective) {\n const existingJoins = (joinsByDirectiveName[directive.name] ??= []);\n let found = false;\n for (const existingJoin of existingJoins) {\n if (valueEquals(existingJoin.args, directive.arguments())) {\n existingJoin.graphs.push(graph);\n found = true;\n break;\n }\n }\n if (!found) {\n existingJoins.push({\n graphs: [graph],\n args: directive.arguments(),\n });\n }\n }\n }\n }\n\n const joinDirective = this.joinSpec.directiveDirective(this.merged);\n Object.keys(joinsByDirectiveName).forEach(directiveName => {\n joinsByDirectiveName[directiveName].forEach(join => {\n dest.applyDirective(joinDirective, {\n graphs: join.graphs,\n name: directiveName,\n args: join.args,\n });\n });\n });\n }\n\n private filterSubgraphs(predicate: (schema: Schema) => boolean): string[] {\n return this.subgraphsSchema.map((s, i) => predicate(s) ? this.names[i] : undefined).filter(n => n !== undefined) as string[];\n }\n\n private subgraphByName(name: string): Schema {\n return this.subgraphsSchema[this.names.indexOf(name)];\n }\n\n // TODO: the code here largely duplicate code that is in `internals-js/src/validate.ts`, except that when it detect an error, it\n // provides an error in terms of subgraph inputs (rather than what is merge). We could maybe try to save some of that duplication.\n private postMergeValidations() {\n for (const type of this.merged.types()) {\n if (!isObjectType(type) && !isInterfaceType(type)) {\n continue;\n }\n for (const itf of type.interfaces()) {\n for (const itfField of itf.fields()) {\n const field = type.field(itfField.name);\n if (!field) {\n // This means that the type was defined (or at least implemented the interface) only in subgraphs where the interface didn't have\n // that field.\n const subgraphsWithTheField = this.filterSubgraphs(s => s.typeOfKind(itf.name, 'InterfaceType')?.field(itfField.name) !== undefined);\n const subgraphsWithTypeImplementingItf = this.filterSubgraphs(s => {\n const typeInSubgraph = s.type(type.name);\n return typeInSubgraph !== undefined && (typeInSubgraph as ObjectType | InterfaceType).implementsInterface(itf.name);\n });\n this.errors.push(ERRORS.INTERFACE_FIELD_NO_IMPLEM.err(\n `Interface field \"${itfField.coordinate}\" is declared in ${printSubgraphNames(subgraphsWithTheField)} but type \"${type}\", `\n + `which implements \"${itf}\" only in ${printSubgraphNames(subgraphsWithTypeImplementingItf)} does not have field \"${itfField.name}\".`,\n {\n nodes: sourceASTs(\n ...subgraphsWithTheField.map(s => this.subgraphByName(s).typeOfKind(itf.name, 'InterfaceType')?.field(itfField.name)),\n ...subgraphsWithTypeImplementingItf.map(s => this.subgraphByName(s).type(type.name))\n )\n }\n ));\n continue;\n }\n\n // TODO: should we validate more? Can we have some invalid implementation of a field post-merging?\n }\n }\n }\n\n // We need to redo some validation for @requires after merge. The reason is that each subgraph validates that its own\n // @requires are valid, but \"requirements\" are requested from _other_ subgraphs (by definition of @requires really),\n // and there is a few situations (see details below) where a validity within the originated subgraph does not entail\n // validity for all subgraph that would have to provide those \"requirements\".\n // Long story short, we need to re-validate every @requires against the supergraph to guarantee it will always work\n // at runtime.\n for (const subgraph of this.subgraphs) {\n for (const requiresApplication of subgraph.metadata().requiresDirective().applications()) {\n const originalField = requiresApplication.parent as FieldDefinition;\n assert(originalField.kind === 'FieldDefinition', () => `Expected ${inspect(originalField)} to be a field`);\n const mergedType = this.merged.type(originalField.parent.name);\n // The type should exists: there is a few types we don't merge, but those are from specific core features and they shouldn't have @provides.\n // In fact, if we were to not merge a type with a @provides, this would essentially mean that @provides cannot work, so worth catching\n // the issue early if this ever happen for some reason. And of course, the type should be composite since it is in at least the one\n // subgraph we're checking.\n assert(mergedType && isCompositeType(mergedType), () => `Merged type ${originalField.parent.name} should exist should have field ${originalField.name}`)\n assert(isCompositeType(mergedType), `${mergedType} should be a composite type but got ${mergedType.kind}`);\n try {\n parseFieldSetArgument({\n parentType: mergedType,\n directive: requiresApplication,\n decorateValidationErrors: false,\n });\n } catch (e) {\n if (!(e instanceof GraphQLError)) {\n throw e;\n }\n\n // Providing a useful error message to the user here is tricky in the general case because what we checked is that\n // a given subgraph @provides definition is invalid \"on the supergraph\", but the user seeing the error will not have\n // the supergraph, so we need to express the error in terms of the subgraphs.\n // But in practice, there is only a handful of cases that can trigger an error here. Indeed, at this point we know that\n // - the @require application is valid in its original subgraph.\n // - there was not merging errors (we don't call this whole method otherwise).\n // This eliminate the risk of the error being due to some invalid syntax, of some subsection on a non-composite or missing\n // on on a composite one (merging would have error), or of some unknown field in the selection (output types are merged\n // by union, so any field that was in the subgraph will be in the supergraph), or even any error due to the types of fields\n // involved (because the merged type is always a (non-strict) supertype of its counterpart in any subgraph, and anything\n // that could be queried in a subtype can be queried on a supertype).\n // As such, the only errors that we can have here are due to field arguments: because they are merged by intersection,\n // it _is_ possible that something that is valid in a subgraph is not valid in the supergraph. And the only 2 things that\n // can make such invalidity are:\n // 1. an argument may not be in the supergraph: it is in the subgraph, but not in all the subgraphs having the field,\n // and the `@provides` passes a concrete value to that argument.\n // 2. the type of an argument in the supergraph is a strict subtype the type that argument has in `subgraph` (the one\n // with the `@provides`) _and_ the `@provides` selection relies on the type difference. Now, argument types are input\n // types and the only subtyping difference input types is related to nullability (neither interfaces nor union are\n // input types in particular), so the only case this can happen is if a field `x` has some argument `a` type `A` in\n // `subgraph` but type `!A` with no default in the supergraph, _and_ the `@provides` queries that field `x` _without_\n // value for `a` (valid when `a` has type `A` but not with `!A` and no default).\n // So to ensure we provide good error messages, we brute-force detecting those 2 possible cases and have a special\n // treatment for each.\n // Note that this detection is based on pattern-matching the error message, which is somewhat fragile, but because we\n // only have 2 cases, we can easily cover them with unit tests, which means there is no practical risk of a message\n // change breaking this code and being released undetected. A cleaner implementation would probably require having\n // error codes and classes for all the graphqQL validations, but doing so cleanly is a fair amount of effort and probably\n // no justified \"just for this particular case\".\n const requireAST = requiresApplication.sourceAST ? [ addSubgraphToASTNode(requiresApplication.sourceAST, subgraph.name)] : [];\n\n const that = this;\n const registerError = (\n arg: string,\n field: string,\n isIncompatible: (f: FieldDefinition) => boolean,\n makeMsg: (incompatibleSubgraphs: string) => string,\n ) => {\n const incompatibleSubgraphs = that.subgraphs.values().map((otherSubgraph) => {\n if (otherSubgraph.name === subgraph.name) {\n return undefined;\n }\n const fieldInOther = otherSubgraph.schema.elementByCoordinate(field);\n const fieldIsIncompatible = fieldInOther\n && fieldInOther instanceof FieldDefinition\n && isIncompatible(fieldInOther);\n return fieldIsIncompatible\n ? {\n name: otherSubgraph.name,\n node: fieldInOther.sourceAST ? addSubgraphToASTNode(fieldInOther.sourceAST, otherSubgraph.name) : undefined,\n }\n : undefined;\n }).filter(isDefined);\n assert(incompatibleSubgraphs.length > 0, () => `Got error on ${arg} of ${field} but no \"incompatible\" subgraphs (error: ${e})`);\n const nodes = requireAST.concat(incompatibleSubgraphs.map((s) => s.node).filter(isDefined));\n const error = ERRORS.REQUIRES_INVALID_FIELDS.err(\n `On field \"${originalField.coordinate}\", for ${requiresApplication}: ${makeMsg(printSubgraphNames(incompatibleSubgraphs.map((s) => s.name)))}`,\n { nodes }\n );\n that.errors.push(addSubgraphToError(error, subgraph.name));\n }\n\n const unknownArgument = e.message.match(/Unknown argument \\\"(?[^\"]*)\\\" found in value: \\\"(?[^\"]*)\\\" has no argument.*/);\n if (unknownArgument) {\n const arg = unknownArgument.groups?.arg!;\n const field = unknownArgument.groups?.field!;\n registerError(\n arg,\n field,\n (f) => !f.argument(arg),\n (incompatibleSubgraphs) => `cannot provide a value for argument \"${arg}\" of field \"${field}\" as argument \"${arg}\" is not defined in ${incompatibleSubgraphs}`,\n );\n continue;\n }\n\n const missingMandatory = e.message.match(/Missing mandatory value for argument \\\"(?[^\"]*)\\\" of field \\\"(?[^\"]*)\\\".*/);\n if (missingMandatory) {\n const arg = missingMandatory.groups?.arg!;\n const field = missingMandatory.groups?.field!;\n registerError(\n arg,\n field,\n (f) => !!f.argument(arg)?.isRequired(),\n (incompatibleSubgraphs) => `no value provided for argument \"${arg}\" of field \"${field}\" but a value is mandatory as \"${arg}\" is required in ${incompatibleSubgraphs}`,\n );\n continue;\n }\n\n assert(false, () => `Unexpected error throw by ${requiresApplication} when evaluated on supergraph: ${e.message}`);\n }\n }\n }\n }\n\n private updateInaccessibleErrorsWithLinkToSubgraphs(\n errors: GraphQLError[]\n ): GraphQLError[] {\n // While we could just take the supergraph referencer coordinate and return\n // any corresponding elements in the subgraphs, some of those subgraph\n // referencers may not have been the cause of the erroneous reference; it\n // often depends on the kind of reference (the logic of which is captured\n // below).\n function isRelevantSubgraphReferencer(\n subgraphReferencer: NamedSchemaElement,\n err: GraphQLError,\n supergraphElements: string[],\n hasInaccessibleElements: boolean,\n ): boolean {\n switch (errorCode(err)) {\n case ERRORS.REFERENCED_INACCESSIBLE.code: {\n // We only care about subgraph fields/arguments/input fields whose\n // base type matches that of the inaccessible element.\n if (\n !((subgraphReferencer instanceof FieldDefinition) ||\n (subgraphReferencer instanceof ArgumentDefinition) ||\n (subgraphReferencer instanceof InputFieldDefinition))\n ) {\n return false;\n }\n const subgraphType = subgraphReferencer.type;\n const supergraphType = supergraphElements[0];\n\n return !!subgraphType &&\n baseType(subgraphType).name === supergraphType;\n }\n case ERRORS.DEFAULT_VALUE_USES_INACCESSIBLE.code: {\n // Default values are merged via intersection, so no need to filter\n // out any subgraph referencers here.\n return true;\n }\n case ERRORS.REQUIRED_INACCESSIBLE.code: {\n // An argument is required if it's non-nullable and has no default\n // value. This means that a required supergraph argument could be\n // the result of merging two non-required subgraph arguments (e.g.\n // one is non-nullable with a default while the other is nullable\n // without a default value). So we include nodes that are either\n // non-nullable or have no default value.\n if (\n !((subgraphReferencer instanceof ArgumentDefinition) ||\n (subgraphReferencer instanceof InputFieldDefinition))\n ) {\n return false;\n }\n const subgraphType = subgraphReferencer.type;\n return (subgraphType && isNonNullType(subgraphType)) ||\n subgraphReferencer.defaultValue === undefined;\n }\n case ERRORS.IMPLEMENTED_BY_INACCESSIBLE.code: {\n // Any subgraph containing the implemented field/argument is relevant,\n // so no need to filter out any subgraph elements here.\n return true;\n }\n case ERRORS.DISALLOWED_INACCESSIBLE.code: {\n // We only care about disallowed types/directives that contained at\n // least one @inaccessible descendant, so we filter by that here.\n return hasInaccessibleElements;\n }\n case ERRORS.ONLY_INACCESSIBLE_CHILDREN.code: {\n // We only care about parent types that contained at least one\n // @inaccessible descendant, so we filter by that here.\n return hasInaccessibleElements;\n }\n default: {\n return false;\n }\n }\n }\n\n return errors.map((err) => {\n const elements = err.extensions['inaccessible_elements'];\n if (!Array.isArray(elements)) return err;\n const errorNodes = [];\n const subgraphHasInaccessibleElements: boolean[] = [];\n for (const coordinate of elements) {\n if (typeof coordinate !== 'string') continue;\n errorNodes.push(...sourceASTs(...this.subgraphsSchema.flatMap(\n (subgraphSchema, subgraphIndex) => {\n const subgraphElement =\n subgraphSchema.elementByCoordinate(coordinate);\n if (subgraphElement) {\n const inaccessibleDirective =\n federationMetadata(subgraphSchema)!.inaccessibleDirective();\n if (subgraphElement.hasAppliedDirective(inaccessibleDirective)) {\n subgraphHasInaccessibleElements[subgraphIndex] = true;\n return [subgraphElement];\n }\n }\n return [];\n })));\n }\n\n const referencers = err.extensions['inaccessible_referencers'];\n if (Array.isArray(referencers)) {\n for (const coordinate of referencers) {\n if (typeof coordinate !== 'string') continue;\n errorNodes.push(...sourceASTs(...this.subgraphsSchema.flatMap(\n (subgraphSchema, subgraphIndex) => {\n const subgraphReferencer =\n subgraphSchema.elementByCoordinate(coordinate);\n if (\n subgraphReferencer &&\n isRelevantSubgraphReferencer(\n subgraphReferencer,\n err,\n elements,\n subgraphHasInaccessibleElements[subgraphIndex]\n )\n ) {\n return [subgraphReferencer];\n }\n return [];\n })));\n }\n }\n\n return errorNodes.length > 0\n ? withModifiedErrorNodes(err, errorNodes)\n : err;\n });\n }\n\n private validateSubscriptionField(sources: Sources>) {\n // no subgraph marks field as @shareable\n\n const fieldsWithShareable: FieldDefinition[] = [];\n for (const [idx, source] of sources.entries()) {\n if (source && source.hasAppliedDirective(this.metadata(idx).shareableDirective())) {\n fieldsWithShareable.push(source);\n }\n }\n if (fieldsWithShareable.length > 0) {\n const nodes = sourceASTs(...fieldsWithShareable);\n this.errors.push(ERRORS.INVALID_FIELD_SHARING.err(\n `Fields on root level subscription object cannot be marked as shareable`,\n { nodes},\n ));\n }\n }\n \n private getFieldsWithFromContextDirective(): Set {\n return this.getFieldsWithAppliedDirective(\n (subgraph: Subgraph) => subgraph.metadata().fromContextDirective(),\n (application: Directive>) => {\n const field = application.parent.parent;\n assert(isFieldDefinition(field), () => `Expected ${application.parent} to be a field`); \n return field;\n },\n );\n }\n \n private getFieldsWithOverrideDirective(): Set {\n return this.getFieldsWithAppliedDirective(\n (subgraph: Subgraph) => subgraph.metadata().overrideDirective(),\n (application: Directive>) => {\n const field = application.parent;\n assert(isFieldDefinition(field), () => `Expected ${application.parent} to be a field`); \n return field;\n }\n );\n }\n \n private getFieldsWithAppliedDirective(\n getDirective: (subgraph: Subgraph) => Post20FederationDirectiveDefinition,\n getField: (application: Directive>) => FieldDefinition,\n ) {\n const fields = new Set();\n for (const subgraph of this.subgraphs) {\n const directive = getDirective(subgraph);\n if (isFederationDirectiveDefinedInSchema(directive)) {\n for (const application of directive.applications()) {\n const field = getField(application);\n const coordinate = field.coordinate;\n if (!fields.has(coordinate)) {\n fields.add(coordinate);\n }\n }\n }\n }\n return fields;\n }\n}\n", "export * from './merge';\n", "import {\n addSubgraphToASTNode,\n assert,\n CompositeType,\n DirectiveDefinition,\n ERRORS,\n Field,\n FieldDefinition,\n FieldSelection,\n FragmentElement,\n InputType,\n isAbstractType,\n isCompositeType,\n isDefined,\n isInterfaceType,\n isLeafType,\n isNullableType,\n isObjectType,\n isUnionType,\n joinStrings,\n MultiMap,\n newDebugLogger,\n Operation,\n operationToDocument,\n printHumanReadableList,\n printSubgraphNames,\n Schema,\n SchemaRootKind,\n Selection,\n selectionOfElement,\n SelectionSet,\n SubgraphASTNode,\n selectionSetOf,\n typenameFieldName,\n validateSupergraph,\n VariableDefinitions,\n isOutputType,\n JoinFieldDirectiveArguments,\n ContextSpecDefinition,\n CONTEXT_VERSIONS,\n NamedSchemaElement,\n} from \"@apollo/federation-internals\";\nimport {\n Edge,\n federatedGraphRootTypeName,\n QueryGraph,\n subgraphEnteringTransition,\n GraphPath,\n RootPath,\n advancePathWithTransition,\n Transition,\n QueryGraphState,\n Unadvanceables,\n Unadvanceable,\n noConditionsResolution,\n TransitionPathWithLazyIndirectPaths,\n RootVertex,\n simpleValidationConditionResolver,\n ConditionResolver,\n UnadvanceableClosures,\n isUnadvanceableClosures,\n} from \"@apollo/query-graphs\";\nimport { CompositionHint, HINTS } from \"./hints\";\nimport { ASTNode, GraphQLError, print } from \"graphql\";\n\nconst debug = newDebugLogger('validation');\n\nexport class ValidationError extends Error {\n constructor(\n message: string,\n readonly supergraphUnsatisfiablePath: RootPath,\n readonly subgraphsPaths: RootPath[],\n readonly witness: Operation\n ) {\n super(message);\n this.name = 'ValidationError';\n }\n}\n\nfunction satisfiabilityError(\n unsatisfiablePath: RootPath,\n subgraphsPaths: RootPath[],\n subgraphsPathsUnadvanceables: Unadvanceables[]\n): GraphQLError {\n const witness = buildWitnessOperation(unsatisfiablePath);\n const operation = print(operationToDocument(witness));\n const message = `The following supergraph API query:\\n${operation}\\n`\n + 'cannot be satisfied by the subgraphs because:\\n'\n + displayReasons(subgraphsPathsUnadvanceables);\n const error = new ValidationError(message, unsatisfiablePath, subgraphsPaths, witness);\n return ERRORS.SATISFIABILITY_ERROR.err(error.message, {\n originalError: error,\n });\n}\n\nfunction subgraphNodes(state: ValidationState, extractNode: (schema: Schema) => ASTNode | undefined): SubgraphASTNode[] {\n return state.currentSubgraphs().map(({name, schema}) => {\n const node = extractNode(schema);\n return node ? addSubgraphToASTNode(node, name) : undefined;\n }).filter(isDefined);\n}\n\nfunction shareableFieldNonIntersectingRuntimeTypesError(\n invalidState: ValidationState,\n field: FieldDefinition,\n runtimeTypesToSubgraphs: MultiMap,\n): GraphQLError {\n const witness = buildWitnessOperation(invalidState.supergraphPath);\n const operation = print(operationToDocument(witness));\n const typeStrings = [...runtimeTypesToSubgraphs].map(([ts, subgraphs]) => ` - in ${printSubgraphNames(subgraphs)}, ${ts}`);\n const message = `For the following supergraph API query:\\n${operation}`\n + `\\nShared field \"${field.coordinate}\" return type \"${field.type}\" has a non-intersecting set of possible runtime types across subgraphs. Runtime types in subgraphs are:`\n + `\\n${typeStrings.join(';\\n')}.`\n + `\\nThis is not allowed as shared fields must resolve the same way in all subgraphs, and that imply at least some common runtime types between the subgraphs.`;\n const error = new ValidationError(message, invalidState.supergraphPath, invalidState.subgraphPathInfos.map((p) => p.path.path), witness);\n return ERRORS.SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES.err(error.message, {\n nodes: subgraphNodes(invalidState, (s) => (s.type(field.parent.name) as CompositeType | undefined)?.field(field.name)?.sourceAST),\n });\n}\n\nfunction shareableFieldMismatchedRuntimeTypesHint(\n state: ValidationState,\n field: FieldDefinition,\n commonRuntimeTypes: string[],\n runtimeTypesPerSubgraphs: MultiMap,\n): CompositionHint {\n const witness = buildWitnessOperation(state.supergraphPath);\n const operation = print(operationToDocument(witness));\n const allSubgraphs = state.currentSubgraphNames();\n const printTypes = (ts: string[]) => printHumanReadableList(\n ts.map((t) => '\"' + t + '\"'),\n {\n prefix: 'type',\n prefixPlural: 'types'\n }\n );\n const subgraphsWithTypeNotInIntersectionString = allSubgraphs.map((s) => {\n const typesToNotImplement = runtimeTypesPerSubgraphs.get(s)!.filter((t) => !commonRuntimeTypes.includes(t));\n if (typesToNotImplement.length === 0) {\n return undefined;\n }\n return ` - subgraph \"${s}\" should never resolve \"${field.coordinate}\" to an object of ${printTypes(typesToNotImplement)}`;\n\n }).filter(isDefined);\n const message = `For the following supergraph API query:\\n${operation}`\n + `\\nShared field \"${field.coordinate}\" return type \"${field.type}\" has different sets of possible runtime types across subgraphs.`\n + `\\nSince a shared field must be resolved the same way in all subgraphs, make sure that ${printSubgraphNames(allSubgraphs)} only resolve \"${field.coordinate}\" to objects of ${printTypes(commonRuntimeTypes)}. In particular:`\n + `\\n${subgraphsWithTypeNotInIntersectionString.join(';\\n')}.`\n + `\\nOtherwise the @shareable contract will be broken.`;\n return new CompositionHint(\n HINTS.INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN,\n message,\n field,\n subgraphNodes(state, (s) => (s.type(field.parent.name) as CompositeType | undefined)?.field(field.name)?.sourceAST),\n );\n}\n\nfunction displayReasons(reasons: Unadvanceables[]): string {\n const bySubgraph = new MultiMap();\n for (const reason of reasons) {\n for (const unadvanceable of reason.reasons) {\n bySubgraph.add(unadvanceable.sourceSubgraph, unadvanceable);\n }\n }\n return [...bySubgraph.entries()].map(([subgraph, reasons]) => {\n let msg = `- from subgraph \"${subgraph}\":`;\n if (reasons.length === 1) {\n msg += ' ' + reasons[0].details + '.';\n } else {\n // We put all the reasons into a set because it's possible multiple paths of the algorithm\n // had the same \"dead end\". Typically, without this, there is cases where we end up with\n // multiple \"cannot find field x\" messages (for the same \"x\").\n const allDetails = new Set(reasons.map((r) => r.details));\n for (const details of allDetails) {\n msg += '\\n - ' + details + '.';\n }\n }\n return msg;\n }).join('\\n');\n}\n\nfunction buildWitnessOperation(witness: RootPath): Operation {\n assert(witness.size > 0, \"unsatisfiablePath should contain at least one edge/transition\");\n const root = witness.root;\n const schema = witness.graph.sources.get(root.source)!;\n return new Operation(\n schema,\n root.rootKind,\n buildWitnessNextStep([...witness].map(e => e[0]), 0)!,\n new VariableDefinitions(),\n );\n}\n\nfunction buildWitnessNextStep(edges: Edge[], index: number): SelectionSet | undefined {\n if (index >= edges.length) {\n // We're at the end of our counter-example, meaning that we're at a point of traversing the supergraph where we know\n // there is no valid equivalent subgraph traversals.\n // That said, we may well not be on a terminal vertex (the type may not be a leaf), meaning that returning 'undefined'\n // may be invalid.\n // In that case, we instead return an empty SelectionSet. This is, strictly speaking, equally invalid, but we use\n // this as a convention to means \"there is supposed to be a selection but we don't have it\" and the code\n // in `SelectionSet.toSelectionNode` handles this an prints an ellipsis (a '...').\n //\n // Note that, as an alternative, we _could_ generate a random valid witness: while the current type is not terminal\n // we would randomly pick a valid choice (if it's an abstract type, we'd \"cast\" to any implementation; if it's an\n // object, we'd pick the first field and recurse on its type). However, while this would make sure our \"witness\"\n // is always a fully valid query, this is probably less user friendly in practice because you'd have to follow\n // the query manually to figure out at which point the query stop being satisfied by subgraphs. Putting the\n // ellipsis instead make it immediately clear after which part of the query there is an issue.\n const lastType = edges[edges.length -1].tail.type;\n // Note that vertex types are named type and output ones, so if it's not a leaf it is guaranteed to be selectable.\n assert(isOutputType(lastType), 'Should not have input types as vertex types');\n return isLeafType(lastType) ? undefined : new SelectionSet(lastType);\n }\n\n const edge = edges[index];\n let selection: Selection;\n const subSelection = buildWitnessNextStep(edges, index + 1);\n switch (edge.transition.kind) {\n case 'DownCast':\n const type = edge.transition.castedType;\n selection = selectionOfElement(\n new FragmentElement(edge.transition.sourceType, type.name),\n subSelection!\n );\n break;\n case 'FieldCollection':\n const field = edge.transition.definition;\n selection = new FieldSelection(buildWitnessField(field), subSelection);\n break\n case 'SubgraphEnteringTransition':\n case 'KeyResolution':\n case 'RootTypeResolution':\n case 'InterfaceObjectFakeDownCast':\n // Witnesses are build from a path on the supergraph, so we shouldn't have any of those edges.\n assert(false, `Invalid edge ${edge} found in supergraph path`);\n }\n // If we get here, the edge is either a downcast or a field, so the edge head must be selectable.\n return selectionSetOf(edge.head.type as CompositeType, selection);\n}\n\nfunction buildWitnessField(definition: FieldDefinition): Field {\n if (definition.arguments().length === 0) {\n return new Field(definition);\n }\n\n const args = Object.create(null);\n for (const argDef of definition.arguments()) {\n args[argDef.name] = generateWitnessValue(argDef.type!);\n }\n return new Field(definition, args);\n}\n\nfunction generateWitnessValue(type: InputType): any {\n switch (type.kind) {\n case 'ScalarType':\n switch (type.name) {\n case 'Int':\n return 0;\n case 'Float':\n return 3.14;\n case 'Boolean':\n return true;\n case 'String':\n return 'A string value';\n case 'ID':\n // Users probably expect a particular format of ID at any particular place, but we have zero info on\n // the context, so we just throw a string that hopefully make things clear.\n return '';\n default:\n // It's a custom scalar, but we don't know anything about that scalar so providing some random string. This\n // will technically probably not be a valid value for that scalar, but hopefully that won't be enough to\n // throw users off.\n return '';\n }\n case 'EnumType':\n return type.values[0].name;\n case 'InputObjectType':\n const obj = Object.create(null);\n for (const field of type.fields()) {\n // We don't bother with non-mandatory fields.\n if (field.defaultValue || isNullableType(field.type!)) {\n continue;\n }\n obj[field.name] = generateWitnessValue(field.type!);\n }\n return obj;\n case 'ListType':\n return [];\n case 'NonNullType':\n // None of our generated witness values are null so...\n return generateWitnessValue(type.ofType);\n default:\n assert(false, `Unhandled input type ${type}`);\n }\n}\n\n/**\n * Validates that all the queries expressible on the API schema resulting of the composition of the provided subgraphs can be executed\n * on those subgraphs.\n *\n * @param supergraphSchema the schema of the supergraph that composing `subgraphs` generated. Note this *must* be the full supergraph, not\n * just it's API schema (because it may be used to find the definition of elements that are marked `@inaccessible`). Note that this _not_\n * the same schema that the one reference inside `supergraphAPI` in particular.\n * @param supergraphAPI the `QueryGraph` corresponding to the `supergraphSchema` API schema.\n * @param federatedQueryGraph the (federated) `QueryGraph` corresponding the subgraphs having been composed to obtain `supergraphSchema`.\n */\nexport function validateGraphComposition(\n supergraphSchema: Schema,\n subgraphNameToGraphEnumValue: Map,\n supergraphAPI: QueryGraph,\n federatedQueryGraph: QueryGraph,\n): {\n errors? : GraphQLError[],\n hints? : CompositionHint[],\n} {\n const { errors, hints } = new ValidationTraversal(\n supergraphSchema,\n subgraphNameToGraphEnumValue,\n supergraphAPI,\n federatedQueryGraph,\n ).validate();\n return errors.length > 0 ? { errors, hints } : { hints };\n}\n\nfunction initialSubgraphPaths(kind: SchemaRootKind, subgraphs: QueryGraph): RootPath[] {\n const root = subgraphs.root(kind);\n assert(root, () => `The supergraph shouldn't have a ${kind} root if no subgraphs have one`);\n assert(\n root.type.name == federatedGraphRootTypeName(kind),\n () => `Unexpected type ${root.type} for subgraphs root type (expected ${federatedGraphRootTypeName(kind)}`);\n const initialState = GraphPath.fromGraphRoot(subgraphs, kind)!;\n return subgraphs.outEdges(root).map(e => initialState.add(subgraphEnteringTransition, e, noConditionsResolution));\n}\n\nfunction possibleRuntimeTypeNamesSorted(path: RootPath): string[] {\n const types = path.tailPossibleRuntimeTypes().map((o) => o.name);\n types.sort((a, b) => a.localeCompare(b));\n return types;\n}\n\nexport function extractValidationError(error: any): ValidationError | undefined {\n if (!(error instanceof GraphQLError) || !(error.originalError instanceof ValidationError)) {\n return undefined;\n }\n return error.originalError;\n}\n\nexport class ValidationContext {\n private readonly joinTypeDirective: DirectiveDefinition;\n private readonly joinFieldDirective: DirectiveDefinition;\n private readonly typesToContexts: Map>\n\n constructor(\n readonly supergraphSchema: Schema,\n readonly subgraphNameToGraphEnumValue: Map,\n ) {\n const [_, joinSpec] = validateSupergraph(supergraphSchema);\n this.joinTypeDirective = joinSpec.typeDirective(supergraphSchema);\n this.joinFieldDirective = joinSpec.fieldDirective(supergraphSchema);\n\n this.typesToContexts = new Map();\n let contextDirective: DirectiveDefinition<{ name: string }> | undefined;\n const contextFeature = supergraphSchema.coreFeatures?.getByIdentity(ContextSpecDefinition.identity);\n if (contextFeature) {\n const contextSpec = CONTEXT_VERSIONS.find(contextFeature.url.version);\n assert(contextSpec, `Unexpected context spec version ${contextFeature.url.version}`);\n contextDirective = contextSpec.contextDirective(supergraphSchema);\n }\n\n for (const application of contextDirective?.applications() ?? []) {\n const { name: context } = application.arguments();\n assert(\n application.parent instanceof NamedSchemaElement,\n \"Unexpectedly found unnamed element with @context\"\n );\n const type = supergraphSchema.type(application.parent.name);\n assert(type, `Type ${application.parent.name} unexpectedly doesn't exist`);\n const typeNames = [type.name];\n if (isInterfaceType(type)) {\n typeNames.push(...type.allImplementations().map((t) => t.name));\n } else if (isUnionType(type)) {\n typeNames.push(...type.types().map((t) => t.name));\n }\n for (const typeName of typeNames) {\n if (this.typesToContexts.has(typeName)) {\n this.typesToContexts.get(typeName)!.add(context);\n } else {\n this.typesToContexts.set(typeName, new Set([context]));\n }\n }\n }\n }\n\n isShareable(field: FieldDefinition): boolean {\n const typeInSupergraph = this.supergraphSchema.type(field.parent.name);\n assert(typeInSupergraph && isCompositeType(typeInSupergraph), () => `${field.parent.name} should exists in the supergraph and be a composite`);\n if (!isObjectType(typeInSupergraph)) {\n return false;\n }\n\n const fieldInSupergraph = typeInSupergraph.field(field.name);\n assert(fieldInSupergraph, () => `${field.coordinate} should exists in the supergraph`);\n const joinFieldApplications = fieldInSupergraph.appliedDirectivesOf(this.joinFieldDirective);\n // A field is shareable if either:\n // 1) there is not join__field, but multiple join__type\n // 2) there is more than one join__field where the field is neither external nor overriden.\n return joinFieldApplications.length === 0\n ? typeInSupergraph.appliedDirectivesOf(this.joinTypeDirective).length > 1\n : (joinFieldApplications.filter((application) => {\n const args = application.arguments();\n return !args.external && !args.usedOverridden;\n }).length > 1);\n }\n\n matchingContexts(typeName: string): string[] {\n return [...(this.typesToContexts.get(typeName) ?? [])];\n }\n}\n\ntype SubgraphPathInfo = {\n path: TransitionPathWithLazyIndirectPaths,\n // The key for this map is the context name in the supergraph schema.\n contexts: Map,\n}\n\nexport class ValidationState {\n constructor(\n // Path in the supergraph corresponding to the current state.\n public readonly supergraphPath: RootPath,\n // All the possible paths we could be in the subgraph.\n public readonly subgraphPathInfos: SubgraphPathInfo[],\n // When we encounter an `@override`n field with a label condition, we record\n // its value (T/F) as we traverse the graph. This allows us to ignore paths\n // that can never be taken by the query planner (i.e. a path where the\n // condition is T in one case and F in another).\n public selectedOverrideConditions: Map = new Map(),\n ) {\n }\n\n static initial({\n supergraphAPI,\n kind,\n federatedQueryGraph,\n conditionResolver,\n overrideConditions,\n }: {\n supergraphAPI: QueryGraph,\n kind: SchemaRootKind,\n federatedQueryGraph: QueryGraph,\n conditionResolver: ConditionResolver,\n overrideConditions: Map,\n }) {\n return new ValidationState(\n GraphPath.fromGraphRoot(supergraphAPI, kind)!,\n initialSubgraphPaths(kind, federatedQueryGraph).map((p) =>\n TransitionPathWithLazyIndirectPaths.initial(\n p,\n conditionResolver,\n overrideConditions,\n ),\n ).map((p) => ({\n path: p,\n contexts: new Map(),\n })),\n );\n }\n\n /**\n * Validates that the current state can always be advanced for the provided supergraph edge, and returns the updated state if\n * so.\n *\n * @param supergraphEdge - the edge to try to advance from the current state.\n * @return an object with `error` set if the state _cannot_ be properly advanced (and if so, `state` and `hint` will be `undefined`).\n * If the state can be successfully advanced, then `state` contains the updated new state. This *can* be `undefined` to signal\n * that the state _can_ be successfully advanced (no error) but is guaranteed to yield no results (in other words, the edge corresponds\n * to a type condition for which there cannot be any runtime types), in which case not further validation is necessary \"from that branch\".\n * Additionally, when the state can be successfully advanced, an `hint` can be optionally returned.\n */\n validateTransition(context: ValidationContext, supergraphEdge: Edge, matchingContexts: string[]): {\n state?: ValidationState,\n error?: GraphQLError,\n hint?: CompositionHint,\n } {\n assert(!supergraphEdge.conditions, () => `Supergraph edges should not have conditions (${supergraphEdge})`);\n\n const transition = supergraphEdge.transition;\n const targetType = supergraphEdge.tail.type;\n const newSubgraphPathInfos: SubgraphPathInfo[] = [];\n const deadEnds: UnadvanceableClosures[] = [];\n // If the edge has an override condition, we should capture it in the state so\n // that we can ignore later edges that don't satisfy the condition.\n const newOverrideConditions = new Map([...this.selectedOverrideConditions]);\n if (supergraphEdge.overrideCondition) {\n newOverrideConditions.set(\n supergraphEdge.overrideCondition.label,\n supergraphEdge.overrideCondition.condition\n );\n }\n\n for (const { path, contexts } of this.subgraphPathInfos) {\n const options = advancePathWithTransition(\n path,\n transition,\n targetType,\n newOverrideConditions,\n );\n if (isUnadvanceableClosures(options)) {\n deadEnds.push(options);\n continue;\n }\n if (options.length === 0) {\n // This means that the edge is a type condition and that if we follow the path to this subgraph, we're guaranteed that handling that\n // type condition give us no matching results, and so we can handle whatever comes next really.\n return { state: undefined };\n }\n let newContexts = contexts;\n if (matchingContexts.length) {\n const subgraphName = path.path.tail.source;\n const typeName = path.path.tail.type.name;\n newContexts = new Map([...contexts]);\n for (const matchingContext in matchingContexts) {\n newContexts.set(\n matchingContext,\n {\n subgraphName,\n typeName,\n }\n )\n }\n }\n\n newSubgraphPathInfos.push(...options.map((p) => ({ path: p, contexts: newContexts })));\n }\n const newPath = this.supergraphPath.add(transition, supergraphEdge, noConditionsResolution);\n if (newSubgraphPathInfos.length === 0) {\n return { error: satisfiabilityError(newPath, this.subgraphPathInfos.map((p) => p.path.path), deadEnds.map((d) => d.toUnadvanceables())) };\n }\n\n const updatedState = new ValidationState(\n newPath,\n newSubgraphPathInfos,\n newOverrideConditions,\n );\n\n // When handling a @shareable field, we also compare the set of runtime types for each subgraphs involved.\n // If there is no common intersection between those sets, then we record an error: a @shareable field should resolve\n // the same way in all the subgraphs in which it is resolved, and there is no way this can be true if each subgraph\n // returns runtime objects that we know can never be the same.\n //\n // Additionally, if those sets of runtime types are not the same, we let it compose, but we log a warning. Indeed,\n // having different runtime types is a red flag: it would be incorrect for a subgraph to resolve to an object of a\n // type that the other subgraph cannot possible return, so having some subgraph having types that the other\n // don't know feels like something is worth double checking on the user side. Of course, as long as there is\n // some runtime types intersection and the field resolvers only return objects of that intersection, then this\n // could be a valid implementation. And this case can in particular happen temporarily as subgraphs evolve (potentially\n // independently), but it is well worth warning in general.\n\n // Note that we ignore any path when the type is not an abstract type, because in practice this means an @interfaceObject\n // and this should not be considered as an implementation type. Besides @interfaceObject always \"stand-in\" for every\n // implementations so they never are a problem for this check and can be ignored.\n let hint: CompositionHint | undefined = undefined;\n if (\n newSubgraphPathInfos.length > 1\n && transition.kind === 'FieldCollection'\n && isAbstractType(newPath.tail.type)\n && context.isShareable(transition.definition)\n ) {\n const filteredPaths = newSubgraphPathInfos.map((p) => p.path.path).filter((p) => isAbstractType(p.tail.type));\n if (filteredPaths.length > 1) {\n // We start our intersection by using all the supergraph types, both because it's a convenient \"max\" set to start our intersection,\n // but also because that means we will ignore @inaccessible types in our checks (which is probably not very important because\n // I believe the rules of @inacessible kind of exclude having some here, but if that ever change, it makes more sense this way).\n const allRuntimeTypes = possibleRuntimeTypeNamesSorted(newPath);\n let intersection = allRuntimeTypes;\n\n const runtimeTypesToSubgraphs = new MultiMap();\n const runtimeTypesPerSubgraphs = new MultiMap();\n let hasAllEmpty = true;\n for (const { path } of newSubgraphPathInfos) {\n const subgraph = path.path.tail.source;\n const typeNames = possibleRuntimeTypeNamesSorted(path.path);\n \n // if we see a type here that is not included in the list of all\n // runtime types, it is safe to assume that it is an interface\n // behaving like a runtime type (i.e. an @interfaceObject) and \n // we should allow it to stand in for any runtime type \n if (typeNames.length === 1 && !allRuntimeTypes.includes(typeNames[0])) {\n continue;\n }\n runtimeTypesPerSubgraphs.set(subgraph, typeNames);\n // Note: we're formatting the elements in `runtimeTYpesToSubgraphs` because we're going to use it if we display an error. This doesn't\n // impact our set equality though since the formatting is consistent betweeen elements and type names syntax is sufficiently restricted\n // in graphQL to not create issues (no quote or weird character to escape in particular).\n let typeNamesStr = 'no runtime type is defined';\n if (typeNames.length > 0) {\n typeNamesStr = (typeNames.length > 1 ? 'types ' : 'type ') + joinStrings(typeNames.map((n) => `\"${n}\"`));\n hasAllEmpty = false;\n }\n runtimeTypesToSubgraphs.add(typeNamesStr, subgraph);\n intersection = intersection.filter((t) => typeNames.includes(t));\n }\n\n // If `hasAllEmpty`, then it means that none of the subgraph defines any runtime types. Typically, all subgraphs defines a given interface,\n // but none have implementations. In that case, the intersection will be empty but it's actually fine (which is why we special case). In\n // fact, assuming valid graphQL subgraph servers (and it's not the place to sniff for non-compliant subgraph servers), the only value to\n // which each subgraph can resolve is `null` and so that essentially guaranttes that all subgraph do resolve the same way.\n if (!hasAllEmpty) {\n if (intersection.length === 0) {\n return { error: shareableFieldNonIntersectingRuntimeTypesError(updatedState, transition.definition, runtimeTypesToSubgraphs) };\n }\n\n // As said, we accept it if there is an intersection, but if the runtime types are not all the same, we still emit a warning to make it clear that\n // the fields should not resolve any of the types not in the intersection.\n if (runtimeTypesToSubgraphs.size > 1) {\n hint = shareableFieldMismatchedRuntimeTypesHint(updatedState, transition.definition, intersection, runtimeTypesPerSubgraphs);\n }\n }\n }\n }\n\n return { state: updatedState, hint };\n }\n\n currentSubgraphNames(): string[] {\n const subgraphs: string[] = [];\n for (const pathInfo of this.subgraphPathInfos) {\n const source = pathInfo.path.path.tail.source;\n if (!subgraphs.includes(source)) {\n subgraphs.push(source);\n }\n }\n return subgraphs;\n }\n\n currentSubgraphContextKeys(subgraphNameToGraphEnumValue: Map): Set {\n const subgraphContextKeys: Set = new Set();\n for (const pathInfo of this.subgraphPathInfos) {\n const tailSubgraphName = pathInfo.path.path.tail.source;\n const tailSubgraphEnumValue = subgraphNameToGraphEnumValue.get(tailSubgraphName);\n const entryKeys = [];\n const contexts = Array.from(pathInfo.contexts.entries());\n contexts.sort((a, b) => a[0].localeCompare(b[0]));\n for (const [context, { subgraphName, typeName }] of contexts) {\n const subgraphEnumValue = subgraphNameToGraphEnumValue.get(subgraphName);\n entryKeys.push(`${context}=${subgraphEnumValue}.${typeName}`);\n }\n subgraphContextKeys.add(\n `${tailSubgraphEnumValue}[${entryKeys.join(',')}]`\n );\n }\n return subgraphContextKeys;\n }\n\n currentSubgraphs(): { name: string, schema: Schema }[] {\n if (this.subgraphPathInfos.length === 0) {\n return [];\n }\n const sources = this.subgraphPathInfos[0].path.path.graph.sources;\n return this.currentSubgraphNames().map((name) => ({ name, schema: sources.get(name)!}));\n }\n\n toString(): string {\n return `${this.supergraphPath} <=> [${this.subgraphPathInfos.map(s => s.path.toString()).join(', ')}]`;\n }\n}\n\n// `maybeSuperset` is a superset (or equal) if it contains all of `other`'s\n// subgraphs and all of `other`'s labels (with matching conditions).\nfunction isSupersetOrEqual(maybeSuperset: VertexVisit, other: VertexVisit): boolean {\n const includesAllSubgraphs = [...other.subgraphContextKeys]\n .every((s) => maybeSuperset.subgraphContextKeys.has(s));\n const includesAllOverrideConditions = [...other.overrideConditions.entries()].every(([label, value]) =>\n maybeSuperset.overrideConditions.get(label) === value\n );\n\n return includesAllSubgraphs && includesAllOverrideConditions;\n}\n\ninterface VertexVisit {\n subgraphContextKeys: Set;\n overrideConditions: Map;\n}\n\nclass ValidationTraversal {\n private readonly conditionResolver: ConditionResolver;\n // The stack contains all states that aren't terminal.\n private readonly stack: ValidationState[] = [];\n\n // For each vertex in the supergraph, records if we've already visited that vertex and in which subgraphs we were.\n // For a vertex, we may have multiple \"sets of subgraphs\", hence the double-array.\n private readonly previousVisits: QueryGraphState;\n\n private readonly validationErrors: GraphQLError[] = [];\n private readonly validationHints: CompositionHint[] = [];\n\n private readonly context: ValidationContext;\n\n constructor(\n supergraphSchema: Schema,\n subgraphNameToGraphEnumValue: Map,\n supergraphAPI: QueryGraph,\n federatedQueryGraph: QueryGraph,\n ) {\n this.conditionResolver = simpleValidationConditionResolver({\n supergraph: supergraphSchema,\n queryGraph: federatedQueryGraph,\n withCaching: true,\n });\n supergraphAPI.rootKinds().forEach((kind) => this.stack.push(ValidationState.initial({\n supergraphAPI,\n kind,\n federatedQueryGraph,\n conditionResolver: this.conditionResolver,\n overrideConditions: new Map(),\n })));\n this.previousVisits = new QueryGraphState();\n this.context = new ValidationContext(\n supergraphSchema,\n subgraphNameToGraphEnumValue,\n );\n }\n\n validate(): {\n errors: GraphQLError[],\n hints: CompositionHint[],\n } {\n while (this.stack.length > 0) {\n this.handleState(this.stack.pop()!);\n }\n return { errors: this.validationErrors, hints: this.validationHints };\n }\n\n private handleState(state: ValidationState) {\n debug.group(() => `Validation: ${this.stack.length + 1} open states. Validating ${state}`);\n const vertex = state.supergraphPath.tail;\n\n const currentVertexVisit: VertexVisit = {\n subgraphContextKeys: state.currentSubgraphContextKeys(this.context.subgraphNameToGraphEnumValue),\n overrideConditions: state.selectedOverrideConditions\n };\n const previousVisitsForVertex = this.previousVisits.getVertexState(vertex);\n if (previousVisitsForVertex) {\n for (const previousVisit of previousVisitsForVertex) {\n if (isSupersetOrEqual(currentVertexVisit, previousVisit)) {\n // This means that we've already seen the type we're currently on in the supergraph, and when saw it we could be in\n // one of `previousSources`, and we validated that we could reach anything from there. We're now on the same\n // type, and have strictly more options regarding subgraphs. So whatever comes next, we can handle in the exact\n // same way we did previously, and there is thus no way to bother.\n debug.groupEnd(`Has already validated this vertex.`);\n return;\n }\n }\n // We're gonna have to validate, but we can save the new set of sources here to hopefully save work later.\n previousVisitsForVertex.push(currentVertexVisit);\n } else {\n // We save the current sources but do validate.\n this.previousVisits.setVertexState(vertex, [currentVertexVisit]);\n }\n\n // Note that if supergraphPath is terminal, this method is a no-op, which is expected/desired as\n // it means we've successfully \"validate\" a path to its end.\n for (const edge of state.supergraphPath.nextEdges()) {\n if (edge.isEdgeForField(typenameFieldName)) {\n // There is no point in validating __typename edges: we know we can always get those.\n continue;\n }\n\n // `state.selectedOverrideConditions` indicates the labels (and their\n // respective conditions) that we've selected so far in our traversal\n // (i.e. \"foo\" -> true). There's no need to validate edges that share the\n // same label with the opposite condition since they're unreachable during\n // query planning.\n if (\n edge.overrideCondition\n && state.selectedOverrideConditions.has(edge.overrideCondition.label)\n && !edge.satisfiesOverrideConditions(state.selectedOverrideConditions)\n ) {\n debug.groupEnd(`Edge ${edge} doesn't satisfy label condition: ${edge.overrideCondition?.label}(${state.selectedOverrideConditions.get(edge.overrideCondition?.label ?? \"\")}), no need to validate further`);\n continue;\n }\n\n const matchingContexts = edge.transition.kind === 'FieldCollection'\n ? this.context.matchingContexts(edge.head.type.name)\n : [];\n\n debug.group(() => `Validating supergraph edge ${edge}`);\n const { state: newState, error, hint } = state.validateTransition(this.context, edge, matchingContexts);\n if (error) {\n debug.groupEnd(`Validation error!`);\n this.validationErrors.push(error);\n continue;\n }\n if (hint) {\n this.validationHints.push(hint);\n }\n\n // The check for `isTerminal` is not strictly necessary as if we add a terminal\n // state to the stack this method, `handleState`, will do nothing later. But it's\n // worth checking it now and save some memory/cycles.\n if (newState && !newState.supergraphPath.isTerminal()) {\n this.stack.push(newState);\n debug.groupEnd(() => `Reached new state ${newState}`);\n } else {\n debug.groupEnd(`Reached terminal vertex/cycle`);\n }\n }\n debug.groupEnd();\n }\n}\n", "import {\n printSchema,\n Schema,\n Subgraphs,\n defaultPrintOptions,\n shallowOrderPrintedDefinitions,\n PrintOptions,\n ServiceDefinition,\n subgraphsFromServiceList,\n upgradeSubgraphsIfNecessary,\n SubtypingRule,\n assert,\n Supergraph,\n} from \"@apollo/federation-internals\";\nimport { GraphQLError } from \"graphql\";\nimport { buildFederatedQueryGraph, buildSupergraphAPIQueryGraph } from \"@apollo/query-graphs\";\nimport { MergeResult, mergeSubgraphs } from \"./merging\";\nimport { validateGraphComposition } from \"./validate\";\nimport { CompositionHint } from \"./hints\";\n\nexport type CompositionResult = CompositionFailure | CompositionSuccess;\n\nexport interface CompositionFailure {\n errors: GraphQLError[];\n schema?: undefined;\n supergraphSdl?: undefined;\n hints?: undefined;\n}\n\nexport interface CompositionSuccess {\n schema: Schema;\n supergraphSdl: string;\n hints: CompositionHint[];\n errors?: undefined;\n}\n\nexport interface CompositionOptions {\n sdlPrintOptions?: PrintOptions;\n allowedFieldTypeMergingSubtypingRules?: SubtypingRule[];\n /// Flag to toggle if satisfiability should be performed during composition\n runSatisfiability?: boolean;\n}\n\nfunction validateCompositionOptions(options: CompositionOptions) {\n // TODO: we currently cannot allow \"list upgrades\", meaning a subgraph returning `String` and another returning `[String]`. To support it, we would need the execution code to\n // recognize situation and \"coerce\" results from the first subgraph (the one returning `String`) into singleton lists.\n assert(!options?.allowedFieldTypeMergingSubtypingRules?.includes(\"list_upgrade\"), \"The `list_upgrade` field subtyping rule is currently not supported\");\n}\n\n/**\n * Used to compose a supergraph from subgraphs\n * `options.runSatisfiability` will default to `true`\n * \n * @param subgraphs Subgraphs\n * @param options CompositionOptions\n */\nexport function compose(subgraphs: Subgraphs, options: CompositionOptions = {}): CompositionResult {\n const { runSatisfiability = true, sdlPrintOptions } = options;\n\n validateCompositionOptions(options);\n\n const mergeResult = validateSubgraphsAndMerge(subgraphs);\n if (mergeResult.errors) {\n return { errors: mergeResult.errors };\n }\n\n let satisfiabilityResult;\n if (runSatisfiability) {\n satisfiabilityResult = validateSatisfiability({\n supergraphSchema: mergeResult.supergraph\n });\n if (satisfiabilityResult.errors) {\n return { errors: satisfiabilityResult.errors };\n }\n }\n\n // printSchema calls validateOptions, which can throw\n let supergraphSdl;\n try {\n supergraphSdl = printSchema(\n mergeResult.supergraph,\n sdlPrintOptions ?? shallowOrderPrintedDefinitions(defaultPrintOptions),\n );\n } catch (err) {\n return { errors: [err] };\n }\n\n return {\n schema: mergeResult.supergraph,\n supergraphSdl,\n hints: [...mergeResult.hints, ...(satisfiabilityResult?.hints ?? [])],\n };\n}\n\n/**\n * Method to validate and compose services\n * \n * @param services List of Service definitions\n * @param options CompositionOptions\n * @returns CompositionResult\n */\nexport function composeServices(services: ServiceDefinition[], options: CompositionOptions = {}): CompositionResult {\n const subgraphs = subgraphsFromServiceList(services);\n if (Array.isArray(subgraphs)) {\n // Errors in subgraphs are not truly \"composition\" errors, but it's probably still the best place\n // to surface them in this case. Not that `subgraphsFromServiceList` do ensure the errors will\n // include the subgraph name in their message.\n return { errors: subgraphs };\n }\n\n return compose(subgraphs, options);\n}\n\ntype SatisfiabilityArgs = {\n supergraphSchema: Schema\n supergraphSdl?: never\n} | { supergraphSdl: string, supergraphSchema?: never };\n\n/**\n * Run satisfiability check for a supergraph\n * \n * Can pass either the supergraph's Schema or SDL to validate\n * @param args: SatisfiabilityArgs \n * @returns { errors? : GraphQLError[], hints? : CompositionHint[] }\n */\nexport function validateSatisfiability({ supergraphSchema, supergraphSdl} : SatisfiabilityArgs) : {\n errors? : GraphQLError[],\n hints? : CompositionHint[],\n} {\n // We pass `null` for the `supportedFeatures` to disable the feature support validation. Validating feature support\n // is useful when executing/handling a supergraph, but here we're just validating the supergraph we've just created,\n // and there is no reason to error due to an unsupported feature.\n const supergraph = supergraphSchema ? new Supergraph(supergraphSchema, null) : Supergraph.build(supergraphSdl);\n const supergraphQueryGraph = buildSupergraphAPIQueryGraph(supergraph);\n const federatedQueryGraph = buildFederatedQueryGraph(supergraph, false);\n return validateGraphComposition(supergraph.schema, supergraph.subgraphNameToGraphEnumValue(), supergraphQueryGraph, federatedQueryGraph);\n}\n\ntype ValidateSubgraphsAndMergeResult = MergeResult | { errors: GraphQLError[] };\n\n/**\n * Upgrade subgraphs if necessary, then validates subgraphs before attempting to merge\n * \n * @param subgraphs \n * @returns ValidateSubgraphsAndMergeResult\n */\nfunction validateSubgraphsAndMerge(subgraphs: Subgraphs) : ValidateSubgraphsAndMergeResult {\n const upgradeResult = upgradeSubgraphsIfNecessary(subgraphs);\n if (upgradeResult.errors) {\n return { errors: upgradeResult.errors };\n }\n\n const toMerge = upgradeResult.subgraphs;\n const validationErrors = toMerge.validate();\n if (validationErrors) {\n return { errors: validationErrors };\n }\n\n return mergeSubgraphs(toMerge);\n}\n", "export * from './compose';\nexport * from './merging';\nexport * from './validate';\n", "import { composeServices } from \"@apollo/composition\";\nimport { ASTNode, GraphQLError, parse, Token } from \"graphql\";\nimport {\n BuildErrorNode,\n CompositionError,\n CompositionHint,\n CompositionResult,\n Position,\n} from \"./types\";\nimport { ERRORS } from \"@apollo/federation-internals\";\n\nconst DEFAULT_NODES_SIZE_LIMIT: number = Number.MAX_VALUE;\n\nexport function composition(\n serviceList: { sdl: string; name: string; url?: string }[],\n nodesLimit?: number | null\n): CompositionResult {\n let limit = nodesLimit || DEFAULT_NODES_SIZE_LIMIT;\n if (!serviceList || !Array.isArray(serviceList)) {\n throw new Error(\"Error in JS-Rust-land: serviceList missing or incorrect.\");\n }\n\n serviceList.some((service) => {\n if (\n typeof service.name !== \"string\" ||\n !service.name ||\n (typeof service.url !== \"string\" && service.url) ||\n (typeof service.sdl !== \"string\" && service.sdl)\n ) {\n throw new Error(\"Missing required data structure on service.\");\n }\n });\n\n let subgraphList = serviceList.map(({ sdl, name, ...rest }) => ({\n typeDefs: parseTypedefs(sdl, name),\n name,\n ...rest,\n }));\n\n const composed = composeServices(subgraphList);\n let hints: CompositionHint[] = [];\n if (composed.hints) {\n composed.hints.map((composed_hint) => {\n let nodes: BuildErrorNode[] = [];\n\n let omittedNodesCount = 0;\n // for issues that happen in all subgraphs and with a large amount of subgraphs,\n // only add nodes up to the limit to prevent massive responses\n // (OOM errors when going from js to rust)\n if (composed_hint.nodes?.length >= limit) {\n composed_hint.nodes\n ?.slice(0, limit)\n .map((node) => nodes.push(getBuildErrorNode(node)));\n omittedNodesCount = composed_hint.nodes?.length - limit;\n } else {\n composed_hint.nodes?.map((node) => nodes.push(getBuildErrorNode(node)));\n }\n\n hints.push({\n message: composed_hint.toString(),\n code: composed_hint.definition.code,\n nodes,\n omittedNodesCount: omittedNodesCount,\n });\n });\n }\n\n if (composed.errors) {\n //We need to reshape the errors\n let errors: CompositionError[] = [];\n composed.errors.map((err) => {\n let nodes: BuildErrorNode[] = [];\n\n let omittedNodesCount = 0;\n // for issues that happen in all subgraphs and with a large amount of subgraphs,\n // only add nodes up to the limit to prevent massive responses\n // (OOM errors when going from js to rust)\n if (err.nodes?.length >= limit) {\n err.nodes\n ?.slice(0, limit)\n .map((node) => nodes.push(getBuildErrorNode(node)));\n omittedNodesCount = err.nodes?.length - limit;\n } else {\n err.nodes?.map((node) => nodes.push(getBuildErrorNode(node)));\n }\n\n errors.push({\n code: (err?.extensions[\"code\"] as string) ?? \"\",\n message: err.message,\n nodes,\n omittedNodesCount: omittedNodesCount,\n });\n });\n\n return { Err: errors };\n } else\n return {\n Ok: {\n supergraphSdl: composed.supergraphSdl,\n hints,\n },\n };\n}\n\nfunction getBuildErrorNode(node: ASTNode) {\n let n: BuildErrorNode = {\n subgraph: (node as any)?.subgraph,\n };\n if (node.loc) {\n n.source = node.loc?.source?.body;\n n.start = getPosition(node.loc.startToken);\n n.end = getPosition(node.loc.endToken);\n }\n return n;\n}\n\nfunction getPosition(token: Token): Position {\n return {\n start: token.start,\n end: token.end,\n line: token.line,\n column: token.column,\n };\n}\n\n//@ts-ignore\nfunction parseTypedefs(source: string, subgraphName: string) {\n try {\n return parse(source);\n } catch (err) {\n let nodeTokens: BuildErrorNode[] = [];\n if (err instanceof GraphQLError) {\n nodeTokens =\n err.nodes != null\n ? err.nodes.map(function (n: ASTNode) {\n return {\n subgraph: subgraphName,\n source: source,\n start: getPosition(n.loc.startToken),\n end: getPosition(n.loc.endToken),\n };\n })\n : [\n {\n subgraph: subgraphName,\n source: source,\n },\n ];\n }\n\n const error: CompositionError = {\n code: ERRORS.INVALID_GRAPHQL.code,\n message: \"[\" + subgraphName + \"] - \" + err.toString(),\n nodes: nodeTokens,\n omittedNodesCount: 0,\n };\n\n // This error will be caught by the try-catch block in do_compose.ts.\n throw error;\n }\n}\n", "export { composition } from \"./composition\";\n"], "mappings": "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,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,OAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,MAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG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,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAK,GAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI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AC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,GAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,MAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,MAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,IAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SA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C,CAAC,KAAK,IAAI,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAA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AS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SA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AAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KA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AAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,gBAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,gBAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,sCAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,gCAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,YAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,aAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,UAAK,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SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,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AAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,eAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,eAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,eAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,eAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,eAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,eAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,0BAAM,EAAE,CA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AE,yBAAyB,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,SAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,cAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAA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AAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,KAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAM,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAM,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAM,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAM,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,6BAAQ,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,KAAO,IAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAA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G,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAA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AAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,oBAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,MAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,MAAO,KAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,QAAG,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,WAAI,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YA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KC,CAAK,IAAK,OAAO,QAAQH,CAAG,EAC3CC,EAAIC,CAAG,EAAIC,EAGb,OAAOF,CACT,ICvBA,IAAAG,GAAAC,EAAAC,IAAA,cAAAC,IAAAC,IAEA,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,YAAcG,GAMtB,SAASA,GAAYC,EAAK,CACxB,MAAO,IAAIA,EAAI,QAAQC,GAAeC,EAAe,IACvD,CAEA,IAAMD,GAAgB,gCAEtB,SAASC,GAAgBF,EAAK,CAC5B,OAAOG,GAAgBH,EAAI,WAAW,CAAC,CAAC,CAC1C,CAEA,IAAMG,GAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,ICtLA,IAAAC,GAAAC,EAAAC,IAAA,cAAAC,IAAAC,IAEA,OA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AC7CC,GACEhB,EACAK,EACAF,EACAF,EACA,GACAU,EACAC,EAAcG,CAAC,CACjB,EAKA,QAASE,EAAIF,EAAI,EAAGE,EAAIL,EAAc,OAAQK,IAC5CC,GACElB,EACAK,EACAF,EACAF,EACA,GACAW,EAAcG,CAAC,EACfH,EAAcK,CAAC,CACjB,EAKN,OAAOZ,CACT,CAGA,SAASW,GACPhB,EACAK,EACAF,EACAF,EACAkB,EACAR,EACAS,EACA,CACA,IAAMC,EAAWrB,EAAQ,YAAYoB,CAAY,EAEjD,GAAI,CAACC,EACH,OAGF,GAAM,CAACC,EAAWC,CAAuB,EACvCC,GACExB,EACAG,EACAkB,CACF,EAEF,GAAIV,IAAaW,EAKjB,CAAAG,GACEzB,EACAK,EACAF,EACAF,EACAkB,EACAR,EACAW,CACF,EAGA,QAAWI,KAA0BH,EAGjCtB,EAAsB,IACpByB,EACAN,EACAD,CACF,IAKFlB,EAAsB,IACpByB,EACAN,EACAD,CACF,EACAH,GACEhB,EACAK,EACAF,EACAF,EACAkB,EACAR,EACAe,CACF,GAEJ,CAGA,SAASR,GACPlB,EACAK,EACAF,EACAF,EACAkB,EACAQ,EACAC,EACA,CAMA,GAJID,IAAkBC,GAKpB3B,EAAsB,IACpB0B,EACAC,EACAT,CACF,EAEA,OAGFlB,EAAsB,IAAI0B,EAAeC,EAAeT,CAAoB,EAC5E,IAAMU,EAAY7B,EAAQ,YAAY2B,CAAa,EAC7CG,EAAY9B,EAAQ,YAAY4B,CAAa,EAEnD,GAAI,CAACC,GAAa,CAACC,EACjB,OAGF,GAAM,CAACC,EAAWC,CAAwB,EACxCR,GACExB,EACAG,EACA0B,CACF,EACI,CAACP,EAAWW,CAAwB,EACxCT,GACExB,EACAG,EACA2B,CACF,EAGFL,GACEzB,EACAK,EACAF,EACAF,EACAkB,EACAY,EACAT,CACF,EAGA,QAAWY,KAA2BD,EACpCf,GACElB,EACAK,EACAF,EACAF,EACAkB,EACAQ,EACAO,CACF,EAIF,QAAWC,KAA2BH,EACpCd,GACElB,EACAK,EACAF,EACAF,EACAkB,EACAgB,EACAP,CACF,CAEJ,CA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CA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACMsC,GACJ,sbACIC,GAAWvC,GACf,CACE,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACMwC,GACJ,uwGACIC,GAAWzC,GACf,CACE,OACA,OACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACM0C,GAAW,uFACXC,GAAW3C,GACf,CACE,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,QACF,EACA,GACA,EACF,EACM4C,GACJ,uuHACIC,GAAW7C,GACf,CACE,CAAC,IAAK,GAAG,EACT,CAAC,OAAQ,MAAM,EACf,CAAC,OAAQ,MAAM,EACf,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,S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", "names": ["require_lib", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_", "message", "opts", "type", "V", "evenRound", "x", "censorNegativeZero", "integerPart", "n", "sign", "modulo", "y", "signMightNotMatch", "createIntegerConversion", "bitLength", "typeOpts", "isSigned", "lowerBound", "upperBound", "twoToTheBitLength", "twoToOneLessThanTheBitLength", "val", "c", "i", "S", "U", "d", "a", "b", "convertCallbackFunction", "func", "name", "article", "require_utils", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isObject", "value", "hasOwn", "obj", "prop", "getOwnPropertyDescriptors", "ownKeys", "descriptors", "key", "descriptor", "wrapperSymbol", "implSymbol", "sameObjectCaches", "getSameObject", "wrapper", "creator", "wrapperForImpl", "impl", "implForWrapper", "tryWrapperForImpl", "tryImplForWrapper", "iterInternalSymbol", "IteratorPrototype", "isArrayIndexPropName", "P", "i", "s", "supportsPropertyIndex", "supportedPropertyIndices", "supportsPropertyName", "supportedPropertyNames", "indexedGet", "indexedSetNew", "indexedSetExisting", "namedGet", "namedSetNew", "namedSetExisting", "namedDelete", "require_punycode", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "delimiter", "regexPunycode", "regexNonASCII", "regexSeparators", "errors", "baseMinusTMin", "floor", "stringFromCharCode", "error", "type", "map", "array", "fn", "result", "length", "mapDomain", "string", "parts", "labels", "encoded", "ucs2decode", "output", "counter", "value", "extra", "ucs2encode", "basicToDigit", "codePoint", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "k", "decode", "input", "inputLength", "i", "n", "bias", "basic", "j", "index", "oldi", "w", "t", "baseMinusT", "out", "encode", "currentValue", "basicLength", "handledCPCount", "m", "handledCPCountPlusOne", "q", "qMinusT", "toUnicode", "toASCII", "punycode", "require_regexes", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "combiningMarks", "combiningClassVirama", "validZWNJ", "bidiDomain", "bidiS1LTR", "bidiS1RTL", "bidiS2", "bidiS3", "bidiS4EN", "bidiS4AN", "bidiS5", "bidiS6", "require_mappingTable", "__commonJSMin", "exports", "module", "require_tr46", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "punycode", "regexes", "mappingTable", "containsNonASCII", "str", "findStatus", "val", "useSTD3ASCIIRules", "start", "end", "mid", "target", "mapChars", "domainName", "processingOption", "hasError", "processed", "ch", "status", "mapping", "validateLabel", "label", "checkHyphens", "checkBidi", "checkJoiners", "codePoints", "last", "i", "next", "test", "rtl", "isBidiDomain", "labels", "domain", "processing", "options", "string", "error", "isBidi", "origLabel", "curProcessing", "toASCII", "verifyDNSLength", "result", "l", "total", "toUnicode", "require_infra", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isASCIIDigit", "c", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "require_urlencoded", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isASCIIHex", "strictlySplitByteSequence", "buf", "cp", "list", "last", "i", "replaceByteInByteSequence", "from", "to", "percentEncode", "c", "hex", "percentDecode", "input", "output", "ptr", "parseUrlencoded", "sequences", "bytes", "name", "value", "indexOfEqual", "serializeUrlencodedByte", "byte", "serializeUrlencoded", "tuples", "encodingOverride", "encoding", "tuple", "require_url_state_machine", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "punycode", "tr46", "infra", "percentEncode", "percentDecode", "specialSchemes", "failure", "countSymbols", "str", "at", "input", "idx", "c", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "isNotSpecial", "defaultPort", "utf8PercentEncode", "buf", "i", "isC0ControlPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "isPathPercentEncode", "extraFragmentPercentEncodeSet", "isFragmentPercentEncode", "extraPathPercentEncodeSet", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "regex", "parseIPv4", "parts", "numbers", "part", "n", "ipv4", "counter", "serializeIPv4", "address", "output", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isNotSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "domainToASCII", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "beStrict", "result", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "startsWithWindowsDriveLetter", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "options", "usm", "username", "password", "integer", "require_lodash", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "LARGE_ARRAY_SIZE", "FUNC_ERROR_TEXT", "HASH_UNDEFINED", "UNORDERED_COMPARE_FLAG", "PARTIAL_COMPARE_FLAG", "INFINITY", "MAX_SAFE_INTEGER", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "promiseTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "reIsDeepProp", "reIsPlainProp", "reLeadingDot", "rePropName", "reRegExpChar", "reEscapeChar", "reIsHostCtor", "reIsUint", "typedArrayTags", "freeGlobal", "freeSelf", "root", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "nodeIsTypedArray", "apply", "func", "thisArg", "args", "arrayMap", "array", "iteratee", "index", "length", "result", "arrayPush", "values", "offset", "arraySome", "predicate", "baseProperty", "key", "object", "baseSortBy", "comparer", "baseTimes", "n", "baseUnary", "value", "getValue", "isHostObject", "mapToArray", "map", "overArg", "transform", "arg", "setToArray", "set", "arrayProto", "funcProto", "objectProto", "coreJsData", "maskSrcKey", "uid", "funcToString", "hasOwnProperty", "objectToString", "reIsNative", "Symbol", "Uint8Array", "propertyIsEnumerable", "splice", "spreadableSymbol", "nativeKeys", "nativeMax", "DataView", "getNative", "Map", "Promise", "Set", "WeakMap", "nativeCreate", "dataViewCtorString", "toSource", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "symbolProto", "symbolValueOf", "symbolToString", "Hash", "entries", "entry", "hashClear", "hashDelete", "hashGet", "data", "hashHas", "hashSet", "ListCache", "listCacheClear", "listCacheDelete", "assocIndexOf", "lastIndex", "listCacheGet", "listCacheHas", "listCacheSet", "MapCache", "mapCacheClear", "mapCacheDelete", "getMapData", "mapCacheGet", "mapCacheHas", "mapCacheSet", "SetCache", "setCacheAdd", "setCacheHas", "Stack", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "cache", "pairs", "arrayLikeKeys", "inherited", "isArray", "isArguments", "skipIndexes", "isIndex", "eq", "baseEach", "createBaseEach", "baseForOwn", "baseFlatten", "depth", "isStrict", "isFlattenable", "baseFor", "createBaseFor", "keys", "baseGet", "path", "isKey", "castPath", "toKey", "baseGetTag", "baseHasIn", "baseIsEqual", "other", "customizer", "bitmask", "stack", "isObject", "isObjectLike", "baseIsEqualDeep", "equalFunc", "objIsArr", "othIsArr", "objTag", "othTag", "getTag", "objIsObj", "othIsObj", "isSameTag", "isTypedArray", "equalArrays", "equalByTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects", "baseIsMatch", "source", "matchData", "noCustomizer", "objValue", "srcValue", "baseIsNative", "isMasked", "pattern", "isFunction", "baseIsTypedArray", "isLength", "baseIteratee", "identity", "baseMatchesProperty", "baseMatches", "property", "baseKeys", "isPrototype", "baseMap", "collection", "isArrayLike", "getMatchData", "matchesStrictComparable", "isStrictComparable", "get", "hasIn", "baseOrderBy", "iteratees", "orders", "criteria", "compareMultiple", "basePropertyDeep", "baseRest", "start", "otherArgs", "baseToString", "isSymbol", "stringToPath", "compareAscending", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "objCriteria", "othCriteria", "ordersLength", "order", "eachFunc", "fromRight", "iterable", "keysFunc", "props", "isPartial", "arrLength", "othLength", "stacked", "seen", "arrValue", "othValue", "compared", "othIndex", "tag", "convert", "objProps", "objLength", "othProps", "skipCtor", "objCtor", "othCtor", "isKeyable", "Ctor", "ctorString", "hasPath", "hasFunc", "isIterateeCall", "type", "proto", "memoize", "string", "toString", "match", "number", "quote", "sortBy", "resolver", "memoized", "isArrayLikeObject", "defaultValue", "require_URLSearchParams_impl", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "stableSortBy", "urlencoded", "constructorArgs", "doNotStripQMark", "init", "pair", "name", "value", "query", "i", "tuple", "output", "found", "require_URLSearchParams", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "conversions", "utils", "impl", "IteratorPrototype", "internal", "target", "kind", "index", "values", "len", "pair", "key", "value", "result", "URLSearchParams", "args", "curArg", "V", "tmp", "nextItem", "desc", "typedKey", "typedValue", "iface", "name", "callback", "thisArg", "pairs", "i", "obj", "Impl", "isMixedInto", "wrapper", "context", "iterator", "constructorArgs", "privateData", "require_URL_impl", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "usm", "urlencoded", "URLSearchParams", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "query", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "conversions", "utils", "impl", "URL", "url", "args", "curArg", "iface", "V", "obj", "Impl", "isMixedInto", "wrapper", "context", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "require_browser", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "output", "g", "hasNative", "url", "params", "lib", "init_url_shim", "__esmMin", "require_base64_js", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "init_buffer_shim", "__esmMin", "require_version", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "version", "versionInfo", "require_devAssert", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "devAssert", "condition", "message", "require_isPromise", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isPromise", "value", "require_isObjectLike", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isObjectLike", "value", "require_invariant", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "invariant", "condition", "message", "require_location", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getLocation", "_invariant", "LineRegExp", "source", "position", "lastLineStart", "line", "match", "require_printLocation", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "printLocation", "printSourceLocation", "_location", "location", "source", "sourceLocation", "firstLineColumnOffset", "body", "lineIndex", "lineOffset", "lineNum", "columnOffset", "columnNum", "locationStr", "lines", "locationLine", "subLineIndex", "subLineColumnNum", "subLines", "i", "printPrefixedLines", "subLine", "existingLines", "_", "line", "padLen", "prefix", "require_GraphQLError", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "formatError", "printError", "_isObjectLike", "_location", "_printLocation", "toNormalizedOptions", "args", "firstArg", "GraphQLError", "message", "rawArgs", "_this$nodes", "_nodeLocations$", "_ref", "nodes", "source", "positions", "path", "originalError", "extensions", "undefinedIfEmpty", "nodeLocations", "node", "loc", "pos", "originalExtensions", "output", "location", "formattedError", "array", "error", "require_syntaxError", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "syntaxError", "_GraphQLError", "source", "position", "description", "require_ast", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isNode", "Location", "startToken", "endToken", "source", "Token", "kind", "start", "end", "line", "column", "value", "QueryDocumentKeys", "kindValues", "maybeNode", "maybeKind", "OperationTypeNode", "require_directiveLocation", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "DirectiveLocation", "require_kinds", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "Kind", "require_characterClasses", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isDigit", "isLetter", "isNameContinue", "isNameStart", "isWhiteSpace", "code", "require_blockString", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "dedentBlockStringLines", "isPrintableAsBlockString", "printBlockString", "_characterClasses", "lines", "_firstNonEmptyLine2", "commonIndent", "firstNonEmptyLine", "lastNonEmptyLine", "i", "_firstNonEmptyLine", "line", "indent", "leadingWhitespace", "str", "value", "isEmptyLine", "hasIndent", "hasCommonIndent", "seenNonEmptyLine", "options", "escapedValue", "isSingleLine", "forceLeadingNewLine", "hasTrailingTripleQuotes", "hasTrailingQuote", "hasTrailingSlash", "forceTrailingNewline", "printAsMultipleLines", "result", "skipLeadingNewLine", "require_tokenKind", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "TokenKind", "require_lexer", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isPunctuatorTokenKind", "_syntaxError", "_ast", "_blockString", "_characterClasses", "_tokenKind", "Lexer", "source", "startOfFileToken", "token", "nextToken", "readNextToken", "kind", "isUnicodeScalarValue", "code", "isSupplementaryCodePoint", "body", "location", "isLeadingSurrogate", "isTrailingSurrogate", "printCodePointAt", "lexer", "char", "createToken", "start", "end", "value", "line", "col", "bodyLength", "position", "readComment", "readBlockString", "readString", "readNumber", "readName", "firstCode", "isFloat", "readDigits", "chunkStart", "escape", "readEscapedUnicodeVariableWidth", "readEscapedUnicodeFixedWidth", "readEscapedCharacter", "point", "size", "readHexDigit", "read16BitHexCode", "trailingCode", "lineStart", "currentLine", "blockLines", "require_inspect", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "inspect", "MAX_ARRAY_LENGTH", "MAX_RECURSIVE_DEPTH", "value", "formatValue", "seenValues", "formatObjectValue", "previouslySeenValues", "isJSONable", "jsonValue", "formatArray", "formatObject", "object", "entries", "getObjectTag", "key", "array", "len", "remaining", "items", "i", "tag", "name", "require_instanceOf", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_inspect", "instanceOf", "value", "constructor", "require_source", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isSource", "_devAssert", "_inspect", "_instanceOf", "Source", "body", "name", "locationOffset", "source", "require_parser", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "parse", "parseConstValue", "parseType", "parseValue", "_syntaxError", "_ast", "_directiveLocation", "_kinds", "_lexer", "_source", "_tokenKind", "source", "options", "Parser", "parser", "value", "type", "sourceObj", "token", "hasDescription", "keywordToken", "start", "operation", "name", "operationToken", "nameOrAlias", "alias", "isConst", "item", "hasTypeCondition", "_this$_options", "varName", "directives", "innerType", "description", "operationTypes", "interfaces", "fields", "args", "defaultValue", "types", "values", "getTokenDesc", "repeatable", "locations", "startToken", "node", "_this$_options2", "kind", "getTokenKindDesc", "atToken", "openKind", "parseFn", "closeKind", "nodes", "delimiterKind", "require_didYouMean", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "didYouMean", "MAX_SUGGESTIONS", "firstArg", "secondArg", "subMessage", "suggestionsArg", "message", "suggestions", "x", "selected", "lastItem", "require_identityFunc", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "identityFunc", "x", "require_keyMap", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "keyMap", "list", "keyFn", "result", "item", "require_keyValMap", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "keyValMap", "list", "keyFn", "valFn", "result", "item", "require_mapValue", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "mapValue", "map", "fn", "result", "key", "require_naturalCompare", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "naturalCompare", "aStr", "bStr", "aIndex", "bIndex", "aChar", "bChar", "isDigit", "aNum", "DIGIT_0", "bNum", "DIGIT_9", "code", "require_suggestionList", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "suggestionList", "_naturalCompare", "input", "options", "optionsByDistance", "lexicalDistance", "LexicalDistance", "threshold", "option", "distance", "b", "distanceDiff", "stringToArray", "optionLowerCase", "a", "tmp", "aLength", "bLength", "rows", "j", "i", "upRow", "currentRow", "smallestCell", "cost", "currentCell", "doubleDiagonalCell", "str", "strLength", "array", "require_toObjMap", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "toObjMap", "obj", "map", "key", "value", "require_printString", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "printString", "str", "escapedRegExp", "escapedReplacer", "escapeSequences", "require_visitor", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getEnterLeaveForKind", "getVisitFn", "visit", "visitInParallel", "_devAssert", "_inspect", "_ast", "_kinds", "BREAK", "root", "visitor", "visitorKeys", "enterLeaveMap", "kind", "stack", "inArray", "keys", "index", "edits", "node", "key", "parent", "path", "ancestors", "isLeaving", "isEdited", "editOffset", "editKey", "editValue", "arrayKey", "result", "_enterLeaveMap$get", "_enterLeaveMap$get2", "visitFn", "_node$kind", "visitors", "skipping", "mergedVisitor", "hasVisitor", "enterList", "leaveList", "i", "enter", "leave", "mergedEnterLeave", "args", "_enterList$i", "_leaveList$i", "kindVisitor", "require_printer", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "print", "_blockString", "_printString", "_visitor", "ast", "printDocASTReducer", "MAX_LINE_LENGTH", "node", "join", "varDefs", "wrap", "prefix", "variable", "type", "defaultValue", "directives", "selections", "block", "alias", "name", "args", "selectionSet", "argsLine", "indent", "value", "typeCondition", "variableDefinitions", "isBlockString", "values", "fields", "description", "operationTypes", "operation", "interfaces", "hasMultilineItems", "types", "repeatable", "locations", "maybeArray", "separator", "_maybeArray$filter$jo", "x", "array", "start", "maybeString", "end", "str", "_maybeArray$some", "require_valueFromASTUntyped", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "valueFromASTUntyped", "_keyValMap", "_kinds", "valueNode", "variables", "node", "field", "require_assertName", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertEnumValueName", "assertName", "_devAssert", "_GraphQLError", "_characterClasses", "name", "i", "require_definition", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "argsToArgsConfig", "assertAbstractType", "assertCompositeType", "assertEnumType", "assertInputObjectType", "assertInputType", "assertInterfaceType", "assertLeafType", "assertListType", "assertNamedType", "assertNonNullType", "assertNullableType", "assertObjectType", "assertOutputType", "assertScalarType", "assertType", "assertUnionType", "assertWrappingType", "defineArguments", "getNamedType", "getNullableType", "isAbstractType", "isCompositeType", "isEnumType", "isInputObjectType", "isInputType", "isInterfaceType", "isLeafType", "isListType", "isNamedType", "isNonNullType", "isNullableType", "isObjectType", "isOutputType", "isRequiredArgument", "isRequiredInputField", "isScalarType", "isType", "isUnionType", "isWrappingType", "resolveObjMapThunk", "resolveReadonlyArrayThunk", "_devAssert", "_didYouMean", "_identityFunc", "_inspect", "_instanceOf", "_isObjectLike", "_keyMap", "_keyValMap", "_mapValue", "_suggestionList", "_toObjMap", "_GraphQLError", "_kinds", "_printer", "_valueFromASTUntyped", "_assertName", "type", "GraphQLScalarType", "GraphQLObjectType", "GraphQLInterfaceType", "GraphQLUnionType", "GraphQLEnumType", "GraphQLInputObjectType", "GraphQLList", "GraphQLNonNull", "ofType", "unwrappedType", "thunk", "config", "_config$parseValue", "_config$serialize", "_config$parseLiteral", "_config$extensionASTN", "parseValue", "node", "variables", "_config$extensionASTN2", "defineFieldMap", "defineInterfaces", "fieldsToFieldsConfig", "_config$interfaces", "interfaces", "fieldMap", "isPlainObj", "fieldConfig", "fieldName", "_fieldConfig$args", "argsConfig", "argName", "argConfig", "obj", "fields", "field", "args", "arg", "_config$extensionASTN3", "_config$extensionASTN4", "defineTypes", "types", "_config$extensionASTN5", "defineEnumValues", "enumValue", "value", "name", "outputValue", "inputValue", "valueStr", "didYouMeanEnumValue", "valueNode", "_variables", "values", "enumType", "unknownValueStr", "allNames", "suggestedValues", "typeName", "valueMap", "valueName", "valueConfig", "_config$extensionASTN6", "defineInputFieldMap", "require_typeComparators", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "doTypesOverlap", "isEqualType", "isTypeSubTypeOf", "_definition", "typeA", "typeB", "schema", "maybeSubType", "superType", "type", "require_scalars", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isSpecifiedScalarType", "_inspect", "_isObjectLike", "_GraphQLError", "_kinds", "_printer", "_definition", "GRAPHQL_MAX_INT", "GRAPHQL_MIN_INT", "GraphQLInt", "outputValue", "coercedValue", "serializeObject", "num", "inputValue", "valueNode", "GraphQLFloat", "GraphQLString", "GraphQLBoolean", "GraphQLID", "specifiedScalarTypes", "type", "name", "valueOfResult", "require_directives", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertDirective", "isDirective", "isSpecifiedDirective", "_devAssert", "_inspect", "_instanceOf", "_isObjectLike", "_toObjMap", "_directiveLocation", "_assertName", "_definition", "_scalars", "directive", "GraphQLDirective", "config", "_config$isRepeatable", "_config$args", "args", "GraphQLIncludeDirective", "GraphQLSkipDirective", "DEFAULT_DEPRECATION_REASON", "GraphQLDeprecatedDirective", "GraphQLSpecifiedByDirective", "specifiedDirectives", "name", "require_isIterableObject", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isIterableObject", "maybeIterable", "require_astFromValue", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "astFromValue", "_inspect", "_invariant", "_isIterableObject", "_isObjectLike", "_kinds", "_definition", "_scalars", "value", "type", "astValue", "itemType", "valuesNodes", "item", "itemNode", "fieldNodes", "field", "fieldValue", "serialized", "stringNum", "integerStringRegExp", "require_introspection", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isIntrospectionType", "_inspect", "_invariant", "_directiveLocation", "_printer", "_astFromValue", "_definition", "_scalars", "__Schema", "schema", "__Type", "__Directive", "directive", "__DirectiveLocation", "__InputValue", "field", "includeDeprecated", "arg", "__TypeKind", "type", "TypeKind", "obj", "__Field", "fields", "_args", "_context", "__EnumValue", "values", "inputValue", "defaultValue", "valueAST", "enumValue", "SchemaMetaFieldDef", "_source", "TypeMetaFieldDef", "name", "TypeNameMetaFieldDef", "parentType", "introspectionTypes", "require_schema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertSchema", "isSchema", "_devAssert", "_inspect", "_instanceOf", "_isObjectLike", "_toObjMap", "_ast", "_definition", "_directives", "_introspection", "schema", "GraphQLSchema", "config", "_config$extensionASTN", "_config$directives", "allReferencedTypes", "type", "collectReferencedTypes", "directive", "arg", "namedType", "typeName", "iface", "implementations", "operation", "name", "abstractType", "interfaceType", "maybeSubType", "map", "typeSet", "memberType", "field", "require_validate", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertValidSchema", "validateSchema", "_inspect", "_GraphQLError", "_ast", "_typeComparators", "_definition", "_directives", "_introspection", "_schema", "schema", "context", "SchemaValidationContext", "validateRootTypes", "validateDirectives", "validateTypes", "errors", "error", "message", "nodes", "_nodes", "queryType", "_getOperationTypeNode", "getOperationTypeNode", "mutationType", "_getOperationTypeNode2", "subscriptionType", "_getOperationTypeNode3", "operation", "_flatMap$find", "schemaNode", "_schemaNode$operation", "operationNode", "directive", "validateName", "arg", "_arg$astNode", "getDeprecatedDirectiveNode", "node", "validateInputObjectCircularRefs", "createInputObjectCircularRefsValidator", "typeMap", "type", "validateFields", "validateInterfaces", "validateUnionMembers", "validateEnumValues", "validateInputFields", "fields", "field", "_field$astNode", "argName", "_arg$astNode2", "_arg$astNode3", "ifaceTypeNames", "iface", "getAllImplementsInterfaceNodes", "validateTypeImplementsAncestors", "validateTypeImplementsInterface", "typeFieldMap", "ifaceField", "fieldName", "typeField", "_ifaceField$astNode", "_typeField$astNode", "ifaceArg", "typeArg", "_ifaceArg$astNode", "_typeArg$astNode", "ifaceInterfaces", "transitive", "union", "memberTypes", "includedTypeNames", "memberType", "getUnionMemberTypeNodes", "enumType", "enumValues", "enumValue", "inputObj", "_field$astNode2", "_field$astNode3", "visitedTypes", "fieldPath", "fieldPathIndexByTypeName", "detectCycleRecursive", "fieldType", "cycleIndex", "cyclePath", "pathStr", "fieldObj", "astNode", "extensionASTNodes", "typeNode", "_typeNode$interfaces", "ifaceNode", "typeName", "unionNode", "_unionNode$types", "definitionNode", "_definitionNode$direc", "require_typeFromAST", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "typeFromAST", "_kinds", "_definition", "schema", "typeNode", "innerType", "require_TypeInfo", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "visitWithTypeInfo", "_ast", "_kinds", "_visitor", "_definition", "_introspection", "_typeFromAST", "TypeInfo", "schema", "initialType", "getFieldDefFn", "getFieldDef", "node", "namedType", "parentType", "fieldDef", "fieldType", "rootType", "typeConditionAST", "outputType", "inputType", "_this$getDirective", "argDef", "argType", "fieldOrDirective", "arg", "listType", "itemType", "objectType", "inputFieldType", "inputField", "enumType", "enumValue", "fieldNode", "name", "typeInfo", "visitor", "args", "fn", "result", "require_predicates", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isConstValueNode", "isDefinitionNode", "isExecutableDefinitionNode", "isSelectionNode", "isTypeDefinitionNode", "isTypeExtensionNode", "isTypeNode", "isTypeSystemDefinitionNode", "isTypeSystemExtensionNode", "isValueNode", "_kinds", "node", "field", "require_ExecutableDefinitionsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "ExecutableDefinitionsRule", "_GraphQLError", "_kinds", "_predicates", "context", "node", "definition", "defName", "require_FieldsOnCorrectTypeRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "FieldsOnCorrectTypeRule", "_didYouMean", "_naturalCompare", "_suggestionList", "_GraphQLError", "_definition", "context", "node", "type", "schema", "fieldName", "suggestion", "getSuggestedTypeNames", "getSuggestedFieldNames", "suggestedTypes", "usageCount", "possibleType", "possibleInterface", "_usageCount$possibleI", "typeA", "typeB", "usageCountDiff", "x", "possibleFieldNames", "require_FragmentsOnCompositeTypesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "FragmentsOnCompositeTypesRule", "_GraphQLError", "_printer", "_definition", "_typeFromAST", "context", "node", "typeCondition", "type", "typeStr", "require_KnownArgumentNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "KnownArgumentNamesOnDirectivesRule", "KnownArgumentNamesRule", "_didYouMean", "_suggestionList", "_GraphQLError", "_kinds", "_directives", "context", "argNode", "argDef", "fieldDef", "parentType", "argName", "knownArgsNames", "arg", "suggestions", "directiveArgs", "schema", "definedDirectives", "directive", "astDefinitions", "def", "_def$arguments", "argsNodes", "directiveNode", "directiveName", "knownArgs", "require_KnownDirectivesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "KnownDirectivesRule", "_inspect", "_invariant", "_GraphQLError", "_ast", "_directiveLocation", "_kinds", "_directives", "context", "locationsMap", "schema", "definedDirectives", "directive", "astDefinitions", "def", "name", "node", "_key", "_parent", "_path", "ancestors", "locations", "candidateLocation", "getDirectiveLocationForASTPath", "appliedTo", "getDirectiveLocationForOperation", "parentNode", "operation", "require_KnownFragmentNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "KnownFragmentNamesRule", "_GraphQLError", "context", "node", "fragmentName", "require_KnownTypeNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "KnownTypeNamesRule", "_didYouMean", "_suggestionList", "_GraphQLError", "_predicates", "_introspection", "_scalars", "context", "schema", "existingTypesMap", "definedTypes", "def", "typeNames", "node", "_1", "parent", "_2", "ancestors", "typeName", "_ancestors$", "definitionNode", "isSDL", "isSDLNode", "standardTypeNames", "suggestedTypes", "type", "value", "require_LoneAnonymousOperationRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "LoneAnonymousOperationRule", "_GraphQLError", "_kinds", "context", "operationCount", "node", "definition", "require_LoneSchemaDefinitionRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "LoneSchemaDefinitionRule", "_GraphQLError", "context", "_ref", "_ref2", "_oldSchema$astNode", "oldSchema", "alreadyDefined", "schemaDefinitionsCount", "node", "require_NoFragmentCyclesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "NoFragmentCyclesRule", "_GraphQLError", "context", "visitedFrags", "spreadPath", "spreadPathIndexByName", "node", "detectCycleRecursive", "fragment", "fragmentName", "spreadNodes", "spreadNode", "spreadName", "cycleIndex", "spreadFragment", "cyclePath", "viaPath", "s", "require_NoUndefinedVariablesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "NoUndefinedVariablesRule", "_GraphQLError", "context", "variableNameDefined", "operation", "usages", "node", "varName", "require_NoUnusedFragmentsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "NoUnusedFragmentsRule", "_GraphQLError", "context", "operationDefs", "fragmentDefs", "node", "fragmentNameUsed", "operation", "fragment", "fragmentDef", "fragName", "require_NoUnusedVariablesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "NoUnusedVariablesRule", "_GraphQLError", "context", "variableDefs", "operation", "variableNameUsed", "usages", "node", "variableDef", "variableName", "def", "require_sortValueNode", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "sortValueNode", "_naturalCompare", "_kinds", "valueNode", "sortFields", "fields", "fieldNode", "fieldA", "fieldB", "require_OverlappingFieldsCanBeMergedRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "OverlappingFieldsCanBeMergedRule", "_inspect", "_GraphQLError", "_kinds", "_printer", "_definition", "_sortValueNode", "_typeFromAST", "reasonMessage", "reason", "responseName", "subReason", "context", "comparedFragmentPairs", "PairSet", "cachedFieldsAndFragmentNames", "selectionSet", "conflicts", "findConflictsWithinSelectionSet", "fields1", "fields2", "reasonMsg", "parentType", "fieldMap", "fragmentNames", "getFieldsAndFragmentNames", "collectConflictsWithin", "i", "collectConflictsBetweenFieldsAndFragment", "j", "collectConflictsBetweenFragments", "areMutuallyExclusive", "fragmentName", "fragment", "fieldMap2", "referencedFragmentNames", "getReferencedFieldsAndFragmentNames", "collectConflictsBetween", "referencedFragmentName", "fragmentName1", "fragmentName2", "fragment1", "fragment2", "fieldMap1", "referencedFragmentNames1", "referencedFragmentNames2", "referencedFragmentName2", "referencedFragmentName1", "findConflictsBetweenSubSelectionSets", "parentType1", "selectionSet1", "parentType2", "selectionSet2", "fragmentNames1", "fragmentNames2", "fields", "conflict", "findConflict", "parentFieldsAreMutuallyExclusive", "field1", "field2", "node1", "def1", "node2", "def2", "name1", "name2", "stringifyArguments", "type1", "type2", "doTypesConflict", "subfieldConflicts", "fieldNode", "_fieldNode$arguments", "args", "inputObjectWithArgs", "argNode", "cached", "nodeAndDefs", "_collectFieldsAndFragmentNames", "result", "fragmentType", "selection", "fieldName", "fieldDef", "typeCondition", "inlineFragmentType", "a", "b", "_this$_data$get", "key1", "key2", "map", "require_PossibleFragmentSpreadsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "PossibleFragmentSpreadsRule", "_inspect", "_GraphQLError", "_definition", "_typeComparators", "_typeFromAST", "context", "node", "fragType", "parentType", "parentTypeStr", "fragTypeStr", "fragName", "getFragmentType", "name", "frag", "type", "require_PossibleTypeExtensionsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "PossibleTypeExtensionsRule", "_didYouMean", "_inspect", "_invariant", "_suggestionList", "_GraphQLError", "_kinds", "_predicates", "_definition", "context", "schema", "definedTypes", "def", "checkExtension", "node", "typeName", "defNode", "existingType", "expectedKind", "defKindToExtKind", "typeToExtKind", "kindStr", "extensionKindToTypeName", "allTypeNames", "suggestedTypes", "type", "kind", "require_ProvidedRequiredArgumentsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "ProvidedRequiredArgumentsOnDirectivesRule", "ProvidedRequiredArgumentsRule", "_inspect", "_keyMap", "_GraphQLError", "_kinds", "_printer", "_definition", "_directives", "context", "fieldNode", "_fieldNode$arguments", "fieldDef", "providedArgs", "arg", "argDef", "argTypeStr", "_schema$getDirectives", "requiredArgsMap", "schema", "definedDirectives", "directive", "astDefinitions", "def", "_def$arguments", "argNodes", "isRequiredArgumentNode", "directiveNode", "directiveName", "requiredArgs", "_directiveNode$argume", "argNodeMap", "argName", "argType", "require_ScalarLeafsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "ScalarLeafsRule", "_inspect", "_GraphQLError", "_definition", "context", "node", "type", "selectionSet", "fieldName", "typeStr", "require_printPathArray", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "printPathArray", "path", "key", "require_Path", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "addPath", "pathToArray", "prev", "key", "typename", "path", "flattened", "curr", "require_coerceInputValue", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "coerceInputValue", "_didYouMean", "_inspect", "_invariant", "_isIterableObject", "_isObjectLike", "_Path", "_printPathArray", "_suggestionList", "_GraphQLError", "_definition", "inputValue", "type", "onError", "defaultOnError", "coerceInputValueImpl", "path", "invalidValue", "error", "errorPrefix", "itemType", "itemValue", "index", "itemPath", "coercedValue", "fieldDefs", "field", "fieldValue", "typeStr", "fieldName", "suggestions", "parseResult", "require_valueFromAST", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "valueFromAST", "_inspect", "_invariant", "_keyMap", "_kinds", "_definition", "valueNode", "type", "variables", "variableName", "variableValue", "itemType", "coercedValues", "itemNode", "isMissingVariable", "itemValue", "coercedValue", "coercedObj", "fieldNodes", "field", "fieldNode", "fieldValue", "result", "require_values", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getArgumentValues", "getDirectiveValues", "getVariableValues", "_inspect", "_keyMap", "_printPathArray", "_GraphQLError", "_kinds", "_printer", "_definition", "_coerceInputValue", "_typeFromAST", "_valueFromAST", "schema", "varDefNodes", "inputs", "options", "errors", "maxErrors", "coerced", "coerceVariableValues", "error", "onError", "coercedValues", "varDefNode", "varName", "varType", "varTypeStr", "hasOwnProperty", "value", "path", "invalidValue", "prefix", "def", "node", "variableValues", "_node$arguments", "argumentNodes", "argNodeMap", "arg", "argDef", "name", "argType", "argumentNode", "valueNode", "isNull", "variableName", "coercedValue", "directiveDef", "_node$directives", "directiveNode", "directive", "obj", "prop", "require_collectFields", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "collectFields", "collectSubfields", "_kinds", "_definition", "_directives", "_typeFromAST", "_values", "schema", "fragments", "variableValues", "runtimeType", "selectionSet", "fields", "collectFieldsImpl", "returnType", "fieldNodes", "subFieldNodes", "visitedFragmentNames", "node", "selection", "shouldIncludeNode", "name", "getFieldEntryKey", "fieldList", "doesFragmentConditionMatch", "fragName", "fragment", "skip", "include", "type", "typeConditionNode", "conditionalType", "require_SingleFieldSubscriptionsRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "SingleFieldSubscriptionsRule", "_GraphQLError", "_kinds", "_collectFields", "context", "node", "schema", "subscriptionType", "operationName", "variableValues", "document", "fragments", "definition", "fields", "extraFieldSelections", "fieldNodes", "require_groupBy", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "groupBy", "list", "keyFn", "result", "item", "key", "group", "require_UniqueArgumentDefinitionNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueArgumentDefinitionNamesRule", "_groupBy", "_GraphQLError", "context", "directiveNode", "_directiveNode$argume", "argumentNodes", "checkArgUniqueness", "checkArgUniquenessPerField", "typeNode", "_typeNode$fields", "typeName", "fieldNodes", "fieldDef", "_fieldDef$arguments", "fieldName", "parentName", "seenArgs", "arg", "argName", "argNodes", "node", "require_UniqueArgumentNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueArgumentNamesRule", "_groupBy", "_GraphQLError", "context", "checkArgUniqueness", "parentNode", "_parentNode$arguments", "argumentNodes", "seenArgs", "arg", "argName", "argNodes", "node", "require_UniqueDirectiveNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueDirectiveNamesRule", "_GraphQLError", "context", "knownDirectiveNames", "schema", "node", "directiveName", "require_UniqueDirectivesPerLocationRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueDirectivesPerLocationRule", "_GraphQLError", "_kinds", "_predicates", "_directives", "context", "uniqueDirectiveMap", "schema", "definedDirectives", "directive", "astDefinitions", "def", "schemaDirectives", "typeDirectivesMap", "node", "seenDirectives", "typeName", "directiveName", "require_UniqueEnumValueNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueEnumValueNamesRule", "_GraphQLError", "_definition", "context", "schema", "existingTypeMap", "knownValueNames", "checkValueUniqueness", "node", "_node$values", "typeName", "valueNodes", "valueNames", "valueDef", "valueName", "existingType", "require_UniqueFieldDefinitionNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueFieldDefinitionNamesRule", "_GraphQLError", "_definition", "context", "schema", "existingTypeMap", "knownFieldNames", "checkFieldUniqueness", "node", "_node$fields", "typeName", "fieldNodes", "fieldNames", "fieldDef", "fieldName", "hasField", "type", "require_UniqueFragmentNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueFragmentNamesRule", "_GraphQLError", "context", "knownFragmentNames", "node", "fragmentName", "require_UniqueInputFieldNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueInputFieldNamesRule", "_invariant", "_GraphQLError", "context", "knownNameStack", "knownNames", "prevKnownNames", "node", "fieldName", "require_UniqueOperationNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueOperationNamesRule", "_GraphQLError", "context", "knownOperationNames", "node", "operationName", "require_UniqueOperationTypesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueOperationTypesRule", "_GraphQLError", "context", "schema", "definedOperationTypes", "existingOperationTypes", "checkOperationTypes", "node", "_node$operationTypes", "operationTypesNodes", "operationType", "operation", "alreadyDefinedOperationType", "require_UniqueTypeNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueTypeNamesRule", "_GraphQLError", "context", "knownTypeNames", "schema", "checkTypeName", "node", "typeName", "require_UniqueVariableNamesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "UniqueVariableNamesRule", "_groupBy", "_GraphQLError", "context", "operationNode", "_operationNode$variab", "variableDefinitions", "seenVariableDefinitions", "node", "variableName", "variableNodes", "require_ValuesOfCorrectTypeRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "ValuesOfCorrectTypeRule", "_didYouMean", "_inspect", "_keyMap", "_suggestionList", "_GraphQLError", "_printer", "_definition", "context", "node", "type", "isValidValueNode", "fieldNodeMap", "field", "fieldDef", "typeStr", "parentType", "suggestions", "locationType", "error", "require_VariablesAreInputTypesRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "VariablesAreInputTypesRule", "_GraphQLError", "_printer", "_definition", "_typeFromAST", "context", "node", "type", "variableName", "typeName", "require_VariablesInAllowedPositionRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "VariablesInAllowedPositionRule", "_inspect", "_GraphQLError", "_kinds", "_definition", "_typeComparators", "_typeFromAST", "context", "varDefMap", "operation", "usages", "node", "type", "defaultValue", "varName", "varDef", "schema", "varType", "allowedVariableUsage", "varTypeStr", "typeStr", "varDefaultValue", "locationType", "locationDefaultValue", "nullableLocationType", "require_specifiedRules", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_ExecutableDefinitionsRule", "_FieldsOnCorrectTypeRule", "_FragmentsOnCompositeTypesRule", "_KnownArgumentNamesRule", "_KnownDirectivesRule", "_KnownFragmentNamesRule", "_KnownTypeNamesRule", "_LoneAnonymousOperationRule", "_LoneSchemaDefinitionRule", "_NoFragmentCyclesRule", "_NoUndefinedVariablesRule", "_NoUnusedFragmentsRule", "_NoUnusedVariablesRule", "_OverlappingFieldsCanBeMergedRule", "_PossibleFragmentSpreadsRule", "_PossibleTypeExtensionsRule", "_ProvidedRequiredArgumentsRule", "_ScalarLeafsRule", "_SingleFieldSubscriptionsRule", "_UniqueArgumentDefinitionNamesRule", "_UniqueArgumentNamesRule", "_UniqueDirectiveNamesRule", "_UniqueDirectivesPerLocationRule", "_UniqueEnumValueNamesRule", "_UniqueFieldDefinitionNamesRule", "_UniqueFragmentNamesRule", "_UniqueInputFieldNamesRule", "_UniqueOperationNamesRule", "_UniqueOperationTypesRule", "_UniqueTypeNamesRule", "_UniqueVariableNamesRule", "_ValuesOfCorrectTypeRule", "_VariablesAreInputTypesRule", "_VariablesInAllowedPositionRule", "specifiedRules", "specifiedSDLRules", "require_ValidationContext", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_kinds", "_visitor", "_TypeInfo", "ASTValidationContext", "ast", "onError", "error", "name", "fragments", "defNode", "node", "spreads", "setsToVisit", "set", "selection", "operation", "collectedNames", "nodesToVisit", "spread", "fragName", "fragment", "SDLValidationContext", "schema", "ValidationContext", "typeInfo", "usages", "newUsages", "variable", "frag", "require_validate", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertValidSDL", "assertValidSDLExtension", "validate", "validateSDL", "_devAssert", "_GraphQLError", "_visitor", "_validate", "_TypeInfo", "_specifiedRules", "_ValidationContext", "schema", "documentAST", "rules", "options", "typeInfo", "_options$maxErrors", "maxErrors", "abortObj", "errors", "context", "error", "visitor", "rule", "e", "schemaToExtend", "visitors", "require_memoize3", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "memoize3", "fn", "cache0", "a1", "a2", "a3", "cache1", "cache2", "fnResult", "require_promiseForObject", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "promiseForObject", "object", "resolvedValues", "resolvedObject", "i", "key", "require_promiseReduce", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "promiseReduce", "_isPromise", "values", "callbackFn", "initialValue", "accumulator", "value", "resolved", "require_toError", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "toError", "_inspect", "thrownValue", "NonErrorThrown", "require_locatedError", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "locatedError", "_toError", "_GraphQLError", "rawOriginalError", "nodes", "path", "_nodes", "originalError", "isLocatedGraphQLError", "error", "require_execute", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertValidExecutionArguments", "buildExecutionContext", "buildResolveInfo", "execute", "executeSync", "getFieldDef", "_devAssert", "_inspect", "_invariant", "_isIterableObject", "_isObjectLike", "_isPromise", "_memoize", "_Path", "_promiseForObject", "_promiseReduce", "_GraphQLError", "_locatedError", "_ast", "_kinds", "_definition", "_introspection", "_validate", "_collectFields", "_values", "collectSubfields", "exeContext", "returnType", "fieldNodes", "args", "schema", "document", "variableValues", "rootValue", "operation", "result", "executeOperation", "data", "buildResponse", "error", "errors", "rawVariableValues", "_definition$name", "_operation$variableDe", "contextValue", "operationName", "fieldResolver", "typeResolver", "subscribeFieldResolver", "fragments", "definition", "variableDefinitions", "coercedVariableValues", "defaultFieldResolver", "defaultTypeResolver", "rootType", "rootFields", "path", "executeFields", "executeFieldsSerially", "parentType", "sourceValue", "fields", "results", "responseName", "fieldPath", "executeField", "resolvedResult", "containsPromise", "source", "_fieldDef$resolve", "fieldDef", "resolveFn", "info", "completed", "resolved", "completeValue", "rawError", "handleFieldError", "completeListValue", "completeLeafValue", "completeAbstractValue", "completeObjectValue", "itemType", "completedResults", "item", "index", "itemPath", "completedItem", "serializedResult", "_returnType$resolveTy", "resolveTypeFn", "runtimeType", "resolvedRuntimeType", "ensureValidRuntimeType", "runtimeTypeName", "subFieldNodes", "isTypeOf", "resolvedIsTypeOf", "invalidReturnTypeError", "value", "abstractType", "possibleTypes", "promisedIsTypeOfResults", "i", "type", "isTypeOfResult", "isTypeOfResults", "property", "fieldNode", "fieldName", "require_graphql", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "graphql", "graphqlSync", "_devAssert", "_isPromise", "_parser", "_validate", "_validate2", "_execute", "args", "resolve", "graphqlImpl", "result", "schema", "source", "rootValue", "contextValue", "variableValues", "operationName", "fieldResolver", "typeResolver", "schemaValidationErrors", "document", "syntaxError", "validationErrors", "require_type", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_directives", "_scalars", "_definition", "_schema", "_introspection", "_assertName", "_validate", "require_language", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_visitor", "_directiveLocation", "_kinds", "_lexer", "_ast", "_source", "_tokenKind", "_location", "_predicates", "_parser", "_printer", "_printLocation", "require_isAsyncIterable", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isAsyncIterable", "maybeAsyncIterable", "require_mapAsyncIterator", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "mapAsyncIterator", "iterable", "callback", "iterator", "mapResult", "result", "error", "require_subscribe", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "createSourceEventStream", "subscribe", "_devAssert", "_inspect", "_isAsyncIterable", "_Path", "_GraphQLError", "_locatedError", "_collectFields", "_execute", "_mapAsyncIterator", "_values", "args", "schema", "document", "rootValue", "contextValue", "variableValues", "operationName", "fieldResolver", "subscribeFieldResolver", "resultOrStream", "mapSourceToResponse", "payload", "exeContext", "eventStream", "executeSubscription", "error", "fragments", "operation", "rootType", "rootFields", "responseName", "fieldNodes", "fieldDef", "fieldName", "path", "info", "_fieldDef$subscribe", "require_execution", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_subscribe", "_execute", "_values", "_Path", "require_NoDeprecatedCustomRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "NoDeprecatedCustomRule", "_invariant", "_GraphQLError", "_definition", "context", "node", "fieldDef", "deprecationReason", "parentType", "argDef", "directiveDef", "inputObjectDef", "inputFieldDef", "enumValueDef", "enumTypeDef", "require_NoSchemaIntrospectionCustomRule", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "NoSchemaIntrospectionCustomRule", "_GraphQLError", "_definition", "_introspection", "context", "node", "type", "require_validation", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_ExecutableDefinitionsRule", "_FieldsOnCorrectTypeRule", "_FragmentsOnCompositeTypesRule", "_KnownArgumentNamesRule", "_KnownDirectivesRule", "_KnownFragmentNamesRule", "_KnownTypeNamesRule", "_LoneAnonymousOperationRule", "_LoneSchemaDefinitionRule", "_NoDeprecatedCustomRule", "_NoFragmentCyclesRule", "_NoSchemaIntrospectionCustomRule", "_NoUndefinedVariablesRule", "_NoUnusedFragmentsRule", "_NoUnusedVariablesRule", "_OverlappingFieldsCanBeMergedRule", "_PossibleFragmentSpreadsRule", "_PossibleTypeExtensionsRule", "_ProvidedRequiredArgumentsRule", "_ScalarLeafsRule", "_SingleFieldSubscriptionsRule", "_UniqueArgumentDefinitionNamesRule", "_UniqueArgumentNamesRule", "_UniqueDirectiveNamesRule", "_UniqueDirectivesPerLocationRule", "_UniqueEnumValueNamesRule", "_UniqueFieldDefinitionNamesRule", "_UniqueFragmentNamesRule", "_UniqueInputFieldNamesRule", "_UniqueOperationNamesRule", "_UniqueOperationTypesRule", "_UniqueTypeNamesRule", "_UniqueVariableNamesRule", "_ValidationContext", "_ValuesOfCorrectTypeRule", "_VariablesAreInputTypesRule", "_VariablesInAllowedPositionRule", "_specifiedRules", "_validate", "require_error", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_GraphQLError", "_locatedError", "_syntaxError", "require_getIntrospectionQuery", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getIntrospectionQuery", "options", "optionsWithDefault", "descriptions", "specifiedByUrl", "directiveIsRepeatable", "schemaDescription", "inputDeprecation", "str", "require_getOperationAST", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getOperationAST", "_kinds", "documentAST", "operationName", "operation", "definition", "_definition$name", "require_getOperationRootType", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getOperationRootType", "_GraphQLError", "schema", "operation", "queryType", "mutationType", "subscriptionType", "require_introspectionFromSchema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "introspectionFromSchema", "_invariant", "_parser", "_execute", "_getIntrospectionQuery", "schema", "options", "optionsWithDefaults", "document", "result", "require_buildClientSchema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "buildClientSchema", "_devAssert", "_inspect", "_isObjectLike", "_keyValMap", "_parser", "_definition", "_directives", "_introspection", "_scalars", "_schema", "_valueFromAST", "introspection", "options", "schemaIntrospection", "typeMap", "typeIntrospection", "buildType", "stdType", "queryType", "getObjectType", "mutationType", "subscriptionType", "directives", "buildDirective", "getType", "typeRef", "itemRef", "nullableRef", "nullableType", "getNamedType", "typeName", "type", "getInterfaceType", "buildScalarDef", "buildObjectDef", "buildInterfaceDef", "buildUnionDef", "buildEnumDef", "buildInputObjectDef", "typeStr", "scalarIntrospection", "buildImplementationsList", "implementingIntrospection", "implementingIntrospectionStr", "objectIntrospection", "buildFieldDefMap", "interfaceIntrospection", "unionIntrospection", "unionIntrospectionStr", "enumIntrospection", "enumIntrospectionStr", "valueIntrospection", "inputObjectIntrospection", "inputObjectIntrospectionStr", "buildInputValueDefMap", "fieldIntrospection", "buildField", "fieldIntrospectionStr", "inputValueIntrospections", "inputValue", "buildInputValue", "inputValueIntrospection", "defaultValue", "directiveIntrospection", "directiveIntrospectionStr", "require_extendSchema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "extendSchema", "extendSchemaImpl", "_devAssert", "_inspect", "_invariant", "_keyMap", "_mapValue", "_kinds", "_predicates", "_definition", "_directives", "_introspection", "_scalars", "_schema", "_validate", "_values", "_valueFromAST", "schema", "documentAST", "options", "schemaConfig", "extendedConfig", "_schemaDef", "_schemaDef$descriptio", "_schemaDef2", "_options$assumeValid", "typeDefs", "typeExtensionsMap", "directiveDefs", "schemaDef", "schemaExtensions", "def", "extendedTypeName", "existingTypeExtensions", "typeMap", "existingType", "extendNamedType", "typeNode", "_stdTypeMap$name", "name", "stdTypeMap", "buildType", "operationTypes", "replaceNamedType", "getOperationTypes", "replaceDirective", "buildDirective", "replaceType", "type", "directive", "config", "extendArg", "extendScalarType", "extendObjectType", "extendInterfaceType", "extendUnionType", "extendEnumType", "extendInputObjectType", "_typeExtensionsMap$co", "extensions", "field", "buildInputFieldMap", "_typeExtensionsMap$ty", "buildEnumValueMap", "_typeExtensionsMap$co2", "specifiedByURL", "extensionNode", "_getSpecifiedByURL", "getSpecifiedByURL", "_typeExtensionsMap$co3", "buildInterfaces", "extendField", "buildFieldMap", "_typeExtensionsMap$co4", "_typeExtensionsMap$co5", "buildUnionTypes", "arg", "nodes", "opTypes", "node", "_node$operationTypes", "operationTypesNodes", "operationType", "getNamedType", "_stdTypeMap$name2", "getWrappedType", "_node$description", "value", "buildArgumentMap", "fieldConfigMap", "_node$fields", "nodeFields", "_field$description", "getDeprecationReason", "args", "argsNodes", "argConfigMap", "_arg$description", "inputFieldMap", "_node$fields2", "fieldsNodes", "_field$description2", "enumValueMap", "_node$values", "valuesNodes", "_value$description", "_node$interfaces$map", "_node$interfaces", "_node$types$map", "_node$types", "astNode", "_typeExtensionsMap$na", "extensionASTNodes", "_astNode$description", "allNodes", "_astNode$description2", "_astNode$description3", "_astNode$description4", "_astNode$description5", "_astNode$description6", "deprecated", "specifiedBy", "require_buildASTSchema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "buildASTSchema", "buildSchema", "_devAssert", "_kinds", "_parser", "_directives", "_schema", "_validate", "_extendSchema", "documentAST", "options", "emptySchemaConfig", "config", "type", "directives", "stdDirective", "directive", "source", "document", "require_lexicographicSortSchema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "lexicographicSortSchema", "_inspect", "_invariant", "_keyValMap", "_naturalCompare", "_definition", "_directives", "_introspection", "_schema", "schema", "schemaConfig", "typeMap", "sortByName", "type", "sortNamedType", "sortDirective", "replaceMaybeType", "replaceType", "replaceNamedType", "maybeType", "directive", "config", "sortBy", "x", "sortArgs", "args", "sortObjMap", "arg", "sortFields", "fieldsMap", "field", "sortInputFields", "sortTypes", "array", "value", "map", "sortValueFn", "sortedMap", "key", "obj", "mapToKey", "obj1", "obj2", "key1", "key2", "require_printSchema", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "printIntrospectionSchema", "printSchema", "printType", "_inspect", "_invariant", "_blockString", "_kinds", "_printer", "_definition", "_directives", "_introspection", "_scalars", "_astFromValue", "schema", "printFilteredSchema", "n", "isDefinedType", "type", "directiveFilter", "typeFilter", "directives", "types", "printSchemaDefinition", "directive", "printDirective", "isSchemaOfCommonNames", "operationTypes", "queryType", "mutationType", "subscriptionType", "printDescription", "printScalar", "printObject", "printInterface", "printUnion", "printEnum", "printInputObject", "printSpecifiedByURL", "printImplementedInterfaces", "interfaces", "i", "printFields", "possibleTypes", "values", "value", "printDeprecated", "printBlock", "fields", "f", "printInputValue", "printArgs", "items", "args", "indentation", "arg", "defaultAST", "argDecl", "reason", "scalar", "def", "firstInBlock", "description", "blockString", "require_concatAST", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "concatAST", "_kinds", "documents", "definitions", "doc", "require_separateOperations", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "separateOperations", "_kinds", "_visitor", "documentAST", "operations", "depGraph", "definitionNode", "collectDependencies", "separatedDocumentASTs", "operation", "dependencies", "fragmentName", "collectTransitiveDependencies", "operationName", "node", "collected", "fromName", "immediateDeps", "toName", "selectionSet", "require_stripIgnoredCharacters", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "stripIgnoredCharacters", "_blockString", "_lexer", "_source", "_tokenKind", "source", "sourceObj", "body", "lexer", "strippedBody", "wasLastAddedTokenNonPunctuator", "currentToken", "tokenKind", "isNonPunctuator", "tokenBody", "require_assertValidName", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "assertValidName", "isValidNameError", "_devAssert", "_GraphQLError", "_assertName", "name", "error", "require_findBreakingChanges", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "findBreakingChanges", "findDangerousChanges", "_inspect", "_invariant", "_keyMap", "_printer", "_definition", "_scalars", "_astFromValue", "_sortValueNode", "BreakingChangeType", "DangerousChangeType", "oldSchema", "newSchema", "findSchemaChanges", "change", "findTypeChanges", "findDirectiveChanges", "schemaChanges", "directivesDiff", "diff", "oldDirective", "newDirective", "argsDiff", "newArg", "oldArg", "location", "typesDiff", "oldType", "newType", "findEnumTypeChanges", "findUnionTypeChanges", "findInputObjectTypeChanges", "findFieldChanges", "findImplementedInterfacesChanges", "typeKindName", "fieldsDiff", "newField", "oldField", "isChangeSafeForInputObjectFieldOrFieldArg", "possibleTypesDiff", "newPossibleType", "oldPossibleType", "valuesDiff", "newValue", "oldValue", "interfacesDiff", "newInterface", "oldInterface", "findArgChanges", "isChangeSafeForObjectOrInterfaceField", "oldValueStr", "stringifyValue", "newValueStr", "type", "value", "ast", "oldArray", "newArray", "added", "removed", "persisted", "oldMap", "name", "newMap", "oldItem", "newItem", "require_utilities", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_findBreakingChanges", "_TypeInfo", "_assertValidName", "_astFromValue", "_buildASTSchema", "_buildClientSchema", "_coerceInputValue", "_concatAST", "_typeComparators", "_extendSchema", "_getIntrospectionQuery", "_getOperationAST", "_getOperationRootType", "_introspectionFromSchema", "_lexicographicSortSchema", "_printSchema", "_separateOperations", "_stripIgnoredCharacters", "_typeFromAST", "_valueFromAST", "_valueFromASTUntyped", "require_graphql", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_index2", "_index6", "_index", "_index4", "_index5", "_index3", "_graphql", "_version", "definitions_1", "exports", "r", "sameType", "t1", "t2", "isDirectSubtype", "type", "maybeSubType", "unionMembershipTester", "u", "m", "implementsInterfaceTester", "i", "isSubtype", "allowedRules", "isStrictSubtype", "typesCanBeMerged", "assert", "condition", "message", "exports", "assertUnreachable", "_", "MultiMap", "key", "value", "values", "otherMap", "k", "vs", "v", "SetMultiMap", "OrderedMap", "a", "b", "compareFn", "lower", "upper", "middle", "i", "arrayEquals", "equalFct", "isSubset", "superset", "maybeSubset", "elt", "firstOf", "iterable", "res", "mapValues", "map", "array", "mapKeys", "mapEntries", "entry", "setValues", "set", "MapWithCachedArrays", "deleted", "copyWitNewLength", "arr", "newLength", "copy", "validateStringContainsBoolean", "str", "joinStrings", "toJoin", "sep", "firstSep", "lastSep", "first", "last", "DEFAULT_HUMAN_READABLE_LIST_CUTOFF_LENGTH", "printHumanReadableList", "names", "emptyValue", "prefix", "prefixPlural", "lastSeparator", "cutoff_output_length", "cutoff", "lastIdx", "length", "name", "toDisplay", "actualPrefix", "isDefined", "t", "removeArrayElement", "element", "index", "isNonEmptyArray", "findLast", "predicate", "mergeMapOrNull", "m1", "m2", "composeSets", "s1", "s2", "result", "setsEqual", "graphql_1", "utils_1", "FED1_CODE", "makeCodeDefinition", "code", "description", "metadata", "DEFAULT_METADATA", "message", "options", "extractGraphQLErrorOptions", "e", "exports", "AggregateGraphQLError", "causes", "c", "output", "cause", "aggregateError", "errorCauses", "printGraphQLErrorsOrRethrow", "printErrors", "errors", "makeErrorCodeCategory", "extractCode", "makeDescription", "element", "def", "codeDefByCode", "makeFederationDirectiveErrorCodeCategory", "codeSuffix", "directive", "errorCode", "errorCodeDef", "withModifiedErrorMessage", "newMessage", "withModifiedErrorNodes", "newNodes", "INVALID_GRAPHQL", "DIRECTIVE_DEFINITION_INVALID", "TYPE_DEFINITION_INVALID", "UNSUPPORTED_LINKED_FEATURE", "UNKNOWN_FEDERATION_LINK_VERSION", "UNKNOWN_LINK_VERSION", "FIELDS_HAS_ARGS", "KEY_FIELDS_HAS_ARGS", "PROVIDES_FIELDS_HAS_ARGS", "DIRECTIVE_FIELDS_MISSING_EXTERNAL", "PROVIDES_MISSING_EXTERNAL", "REQUIRES_MISSING_EXTERNAL", "DIRECTIVE_UNSUPPORTED_ON_INTERFACE", "KEY_UNSUPPORTED_ON_INTERFACE", "PROVIDES_UNSUPPORTED_ON_INTERFACE", "REQUIRES_UNSUPPORTED_ON_INTERFACE", "DIRECTIVE_IN_FIELDS_ARG", "KEY_HAS_DIRECTIVE_IN_FIELDS_ARGS", "PROVIDES_HAS_DIRECTIVE_IN_FIELDS_ARGS", "REQUIRES_HAS_DIRECTIVE_IN_FIELDS_ARGS", "EXTERNAL_UNUSED", "TYPE_WITH_ONLY_UNUSED_EXTERNAL", "PROVIDES_ON_NON_OBJECT_FIELD", "DIRECTIVE_INVALID_FIELDS_TYPE", "KEY_INVALID_FIELDS_TYPE", "PROVIDES_INVALID_FIELDS_TYPE", "REQUIRES_INVALID_FIELDS_TYPE", "DIRECTIVE_INVALID_FIELDS", "KEY_INVALID_FIELDS", "PROVIDES_INVALID_FIELDS", "REQUIRES_INVALID_FIELDS", "KEY_FIELDS_SELECT_INVALID_TYPE", "ROOT_TYPE_USED", "kind", "ROOT_QUERY_USED", "ROOT_MUTATION_USED", "ROOT_SUBSCRIPTION_USED", "INVALID_SUBGRAPH_NAME", "NO_QUERIES", "INTERFACE_FIELD_NO_IMPLEM", "TYPE_KIND_MISMATCH", "CONTEXT_NOT_SET", "CONTEXT_INVALID_SELECTION", "NO_CONTEXT_IN_SELECTION", "CONTEXT_NO_RESOLVABLE_KEY", "CONTEXT_NAME_INVALID", "EXTERNAL_TYPE_MISMATCH", "EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE", "EXTERNAL_ARGUMENT_MISSING", "EXTERNAL_ARGUMENT_TYPE_MISMATCH", "EXTERNAL_ARGUMENT_DEFAULT_MISMATCH", "EXTERNAL_ON_INTERFACE", "MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL", "FIELD_TYPE_MISMATCH", "ARGUMENT_TYPE_MISMATCH", "INPUT_FIELD_DEFAULT_MISMATCH", "ARGUMENT_DEFAULT_MISMATCH", "EXTENSION_WITH_NO_BASE", "EXTERNAL_MISSING_ON_BASE", "INVALID_FIELD_SHARING", "INVALID_SHAREABLE_USAGE", "INVALID_LINK_DIRECTIVE_USAGE", "INVALID_LINK_IDENTIFIER", "LINK_IMPORT_NAME_MISMATCH", "REFERENCED_INACCESSIBLE", "DEFAULT_VALUE_USES_INACCESSIBLE", "QUERY_ROOT_TYPE_INACCESSIBLE", "REQUIRED_INACCESSIBLE", "IMPLEMENTED_BY_INACCESSIBLE", "DISALLOWED_INACCESSIBLE", "ONLY_INACCESSIBLE_CHILDREN", "REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH", "REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH", "EMPTY_MERGED_INPUT_TYPE", "ENUM_VALUE_MISMATCH", "EMPTY_MERGED_ENUM_TYPE", "SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES", "SATISFIABILITY_ERROR", "OVERRIDE_FROM_SELF_ERROR", "OVERRIDE_SOURCE_HAS_OVERRIDE", "OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE", "OVERRIDE_ON_INTERFACE", "OVERRIDE_LABEL_INVALID", "UNSUPPORTED_FEATURE", "INVALID_FEDERATION_SUPERGRAPH", "DOWNSTREAM_SERVICE_ERROR", "DIRECTIVE_COMPOSITION_ERROR", "INTERFACE_OBJECT_USAGE_ERROR", "INTERFACE_KEY_NOT_ON_IMPLEMENTATION", "INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE", "SOURCE_FEDERATION_VERSION_REQUIRED", "SOURCE_API_NAME_INVALID", "SOURCE_API_PROTOCOL_INVALID", "SOURCE_API_HTTP_BASE_URL_INVALID", "SOURCE_HTTP_HEADERS_INVALID", "SOURCE_TYPE_API_ERROR", "SOURCE_TYPE_PROTOCOL_INVALID", "SOURCE_TYPE_HTTP_METHOD_INVALID", "SOURCE_TYPE_HTTP_PATH_INVALID", "SOURCE_TYPE_HTTP_BODY_INVALID", "SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY", "SOURCE_TYPE_SELECTION_INVALID", "SOURCE_FIELD_API_ERROR", "SOURCE_FIELD_PROTOCOL_INVALID", "SOURCE_FIELD_HTTP_METHOD_INVALID", "SOURCE_FIELD_HTTP_PATH_INVALID", "SOURCE_FIELD_HTTP_BODY_INVALID", "SOURCE_FIELD_SELECTION_INVALID", "SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD", "CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS", "COST_APPLIED_TO_INTERFACE_FIELD", "LIST_SIZE_APPLIED_TO_NON_LIST", "LIST_SIZE_INVALID_ASSUMED_SIZE", "LIST_SIZE_INVALID_SLICING_ARGUMENT", "LIST_SIZE_INVALID_SIZED_FIELD", "obj", "codeDef", "require_js_levenshtein", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "_min", "d0", "d1", "d2", "bx", "ay", "a", "b", "tmp", "la", "lb", "offset", "x", "y", "d3", "dd", "dy", "bx0", "bx1", "bx2", "bx3", "vector", "len", "js_levenshtein_1", "__importDefault", "utils_1", "suggestionList", "input", "options", "optionsByDistance", "threshold", "inputLowerCase", "option", "distance", "b", "distanceDiff", "exports", "MAX_SUGGESTIONS", "didYouMean", "suggestions", "message", "quotedSuggestions", "x", "selected", "lastItem", "require_shams", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "obj", "sym", "symObj", "symVal", "syms", "descriptor", "require_shams", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "hasSymbols", "require_es_errors", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_eval", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_range", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_ref", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_syntax", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_type", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_uri", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_has_symbols", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "origSymbol", "hasSymbolSham", "require_has_proto", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "test", "$Object", "require_implementation", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "ERROR_MESSAGE", "toStr", "max", "funcType", "concatty", "a", "b", "arr", "i", "j", "slicy", "arrLike", "offset", "joiny", "joiner", "str", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "implementation", "require_hasown", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "call", "$hasOwn", "bind", "require_get_intrinsic", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "undefined", "$Error", "$EvalError", "$RangeError", "$ReferenceError", "$SyntaxError", "$TypeError", "$URIError", "$Function", "getEvalledConstructor", "expressionSyntax", "$gOPD", "throwTypeError", "ThrowTypeError", "hasSymbols", "hasProto", "getProto", "x", "needsEval", "TypedArray", "INTRINSICS", "e", "errorProto", "doEval", "name", "value", "fn", "gen", "LEGACY_ALIASES", "bind", "hasOwn", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "string", "first", "last", "result", "match", "number", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "i", "isOwn", "part", "desc", "require_es_define_property", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "GetIntrinsic", "$defineProperty", "require_gOPD", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_gopd", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$gOPD", "require_define_data_property", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$defineProperty", "$SyntaxError", "$TypeError", "gopd", "obj", "property", "value", "nonEnumerable", "nonWritable", "nonConfigurable", "loose", "desc", "require_has_property_descriptors", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$defineProperty", "hasPropertyDescriptors", "require_set_function_length", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "GetIntrinsic", "define", "hasDescriptors", "gOPD", "$TypeError", "$floor", "fn", "length", "loose", "functionLengthIsConfigurable", "functionLengthIsWritable", "desc", "require_call_bind", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "bind", "GetIntrinsic", "setFunctionLength", "$TypeError", "$apply", "$call", "$reflectApply", "$defineProperty", "$max", "originalFunction", "func", "applyBind", "require_callBound", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "GetIntrinsic", "callBind", "$indexOf", "name", "allowMissing", "intrinsic", "require_is_arguments", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "hasToStringTag", "callBound", "$toString", "isStandardArguments", "value", "isLegacyArguments", "supportsStandardArguments", "require_is_generator_function", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "toStr", "fnToStr", "isFnRegex", "hasToStringTag", "getProto", "getGeneratorFunc", "GeneratorFunction", "fn", "str", "generatorFunc", "require_is_callable", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "fnToStr", "reflectApply", "badArrayLike", "isCallableMarker", "_", "constructorRegex", "isES6ClassFn", "value", "fnStr", "tryFunctionObject", "toStr", "fnClass", "genClass", "hasToStringTag", "documentDotAll", "e", "strClass", "require_for_each", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isCallable", "toStr", "hasOwnProperty", "forEachArray", "array", "iterator", "receiver", "i", "len", "forEachString", "string", "forEachObject", "object", "k", "forEach", "list", "thisArg", "require_available_typed_arrays", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "possibleNames", "g", "out", "i", "require_which_typed_array", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "forEach", "availableTypedArrays", "callBind", "callBound", "gOPD", "$toString", "hasToStringTag", "g", "typedArrays", "$slice", "getPrototypeOf", "$indexOf", "array", "value", "i", "cache", "typedArray", "arr", "proto", "descriptor", "superProto", "fn", "tryTypedArrays", "found", "getter", "trySlices", "name", "tag", "require_is_typed_array", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "forEach", "availableTypedArrays", "callBound", "$toString", "hasToStringTag", "gOPD", "g", "typedArrays", "$indexOf", "array", "value", "i", "$slice", "toStrTags", "getPrototypeOf", "typedArray", "arr", "proto", "descriptor", "superProto", "tryTypedArrays", "anyTrue", "getter", "tag", "require_types", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isArgumentsObject", "isGeneratorFunction", "whichTypedArray", "isTypedArray", "uncurryThis", "f", "BigIntSupported", "SymbolSupported", "ObjectToString", "numberValue", "stringValue", "booleanValue", "bigIntValue", "symbolValue", "checkBoxedPrimitive", "value", "prototypeValueOf", "isPromise", "input", "isArrayBufferView", "isDataView", "isUint8Array", "isUint8ClampedArray", "isUint16Array", "isUint32Array", "isInt8Array", "isInt16Array", "isInt32Array", "isFloat32Array", "isFloat64Array", "isBigInt64Array", "isBigUint64Array", "isMapToString", "isMap", "isSetToString", "isSet", "isWeakMapToString", "isWeakMap", "isWeakSetToString", "isWeakSet", "isArrayBufferToString", "isArrayBuffer", "isDataViewToString", "SharedArrayBufferCopy", "isSharedArrayBufferToString", "isSharedArrayBuffer", "isAsyncFunction", "isMapIterator", "isSetIterator", "isGeneratorObject", "isWebAssemblyCompiledModule", "isNumberObject", "isStringObject", "isBooleanObject", "isBigIntObject", "isSymbolObject", "isBoxedPrimitive", "isAnyArrayBuffer", "method", "require_isBufferBrowser", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "arg", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "ctor", "superCtor", "TempCtor", "require_util", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "getOwnPropertyDescriptors", "obj", "keys", "descriptors", "i", "formatRegExp", "f", "isString", "objects", "inspect", "args", "len", "str", "x", "isNull", "isObject", "fn", "msg", "warned", "deprecated", "debugs", "debugEnvRegex", "debugEnv", "set", "pid", "opts", "ctx", "stylizeNoColor", "isBoolean", "isUndefined", "stylizeWithColor", "formatValue", "styleType", "style", "arrayToHash", "array", "hash", "val", "idx", "value", "recurseTimes", "isFunction", "ret", "primitive", "formatPrimitive", "visibleKeys", "isError", "formatError", "name", "isRegExp", "isDate", "base", "braces", "isArray", "n", "output", "formatArray", "key", "formatProperty", "reduceToSingleString", "simple", "isNumber", "l", "hasOwnProperty", "desc", "line", "numLinesEst", "length", "prev", "cur", "ar", "arg", "isNullOrUndefined", "isSymbol", "re", "objectToString", "d", "e", "isPrimitive", "o", "pad", "months", "timestamp", "time", "origin", "add", "prop", "kCustomPromisifiedSymbol", "original", "promiseResolve", "promiseReject", "promise", "resolve", "reject", "err", "callbackifyOnRejected", "reason", "cb", "newReason", "callbackify", "callbackified", "maybeCb", "self", "rej", "definitions_1", "graphql_1", "suggestions_1", "util_1", "types_1", "utils_1", "error_1", "MAX_INT", "MIN_INT", "valueToString", "v", "expectedType", "elementsType", "e", "k", "valueType", "_a", "integerStringRegExp", "exports", "valueEquals", "a", "b", "arrayValueEquals", "objectEquals", "i", "keys1", "keys2", "key", "v1", "v2", "argumentsEquals", "args1", "args2", "buildError", "message", "applyDefaultValues", "value", "type", "updated", "field", "fieldValue", "fieldName", "suggestions", "f", "withDefaultValues", "argument", "objectFieldNodeToConst", "valueNodeToConstValueNode", "constValues", "constFields", "valueToAST", "astValue", "valueToASTUntyped", "itemType", "items", "valuesNodes", "item", "itemNode", "fieldNodes", "stringNum", "isValidVariable", "variable", "locationType", "locationDefault", "variableType", "areTypesCompatible", "isValidValue", "variableDefinitions", "isValidValueApplication", "definition", "valueKeys", "fieldsAreValid", "hasUnexpectedField", "isValidLeafValue", "valueFromAST", "node", "baseType", "parsed", "valueFromASTUntyped", "obj", "name", "schema", "argumentsFromAST", "context", "args", "argsDefiner", "values", "argNode", "collectVariablesInValue", "collector", "coreSpec_1", "registeredFeatures", "registerKnownFeature", "definitions", "exports", "coreFeatureDefinitionIfKnown", "url", "_a", "validateKnownFeatures", "schema", "errorCollector", "feature", "unregisterKnownFeatures", "graphql_1", "definitions_1", "error_1", "values_1", "types_1", "utils_1", "createDirectiveSpecification", "name", "locations", "repeatable", "args", "composes", "supergraphSpecification", "staticArgumentTransform", "composition", "argStrategies", "arg", "argumentsMerger", "schema", "feature", "argName", "type", "strategy", "argType", "valid", "supportedMsg", "values", "asBuiltIn", "actualName", "_a", "resolvedArgs", "errors", "typeOrErrors", "existing", "ensureSameDirectiveStructure", "directive", "defaultValue", "exports", "createScalarTypeSpecification", "ensureSameTypeKind", "createObjectTypeSpecification", "fieldsFct", "expectedFields", "existingField", "existingType", "ensureSameArguments", "createdType", "field", "createUnionTypeSpecification", "membersFct", "expectedMembers", "n1", "n2", "actualMembers", "m", "member", "createEnumTypeSpecification", "expectedValueNames", "v", "actualValueNames", "description", "expected", "actual", "directiveName", "loc", "what", "containerSourceAST", "expectedArguments", "actualArgument", "actualType", "isValidInputTypeRedefinition", "expectedType", "graphql_1", "url_1", "definitions_1", "types_1", "utils_1", "error_1", "values_1", "knownCoreFeatures_1", "suggestions_1", "directiveAndTypeSpecification_1", "exports", "ErrCoreCheckFailed", "causes", "buildError", "message", "purposesDescription", "purpose", "FeatureDefinition", "url", "minimumFederationVersion", "FeatureUrl", "spec", "subFeature", "typeSpec", "directiveSpec", "name", "type", "nameInSchema", "directive", "schema", "feature", "errors", "_schema", "directiveName", "typeName", "elementName", "features", "directiveNameInFeature", "extractCoreFeatureImports", "args", "importArgValue", "definition", "knownElements", "imports", "importArgLoop", "elt", "validateImportedName", "key", "value", "i", "details", "suggestions", "isCoreSpecDirectiveApplication", "asArg", "urlArg", "_a", "isValidUrlArgumentType", "_b", "_c", "linkPurposeTypeSpec", "linkImportTypeSpec", "CoreSpecDefinition", "version", "identity", "_", "alias", "schemaDef", "hasDefinition", "extension", "as", "existingCore", "names", "FeatureVersion", "coreDirective", "FeatureDefinitions", "def", "def1", "def2", "requested", "fedVersion", "latestMajor", "major", "minor", "input", "match", "versions", "max", "required", "rMajor", "rMinor", "other", "element", "node", "path", "verStr", "findCoreSpecVersion", "featureUrl", "removeAllCoreFeatures", "coreFeatures", "typeReferences", "d", "application", "t", "references", "referencesInSchema", "r", "coreSpec_1", "definitions_1", "graphql_1", "knownCoreFeatures_1", "error_1", "directiveAndTypeSpecification_1", "utils_1", "exports", "InaccessibleSpecDefinition", "version", "minimumFederationVersion", "fedVersion", "schema", "definition", "hasUnknownArguments", "hasRepeatable", "hasValidLocations", "loc", "removeInaccessibleElements", "coreFeatures", "inaccessibleFeature", "inaccessibleSpec", "inaccessibleDirective", "incompatibleError", "validateInaccessibleElements", "removeInaccessibleElementsAssumingValid", "isInaccessible", "element", "featureList", "isFeatureDefinition", "feature", "isInAPISchema", "fetchInaccessibleElementsDeep", "inaccessibleElements", "field", "enumValue", "argument", "errors", "defaultValueReferencers", "computeDefaultValueReferencers", "type", "hasBuiltInName", "referencers", "referencer", "isEmpty", "member", "implementedInterfaces", "implementingTypes", "implementedInterface", "implementedField", "implementingType", "implementingField", "implementingArgument", "implementedArgument", "_a", "inputField", "_b", "_c", "directive", "typeSystemLocations", "addReference", "reference", "referencerList", "computeDefaultValueReferences", "references", "addValueReferences", "getInputType", "value", "itemType", "item", "fieldValue", "utils_1", "values_1", "exports", "orderPrintedDefinitions", "options", "t1", "t2", "shallowOrderPrintedDefinitions", "isDefinitionOrderValid", "validateOptions", "printSchema", "schema", "directives", "types", "definitions", "printSchemaDefinitionAndExtensions", "directive", "printDirectiveDefinition", "type", "printTypeDefinitionAndExtensions", "definitionAndExtensions", "element", "schemaDefinition", "printDefinitionAndExtensions", "printSchemaDefinitionOrExtension", "t", "printer", "ext", "v", "printIsExtension", "extension", "forExtension", "ts", "r", "_a", "orderRoots", "roots", "r1", "r2", "appliedDirectives", "isSchemaOfCommonNames", "rootEntries", "rootType", "printDescription", "printAppliedDirectives", "printType", "printScalarDefinitionOrExtension", "printFieldBasedTypeDefinitionOrExtension", "printUnionDefinitionOrExtension", "printEnumDefinitionOrExtension", "printInputDefinitionOrExtension", "locations", "printArgs", "onNewLines", "endWithNewLine", "joinStr", "d", "indentation", "firstInBlock", "preferMultipleLines", "blockString", "printBlockString", "printImplementedInterfaces", "implementations", "i", "kind", "interfaces", "fields", "printFields", "members", "possibleTypes", "m", "values", "vals", "printBlock", "f", "printField", "field", "args", "defaultValue", "arg", "printArg", "items", "value", "isSingleLine", "hasLeadingSpace", "hasTrailingQuote", "hasTrailingSlash", "printAsMultipleLines", "result", "graphql_1", "definitions_1", "exports", "isIntrospectionName", "name", "addIntrospectionFields", "schema", "typeKindEnum", "inputValueType", "fieldType", "typeType", "enumValueType", "directiveLocationEnum", "location", "directiveType", "schemaType", "queryRoot", "definitions_1", "graphql_1", "values_1", "introspection_1", "types_1", "error_1", "validateSchema", "schema", "Validator", "exports", "InputObjectCircularRefsValidator", "onError", "type", "field", "fieldType", "cycleIndex", "cyclePath", "pathStr", "fieldObj", "directive", "arg", "application", "refsValidator", "msg", "opts", "message", "options", "elt", "e", "itf", "itfField", "itfArg", "itfOfItf", "builtInScalar", "t", "value", "definition", "argument", "parent", "parentDesc", "graphql_1", "coreSpec_1", "utils_1", "values_1", "inaccessibleSpec_1", "print_1", "types_1", "introspection_1", "validate_1", "specifiedRules_1", "validate_2", "directiveAndTypeSpecification_1", "suggestions_1", "error_1", "knownCoreFeatures_1", "validationErrorCode", "DEFAULT_VALIDATION_ERROR_MESSAGE", "EMPTY_SET", "ErrGraphQLValidationFailed", "causes", "message", "exports", "apiSchemaValidationErrorCode", "ErrGraphQLAPISchemaValidationFailed", "defaultRootName", "rootKind", "checkDefaultSchemaRoot", "type", "isSchemaRootType", "isObjectType", "isNamedType", "BaseNamedType", "isWrapperType", "isListType", "isNonNullType", "isScalarType", "isCustomScalarType", "graphQLBuiltInTypes", "isIntType", "isStringType", "isFloatType", "isBooleanType", "isIDType", "isInterfaceType", "isEnumType", "isUnionType", "isInputObjectType", "isOutputType", "baseType", "isInputType", "isTypeOfKind", "kind", "filterTypesOfKind", "types", "acc", "isNullableType", "isAbstractType", "isCompositeType", "possibleRuntimeTypes", "runtimeTypesIntersects", "t1", "t2", "rt1", "rt2", "obj1", "obj2", "supertypes", "isConditionalDirective", "directive", "executableDirectiveLocationsSet", "isExecutableDirectiveLocation", "loc", "typeSystemDirectiveLocationsSet", "isTypeSystemDirectiveLocation", "typeToAST", "typeFromAST", "schema", "node", "ListType", "NonNullType", "isLeafType", "DirectiveTargetElement", "_schema", "directives", "d", "toAdd", "Directive", "Element", "nameOrDefinition", "directiveName", "directivesToDirectiveNodes", "directivesToString", "collector", "applied", "sourceASTs", "elts", "elt", "Schema", "SchemaElement", "parent", "Extension", "element", "nameOrDef", "args", "extension", "_a", "asFirstDirective", "def", "DirectiveDefinition", "addedElement", "thisElement", "thatSchema", "NamedSchemaElement", "name", "isBuiltIn", "referencer", "_b", "newName", "oldName", "toReturn", "r", "ref", "NamedSchemaElementWithType", "removeReferenceToType", "addReferenceToType", "BaseExtensionMember", "SchemaBlueprint", "_directive", "_", "_type", "_fieldName", "_feature", "error", "matcher", "allDefinedDirectiveNames", "suggestions", "s", "_unknownDirectiveName", "CoreFeature", "url", "nameInSchema", "imports", "purpose", "importName", "i", "specUrl", "specNameInSchema", "directiveNameInSpec", "elementImport", "CoreFeatures", "coreItself", "coreDef", "identity", "featureIdentity", "feature", "typedDirective", "isDirective", "splitted", "allFeatures", "as", "directFeature", "graphQLBuiltInTypesSpecifications", "graphQLBuiltInDirectivesSpecifications", "coordinateRegexp", "blueprint", "config", "SchemaDefinition", "spec", "fct", "wasConstructed", "definition", "ast", "apiSchema", "toRemoveIfCustom", "nodes", "includeDefer", "includeStream", "additionalNodes", "graphQLSchema", "includeShadowed", "allBuiltIns", "t", "existing", "defaultSchemaRoot", "directiveOrName", "errors", "e", "builtIns", "cloneJoinDirectives", "cloned", "copy", "coordinate", "argStartIdx", "start", "argName", "splittedStart", "typeOrDirectiveName", "fieldOrEnumName", "field", "RootType", "coreFeatures", "schemaDirective", "core", "a", "other", "nameOrType", "toSet", "obj", "prevRoot", "rootType", "toRemove", "ScalarType", "InterfaceImplementation", "itf", "FieldBasedType", "FieldDefinition", "impl", "nameOrItfOrItfImpl", "maybeItf", "f", "nameOrField", "interfaceImpl", "ObjectType", "rt", "unions", "InterfaceType", "implementations", "typeName", "UnionMember", "UnionType", "m", "nameOrTypeOrMember", "maybeObj", "member", "EnumType", "nameOrValue", "EnumValue", "value", "values", "v", "InputObjectType", "InputFieldDefinition", "BaseWrapperType", "nameOrArg", "defaultValue", "ArgumentDefinition", "arg", "defaultStr", "locations", "modified", "location", "_args", "includeDefaultValues", "updated", "argDef", "argValue", "expectedArgs", "entries", "key", "val", "expectedVal", "parentDirectives", "removed", "sameDirectiveApplication", "application1", "application2", "directivesNeverEqualToThemselves", "sameDirectiveApplications", "applications1", "applications2", "directive1", "directive2", "isDirectiveApplicationsSubset", "applications", "maybeSubset", "directiveApplicationsSubstraction", "baseApplications", "application", "Variable", "VariableCollector", "variable", "variables", "isVariable", "VariableDefinition", "base", "VariableDefinitions", "definitions", "varName", "newDefs", "variableDefinitionsFromAST", "definitionNodes", "definitionNode", "variableDefinitionFromAST", "n", "newNamedType", "typesToCopy", "source", "dest", "directivesToCopy", "copyDirectiveDefinitionToSchema", "copyDirectiveApplicationsInArguments", "locationFilter", "copyDirectiveDefinitionInner", "copySchemaDefinitionInner", "copyNamedTypeInner", "copyExtensions", "extensionMap", "sourceExtension", "destExtension", "copyOfExtension", "extensionsMap", "toCopy", "copyAppliedDirective", "destFieldBasedType", "sourceField", "destField", "copyFieldDefinitionInner", "sourceImpl", "destImpl", "destUnionType", "sourceType", "destType", "destEnumType", "sourceValue", "destValue", "copyAppliedDirectives", "destInputType", "copyInputFieldDefinitionInner", "res", "copyWrapperTypeOrTypeRef", "argType", "copyArgumentDefinitionInner", "destParent", "copyDirectiveApplications", "isFieldDefinition", "elem", "graphql_1", "values_1", "definitions_1", "error_1", "introspection_1", "buildValue", "value", "buildSchema", "source", "options", "buildSchemaFromAST", "exports", "documentNode", "errors", "schema", "directiveDefinitions", "typeDefinitions", "typeExtensions", "schemaDefinitions", "schemaExtensions", "buildNamedTypeAndDirectivesShallow", "typeNode", "buildEnumTypeValuesWithoutDirectiveApplications", "typeExtensionNode", "extension", "directiveDefinitionNode", "buildDirectiveDefinitionInnerWithoutDirectiveApplications", "schemaDefinition", "buildSchemaDefinitionInner", "schemaExtension", "buildDirectiveApplicationsInDirectiveDefinition", "buildNamedTypeInner", "toExtend", "_a", "definitionNode", "type", "withoutTrailingDefinition", "existing", "str", "endString", "getReferencedType", "node", "withNodeAttachedToError", "operation", "e", "causes", "cause", "allNodes", "schemaNode", "opTypeNode", "_b", "buildAppliedDirectives", "elementNode", "element", "directive", "d", "buildArgs", "argumentsNode", "args", "argNode", "blueprint", "enumType", "enumVal", "fieldBasedType", "fieldNode", "field", "buildFieldDefinitionInner", "itfNode", "_c", "itfName", "unionType", "namedType", "_d", "name", "inputObjectType", "_e", "buildInputFieldDefinitionInner", "buildDescriptionAndSourceAST", "v", "dest", "buildTypeReferenceFromAST", "validateOutputType", "inputValueDef", "buildArgumentDefinitionInner", "what", "validateInputType", "builtTypeReference", "encodedType", "wrapped", "inputNode", "arg", "includeDirectiveApplication", "directiveNode", "locations", "graphql_1", "suggestions_1", "KnownTypeNamesInFederationRule", "context", "schema", "existingTypesMap", "definedTypes", "def", "typeNames", "node", "_1", "parent", "_2", "ancestors", "typeName", "definitionNode", "_a", "isSDL", "isSDLNode", "isStandardTypeName", "suggestedTypes", "standardTypeNames", "exports", "type", "value", "require_rng", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "rng", "getRandomValues", "rnds8", "require_regex", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_default", "require_validate", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_regex", "_interopRequireDefault", "obj", "validate", "uuid", "_default", "require_stringify", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "unsafeStringify", "_validate", "_interopRequireDefault", "obj", "byteToHex", "arr", "offset", "stringify", "uuid", "_default", "require_v1", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_rng", "_interopRequireDefault", "_stringify", "obj", "_nodeId", "_clockseq", "_lastMSecs", "_lastNSecs", "v1", "options", "buf", "offset", "i", "b", "node", "clockseq", "seedBytes", "msecs", "nsecs", "dt", "tl", "tmh", "n", "_default", "require_parse", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_validate", "_interopRequireDefault", "obj", "parse", "uuid", "v", "arr", "_default", "require_v35", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "v35", "_stringify", "_parse", "_interopRequireDefault", "obj", "stringToBytes", "str", "bytes", "i", "DNS", "URL", "name", "version", "hashfunc", "generateUUID", "value", "namespace", "buf", "offset", "_namespace", "require_md5", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "md5", "bytes", "msg", "i", "md5ToHexEncodedArray", "wordsToMd5", "bytesToWords", "input", "output", "length32", "hexTab", "x", "hex", "getOutputLength", "inputLength8", "len", "a", "b", "c", "d", "olda", "oldb", "oldc", "oldd", "md5ff", "md5gg", "md5hh", "md5ii", "safeAdd", "length8", "y", "lsw", "bitRotateLeft", "num", "cnt", "md5cmn", "q", "s", "t", "_default", "require_v3", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_v", "_interopRequireDefault", "_md", "obj", "v3", "_default", "require_native", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "randomUUID", "_default", "require_v4", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_native", "_interopRequireDefault", "_rng", "_stringify", "obj", "v4", "options", "buf", "offset", "rnds", "i", "_default", "require_sha1", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "f", "s", "x", "y", "z", "ROTL", "n", "sha1", "bytes", "K", "H", "msg", "i", "l", "N", "M", "arr", "j", "W", "t", "a", "b", "c", "d", "e", "T", "_default", "require_v5", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_v", "_interopRequireDefault", "_sha", "obj", "v5", "_default", "require_nil", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_default", "require_version", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_validate", "_interopRequireDefault", "obj", "version", "uuid", "_default", "require_commonjs_browser", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_nil", "_parse", "_stringify", "_v", "_v2", "_v3", "_v4", "_validate", "_version", "_interopRequireDefault", "obj", "graphql_1", "definitions_1", "federation_1", "error_1", "types_1", "utils_1", "values_1", "uuid_1", "exports", "validate", "condition", "message", "sourceAST", "haveSameDirectives", "op1", "op2", "AbstractOperationElement", "schema", "directives", "collector", "parentType", "key", "value", "_a", "elt", "k", "v", "d", "keyForDirective", "Field", "definition", "args", "alias", "name", "newField", "newArgs", "newDefinition", "newAlias", "newDirectives", "entries", "n", "assumeValid", "variableDefinitions", "contextualArguments", "argDef", "appliedValue", "validateContextualArgs", "isContextualArg", "fromContextDirective", "errorIfCannotRebase", "fieldParent", "runtimeType", "fieldDef", "fieldParentType", "returnType", "_b", "_c", "fieldInParent", "arg", "that", "directive", "directivesNeverEqualToThemselves", "_", "n1", "n2", "FragmentElement", "sourceType", "typeCondition", "newSourceType", "newCondition", "newFragment", "fragmentParent", "canRebase", "rebasedCondition", "deferName", "updatedDirectives", "updated", "normalizer", "deferArgs", "newDeferArgs", "conditionVariable", "label", "deferDirective", "operationPathToStringPath", "path", "p", "sameOperationPaths", "p1", "p2", "i", "conditionalDirectivesInOperationPath", "concatOperationPaths", "head", "tail", "lastOfHead", "conditionals", "firstOfTail", "isUselessFollowupElement", "first", "followup", "typeOfFirst", "computeFragmentsDependents", "fragments", "reverseDeps", "fragment", "dependency", "clearKeptFragments", "usages", "minUsagesToOptimize", "toCheck", "count", "newToCheck", "ownUsages", "otherName", "otherCount", "prevCount", "newCount", "computeFragmentsToKeep", "selectionSet", "reverseDependencies", "toExpand", "shouldContinue", "fragmentsUsingName", "fragName", "nameUsages", "prev", "f", "Operation", "rootKind", "newSelectionSet", "namedFragment", "newFragments", "allAvailableVariables", "newVariableDefinitions", "undefinedVariables", "optimizedSelection", "finalFragments", "beforeRemoval", "minimizedSelectionSet", "expanded", "labelsToRemove", "DeferNormalizer", "hasDefers", "hasNonLabelledOrConditionalDefers", "updatedOperation", "defaultedVariableValues", "variable", "defaultValue", "expandFragments", "prettyPrint", "NamedFragmentDefinition", "type", "conditionRuntimes", "typeRuntimes", "t1", "t2", "cached", "expandedSelectionSet", "validator", "FieldsConflictValidator", "trimmed", "otherFragment", "included", "selection", "FragmentSpreadSelection", "indent", "NamedFragments", "mapper", "mapped", "def", "fragmentsMap", "removedFragments", "mappedFragments", "info", "mappedSelectionSet", "reoptimizedSelectionSet", "rebasedType", "rebasedSelection", "predicate", "updatedSelectionSet", "stack", "candidate", "ContainsResult", "SelectionSet", "keyedSelections", "namedFragments", "seenSelections", "mockHashCode", "equivalentSelectionSetCandidates", "match", "candidateSet", "updatedEquivalentSelectionSetCandidates", "fragmentDefinition", "length", "reversed", "newKeyedSelections", "fields", "header", "field", "byResponseName", "wrapped", "InlineFragmentSelection", "FieldsConflictMultiBranchValidator", "optimized", "selectionSetOf", "updatedFragments", "recursive", "options", "selections", "updatedSelections", "SelectionSetUpdates", "j", "s", "newSelections", "thisSelection", "thatSelection", "ignoreMissingTypename", "isEqual", "didIgnoreTypename", "selectionResult", "remainder", "intersection", "parentTypeToTest", "isPlainTypenameSelection", "typenameSelection", "parentPaths", "updatedPaths", "callback", "operationName", "fragmentsDefinitions", "nameAndVariables", "directives_str", "includeExternalBrackets", "selectionsToString", "selectionIndent", "addToKeyedUpdates", "element", "selectionOfElement", "cloned", "values", "makeSelectionSet", "updates", "updStr", "upd", "AbstractSelection", "keyedUpdates", "addOneToKeyedUpdates", "toAdd", "maybeRebaseOnSchema", "toRebase", "rebased", "isUnecessaryFragment", "withUnecessaryFragmentsRemoved", "filtered", "subSelections", "subSelection", "makeSelection", "updateElement", "subSelectionParentType", "subSelectionKeyedUpdates", "update", "addSubpathToKeyUpdates", "pathUpdate", "MutableSelectionSet", "_updates", "memoizer", "allFieldDefinitionsInSelectionSet", "allFields", "map", "selectionSetOfElement", "FieldSelection", "updatedSubSelectionSet", "subSelectionSetIntersection", "canUseFullMatchingFragment", "candidates", "applyingFragments", "atType", "res", "filteredApplyingFragments", "o", "notCoveredByFragments", "notCovered", "validators", "forAllBranches", "vs", "t", "level", "atLevel", "responseName", "atResponseName", "forField", "collectedFields", "thisFields", "thatFields", "thisField", "thisValidator", "thatField", "thatValidator", "byFields", "innerIndent", "next", "_selectionSet", "updatedField", "fieldBaseType", "fieldValidator", "thisWithFilteredSelectionSet", "rebasedElement", "rebasedBase", "rebasedSelectionSet", "base", "normalizedSubSelection", "FragmentSelection", "schemaDef", "thisCondition", "rebasedFragment", "rebasedCastedType", "spreadDirectives", "newSelection", "hasDeferToRemove", "newElement", "normalized", "normalizedSelectionSet", "currentRuntimes", "liftableSelections", "newSet", "_fragment", "directiveNodes", "_1", "_2", "rebaseOnSameSchema", "expandedSubSelections", "usageCount", "_labelsToRemove", "_normalizer", "selectionSetOfNode", "node", "fieldAccessor", "selectionOfNode", "selectionNode", "directiveOfNode", "directiveDef", "directivesOfNodes", "nodes", "fragmentName", "operationFromDocument", "document", "operation", "operation_directives", "typeName", "operationFromAST", "validateInput", "rootType", "fragmentsIfAny", "parseSelectionSet", "parseOperation", "source", "parseOperationAST", "parsed", "operationToDocument", "operationAST", "fragmentASTs", "hasSelectionWithPredicate", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "error_1", "knownCoreFeatures_1", "types_1", "exports", "TagSpecDefinition", "version", "minimumFederationVersion", "schema", "fedVersion", "definition", "hasUnknownArguments", "nameArg", "hasValidNameArg", "hasValidLocations", "loc", "_1", "computeShareables", "schema", "metadata", "keyDirective", "providesDirective", "shareableDirective", "shareableFields", "addKeyFields", "type", "key", "f", "shareablesOnType", "field", "d", "provides", "parentType", "exports", "graphql_1", "coreSpec_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "AuthenticatedSpecDefinition", "version", "minimumFederationVersion", "exports", "definitions_1", "types_1", "values_1", "supportFixedTypes", "types", "schema", "type", "supported", "t", "supportAnyNonNullArray", "_", "supportAnyArray", "mergeNullableValues", "mergeValues", "values", "nonNullValues", "v", "unionValues", "acc", "next", "newValues", "v1", "v2", "exports", "_a", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "argumentCompositionStrategies_1", "utils_1", "RequiresScopesTypeName", "exports", "RequiresScopesSpecDefinition", "version", "schema", "feature", "scopeName", "scopeType", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "argumentCompositionStrategies_1", "utils_1", "PolicyTypeName", "exports", "PolicySpecDefinition", "version", "schema", "feature", "policyName", "PolicyType", "graphql_1", "coreSpec_1", "definitions_1", "knownCoreFeatures_1", "directiveAndTypeSpecification_1", "error_1", "exports", "SourceSpecDefinition", "version", "minimumFederationVersion", "schema", "sourceAPI", "HTTPHeaderMapping", "HTTPSourceAPI", "sourceType", "URLPathTemplate", "JSONSelection", "HTTPSourceType", "KeyTypeMap", "sourceField", "HTTPSourceField", "result", "linkDirective", "url", "imports", "featureUrl", "nameOrRename", "originalName", "importedNameWithoutAt", "errors", "apiNameToProtocol", "application", "name", "rest", "isValidSourceAPIName", "protocol", "KNOWN_SOURCE_PROTOCOLS", "knownProtocol", "protocolValue", "HTTP_PROTOCOL", "baseURL", "headers", "e", "validateHTTPHeaders", "api", "selection", "expectedProtocol", "GET", "POST", "body", "urlPathTemplate", "ast", "_a", "directive", "PUT", "PATCH", "DELETE", "usedMethods", "fieldParent", "typeGrandparent", "_b", "typeGrandparentName", "_c", "isValidHTTPHeaderName", "directiveName", "as", "value", "i", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "utils_1", "ContextDirectiveName", "exports", "fieldValueScalar", "ContextSpecDefinition", "version", "schema", "fedVersion", "subgraph", "args", "feature", "fieldValue", "fieldValueType", "graphql_1", "directiveAndTypeSpecification_1", "coreSpec_1", "definitions_1", "knownCoreFeatures_1", "argumentCompositionStrategies_1", "exports", "CostSpecDefinition", "version", "minimumFederationVersion", "schema", "fedVersion", "definitions_1", "coreSpec_1", "directiveAndTypeSpecification_1", "graphql_1", "utils_1", "tagSpec_1", "federation_1", "knownCoreFeatures_1", "inaccessibleSpec_1", "authenticatedSpec_1", "requiresScopesSpec_1", "policySpec_1", "sourceSpec_1", "contextSpec_1", "costSpec_1", "exports", "FederationTypeName", "FederationDirectiveName", "fieldSetTypeSpec", "fieldsArgument", "schema", "fieldSetType", "keyDirectiveSpec", "extendsDirectiveSpec", "externalDirectiveSpec", "requiresDirectiveSpec", "providesDirectiveSpec", "legacyFederationTypes", "legacyFederationDirectives", "metadata", "FederationSpecDefinition", "version", "type", "directive", "graphql_1", "coreSpec_1", "definitions_1", "knownCoreFeatures_1", "utils_1", "exports", "sanitizeGraphQLName", "name", "alphaNumericUnderscoreOnly", "noNumericFirstChar", "JoinSpecDefinition", "version", "minimumFederationVersion", "schema", "joinGraph", "graphEnum", "joinFieldSet", "joinType", "joinField", "graphArgType", "joinImplements", "joinUnionMember", "joinEnumValue", "joinDirective", "fieldValue", "contextArgumentsType", "names", "subgraphs", "sanitizedNameToSubgraphs", "subgraph", "sanitized", "subgraphToEnumName", "sanitizedName", "subgraphsForName", "index", "graphDirective", "definitions_1", "utils_1", "specifiedRules_1", "graphql_1", "KnownTypeNamesInFederationRule_1", "buildSchema_1", "operations_1", "tagSpec_1", "error_1", "precompute_1", "coreSpec_1", "federationSpec_1", "print_1", "directiveAndTypeSpecification_1", "suggestions_1", "knownCoreFeatures_1", "joinSpec_1", "costSpec_1", "linkSpec", "tagSpec", "federationSpec", "version", "spec", "autoExpandedFederationSpec", "latestFederationSpec", "exports", "FEDERATION_OMITTED_VALIDATION_RULES", "FEDERATION_SPECIFIC_VALIDATION_RULES", "FEDERATION_VALIDATION_RULES", "rule", "ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES", "FAKE_FED1_CORE_FEATURE_TO_RENAME_TYPES", "validateFieldSetSelections", "directiveName", "selectionSet", "hasExternalInParents", "metadata", "onError", "allowOnNonExternalLeafFields", "allowFieldsWithArguments", "selection", "appliedDirectives", "field", "isExternal", "mustBeExternal", "errorCode", "newHasExternalInParents", "parentType", "implem", "fieldInImplem", "validateFieldSet", "type", "directive", "errorCollector", "onFields", "parseFieldSetArgument", "fieldName", "error", "handleFieldSetValidationError", "e", "originalError", "messageUpdater", "nodes", "codeDef", "msg", "fieldSetErrorDescriptor", "fieldSetTargetDescription", "directiveStrUsingASTIfPossible", "_a", "parseContext", "input", "regex", "match", "context", "wrapResolvedType", "originalType", "resolvedType", "stack", "unwrappedType", "validateFieldValueType", "currentType", "fromContextParent", "selections", "interfaceObjectDirective", "isFederationDirectiveDefinedInSchema", "element", "childSelectionSet", "acc", "validateSelectionFormat", "firstSelectionKind", "inlineFragmentTypeConditions", "s", "typeCondition", "err", "isValidImplementationFieldType", "fieldType", "implementedFieldType", "selectionSetHasDirectives", "selectionSetHasAlias", "validateFieldValue", "setContextLocations", "expectedType", "validateSelectionFormatResults", "selectionType", "usedTypeConditions", "location", "validateAllFieldSet", "definition", "targetTypeExtractor", "isOnParentType", "allowOnInterface", "application", "elt", "code", "collectUsedFields", "usedFields", "collectUsedFieldsForDirective", "collectUsedFieldsForFromContext", "itfType", "runtimeTypes", "runtimeType", "implemField", "usedFieldDefs", "fromContextDirective", "contextDirective", "entryPoints", "fieldValue", "contextTypes", "contextType", "fieldAccessor", "t", "f", "implType", "implField", "collectTargetFields", "validateAllExternalFieldsUsed", "validateNoExternalOnInterfaceFields", "itf", "validateKeyOnInterfacesAreAlsoOnAllImplementations", "implementations", "keyApplication", "fields", "isResolvable", "implementationsWithKeyButNotResolvable", "implementationsMissingKey", "matchingApp", "app", "appFields", "typesString", "i", "validateInterfaceObjectsAreOnEntities", "isEntityType", "validateShareableNotRepeatedOnSameDeclaration", "shareableApplications", "byExtensions", "v", "ext", "groups", "group", "eltStr", "validateCostNotAppliedToInterface", "parent", "validateListSizeAppliedToList", "sizedFields", "validateAssumedSizeNotNegative", "assumedSize", "isNonNullIntType", "ty", "validateSlicingArgumentsAreValidIntegers", "slicingArguments", "slicingArgumentName", "slicingArgument", "isNonNullListType", "validateSizedFieldsAreValidLists", "sizedFieldName", "sizedField", "FederationMetadata", "schema", "feature", "ExternalTester", "hasAppliedDirective", "name", "coreFeatures", "federationFeature", "baseDirectives", "composeDirective", "authenticatedDirective", "requiresScopesDirective", "policyDirective", "sourceAPIDirective", "sourceTypeDirective", "sourceFieldDirective", "costDirective", "listSizeDirective", "fedTypes", "fedFeature", "featureDef", "typeSpec", "entityType", "FederationBlueprint", "withRootTypeRenaming", "args", "url", "as", "imports", "errors", "federationMetadata", "completeSubgraphSchema", "k", "defaultName", "existing", "keyDirective", "kind", "contextToTypeMap", "types", "_c", "_b", "objectType", "implementedInterfaceType", "implementedInterfaceField", "locations", "tagDirective", "shareableApplication", "costFeature", "_d", "costSpec", "_e", "_f", "unknownDirectiveName", "directiveNameInSchema", "suggestions", "findUnusedNamedForLinkDirective", "baseName", "n", "candidate", "setSchemaAsFed2Subgraph", "useLatest", "core", "alias", "fedSpec", "asFed2SubgraphDocument", "document", "options", "importedDirectives", "directiveToAdd", "existingSchemaDefinition", "d", "hasMutation", "makeOpType", "opType", "printSubgraphNames", "names", "isFederationSubgraphSchema", "isFederationField", "isInterfaceObjectType", "buildSubgraph", "source", "buildOptions", "subgraph", "Subgraph", "addSubgraphToError", "newEmptyFederation2Schema", "config", "completeFed2SubgraphSchema", "completeFed1SubgraphSchema", "isFedSpecLinkDirective", "fieldTypeIsWrongInKnownWays", "expandKnownFeatures", "validate", "decorateValidationErrors", "normalize", "validateFieldSetValue", "includeInterfaceFieldsImplementations", "argNode", "subgraphsFromServiceList", "serviceList", "subgraphs", "Subgraphs", "service", "causes", "queryRoot", "queryType", "entityField", "entityFieldType", "urlArg", "basePrintOptions", "addSubgraphToASTNode", "node", "subgraphName", "updatedCauses", "cause", "message", "isFed2Schema", "extendsDirective", "key", "provides", "removeInactiveProvidesAndRequires", "onModified", "providesDirective", "requiresDirective", "fieldBaseType", "removeInactiveApplications", "directiveDefinition", "selectsNonExternalLeafField", "updated", "withoutNonExternalLeafFields", "updatedDirective", "isExternalOrHasExternalImplementations", "require_color_name", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_conversions", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "cssKeywords", "reverseKeywords", "key", "convert", "model", "channels", "labels", "rgb", "r", "g", "b", "min", "max", "delta", "h", "s", "l", "rdif", "gdif", "bdif", "v", "diff", "diffc", "w", "k", "c", "m", "y", "comparativeDistance", "x", "reversed", "currentClosestDistance", "currentClosestKeyword", "keyword", "value", "distance", "z", "xyz", "a", "hsl", "t2", "t3", "val", "t1", "i", "smin", "lmin", "sv", "hsv", "hi", "f", "p", "q", "t", "vmin", "sl", "hwb", "wh", "bl", "ratio", "n", "cmyk", "lab", "y2", "x2", "z2", "lch", "hr", "args", "saturation", "ansi", "color", "mult", "rem", "string", "match", "colorString", "char", "integer", "chroma", "grayscale", "hue", "hcg", "pure", "mg", "apple", "gray", "require_route", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "conversions", "buildGraph", "graph", "models", "len", "i", "deriveBFS", "fromModel", "queue", "current", "adjacents", "adjacent", "node", "link", "from", "to", "args", "wrapConversion", "toModel", "path", "fn", "cur", "conversion", "require_color_convert", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "conversions", "route", "convert", "models", "wrapRaw", "fn", "wrappedFn", "args", "arg0", "wrapRounded", "result", "len", "i", "fromModel", "routes", "toModel", "require_ansi_styles", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "wrapAnsi16", "fn", "offset", "args", "wrapAnsi256", "code", "wrapAnsi16m", "rgb", "ansi2ansi", "n", "rgb2rgb", "r", "g", "b", "setLazyProperty", "object", "property", "get", "value", "colorConvert", "makeDynamicStyles", "wrap", "targetSpace", "identity", "isBackground", "styles", "sourceSpace", "suite", "name", "assembleStyles", "codes", "groupName", "group", "styleName", "style", "require_browser", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_util", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "stringReplaceAll", "string", "substring", "replacer", "index", "substringLength", "endIndex", "returnValue", "stringEncaseCRLFWithFirstIndex", "prefix", "postfix", "gotCR", "require_templates", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "TEMPLATE_REGEX", "STYLE_REGEX", "STRING_REGEX", "ESCAPE_REGEX", "ESCAPES", "unescape", "c", "u", "bracket", "parseArguments", "name", "arguments_", "results", "chunks", "matches", "chunk", "number", "m", "escape", "character", "parseStyle", "style", "args", "buildStyle", "chalk", "styles", "enabled", "layer", "current", "styleName", "temporary", "escapeCharacter", "inverse", "close", "string", "errMessage", "require_source", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "ansiStyles", "stdoutColor", "stderrColor", "stringReplaceAll", "stringEncaseCRLFWithFirstIndex", "isArray", "levelMapping", "styles", "applyOptions", "object", "options", "colorLevel", "ChalkClass", "chalkFactory", "chalk", "arguments_", "chalkTag", "Chalk", "styleName", "style", "builder", "createBuilder", "createStyler", "usedModels", "model", "level", "styler", "bgModel", "proto", "open", "close", "parent", "openAll", "closeAll", "self", "_styler", "_isEmpty", "applyStyle", "string", "lfIndex", "template", "strings", "firstString", "parts", "i", "require_console_polyfill", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "global", "con", "prop", "method", "dummy", "properties", "methods", "chalk_1", "__importDefault", "utils_1", "indentString", "indentLevel", "str", "i", "isEnabled", "name", "v", "bool", "n", "currentIndentLevel", "currentIndentation", "maxLoggerNameLength", "createdLoggers", "newDebugLogger", "enabled", "created", "DebugLogger", "logger", "exports", "increaseIndentation", "decreaseIndentation", "maxLength", "padding", "toPad", "indent", "withIndentedNewlines", "message", "prefix", "values", "printFn", "initialMessage", "value", "map", "keyPrintFn", "valuePrintFn", "k", "openingMessage", "closingMessage", "require_fs", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "require_path_browserify", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "assertPath", "path", "normalizeStringPosix", "allowAboveRoot", "res", "lastSegmentLength", "lastSlash", "dots", "code", "i", "lastSlashIndex", "_format", "sep", "pathObject", "dir", "base", "posix", "resolvedPath", "resolvedAbsolute", "cwd", "isAbsolute", "trailingSeparator", "joined", "arg", "from", "to", "fromStart", "fromEnd", "fromLen", "toStart", "toEnd", "toLen", "length", "lastCommonSep", "fromCode", "toCode", "out", "hasRoot", "end", "matchedSlash", "ext", "start", "extIdx", "firstNonSlashEnd", "startDot", "startPart", "preDotState", "ret", "definitions_1", "federation_1", "coreSpec_1", "federation_2", "utils_1", "supergraphs_1", "buildSchema_1", "types_1", "print_1", "operations_1", "fs_1", "__importDefault", "path_1", "utils_2", "_1", "filteredTypes", "supergraph", "joinSpec", "coreSpec", "t", "extractSubgraphsNamesAndUrlsFromSupergraph", "_", "subgraphs", "collectEmptySubgraphs", "subgraph", "exports", "graphDirective", "graphEnum", "graphEnumNameToSubgraphName", "value", "graphApplications", "info", "SubgraphExtractionError", "originalError", "collectFieldReachableTypesForSubgraph", "subgraphName", "addReachableType", "fieldInfoInSubgraph", "typeInfoInSubgraph", "seenTypes", "stack", "root", "type", "isEntityWithKeyInSubgraph", "typesInFederationDirectives", "field", "isInSubgraph", "arg", "m", "directive", "collectFieldReachableTypesForAllSubgraphs", "allSubgraphs", "reachableTypesBySubgraphs", "reachableTypes", "typesUsedInFederationDirective", "fieldSet", "parentType", "usedTypes", "fieldName", "extractSubgraphsFromSupergraph", "validateExtractedSubgraphs", "coreFeatures", "contextSpec", "costSpec", "isFed1", "getSubgraph", "application", "graph", "subgraphNameToGraphEnumValue", "k", "v", "getSubgraphEnumValue", "enumValue", "types", "args", "extractSubgraphsFromFed1Supergraph", "extractSubgraphsFromFed2Supergraph", "e", "error", "impacted", "msg", "errorToString", "dumpMsg", "maybeDumpSubgraphSchema", "addAllEmptySubgraphTypes", "typeDirective", "objOrItfTypes", "inputObjTypes", "enumTypes", "unionTypes", "typeApplications", "addEmptyType", "subgraphType", "propagateDemandControlDirectives", "subgraphsInfo", "key", "extension", "resolvable", "isInterfaceObject", "subgraphInfo", "kind", "supergraphContextDirective", "_a", "contextApplications", "name", "match", "context", "contextDirective", "extractObjOrItfContent", "fieldDirective", "implementsDirective", "implementsApplications", "fieldApplications", "isShareable", "addSubgraphField", "joinFieldArgs", "extractInputObjContent", "addSubgraphInputField", "extractEnumTypeContent", "enumValueDirective", "enumValueApplications", "extractUnionTypeContent", "unionMemberDirective", "unionMemberApplications", "member", "subgraphMember", "allExecutableDirectives", "def", "removeUnusedTypesFromSubgraph", "definition", "loc", "DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME", "filename", "file", "e2", "source", "dest", "costDirective", "listSizeDirective", "causes", "copiedFieldType", "decodeType", "copyType", "subgraphField", "argDef", "fromContextDirective", "argOnField", "external", "usedOverridden", "copiedType", "inputField", "ownerDirective", "reachableTypesBySubgraph", "f", "ownerApplications", "includeTypeInSubgraph", "_b", "schema", "implementations", "subgraphItf", "addSubgraphFieldForFed1", "fieldBaseType", "s", "subgraphEnum", "subgraphUnion", "memberTypeName", "addExternalFields", "encodedType", "metadata", "keyApplication", "forceNonExternal", "addExternalFieldsFromDirectiveFieldSet", "requiresApplication", "providesApplication", "addExternalFieldsFromInterface", "fieldAccessor", "d", "supergraphField", "created", "itf", "typeField", "maybeUpdateFieldForInterface", "copyFieldAsExternal", "newField", "toModify", "itfField", "definitions_1", "coreSpec_1", "joinSpec_1", "contextSpec_1", "costSpec_1", "buildSchema_1", "extractSubgraphsFromSupergraph_1", "error_1", "exports", "coreVersionZeroDotOneUrl", "checkFeatureSupport", "coreFeatures", "supportedFeatures", "errors", "coreItself", "purposefulFeatures", "f", "feature", "validateSupergraph", "supergraph", "joinFeature", "joinSpec", "contextFeature", "contextSpec", "costFeature", "costSpec", "isFed1Supergraph", "Supergraph", "schema", "shouldValidate", "supergraphSdl", "options", "extractionResults", "graphql_1", "error_1", "definitions_1", "federation_1", "utils_1", "values_1", "federationSpec_1", "ExternalOnTypeExtensionRemoval", "field", "exports", "TypeExtensionRemoval", "type", "ExternalOnInterfaceRemoval", "ExternalOnObjectTypeRemoval", "UnusedExternalRemoval", "TypeWithOnlyUnusedExternalRemoval", "InactiveProvidesOrRequiresRemoval", "parent", "removed", "InactiveProvidesOrRequiresFieldsRemoval", "original", "updated", "ShareableFieldAddition", "declaringSubgraphs", "ShareableTypeAddition", "KeyOnInterfaceRemoval", "ProvidesOrRequiresOnInterfaceFieldRemoval", "directive", "ProvidesOnNonCompositeRemoval", "FieldsArgumentCoercionToString", "element", "before", "after", "RemovedTagOnExternal", "application", "upgradeSubgraphsIfNecessary", "inputs", "changes", "subgraphs", "errors", "subgraphsUsingInterfaceObject", "objectTypeMap", "subgraph", "t", "entry", "res", "SchemaUpgrader", "fed1Subgraphs", "s", "isFederationTypeExtension", "metadata", "hasExtend", "isRootTypeExtension", "getField", "schema", "typeName", "fieldName", "originalSubgraph", "allSubgraphs", "e", "causes", "c", "typeSpec", "typeNameInOriginal", "elt", "applications", "change", "extensionAST", "_a", "typeInOtherSubgraphs", "subgraphName", "_", "i", "otherType", "fields", "f", "nodes", "argNode", "itf", "external", "updatedSourceAST", "newDirective", "keyApplication", "otherSubgraphName", "v", "typeInOther", "keysInOther", "ownField", "originalMetadata", "keyDirective", "shareableDirective", "tagDirective", "d", "graphql_1", "definitions_1", "allOperationTypeNode", "graphQLJSSchemaToAST", "schema", "types", "type", "directives", "directive", "schemaASTs", "toNodeArray", "graphQLJSSchemaToSchemaDefinitionAST", "typesASTs", "graphQLJSNamedTypeToAST", "directivesASTs", "graphQLJSDirectiveToAST", "exports", "definition", "extensions", "maybe", "v", "hasNonDefaultRootNames", "operationTypes", "operation", "t", "isNonDefaultRootName", "fakeSchema", "def", "__exportStar", "exports", "knownCoreFeatures_1", "KeyResolution", "exports", "RootTypeResolution", "rootKind", "FieldCollection", "definition", "isPartOfProvide", "DownCast", "sourceType", "castedType", "SubgraphEnteringTransition", "InterfaceObjectFakeDownCast", "castedTypeName", "federation_internals_1", "querygraph_1", "preComputeNonTrivialFollowupEdges", "graph", "state", "edge", "followupEdges", "computeNonTrivialFollowups", "previousEdge", "nonTrivialFollowups", "exports", "allFollowups", "followup", "sameConditions", "e1", "e2", "federation_internals_1", "util_1", "transition_1", "nonTrivialEdgePrecomputing_1", "exports", "FEDERATED_GRAPH_ROOT_SCHEMA", "federatedGraphRootTypeName", "rootKind", "isFederatedGraphRootType", "type", "Vertex", "index", "source", "label", "RootVertex", "toRootVertex", "vertex", "isRootVertex", "Edge", "head", "tail", "transition", "conditions", "overrideCondition", "requiredContexts", "name", "otherTransition", "conditionsString", "_a", "newHead", "newConditions", "contextConditions", "conditionsToCheck", "condition", "QueryGraph", "vertices", "_outEdges", "typesToVertices", "rootVertices", "sources", "subgraphToArgs", "subgraphToArgIndices", "schema", "acc", "v", "kind", "includeKeyAndRootTypeEdgesToSelf", "allEdges", "e", "edgeIndex", "typeName", "indexes", "i", "QueryGraphState", "state", "edge", "edgeMap", "vertexMapper", "edgeMapper", "vs", "b", "idx", "es", "vIdx", "adj", "a", "eIdx", "buildQueryGraph", "overrideLabelsByCoordinate", "buildGraphInternal", "addAdditionalAbstractTypeEdges", "supergraphSchema", "builder", "GraphBuilderFromSchema", "rootType", "buildSupergraphAPIQueryGraph", "supergraph", "apiSchema", "joinFieldApplications", "application", "overrideLabel", "buildFederatedQueryGraph", "forQueryPlanning", "subgraphs", "graphs", "subgraph", "federateSubgraphs", "federatedProperties", "rootKinds", "schemas", "k", "resolvableKeyApplications", "keyDirective", "verticesCount", "GraphBuilder", "copyPointers", "copyPointer", "rootVertex", "j", "otherSubgraph", "otherRootVertex", "otherCopyPointer", "subgraphSchema", "subgraphMetadata", "requireDirective", "simpleTraversal", "keyApplication", "isInterfaceObject", "otherVertices", "otherVertex", "typeInSupergraph", "implemTypeInSupergraph", "implemVertice", "implemHead", "implemType", "implConditions", "field", "requiresApplication", "subgraphsByName", "s", "toSubgraph", "updateEdgeWithOverrideCondition", "unexpectedAdditionalVertices", "subgraphEdges", "copiedEdge", "from", "fromSubgraph", "contextNameToTypes", "context", "coordinateMap", "selection", "namedParameter", "argCoordinate", "args", "fieldCoordinate", "typesWithContextSet", "z", "_v", "coordinate", "headInSupergraph", "subgraphName", "argToIndex", "provideId", "providesDirective", "_", "providesApplication", "fieldType", "provided", "copiedTail", "addProvidesEdges", "interfaceObjectDirective", "supergraphItf", "implementation", "stack", "selectionSet", "element", "fieldDef", "existingEdge", "existingTail", "newTail", "typeCondition", "headOutEdges", "tailInEdges", "previous", "rootEdges", "graph", "offset", "that", "original", "newVertex", "newEdge", "toCopy", "indexOffset", "elt", "directiveFct", "metadata", "root", "namedType", "existing", "_b", "fieldName", "m", "supergraphType", "localRuntimeTypes", "t", "implementations", "implementationType", "abstractTypesWithTheirRuntimeTypes", "t1", "t1Vertex", "t2", "addT1ToT2", "addT2ToT1", "intersectingLocal", "o1", "isInLocalOtherTypeButNotLocalIntersection", "otherType", "rt", "t2Vertex", "entityType", "entityTypeVertex", "itfType", "itfTypeVertex", "onVertex", "onEdges", "marked", "maybeAdd", "require_isArguments", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "toStr", "value", "str", "isArgs", "require_implementation", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "keysShim", "has", "toStr", "isArgs", "isEnumerable", "hasDontEnumBug", "hasProtoEnumBug", "dontEnums", "equalsConstructorPrototype", "o", "ctor", "excludedKeys", "hasAutomationEqualityBug", "k", "equalsConstructorPrototypeIfNotBuggy", "object", "isObject", "isFunction", "isArguments", "isString", "theKeys", "skipProto", "i", "j", "name", "skipConstructor", "require_object_keys", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "slice", "isArgs", "origKeys", "keysShim", "o", "originalKeys", "keysWorksWithArguments", "args", "object", "require_define_properties", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "keys", "hasSymbols", "toStr", "concat", "defineDataProperty", "isFunction", "fn", "supportsDescriptors", "defineProperty", "object", "name", "value", "predicate", "defineProperties", "map", "predicates", "props", "i", "require_implementation", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "objectKeys", "hasSymbols", "callBound", "toObject", "$push", "$propIsEnumerable", "originalGetSymbols", "target", "source1", "to", "s", "from", "keys", "getSymbols", "syms", "j", "key", "i", "nextKey", "propValue", "require_polyfill", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "implementation", "lacksProperEnumerationOrder", "str", "letters", "map", "i", "obj", "actual", "k", "assignHasPendingExceptions", "thrower", "require_shim", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "define", "getPolyfill", "polyfill", "require_object", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "defineProperties", "callBind", "implementation", "getPolyfill", "shim", "polyfill", "bound", "target", "source1", "require_functions_have_names", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "functionsHaveNames", "gOPD", "desc", "$bind", "require_set_function_name", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "define", "hasDescriptors", "functionsHaveConfigurableNames", "$TypeError", "fn", "name", "loose", "require_implementation", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "setFunctionName", "$TypeError", "$Object", "result", "require_polyfill", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "implementation", "supportsDescriptors", "$gOPD", "descriptor", "calls", "o", "require_shim", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "supportsDescriptors", "getPolyfill", "gOPD", "defineProperty", "TypeErr", "getProto", "regex", "polyfill", "proto", "descriptor", "require_regexp_prototype", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "define", "callBind", "implementation", "getPolyfill", "shim", "flagsBound", "require_object_inspect", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "hasMap", "mapSizeDescriptor", "mapSize", "mapForEach", "hasSet", "setSizeDescriptor", "setSize", "setForEach", "hasWeakMap", "weakMapHas", "hasWeakSet", "weakSetHas", "hasWeakRef", "weakRefDeref", "booleanValueOf", "objectToString", "functionToString", "$match", "$slice", "$replace", "$toUpperCase", "$toLowerCase", "$test", "$concat", "$join", "$arrSlice", "$floor", "bigIntValueOf", "gOPS", "symToString", "hasShammedSymbols", "toStringTag", "isEnumerable", "gPO", "O", "addNumericSeparator", "num", "str", "sepRegex", "int", "intStr", "dec", "utilInspect", "inspectCustom", "inspectSymbol", "isSymbol", "quotes", "quoteREs", "inspect_", "obj", "options", "depth", "seen", "opts", "has", "customInspect", "numericSeparator", "inspectString", "bigIntStr", "maxDepth", "isArray", "indent", "getIndent", "indexOf", "inspect", "value", "from", "noIndent", "newOpts", "isRegExp", "name", "nameOf", "keys", "arrObjKeys", "symString", "markBoxed", "isElement", "s", "attrs", "i", "wrapQuotes", "quote", "xs", "singleLineValues", "indentedJoin", "isError", "parts", "isMap", "mapParts", "key", "collectionOf", "isSet", "setParts", "isWeakMap", "weakCollectionOf", "isWeakSet", "isWeakRef", "isNumber", "isBigInt", "isBoolean", "isString", "isDate", "ys", "isPlainObject", "protoTag", "stringTag", "toStr", "constructorTag", "tag", "defaultStyle", "style", "quoteChar", "hasOwn", "f", "m", "x", "l", "remaining", "trailer", "quoteRE", "lowbyte", "c", "n", "type", "size", "entries", "joinedEntries", "baseIndent", "lineJoiner", "isArr", "syms", "symMap", "k", "j", "require_side_channel", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "GetIntrinsic", "callBound", "inspect", "$TypeError", "$WeakMap", "$Map", "$weakMapGet", "$weakMapSet", "$weakMapHas", "$mapGet", "$mapSet", "$mapHas", "listGetNode", "list", "key", "prev", "curr", "listGet", "objects", "node", "listSet", "value", "listHas", "$wm", "$m", "$o", "channel", "require_internal_slot", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "hasOwn", "channel", "$TypeError", "SLOT", "O", "slot", "slots", "V", "require_stop_iteration_iterator", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "SLOT", "$SyntaxError", "$StopIteration", "origIterator", "siIterator", "iterator", "done", "e", "require_isarray", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "toString", "arr", "require_is_string", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "$strValueOf", "tryStringObject", "value", "$toString", "strClass", "hasToStringTag", "require_is_map", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$Map", "$Set", "exported", "x", "$mapHas", "$setHas", "require_is_set", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$Map", "$Set", "exported", "x", "$mapHas", "$setHas", "require_es_get_iterator", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isArguments", "getStopIterationIterator", "$iterator", "iterable", "isArray", "isString", "GetIntrinsic", "$Map", "$Set", "callBound", "$arrayPush", "$charCodeAt", "$stringSlice", "advanceStringIndex", "S", "index", "length", "first", "second", "getArrayIterator", "arraylike", "i", "done", "value", "getNonCollectionIterator", "noPrimordialCollections", "nextIndex", "isMap", "isSet", "$mapForEach", "$setForEach", "$mapIterator", "$setIterator", "$mapAtAtIterator", "$setAtAtIterator", "getCollectionIterator", "entries", "v", "k", "values", "require_implementation", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "numberIsNaN", "value", "a", "b", "require_polyfill", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "implementation", "require_shim", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "getPolyfill", "define", "polyfill", "require_object_is", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "define", "callBind", "implementation", "getPolyfill", "shim", "polyfill", "require_is_array_buffer", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBind", "callBound", "GetIntrinsic", "$ArrayBuffer", "$byteLength", "$toString", "abSlice", "$abSlice", "obj", "require_is_date_object", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "getDay", "tryDateObject", "value", "toStr", "dateClass", "hasToStringTag", "require_is_regex", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "hasToStringTag", "hasOwn", "gOPD", "fn", "$exec", "isRegexMarker", "throwRegexMarker", "badStringifier", "value", "descriptor", "hasLastIndexDataProperty", "e", "$toString", "regexClass", "require_is_shared_array_buffer", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "$byteLength", "obj", "require_is_number_object", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "$numToStr", "tryNumberObject", "value", "$toString", "numClass", "hasToStringTag", "require_is_boolean_object", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "$boolToStr", "$toString", "tryBooleanObject", "value", "boolClass", "hasToStringTag", "require_safe_regex_test", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "isRegex", "$exec", "$TypeError", "regex", "s", "require_is_symbol", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "$toString", "hasSymbols", "safeRegexTest", "$symToStr", "isSymString", "isSymbolObject", "value", "require_has_bigints", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$BigInt", "require_is_bigint", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "hasBigInts", "bigIntValueOf", "tryBigInt", "value", "require_which_boxed_primitive", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isString", "isNumber", "isBoolean", "isSymbol", "isBigInt", "value", "require_is_weakmap", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "$WeakMap", "$WeakSet", "exported", "x", "$mapHas", "$setHas", "require_is_weakset", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "GetIntrinsic", "callBound", "$WeakSet", "$setHas", "$mapHas", "x", "require_which_collection", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "isMap", "isSet", "isWeakMap", "isWeakSet", "value", "require_array_buffer_byte_length", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "callBound", "$byteLength", "isArrayBuffer", "ab", "require_deep_equal", "__commonJSMin", "exports", "module", "init_buffer_shim", "init_url_shim", "assign", "callBound", "flags", "GetIntrinsic", "getIterator", "getSideChannel", "is", "isArguments", "isArray", "isArrayBuffer", "isDate", "isRegex", "isSharedArrayBuffer", "objectKeys", "whichBoxedPrimitive", "whichCollection", "whichTypedArray", "byteLength", "sabByteLength", "$getTime", "gPO", "$objToString", "$Set", "$mapHas", "$mapGet", "$mapSize", "$setAdd", "$setDelete", "$setHas", "$setSize", "setHasEqualElement", "set", "val1", "opts", "channel", "i", "result", "internalDeepEqual", "findLooseMatchingPrimitives", "prim", "mapMightHaveLoosePrim", "a", "b", "item", "altValue", "curB", "looseOpts", "setMightHaveLoosePrim", "mapHasEqualEntry", "map", "key1", "item1", "key2", "actual", "expected", "options", "actualBoxed", "expectedBoxed", "hasActual", "hasExpected", "sentinel", "objEquiv", "isBuffer", "x", "setEquiv", "iA", "iB", "resultA", "resultB", "mapEquiv", "key", "item2", "aIsArray", "bIsArray", "aIsError", "bIsError", "aIsRegex", "bIsRegex", "aIsDate", "bIsDate", "aWhich", "bWhich", "aIsBuffer", "bIsBuffer", "aIsArrayBuffer", "bIsArrayBuffer", "aIsSAB", "bIsSAB", "ka", "kb", "aCollection", "bCollection", "federation_internals_1", "deep_equal_1", "__importDefault", "isPathContext", "v", "PathContext", "exports", "extractOperationConditionals", "operation", "conditionals", "addExtractedConditional", "kind", "addTo", "applied", "value", "newConditionals", "that", "federation_internals_1", "querygraph_1", "pathContext_1", "opTriggerEquality", "t1", "t2", "findTriggerIdx", "triggerEquality", "forIndex", "trigger", "i", "PathTree", "graph", "vertex", "localSelections", "childs", "root", "paths", "path", "selection", "currentVertex", "pathAndSelections", "maxEdges", "forEdgeIndex", "newVertices", "order", "currentOrder", "totalChilds", "ps", "iterResult", "edge", "conditions", "contextToSelection", "parameterToContext", "idx", "triggerIdx", "existing", "existingCond", "mergedConditions", "newPaths", "mergedContextToSelection", "mergedParameterToContext", "edgeIndex", "index", "newVertex", "values", "subPathAndSelections", "reverseOrder", "child", "c1", "c2", "cond1", "cond2", "other", "mergeIndexes", "countToAdd", "otherChild", "thisSize", "newSize", "newChilds", "addIdx", "that", "ptc1", "ptc2", "thisKeys", "_a", "thatKeys", "_b", "key", "thisSelection", "thatSelection", "target", "c", "indent", "includeConditions", "exports", "isRootPathTree", "tree", "traversePathTree", "pathTree", "onEdges", "_", "childTree", "federation_internals_1", "pathTree_1", "querygraph_1", "transition_1", "pathContext_1", "uuid_1", "debug", "updateRuntimeTypes", "currentRuntimeTypes", "edge", "field", "newRuntimeTypes", "parentType", "fieldType", "_a", "type", "castedType", "castedRuntimeTypes", "t", "currentType", "withReplacedLastElement", "arr", "newLast", "newArr", "i", "GraphPath", "props", "graph", "root", "runtimeTypes", "rootKind", "that", "vertex", "index", "minSize", "thisEdge", "thatEdge", "jumps", "v", "thisV", "thatV", "j", "path", "idx", "trigger", "conditionsResolution", "defer", "subgraphEnteringEdge", "previousOperation", "runtimeTypesWithoutPreviousCast", "updatedEdge", "e", "_b", "edgeConditions", "contextToSelection", "parameterToContext", "lastParameterToContext", "newTrigger", "args", "acc", "key", "value", "_c", "_", "entry", "_d", "_e", "tailPath", "prevRuntimeTypes", "typeName", "triggerToEdge", "overrideConditions", "prevSubgraphStartingVertex", "enteringEdge", "prevSubgraphVertex", "triggerToMatch", "prevSubgraphMatchingEdge", "tailEdge", "mapper", "result", "edgeIdx", "reducer", "initialValue", "c", "lastNonDowncastIdx", "lastNonDowncastVertex", "lastNonDowncastEdge", "runtimeTypesAtLastNonDowncastEdge", "newSize", "otherOptions", "newId", "paths", "p", "otherPath", "overriddingId", "schema", "metadata", "isRoot", "pathStr", "label", "deferStr", "typeStr", "exports", "isRootPath", "terminateWithNonRequestedTypenameField", "typenameField", "edgeForField", "traversePath", "onEdges", "conditions", "UnsatisfiedConditionReason", "UnadvanceableReason", "Unadvanceables", "reasons", "r", "UnadvanceableClosures", "closures", "isUnadvanceableClosures", "pathTransitionToEdge", "transition", "TransitionPathWithLazyIndirectPaths", "conditionResolver", "initialPath", "advancePathWithNonCollectingAndTypePreservingTransitions", "getFieldParentTypeForEdge", "advancePathWithTransition", "subgraphPath", "targetType", "supergraphRuntimeTypes", "subgraphRuntimeTypes", "t1", "t2", "directOptions", "advancePathWithDirectTransition", "options", "deadEndClosures", "advanceOptionsToString", "createLazyTransitionOptions", "pathsWithNonCollecting", "nonCollectingPath", "pathsWithTransition", "indirectDeadEndClosures", "allDeadEnds", "fieldName", "subgraphsWithDeadEnd", "subgraph", "typenameOfTail", "typeOfTailInSubgraph", "keys", "allNonResolvable", "k", "kindOfType", "explanation", "origin", "option", "isDestinationExcluded", "destination", "excluded", "sameExcludedDestinations", "ex1", "ex2", "d", "addDestinationExclusion", "isConditionExcluded", "condition", "addConditionExclusion", "newExclusion", "popMin", "stack", "minIdx", "min", "context", "excludedDestinations", "excludedConditions", "convertTransitionWithCondition", "getFieldParentType", "reachableSubgraphs", "s", "isTopLevelPath", "originalSource", "bestPathBySource", "toTry", "toAdvance", "nextEdges", "outEdges", "unadvanceables", "target", "prevForSource", "conditionResolution", "canSatisfyConditions", "prevSubgraphEnteringVertex", "backToPreviousSubgraph", "rootVertexForSubgraph", "maxCost", "hasValidDirectKeyEdge", "updatedPath", "source", "dest", "extraMsg", "conditionHasOverriddenFieldsInSource", "b", "subgraphName", "subgraphRootEdge", "externalDirective", "typeInSource", "fieldInSource", "from", "to", "resolution", "parentTypeInSubgraph", "details", "warnOnKeyFieldsMarkedExternal", "deadEnds", "fieldTypeName", "typeInSubgraph", "fieldInSubgraph", "overriddingSources", "findOverriddingSourcesIfOverridden", "fieldSource", "sources", "name", "sourceMetadata", "keyDirective", "keyFieldMarkedExternal", "fieldSet", "selection", "printedFields", "f", "getLocallySatisfiableKey", "typeVertex", "excludedEdges", "requiredContexts", "totalCost", "contextMap", "someSelectionUnsatisfied", "cxt", "levelsInQueryPath", "levelsInDataPath", "matches", "parentInSupergraph", "tInSupergraph", "selectionSet", "argIndices", "id", "pathTree", "lastEdge", "isTerminalOperation", "operation", "SimultaneousPathsWithLazyIndirectPaths", "excludedNonCollectingEdges", "excludedConditionsOnNonCollectingEdges", "updatedContext", "pathIdx", "_t", "opPathTriggerToEdge", "getFieldParentTypeForOpTrigger", "simultaneousPathsToString", "simultaneousPaths", "indentOnNewLine", "opt", "filterNonCollectingPathsForField", "filtered", "advanceSimultaneousPathsWithOperation", "supergraphSchema", "subgraphSimultaneousPaths", "optionsForEachPath", "shouldReenterSubgraph", "advanceOptions", "hasOnlyTypeExplodedResults", "advanceWithOperation", "pathWithNonCollecting", "pathWithOperation", "indirectOption", "allOptions", "flatCartesianProduct", "createLazyOptions", "createInitialOptions", "initialContext", "lazyInitialPath", "initialOptions", "edgeForTypeCast", "size", "eltIndexes", "totalCombinations", "eltSize", "product", "itemSize", "item", "anImplementationHasAProvides", "itf", "implem", "anImplementationIsEntityWithFieldShareable", "fieldNames", "otherMetadata", "fieldInOther", "typeInOther", "otherNames", "isProvidedEdge", "nextEdgeForField", "fieldOnCurrentType", "fieldPath", "addFieldEdge", "pathAsOptions", "fieldIsOfAnImplementation", "itfEdge", "itfPath", "directPathOverrideTypeExplosion", "implementations", "optionsByImplems", "implemType", "castOp", "implemOptions", "withField", "optPaths", "withFieldOptions", "typenameEdge", "nextEdgeForTypeCast", "parentTypes", "castedTypes", "intersection", "tName", "allCastOptions", "conditionType", "fakeDownCastEdge", "fieldOperation", "candidates", "require_common", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "isForwardRefNode", "object", "isNodeModel", "isNodeRef", "node", "isNodeRefLike", "isNodeRefGroupLike", "target", "isCompass", "c", "toNodeRef", "id", "port", "compass", "toNodeRefGroup", "targets", "t", "RootModelsContext", "createModelsContext", "models", "require_utils", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "_pipe", "args", "o1", "operations", "t", "acc", "f", "pipe", "defer", "fn", "src", "toIterable", "map", "selector", "v", "filter", "pred", "x", "require_ast", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "index_js", "index_js$1", "Builder", "options", "__publicField", "type", "props", "children", "createElement", "EOL", "joinBy", "sep", "value", "wrapWith", "wrapper", "wrapByPair", "l", "r", "leftPadWith", "left", "escape", "splitByLine", "indent", "style", "size", "eol", "endOfLine", "AttributeListPrintPlugin", "ast", "context", "AttributePrintPlugin", "CommentPrintPlugin", "DotPrintPlugin", "EdgePrintPlugin", "targets", "contents", "GraphPrintPlugin", "parts", "quoteLiteralValue", "quoteHTMLLikeLiteralValue", "LiteralPrintPlugin", "NodePrintPlugin", "id", "NodeRefGroupPrintPlugin", "NodeRefPrintPlugin", "SubgraphPrintPlugin", "defaultPlugins$2", "_plugins", "Printer", "__privateAdd", "plugins", "__privateGet", "indentSize", "indentStyle", "a", "plugin", "stringify", "result", "peg$padEnd", "str", "targetLength", "padString", "DotSyntaxError$1", "message", "expected", "found", "location", "hex", "ch", "literalEscape", "s", "classEscape", "describeExpectation", "expectation", "escapedParts", "part", "describeExpected", "expected1", "descriptions", "i", "j", "describeFound", "found1", "sources", "src", "k", "loc", "e", "filler", "line", "last", "peg$parse", "input", "peg$FAILED", "peg$source", "peg$startRuleFunctions", "peg$parseDot", "peg$parseGraph", "peg$parseSubgraph", "peg$parseNode", "peg$parseEdge", "peg$parseAttributeList", "peg$parseAttribute", "peg$parseClusterStatements", "peg$startRuleFunction", "peg$c0", "v", "peg$c1", "c1", "graph", "c2", "b", "peg$c2", "peg$c3", "peg$literalExpectation", "peg$c4", "peg$c5", "peg$c6", "peg$c7", "peg$c8", "peg$c9", "peg$c10", "peg$c11", "peg$c12", "_strict", "_kind", "strict", "directed", "edgeop", "edgeops", "error", "peg$c13", "peg$c14", "peg$c15", "keyValue", "peg$c16", "peg$c17", "peg$c18", "peg$c19", "peg$c20", "peg$c21", "rhs", "_children", "peg$c22", "peg$c23", "peg$c24", "peg$c25", "key", "peg$c26", "peg$c27", "peg$c28", "kv", "peg$c29", "peg$c30", "peg$c31", "peg$c32", "peg$c33", "list", "peg$c34", "peg$c35", "rest", "peg$c36", "peg$c37", "peg$c38", "peg$c39", "peg$c40", "operator", "peg$c41", "peg$c42", "port", "peg$c43", "peg$otherExpectation", "peg$c44", "peg$c45", "peg$c46", "compass", "peg$c47", "peg$c48", "peg$c49", "peg$c50", "peg$c51", "peg$c52", "peg$c53", "peg$c54", "peg$c55", "peg$c56", "peg$c57", "peg$c58", "peg$c59", "peg$c60", "peg$c61", "peg$c62", "peg$c63", "peg$c64", "peg$c65", "peg$c66", "peg$c67", "peg$c68", "peg$c69", "peg$c70", "peg$c71", "peg$c72", "peg$c73", "peg$c74", "peg$c75", "peg$c76", "peg$c77", "peg$c78", "peg$anyExpectation", "peg$c79", "dedent", "peg$c80", "lines", "peg$c81", "peg$c82", "peg$c83", "peg$c84", "peg$c85", "peg$c86", "peg$c87", "peg$c88", "first", "peg$c89", "peg$c90", "peg$c91", "peg$c92", "peg$c93", "peg$c94", "peg$c95", "peg$c96", "peg$c97", "peg$c98", "peg$c99", "peg$c100", "peg$classExpectation", "peg$c101", "n", "text", "peg$c102", "peg$c103", "peg$c104", "peg$c105", "peg$c106", "peg$c107", "peg$c108", "chars", "peg$c109", "peg$c110", "peg$c111", "peg$c112", "peg$c113", "peg$c114", "peg$c115", "peg$c116", "peg$c117", "peg$c118", "peg$c119", "peg$c120", "peg$c121", "peg$c122", "peg$c123", "peg$c124", "peg$c125", "peg$c126", "peg$c134", "peg$c135", "peg$c136", "peg$c137", "peg$c138", "peg$c139", "peg$c140", "peg$c141", "peg$c142", "peg$c143", "peg$c144", "peg$c145", "peg$c146", "peg$c147", "peg$c148", "peg$c149", "peg$c150", "peg$c151", "peg$c152", "peg$c153", "peg$currPos", "peg$savedPos", "peg$posDetailsCache", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "peg$result", "peg$computeLocation", "location1", "peg$buildSimpleError", "text1", "ignoreCase", "inverted", "peg$endExpectation", "description", "peg$computePosDetails", "pos", "details", "p", "startPos", "endPos", "startPosDetails", "endPosDetails", "peg$fail", "peg$buildStructuredError", "s0", "s1", "s2", "s3", "peg$parse__", "peg$parse_dot", "peg$parse_graph", "peg$parse_node", "peg$parse_attributes", "peg$parse_attribute", "peg$parse_edge", "peg$parse_subgraph", "peg$parseNodeRef", "peg$parse_node_ref", "peg$parseAttibutesItem", "peg$parse_attibutes_item", "peg$parseComment", "peg$parse_comment", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "peg$parse_", "peg$parse_literal", "peg$parse_key_value", "peg$parse_attribute_list", "peg$parse_edge_target", "peg$parse_edge_rhs", "peg$parse_edge_target_group", "peg$parse_edge_operator", "peg$parse_port", "peg$parse_compass", "peg$parse_subgraph_id", "peg$parse_compass_keyword", "peg$parseQUOTED_STRING", "peg$parseHTML_STRING", "peg$parseSTRING", "peg$parseNUMBER_STRING", "peg$parseNUMBER", "peg$parse_block_comment", "peg$parse_slash_comment", "peg$parse_macro_comment", "peg$parse_slash_comment_line", "peg$parse_newline", "peg$parse_macro_comment_line", "peg$parseStringStart", "peg$parseStringPart", "peg$parseUnicodeLetter", "peg$parseNd", "peg$parsehtml_raw_string", "peg$parsehtml_char", "peg$parseDoubleStringCharacter", "peg$parseQuoteEscape", "peg$parseLineTerminator", "peg$parseSourceCharacter", "peg$parseLineContinuation", "peg$parseLineTerminatorSequence", "peg$parse_whitespace", "peg$parseLu", "peg$parseLl", "peg$parseLt", "peg$parseLm", "peg$parseLo", "peg$parseNl", "matches", "indentLengths", "match", "pattern", "parse$1", "parse", "DotSyntaxError", "convertAttribute", "trimmed", "convertComment", "kind", "convertClusterChildren", "model", "attrs", "node", "subgraph", "edge", "AttributeListPlugin", "EdgePlugin$1", "target", "GraphPlugin$1", "NodePlugin$1", "SubgraphPlugin$1", "defaultPlugins$1", "FromModelConverter", "commentKind", "m", "fromModel", "CommentHolder", "comment", "DotPlugin", "commentHolder", "stmt", "convertToEdgeTargetTuple", "t", "EdgePlugin", "prev", "curr", "applyStatements", "statements", "GraphPlugin", "G", "SubgraphPlugin", "NodePlugin", "defaultPlugins", "ToModelConverter", "toModel", "require_core", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "index_js", "index_js$1", "attribute", "_", "key", "DotObject", "_attrs", "AttributesBase", "attributes", "__privateAdd", "__privateGet", "value", "entries", "AttributeList", "$$kind", "__publicField", "_models", "_objects", "GraphBase", "models", "__privateSet", "node", "edge", "subgraph", "nodeId", "args", "id", "targets", "ts", "t", "arg", "callback", "firstArg", "RootGraph", "Digraph", "Graph", "Subgraph", "AttributesGroup", "Node", "port", "Edge", "ModelFactoryBuilder", "directed", "strictMode", "G", "g", "createModelFactories", "strict", "context", "noStrict", "digraph", "graph", "withContext", "toDot", "model", "options", "ast", "fromDot", "dot", "require_lib", "__commonJSMin", "exports", "init_buffer_shim", "init_url_shim", "index_js", "index_js$1", "k", "querygraph_1", "ts_graphviz_1", "graphPath_1", "toDot", "graph", "config", "vizGraph", "addToVizGraphAndHighlight", "exports", "groupToDot", "name", "graphs", "configs", "group", "cluster", "state", "addToVizGraph", "highlightPaths", "colors", "pickHighlights", "paths", "excluded", "usableColors", "c", "path", "i", "noTerminal", "vizSubGraphs", "source", "getNode", "vertex", "existingNode", "newNode", "pickGraphForEdge", "head", "tail", "onEdge", "edge", "headNode", "tailNode", "attributes", "_", "toHighlights", "h", "highlightPath", "toHighlight", "e", "vAttrs", "_a", "_b", "eAttrs", "_c", "federation_internals_1", "graphPath_1", "querygraph_1", "cachingConditionResolver", "resolver", "cache", "edge", "context", "excludedDestinations", "excludedConditions", "extraConditions", "cachedResolutionAndExcludedEdges", "cachedResolution", "forExcludedEdges", "resolution", "exports", "graphPath_1", "conditionsCaching_1", "ConditionValidationState", "selection", "subgraphOptions", "supergraph", "newOptions", "paths", "pathsOptions", "s", "simpleValidationConditionResolver", "queryGraph", "withCaching", "resolver", "edge", "context", "excludedDestinations", "excludedConditions", "extraConditions", "conditions", "initialPath", "initialOptions", "stack", "newStates", "exports", "querygraph_1", "MermaidGraph", "graph", "options", "name", "vertex", "sg", "addTo", "edge", "_a", "f", "head", "tail", "label", "v", "final", "b", "data", "d", "a", "exports", "__exportStar", "exports", "graphql_1", "HintLevel", "exports", "makeCodeDefinition", "code", "level", "description", "INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE", "INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE", "INCONSISTENT_DEFAULT_VALUE_PRESENCE", "INCONSISTENT_ENTITY", "INCONSISTENT_OBJECT_VALUE_TYPE_FIELD", "INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD", "INCONSISTENT_INPUT_OBJECT_FIELD", "INCONSISTENT_UNION_MEMBER", "INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM", "INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM", "INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE", "INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS", "INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE", "NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION", "INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE", "INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS", "INCONSISTENT_DESCRIPTION", "INCONSISTENT_ARGUMENT_PRESENCE", "FROM_SUBGRAPH_DOES_NOT_EXIST", "OVERRIDDEN_FIELD_CAN_BE_REMOVED", "OVERRIDE_DIRECTIVE_CAN_BE_REMOVED", "OVERRIDE_MIGRATION_IN_PROGRESS", "UNUSED_ENUM_TYPE", "INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS", "MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS", "DIRECTIVE_COMPOSITION_INFO", "DIRECTIVE_COMPOSITION_WARN", "INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN", "IMPLICITLY_UPGRADED_FEDERATION_VERSION", "CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS", "CompositionHint", "definition", "message", "element", "nodes", "printHint", "hint", "output", "node", "federation_internals_1", "hints_1", "MismatchReporter", "names", "pushError", "pushHint", "code", "message", "mismatchedElement", "subgraphElements", "mismatchAccessor", "elt", "distribution", "nodes", "supergraphElementPrinter", "otherElementsPrinter", "ignorePredicate", "includeMissingSources", "extraNodes", "supergraphElement", "targetedElement", "elementToString", "noEndOfMessageDot", "astNodes", "reporter", "distributionMap", "processSubgraphElt", "name", "subgraphElt", "i", "supergraphMismatch", "_a", "subgraphsLikeSupergraph", "v", "exports", "federation_internals_1", "hints_1", "reporter_1", "merging_1", "directiveHasDifferentNameInSubgraph", "subgraph", "origName", "expectedName", "identity", "imp", "_c", "_b", "_a", "_d", "allEqual", "arr", "val", "DISALLOWED_IDENTITIES", "ComposeDirectiveManager", "subgraphs", "pushError", "pushHint", "coreIdentity", "sg", "ast", "subgraphsUsed", "raisedHint", "latest", "feature", "acc", "pair", "composeInstance", "directive", "d", "identities", "errors", "hints", "wontMergeFeatures", "wontMergeDirectiveNames", "itemsBySubgraph", "itemsByDirectiveName", "itemsByOrigDirectiveName", "tagNamesInSubgraphs", "inaccessibleNamesInSubgraphs", "composeDirectives", "name", "featureDetails", "idx", "item", "words", "items", "sourceAST", "elt", "subgraphsWithDifferentNaming", "directivesForSubgraph", "subgraphName", "directiveName", "entry", "nameInSchema", "directives", "id", "value", "exports", "federation_internals_1", "collectCoreDirectivesToCompose", "subgraphs", "directivesPerFeatureAndVersion", "subgraph", "features", "directive", "source", "url", "fqn", "forFeature", "major", "forVersion", "perVersion", "d", "featureDefinition", "compositionSpec", "exports", "federation_internals_1", "graphql_1", "hints_1", "composeDirectiveManager_1", "reporter_1", "util_1", "coreDirectiveCollector_1", "mapSources", "sources", "mapper", "result", "source", "idx", "filterSources", "someSources", "predicate", "sourcesFromArray", "array", "exports", "FieldMergeContext", "_", "i", "_a", "label", "props", "isMergeSuccessful", "mergeResult", "isMergeFailure", "mergeSubgraphs", "subgraphs", "options", "s", "Merger", "copyTypeReference", "dest", "type", "NON_MERGED_CORE_FEATURES", "isMergedType", "coreFeatures", "typeFeature", "isMergedField", "field", "isGraphQLBuiltInDirective", "def", "printTypes", "types", "t", "filteredRoot", "rootKind", "hasMergedFields", "indexOfMax", "arr", "descriptionString", "toIndent", "indentation", "locationString", "locations", "error", "hint", "schema", "url", "versions", "subgraph", "linkedFederationVersion", "_b", "versionsFromFeatures", "feature", "_d", "_c", "version", "impliedFederationVersion", "featureCausingUpgrade", "_f", "_e", "errors", "directivesMergeInfo", "supergraphInfoByIdentity", "name", "definitionsPerSubgraph", "compositionSpec", "nameInSupergraph", "directive", "specInSupergraph", "supergraphInfo", "directives", "imports", "nameInFeature", "defaultNameInSupergraph", "argumentsMerger", "subgraphIndex", "subgraphName", "definition", "objectTypes", "interfaceTypes", "unionTypes", "enumTypes", "nonUnionEnumTypes", "objectType", "interfaceType", "unionType", "enumType", "e", "causes", "mismatchedTypes", "typesWithInterfaceObject", "metadata", "expectedKind", "previous", "itfObjectType", "subgraphsWithType", "features", "asName", "origName", "mismatchedType", "supergraphType", "typeKindToString", "implemented", "joinImplementsDirective", "itf", "descriptions", "counts", "nonEmptyDescriptions", "desc", "elt", "defSubgraphs", "extensionSubgraphs", "extensionASTs", "joinTypeDirective", "sourceMetadata", "isInterfaceObject", "keys", "key", "extension", "resolvable", "isValueType", "isSubscription", "added", "subgraphFields", "destField", "mergeContext", "sourceAsEntity", "sourceAsNonEntity", "hintId", "typeDescription", "index", "implementedItf", "itfField", "implemField", "itfArg", "implemArg", "d", "fieldName", "interfaceName", "meta", "fieldsToAdd", "fieldSet", "sourceIndex", "set", "extraSources", "fields", "itfType", "sourceIdx", "f", "filtered", "overrideDirective", "fromIdx", "fromField", "fromMetadata", "mapped", "interfaceObjectAbstractingFields", "subgraphsWithOverride", "subgraphMap", "acc", "elem", "isInterfaceField", "overridingSubgraphASTNode", "sourceSubgraphName", "abstractingTypes", "hasIncompatible", "conflictingDirective", "overriddenSubgraphASTNode", "overrideLabel", "overriddenFieldIsReferenced", "labelRegex", "percentRegex", "parts", "percent", "message", "suggestions", "extraMsg", "parentInSupergraph", "typeInSchema", "everySourceIsExternal", "nodes", "definingSubgraphs", "itfObjectFields", "withoutExternal", "destArg", "subgraphArgs", "allTypesEqual", "shareableSources", "nonShareableSources", "allResolving", "categorizeField", "printSubgraphs", "l", "resolvingSubgraphs", "nonShareables", "subgraphWithTargetlessOverride", "extraHint", "hasInvalidTypes", "invalidArgsPresence", "invalidArgsTypes", "invalidArgsDefaults", "arg", "argSources", "parentName", "usedOverridden", "coordinate", "overridden", "sourceMeta", "joinFieldDirective", "unusedOverridden", "fromContextDirective", "contextArguments", "appliedDirectives", "context", "selection", "external", "element", "applications", "isInputPosition", "destType", "hasSubtypes", "sourceType", "isArgument", "elementKind", "base", "existing", "thisPosition", "position", "examples", "example", "maybeSubType", "union", "maybeMember", "maybeImplementer", "argNames", "argName", "isContextualArg", "isContextualMap", "sawContextualArgs", "isContextual", "argument", "argType", "nonOptionalSources", "nonOptionalSubgraphs", "missingSources", "kind", "destDefault", "hasSeenSource", "isInconsistent", "isIncompatible", "sourceDefault", "hasKey", "supergraphImplementations", "resolvableKey", "k", "implementationsInSubgraph", "missingImplementations", "superImpl", "subgImpl", "definedImplementations", "member", "joinUnionMemberDirective", "memberName", "usage", "value", "valueSources", "inputExample", "outputExample", "joinEnumValueDirective", "valueName", "inputSources", "repeatable", "inconsistentRepeatable", "inconsistentLocations", "usages", "sourceLocations", "loc", "locs", "inaccessibleName", "names", "perSource", "directiveInSupergraph", "transformedArgs", "ds", "differentApplications", "application", "info", "mergedArguments", "applicationsArguments", "a", "argDef", "values", "args", "application1", "application2", "rootType", "map", "linkDirective", "parsedUrl", "joinsByDirectiveName", "graph", "linkImportIdentityURLMap", "shouldIncludeAsJoinDirective", "nameWithAtSymbol", "existingJoins", "found", "existingJoin", "joinDirective", "directiveName", "join", "n", "subgraphsWithTheField", "subgraphsWithTypeImplementingItf", "typeInSubgraph", "requiresApplication", "originalField", "mergedType", "requireAST", "that", "registerError", "makeMsg", "incompatibleSubgraphs", "otherSubgraph", "fieldInOther", "unknownArgument", "missingMandatory", "isRelevantSubgraphReferencer", "subgraphReferencer", "err", "supergraphElements", "hasInaccessibleElements", "subgraphType", "elements", "errorNodes", "subgraphHasInaccessibleElements", "subgraphSchema", "subgraphElement", "inaccessibleDirective", "referencers", "fieldsWithShareable", "getDirective", "getField", "__exportStar", "exports", "federation_internals_1", "query_graphs_1", "hints_1", "graphql_1", "debug", "ValidationError", "message", "supergraphUnsatisfiablePath", "subgraphsPaths", "witness", "exports", "satisfiabilityError", "unsatisfiablePath", "subgraphsPathsUnadvanceables", "buildWitnessOperation", "displayReasons", "error", "subgraphNodes", "state", "extractNode", "name", "schema", "node", "shareableFieldNonIntersectingRuntimeTypesError", "invalidState", "field", "runtimeTypesToSubgraphs", "operation", "typeStrings", "ts", "subgraphs", "p", "s", "_a", "_b", "shareableFieldMismatchedRuntimeTypesHint", "commonRuntimeTypes", "runtimeTypesPerSubgraphs", "allSubgraphs", "printTypes", "t", "subgraphsWithTypeNotInIntersectionString", "typesToNotImplement", "reasons", "bySubgraph", "reason", "unadvanceable", "subgraph", "msg", "allDetails", "r", "details", "root", "buildWitnessNextStep", "e", "edges", "index", "lastType", "edge", "selection", "subSelection", "type", "buildWitnessField", "definition", "args", "argDef", "generateWitnessValue", "obj", "validateGraphComposition", "supergraphSchema", "subgraphNameToGraphEnumValue", "supergraphAPI", "federatedQueryGraph", "errors", "hints", "ValidationTraversal", "initialSubgraphPaths", "kind", "initialState", "possibleRuntimeTypeNamesSorted", "path", "types", "o", "a", "b", "extractValidationError", "ValidationContext", "_", "joinSpec", "contextDirective", "contextFeature", "contextSpec", "application", "context", "typeNames", "typeName", "typeInSupergraph", "fieldInSupergraph", "joinFieldApplications", "ValidationState", "supergraphPath", "subgraphPathInfos", "selectedOverrideConditions", "conditionResolver", "overrideConditions", "supergraphEdge", "matchingContexts", "transition", "targetType", "newSubgraphPathInfos", "deadEnds", "newOverrideConditions", "contexts", "options", "newContexts", "subgraphName", "matchingContext", "newPath", "d", "updatedState", "hint", "allRuntimeTypes", "intersection", "hasAllEmpty", "typeNamesStr", "n", "pathInfo", "source", "subgraphContextKeys", "tailSubgraphName", "tailSubgraphEnumValue", "entryKeys", "subgraphEnumValue", "sources", "isSupersetOrEqual", "maybeSuperset", "other", "includesAllSubgraphs", "includesAllOverrideConditions", "label", "value", "vertex", "currentVertexVisit", "previousVisitsForVertex", "previousVisit", "_c", "newState", "federation_internals_1", "query_graphs_1", "merging_1", "validate_1", "validateCompositionOptions", "options", "_a", "compose", "subgraphs", "runSatisfiability", "sdlPrintOptions", "mergeResult", "validateSubgraphsAndMerge", "satisfiabilityResult", "validateSatisfiability", "supergraphSdl", "err", "exports", "composeServices", "services", "supergraphSchema", "supergraph", "supergraphQueryGraph", "federatedQueryGraph", "upgradeResult", "toMerge", "validationErrors", "__exportStar", "exports", "composition_1", "graphql_1", "federation_internals_1", "DEFAULT_NODES_SIZE_LIMIT", "composition", "serviceList", "nodesLimit", "limit", "service", "subgraphList", "sdl", "name", "rest", "parseTypedefs", "composed", "hints", "composed_hint", "nodes", "omittedNodesCount", "_a", "_b", "node", "getBuildErrorNode", "_c", "_d", "errors", "err", "_e", "exports", "getPosition", "token", "source", "subgraphName", "nodeTokens", "n", "composition_1", "exports"] }