214 lines
26 KiB
Plaintext
214 lines
26 KiB
Plaintext
import { Kind } from "/_nuxt/node_modules/graphql/language/kinds.mjs?v=e4f18c29";
|
|
import { visit } from "/_nuxt/node_modules/graphql/language/visitor.mjs?v=e4f18c29";
|
|
import { TypeInfo, visitWithTypeInfo } from "/_nuxt/node_modules/graphql/utilities/TypeInfo.mjs?v=e4f18c29";
|
|
|
|
/**
|
|
* An instance of this class is passed as the "this" context to all validators,
|
|
* allowing access to commonly useful contextual information from within a
|
|
* validation rule.
|
|
*/
|
|
export class ASTValidationContext {
|
|
constructor(ast, onError) {
|
|
this._ast = ast;
|
|
this._fragments = undefined;
|
|
this._fragmentSpreads = new Map();
|
|
this._recursivelyReferencedFragments = new Map();
|
|
this._onError = onError;
|
|
}
|
|
|
|
get [Symbol.toStringTag]() {
|
|
return 'ASTValidationContext';
|
|
}
|
|
|
|
reportError(error) {
|
|
this._onError(error);
|
|
}
|
|
|
|
getDocument() {
|
|
return this._ast;
|
|
}
|
|
|
|
getFragment(name) {
|
|
let fragments;
|
|
|
|
if (this._fragments) {
|
|
fragments = this._fragments;
|
|
} else {
|
|
fragments = Object.create(null);
|
|
|
|
for (const defNode of this.getDocument().definitions) {
|
|
if (defNode.kind === Kind.FRAGMENT_DEFINITION) {
|
|
fragments[defNode.name.value] = defNode;
|
|
}
|
|
}
|
|
|
|
this._fragments = fragments;
|
|
}
|
|
|
|
return fragments[name];
|
|
}
|
|
|
|
getFragmentSpreads(node) {
|
|
let spreads = this._fragmentSpreads.get(node);
|
|
|
|
if (!spreads) {
|
|
spreads = [];
|
|
const setsToVisit = [node];
|
|
let set;
|
|
|
|
while ((set = setsToVisit.pop())) {
|
|
for (const selection of set.selections) {
|
|
if (selection.kind === Kind.FRAGMENT_SPREAD) {
|
|
spreads.push(selection);
|
|
} else if (selection.selectionSet) {
|
|
setsToVisit.push(selection.selectionSet);
|
|
}
|
|
}
|
|
}
|
|
|
|
this._fragmentSpreads.set(node, spreads);
|
|
}
|
|
|
|
return spreads;
|
|
}
|
|
|
|
getRecursivelyReferencedFragments(operation) {
|
|
let fragments = this._recursivelyReferencedFragments.get(operation);
|
|
|
|
if (!fragments) {
|
|
fragments = [];
|
|
const collectedNames = Object.create(null);
|
|
const nodesToVisit = [operation.selectionSet];
|
|
let node;
|
|
|
|
while ((node = nodesToVisit.pop())) {
|
|
for (const spread of this.getFragmentSpreads(node)) {
|
|
const fragName = spread.name.value;
|
|
|
|
if (collectedNames[fragName] !== true) {
|
|
collectedNames[fragName] = true;
|
|
const fragment = this.getFragment(fragName);
|
|
|
|
if (fragment) {
|
|
fragments.push(fragment);
|
|
nodesToVisit.push(fragment.selectionSet);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
this._recursivelyReferencedFragments.set(operation, fragments);
|
|
}
|
|
|
|
return fragments;
|
|
}
|
|
}
|
|
export class SDLValidationContext extends ASTValidationContext {
|
|
constructor(ast, schema, onError) {
|
|
super(ast, onError);
|
|
this._schema = schema;
|
|
}
|
|
|
|
get [Symbol.toStringTag]() {
|
|
return 'SDLValidationContext';
|
|
}
|
|
|
|
getSchema() {
|
|
return this._schema;
|
|
}
|
|
}
|
|
export class ValidationContext extends ASTValidationContext {
|
|
constructor(schema, ast, typeInfo, onError) {
|
|
super(ast, onError);
|
|
this._schema = schema;
|
|
this._typeInfo = typeInfo;
|
|
this._variableUsages = new Map();
|
|
this._recursiveVariableUsages = new Map();
|
|
}
|
|
|
|
get [Symbol.toStringTag]() {
|
|
return 'ValidationContext';
|
|
}
|
|
|
|
getSchema() {
|
|
return this._schema;
|
|
}
|
|
|
|
getVariableUsages(node) {
|
|
let usages = this._variableUsages.get(node);
|
|
|
|
if (!usages) {
|
|
const newUsages = [];
|
|
const typeInfo = new TypeInfo(this._schema);
|
|
visit(
|
|
node,
|
|
visitWithTypeInfo(typeInfo, {
|
|
VariableDefinition: () => false,
|
|
|
|
Variable(variable) {
|
|
newUsages.push({
|
|
node: variable,
|
|
type: typeInfo.getInputType(),
|
|
defaultValue: typeInfo.getDefaultValue(),
|
|
});
|
|
},
|
|
}),
|
|
);
|
|
usages = newUsages;
|
|
|
|
this._variableUsages.set(node, usages);
|
|
}
|
|
|
|
return usages;
|
|
}
|
|
|
|
getRecursiveVariableUsages(operation) {
|
|
let usages = this._recursiveVariableUsages.get(operation);
|
|
|
|
if (!usages) {
|
|
usages = this.getVariableUsages(operation);
|
|
|
|
for (const frag of this.getRecursivelyReferencedFragments(operation)) {
|
|
usages = usages.concat(this.getVariableUsages(frag));
|
|
}
|
|
|
|
this._recursiveVariableUsages.set(operation, usages);
|
|
}
|
|
|
|
return usages;
|
|
}
|
|
|
|
getType() {
|
|
return this._typeInfo.getType();
|
|
}
|
|
|
|
getParentType() {
|
|
return this._typeInfo.getParentType();
|
|
}
|
|
|
|
getInputType() {
|
|
return this._typeInfo.getInputType();
|
|
}
|
|
|
|
getParentInputType() {
|
|
return this._typeInfo.getParentInputType();
|
|
}
|
|
|
|
getFieldDef() {
|
|
return this._typeInfo.getFieldDef();
|
|
}
|
|
|
|
getDirective() {
|
|
return this._typeInfo.getDirective();
|
|
}
|
|
|
|
getArgument() {
|
|
return this._typeInfo.getArgument();
|
|
}
|
|
|
|
getEnumValue() {
|
|
return this._typeInfo.getEnumValue();
|
|
}
|
|
}
|
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZhbGlkYXRpb25Db250ZXh0Lm1qcz92PWU0ZjE4YzI5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tIFwiL19udXh0L25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2tpbmRzLm1qcz92PWU0ZjE4YzI5XCI7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gXCIvX251eHQvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvdmlzaXRvci5tanM/dj1lNGYxOGMyOVwiO1xuaW1wb3J0IHsgVHlwZUluZm8sIHZpc2l0V2l0aFR5cGVJbmZvIH0gZnJvbSBcIi9fbnV4dC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvVHlwZUluZm8ubWpzP3Y9ZTRmMThjMjlcIjtcblxuLyoqXG4gKiBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHBhc3NlZCBhcyB0aGUgXCJ0aGlzXCIgY29udGV4dCB0byBhbGwgdmFsaWRhdG9ycyxcbiAqIGFsbG93aW5nIGFjY2VzcyB0byBjb21tb25seSB1c2VmdWwgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBmcm9tIHdpdGhpbiBhXG4gKiB2YWxpZGF0aW9uIHJ1bGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBU1RWYWxpZGF0aW9uQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGFzdCwgb25FcnJvcikge1xuICAgIHRoaXMuX2FzdCA9IGFzdDtcbiAgICB0aGlzLl9mcmFnbWVudHMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZnJhZ21lbnRTcHJlYWRzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX3JlY3Vyc2l2ZWx5UmVmZXJlbmNlZEZyYWdtZW50cyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9vbkVycm9yID0gb25FcnJvcjtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0FTVFZhbGlkYXRpb25Db250ZXh0JztcbiAgfVxuXG4gIHJlcG9ydEVycm9yKGVycm9yKSB7XG4gICAgdGhpcy5fb25FcnJvcihlcnJvcik7XG4gIH1cblxuICBnZXREb2N1bWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXN0O1xuICB9XG5cbiAgZ2V0RnJhZ21lbnQobmFtZSkge1xuICAgIGxldCBmcmFnbWVudHM7XG5cbiAgICBpZiAodGhpcy5fZnJhZ21lbnRzKSB7XG4gICAgICBmcmFnbWVudHMgPSB0aGlzLl9mcmFnbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyYWdtZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgIGZvciAoY29uc3QgZGVmTm9kZSBvZiB0aGlzLmdldERvY3VtZW50KCkuZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgaWYgKGRlZk5vZGUua2luZCA9PT0gS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OKSB7XG4gICAgICAgICAgZnJhZ21lbnRzW2RlZk5vZGUubmFtZS52YWx1ZV0gPSBkZWZOb2RlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2ZyYWdtZW50cyA9IGZyYWdtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZ21lbnRzW25hbWVdO1xuICB9XG5cbiAgZ2V0RnJhZ21lbnRTcHJlYWRzKG5vZGUpIHtcbiAgICBsZXQgc3ByZWFkcyA9IHRoaXMuX2ZyYWdtZW50U3ByZWFkcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIXNwcmVhZHMpIHtcbiAgICAgIHNwcmVhZHMgPSBbXTtcbiAgICAgIGNvbnN0IHNldHNUb1Zpc2l0ID0gW25vZGVdO1xuICAgICAgbGV0IHNldDtcblxuICAgICAgd2hpbGUgKChzZXQgPSBzZXRzVG9WaXNpdC5wb3AoKSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWxlY3Rpb24gb2Ygc2V0LnNlbGVjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VsZWN0aW9uLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfU1BSRUFEKSB7XG4gICAgICAgICAgICBzcHJlYWRzLnB1c2goc2VsZWN0aW9uKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgIHNldHNUb1Zpc2l0LnB1c2goc2VsZWN0aW9uLnNlbGVjdGlvblNldCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2ZyYWdtZW50U3ByZWFkcy5zZXQobm9kZSwgc3ByZWFkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwcmVhZHM7XG4gIH1cblxuICBnZXRSZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMob3BlcmF0aW9uKSB7XG4gICAgbGV0IGZyYWdtZW50cyA9IHRoaXMuX3JlY3Vyc2l2ZWx5UmVmZXJlbmNlZEZyYWdtZW50cy5nZXQob3BlcmF0aW9uKTtcblxuICAgIGlmICghZnJhZ21lbnRzKSB7XG4gICAgICBmcmFnbWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IGNvbGxlY3RlZE5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIGNvbnN0IG5vZGVzVG9WaXNpdCA9IFtvcGVyYXRpb24uc2VsZWN0aW9uU2V0XTtcbiAgICAgIGxldCBub2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBub2Rlc1RvVmlzaXQucG9wKCkpKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3ByZWFkIG9mIHRoaXMuZ2V0RnJhZ21lbnRTcHJlYWRzKG5vZGUpKSB7XG4gICAgICAgICAgY29uc3QgZnJhZ05hbWUgPSBzcHJlYWQubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmIChjb2xsZWN0ZWROYW1lc1tmcmFnTmFtZV0gIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbGxlY3RlZE5hbWVzW2ZyYWdOYW1lXSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMuZ2V0RnJhZ21lbnQoZnJhZ05hbWUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgZnJhZ21lbnRzLnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICBub2Rlc1RvVmlzaXQucHVzaChmcmFnbWVudC5zZWxlY3Rpb25TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMuc2V0KG9wZXJhdGlvbiwgZnJhZ21lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZ21lbnRzO1xuICB9XG59XG5leHBvcnQgY2xhc3MgU0RMVmFsaWRhdGlvbkNvbnRleHQgZXh0ZW5kcyBBU1RWYWxpZGF0aW9uQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGFzdCwgc2NoZW1hLCBvbkVycm9yKSB7XG4gICAgc3VwZXIoYXN0LCBvbkVycm9yKTtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdTRExWYWxpZGF0aW9uQ29udGV4dCc7XG4gIH1cblxuICBnZXRTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtYTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Db250ZXh0IGV4dGVuZHMgQVNUVmFsaWRhdGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihzY2hlbWEsIGFzdCwgdHlwZUluZm8sIG9uRXJyb3IpIHtcbiAgICBzdXBlcihhc3QsIG9uRXJyb3IpO1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl90eXBlSW5mbyA9IHR5cGVJbmZvO1xuICAgIHRoaXMuX3ZhcmlhYmxlVXNhZ2VzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX3JlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnVmFsaWRhdGlvbkNvbnRleHQnO1xuICB9XG5cbiAgZ2V0U2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cblxuICBnZXRWYXJpYWJsZVVzYWdlcyhub2RlKSB7XG4gICAgbGV0IHVzYWdlcyA9IHRoaXMuX3ZhcmlhYmxlVXNhZ2VzLmdldChub2RlKTtcblxuICAgIGlmICghdXNhZ2VzKSB7XG4gICAgICBjb25zdCBuZXdVc2FnZXMgPSBbXTtcbiAgICAgIGNvbnN0IHR5cGVJbmZvID0gbmV3IFR5cGVJbmZvKHRoaXMuX3NjaGVtYSk7XG4gICAgICB2aXNpdChcbiAgICAgICAgbm9kZSxcbiAgICAgICAgdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHtcbiAgICAgICAgICBWYXJpYWJsZURlZmluaXRpb246ICgpID0+IGZhbHNlLFxuXG4gICAgICAgICAgVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgICAgIG5ld1VzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbm9kZTogdmFyaWFibGUsXG4gICAgICAgICAgICAgIHR5cGU6IHR5cGVJbmZvLmdldElucHV0VHlwZSgpLFxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHR5cGVJbmZvLmdldERlZmF1bHRWYWx1ZSgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdXNhZ2VzID0gbmV3VXNhZ2VzO1xuXG4gICAgICB0aGlzLl92YXJpYWJsZVVzYWdlcy5zZXQobm9kZSwgdXNhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2VzO1xuICB9XG5cbiAgZ2V0UmVjdXJzaXZlVmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKSB7XG4gICAgbGV0IHVzYWdlcyA9IHRoaXMuX3JlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzLmdldChvcGVyYXRpb24pO1xuXG4gICAgaWYgKCF1c2FnZXMpIHtcbiAgICAgIHVzYWdlcyA9IHRoaXMuZ2V0VmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKTtcblxuICAgICAgZm9yIChjb25zdCBmcmFnIG9mIHRoaXMuZ2V0UmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzKG9wZXJhdGlvbikpIHtcbiAgICAgICAgdXNhZ2VzID0gdXNhZ2VzLmNvbmNhdCh0aGlzLmdldFZhcmlhYmxlVXNhZ2VzKGZyYWcpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVjdXJzaXZlVmFyaWFibGVVc2FnZXMuc2V0KG9wZXJhdGlvbiwgdXNhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2VzO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0VHlwZSgpO1xuICB9XG5cbiAgZ2V0UGFyZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0UGFyZW50VHlwZSgpO1xuICB9XG5cbiAgZ2V0SW5wdXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlSW5mby5nZXRJbnB1dFR5cGUoKTtcbiAgfVxuXG4gIGdldFBhcmVudElucHV0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0UGFyZW50SW5wdXRUeXBlKCk7XG4gIH1cblxuICBnZXRGaWVsZERlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0RmllbGREZWYoKTtcbiAgfVxuXG4gIGdldERpcmVjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0RGlyZWN0aXZlKCk7XG4gIH1cblxuICBnZXRBcmd1bWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0QXJndW1lbnQoKTtcbiAgfVxuXG4gIGdldEVudW1WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0RW51bVZhbHVlKCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8s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QyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLOztBQUU1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzs7QUFFdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZ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Q0FBQyxJQUFJLENBQUM7O0FBRS9DLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSzs7QUFFekMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTtBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVks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QUFDLGtCQUFrQixDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDOztBQUVGLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDOztBQUVGLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDOztBQUVGLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDOztBQUVGLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBQ0Y7In0= |