@codeperfect/eslint-plugin 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,7 +87,7 @@ function getStatementExpression(statement) {
87
87
  if (statement.type === "VariableDeclaration" &&
88
88
  statement.declarations.length === 1) {
89
89
  const [declaration] = statement.declarations;
90
- return declaration?.init;
90
+ return declaration?.init ?? void 0;
91
91
  }
92
92
  return void 0;
93
93
  }
@@ -206,4 +206,4 @@ function usesPrefix(name, prefix) {
206
206
  }
207
207
  /** Companion marker for test isolation. */
208
208
  export { getAssertDeclaredIdentifiers, getAssertionIdentifiers, getStatementExpression, hasAssertion, isActionExpression, isValidAssertStatement, unwrapExpression, usesPrefix, };
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuYXNzZXJ0aW9ucy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5hc3NlcnRpb25zLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLDJCQUEyQixFQUMzQixlQUFlLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVXJEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FDbkMsUUFBMkI7SUFFM0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBMEMsQ0FBQztJQUM5RSxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUNFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUIsRUFDN0MsQ0FBQztZQUNELEtBQUssTUFBTSxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDekMsbUJBQW1CLENBQUMsR0FBRyxDQUNyQixXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFDbkIsV0FBVyxDQUFDLEVBQW9DLENBQ2pELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztB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dCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxuaW1wb3J0IHR5cGUgeyBMb2NhdGVkTm9kZSwgVGVzdEJsb2NrQW5hbHlzaXMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQge1xuICBnZXRBc3NlcnRPcGVyYW5kcyxcbiAgZ2V0RXhwZWN0T3BlcmFuZHMsXG4gIGdldElkZW50aWZpZXJOYW1lLFxuICBoYXNFdmFsdWF0ZWRBc3NlcnRpb25BY3R1YWwsXG4gIGlzQXNzZXJ0aW9uQ2FsbCxcbn0gZnJvbSBcIi4vYW5hbHl6ZXIuYXNzZXJ0aW9ucy5vcGVyYW5kc1wiO1xuaW1wb3J0IHsgZ2V0RXhwcmVzc2lvbk5hbWUgfSBmcm9tIFwiLi9hbmFseXplci5zdXBlclwiO1xuaW1wb3J0IHsgdmlzaXROb2RlIH0gZnJvbSBcIi4vYW5hbHl6ZXIuc3VwZXIuaGVscGVyc1wiO1xuXG4vKiogSWRlbnRpZmllciBuYW1lcyBleHRyYWN0ZWQgZnJvbSBhbiBhc3NlcnRpb24gc3RhdGVtZW50LiAqL1xuaW50ZXJmYWNlIEFzc2VydGlvbklkZW50aWZpZXJzIHtcbiAgLyoqIElkZW50aWZpZXIgdXNlZCBhcyB0aGUgYWN0dWFsIHZhbHVlLiAqL1xuICBhY3R1YWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqIElkZW50aWZpZXIgdXNlZCBhcyB0aGUgZXhwZWN0ZWQgdmFsdWUuICovXG4gIGV4cGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29sbGVjdHMgQXNzZXJ0IGRlY2xhcmF0aW9ucy5cbiAqIEBwYXJhbSBhbmFseXNpcyBJbnB1dCBhbmFseXNpcyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVycyhhbmFseXNpcyk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVycyhcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxuKTogTWFwPHN0cmluZywgTG9jYXRlZE5vZGU8RVNUcmVlLklkZW50aWZpZXI+PiB7XG4gIGNvbnN0IGRlY2xhcmVkSWRlbnRpZmllcnMgPSBuZXcgTWFwPHN0cmluZywgTG9jYXRlZE5vZGU8RVNUcmVlLklkZW50aWZpZXI+PigpO1xuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBhbmFseXNpcy5zdGF0ZW1lbnRzKSB7XG4gICAgaWYgKFxuICAgICAgc3RhdGVtZW50LnBoYXNlcy5pbmNsdWRlcyhcIkFzc2VydFwiKSAmJlxuICAgICAgc3RhdGVtZW50Lm5vZGUudHlwZSA9PT0gXCJWYXJpYWJsZURlY2xhcmF0aW9uXCJcbiAgICApIHtcbiAgICAgIGZvciAoY29uc3QgZGVjbGFyYXRpb24gb2Ygc3RhdGVtZW50Lm5vZGUuZGVjbGFyYXRpb25zKSB7XG4gICAgICAgIGlmIChkZWNsYXJhdGlvbi5pZC50eXBlID09PSBcIklkZW50aWZpZXJcIikge1xuICAgICAgICAgIGRlY2xhcmVkSWRlbnRpZmllcnMuc2V0KFxuICAgICAgICAgICAgZGVjbGFyYXRpb24uaWQubmFtZSxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uLmlkIGFzIExvY2F0ZWROb2RlPEVTVHJlZS5JZGVudGlmaWVyPixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNsYXJlZElkZW50aWZpZXJzO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG91dGVyIGFzc2VydGlvbiBjYWxsIGV4cHJlc3Npb24gZm9yIG9uZSBzdGF0ZW1lbnQgd2hlbiBwcmVzZW50LlxuICogQHBhcmFtIHN0YXRlbWVudCBTdGF0ZW1lbnQgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIEFzc2VydGlvbiBjYWxsIGV4cHJlc3Npb24gd2hlbiB0aGUgc3RhdGVtZW50IGlzIGV4cHJlc3Npb24tYmFzZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhwcmVzc2lvbiA9IGdldEFzc2VydGlvbkV4cHJlc3Npb24oc3RhdGVtZW50KTtcbiAqIHZvaWQgZXhwcmVzc2lvbjtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRBc3NlcnRpb25FeHByZXNzaW9uKFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXG4pOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHN0YXRlbWVudC5leHByZXNzaW9uKTtcblxuICByZXR1cm4gZXhwcmVzc2lvbj8udHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiID8gZXhwcmVzc2lvbiA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBhc3NlcnRpb24gaWRlbnRpZmllcnMuXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0QXNzZXJ0aW9uSWRlbnRpZmllcnMoc3RhdGVtZW50KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRBc3NlcnRpb25JZGVudGlmaWVycyhcbiAgc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50LFxuKTogQXNzZXJ0aW9uSWRlbnRpZmllcnMge1xuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XG4gICAgcmV0dXJuIHsgYWN0dWFsOiB2b2lkIDAsIGV4cGVjdGVkOiB2b2lkIDAgfTtcbiAgfVxuICBjb25zdCBleHByZXNzaW9uID0gdW53cmFwRXhwcmVzc2lvbihzdGF0ZW1lbnQuZXhwcmVzc2lvbik7XG4gIGlmIChleHByZXNzaW9uPy50eXBlICE9PSBcIkNhbGxFeHByZXNzaW9uXCIpIHtcbiAgICByZXR1cm4geyBhY3R1YWw6IHZvaWQgMCwgZXhwZWN0ZWQ6IHZvaWQgMCB9O1xuICB9XG5cbiAgY29uc3QgZXhwZWN0T3BlcmFuZHMgPSBnZXRFeHBlY3RPcGVyYW5kcyhleHByZXNzaW9uKTtcbiAgaWYgKGV4cGVjdE9wZXJhbmRzICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0dWFsOiBnZXRJZGVudGlmaWVyTmFtZShleHBlY3RPcGVyYW5kcy5hY3R1YWwpLFxuICAgICAgZXhwZWN0ZWQ6IGdldElkZW50aWZpZXJOYW1lKGV4cGVjdE9wZXJhbmRzLmV4cGVjdGVkKSxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGFzc2VydE9wZXJhbmRzID0gZ2V0QXNzZXJ0T3BlcmFuZHMoZXhwcmVzc2lvbik7XG4gIHJldHVybiB7XG4gICAgYWN0dWFsOiBnZXRJZGVudGlmaWVyTmFtZShhc3NlcnRPcGVyYW5kcz8uYWN0dWFsKSxcbiAgICBleHBlY3RlZDogZ2V0SWRlbnRpZmllck5hbWUoYXNzZXJ0T3BlcmFuZHM/LmV4cGVjdGVkKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc3RhdGVtZW50IGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldFN0YXRlbWVudEV4cHJlc3Npb24oXG4gIHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCxcbik6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIikge1xuICAgIHJldHVybiBzdGF0ZW1lbnQuZXhwcmVzc2lvbjtcbiAgfVxuICBpZiAoXG4gICAgc3RhdGVtZW50LnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiICYmXG4gICAgc3RhdGVtZW50LmRlY2xhcmF0aW9ucy5sZW5ndGggPT09IDFcbiAgKSB7XG4gICAgY29uc3QgW2RlY2xhcmF0aW9uXSA9IHN0YXRlbWVudC5kZWNsYXJhdGlvbnM7XG4gICAgcmV0dXJuIGRlY2xhcmF0aW9uPy5pbml0IGFzIEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB2b2lkIDA7XG59XG5cbi8qKlxuICogQ2hlY2tzIGZvciBhc3NlcnRpb25zLlxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IGlzQXNzZXJ0aW9uRm91bmQgPSBmYWxzZTtcbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcbiAgICBpZiAobm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiYgaXNBc3NlcnRpb25DYWxsKG5vZGUpKSB7XG4gICAgICBpc0Fzc2VydGlvbkZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaXNBc3NlcnRpb25Gb3VuZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgZm9yIGFjdGlvbiBleHByZXNzaW9ucy5cbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc0FjdGlvbkV4cHJlc3Npb24oXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHVud3JhcHBlZEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICByZXR1cm4gKFxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24/LnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIlxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGFzc2VydGlvbiBhY3R1YWwgaXMgYSBsb2NhbCBjb2xsZWN0aW9uIHF1ZXJ5LlxuICogQHBhcmFtIGV4cHJlc3Npb24gQXNzZXJ0aW9uIGFjdHVhbCBleHByZXNzaW9uLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGEgbG9jYWwgY29sbGVjdGlvbiBxdWVyeS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc0Fzc2VydGlvbkxvY2FsRXhwcmVzc2lvbih7fSBhcyBFU1RyZWUuRXhwcmVzc2lvbik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNBc3NlcnRpb25Mb2NhbEV4cHJlc3Npb24oXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1ldGhvZE5hbWUgPVxuICAgIGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiXG4gICAgICA/IGdldEV4cHJlc3Npb25OYW1lKGV4cHJlc3Npb24uY2FsbGVlKVxuICAgICAgOiB2b2lkIDA7XG5cbiAgcmV0dXJuIChcbiAgICBtZXRob2ROYW1lICE9PSB2b2lkIDAgJiZcbiAgICBbXCJldmVyeVwiLCBcImZpbHRlclwiLCBcImZpbmRcIiwgXCJnZXRcIiwgXCJpbmNsdWRlc1wiLCBcIm1hcFwiLCBcInNvbWVcIl0uaW5jbHVkZXMoXG4gICAgICBtZXRob2ROYW1lLFxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgQXNzZXJ0IHN0YXRlbWVudCB2YWxpZGl0eS5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEFzc2VydFN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgaWYgKGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQpKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uRXhwcmVzc2lvbiA9IGdldEFzc2VydGlvbkV4cHJlc3Npb24oc3RhdGVtZW50KTtcblxuICAgIGlmIChhc3NlcnRpb25FeHByZXNzaW9uID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wZXJhbmRzID1cbiAgICAgIGdldEV4cGVjdE9wZXJhbmRzKGFzc2VydGlvbkV4cHJlc3Npb24pID8/XG4gICAgICBnZXRBc3NlcnRPcGVyYW5kcyhhc3NlcnRpb25FeHByZXNzaW9uKTtcbiAgICBjb25zdCBhY3R1YWwgPSBvcGVyYW5kcz8uYWN0dWFsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICFoYXNFdmFsdWF0ZWRBc3NlcnRpb25BY3R1YWwoYXNzZXJ0aW9uRXhwcmVzc2lvbiwgaXNBY3Rpb25FeHByZXNzaW9uKSB8fFxuICAgICAgaXNBc3NlcnRpb25Mb2NhbEV4cHJlc3Npb24oYWN0dWFsKVxuICAgICk7XG4gIH1cbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQuZGVjbGFyYXRpb25zLmV2ZXJ5KChkZWNsYXJhdGlvbikgPT4ge1xuICAgIGlmIChkZWNsYXJhdGlvbi5pbml0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICFpc0FjdGlvbkV4cHJlc3Npb24odW53cmFwRXhwcmVzc2lvbihkZWNsYXJhdGlvbi5pbml0KSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFVud3JhcHMgbmVzdGVkIGV4cHJlc3Npb25zLlxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdW53cmFwRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB1bndyYXBFeHByZXNzaW9uKFxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcbik6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGN1cnJlbnQgPSBleHByZXNzaW9uO1xuXG4gIHdoaWxlIChjdXJyZW50Py50eXBlID09PSBcIkNoYWluRXhwcmVzc2lvblwiKSB7XG4gICAgY3VycmVudCA9IGN1cnJlbnQuZXhwcmVzc2lvbjtcbiAgfVxuXG4gIGlmIChjdXJyZW50Py50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGN1cnJlbnQuYXJndW1lbnQ7XG4gIH1cblxuICByZXR1cm4gY3VycmVudDtcbn1cblxuLyoqXG4gKiBDaGVja3MgQUFBIG5hbWluZyBwcmVmaXhlcy5cbiAqIEBwYXJhbSBuYW1lIElucHV0IG5hbWUgdmFsdWUuXG4gKiBAcGFyYW0gcHJlZml4IElucHV0IHByZWZpeCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdXNlc1ByZWZpeChcImFjdHVhbFJlc3VsdFwiLCBcImFjdHVhbFwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB1c2VzUHJlZml4KG5hbWU6IHN0cmluZywgcHJlZml4OiBcImFjdHVhbFwiIHwgXCJleHBlY3RlZFwiKTogYm9vbGVhbiB7XG4gIHJldHVybiBuYW1lID09PSBwcmVmaXggfHwgbmFtZS5zdGFydHNXaXRoKHByZWZpeCk7XG59XG5cbi8qKiBDb21wYW5pb24gbWFya2VyIGZvciB0ZXN0IGlzb2xhdGlvbi4gKi9cbmV4cG9ydCB7XG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uLFxuICBoYXNBc3NlcnRpb24sXG4gIGlzQWN0aW9uRXhwcmVzc2lvbixcbiAgaXNWYWxpZEFzc2VydFN0YXRlbWVudCxcbiAgdW53cmFwRXhwcmVzc2lvbixcbiAgdXNlc1ByZWZpeCxcbn07XG4iXX0=
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuYXNzZXJ0aW9ucy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5hc3NlcnRpb25zLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLDJCQUEyQixFQUMzQixlQUFlLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVXJEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FDbkMsUUFBMkI7SUFFM0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBMEMsQ0FBQztJQUM5RSxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUNFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUIsRUFDN0MsQ0FBQztZQUNELEtBQUssTUFBTSxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDekMsbUJBQW1CLENBQUMsR0FBRyxDQUNyQixXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFDbkIsV0FBVyxDQUFDLEVBQW9DLENBQ2pELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztB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bnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG5pbXBvcnQgdHlwZSB7IExvY2F0ZWROb2RlLCBUZXN0QmxvY2tBbmFseXNpcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIGdldEFzc2VydE9wZXJhbmRzLFxuICBnZXRFeHBlY3RPcGVyYW5kcyxcbiAgZ2V0SWRlbnRpZmllck5hbWUsXG4gIGhhc0V2YWx1YXRlZEFzc2VydGlvbkFjdHVhbCxcbiAgaXNBc3NlcnRpb25DYWxsLFxufSBmcm9tIFwiLi9hbmFseXplci5hc3NlcnRpb25zLm9wZXJhbmRzXCI7XG5pbXBvcnQgeyBnZXRFeHByZXNzaW9uTmFtZSB9IGZyb20gXCIuL2FuYWx5emVyLnN1cGVyXCI7XG5pbXBvcnQgeyB2aXNpdE5vZGUgfSBmcm9tIFwiLi9hbmFseXplci5zdXBlci5oZWxwZXJzXCI7XG5cbi8qKiBJZGVudGlmaWVyIG5hbWVzIGV4dHJhY3RlZCBmcm9tIGFuIGFzc2VydGlvbiBzdGF0ZW1lbnQuICovXG5pbnRlcmZhY2UgQXNzZXJ0aW9uSWRlbnRpZmllcnMge1xuICAvKiogSWRlbnRpZmllciB1c2VkIGFzIHRoZSBhY3R1YWwgdmFsdWUuICovXG4gIGFjdHVhbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKiogSWRlbnRpZmllciB1c2VkIGFzIHRoZSBleHBlY3RlZCB2YWx1ZS4gKi9cbiAgZXhwZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBBc3NlcnQgZGVjbGFyYXRpb25zLlxuICogQHBhcmFtIGFuYWx5c2lzIElucHV0IGFuYWx5c2lzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKGFuYWx5c2lzKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKFxuICBhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMsXG4pOiBNYXA8c3RyaW5nLCBMb2NhdGVkTm9kZTxFU1RyZWUuSWRlbnRpZmllcj4+IHtcbiAgY29uc3QgZGVjbGFyZWRJZGVudGlmaWVycyA9IG5ldyBNYXA8c3RyaW5nLCBMb2NhdGVkTm9kZTxFU1RyZWUuSWRlbnRpZmllcj4+KCk7XG4gIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGFuYWx5c2lzLnN0YXRlbWVudHMpIHtcbiAgICBpZiAoXG4gICAgICBzdGF0ZW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXNzZXJ0XCIpICYmXG4gICAgICBzdGF0ZW1lbnQubm9kZS50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIlxuICAgICkge1xuICAgICAgZm9yIChjb25zdCBkZWNsYXJhdGlvbiBvZiBzdGF0ZW1lbnQubm9kZS5kZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uLmlkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgICAgICAgZGVjbGFyZWRJZGVudGlmaWVycy5zZXQoXG4gICAgICAgICAgICBkZWNsYXJhdGlvbi5pZC5uYW1lLFxuICAgICAgICAgICAgZGVjbGFyYXRpb24uaWQgYXMgTG9jYXRlZE5vZGU8RVNUcmVlLklkZW50aWZpZXI+LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY2xhcmVkSWRlbnRpZmllcnM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgb3V0ZXIgYXNzZXJ0aW9uIGNhbGwgZXhwcmVzc2lvbiBmb3Igb25lIHN0YXRlbWVudCB3aGVuIHByZXNlbnQuXG4gKiBAcGFyYW0gc3RhdGVtZW50IFN0YXRlbWVudCB0byBpbnNwZWN0LlxuICogQHJldHVybnMgQXNzZXJ0aW9uIGNhbGwgZXhwcmVzc2lvbiB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMgZXhwcmVzc2lvbi1iYXNlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBleHByZXNzaW9uID0gZ2V0QXNzZXJ0aW9uRXhwcmVzc2lvbihzdGF0ZW1lbnQpO1xuICogdm9pZCBleHByZXNzaW9uO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEFzc2VydGlvbkV4cHJlc3Npb24oXG4gIHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCxcbik6IEVTVHJlZS5DYWxsRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oc3RhdGVtZW50LmV4cHJlc3Npb24pO1xuXG4gIHJldHVybiBleHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgPyBleHByZXNzaW9uIDogdm9pZCAwO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIGFzc2VydGlvbiBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRBc3NlcnRpb25JZGVudGlmaWVycyhzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEFzc2VydGlvbklkZW50aWZpZXJzKFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXG4pOiBBc3NlcnRpb25JZGVudGlmaWVycyB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4geyBhY3R1YWw6IHZvaWQgMCwgZXhwZWN0ZWQ6IHZvaWQgMCB9O1xuICB9XG4gIGNvbnN0IGV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHN0YXRlbWVudC5leHByZXNzaW9uKTtcbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIikge1xuICAgIHJldHVybiB7IGFjdHVhbDogdm9pZCAwLCBleHBlY3RlZDogdm9pZCAwIH07XG4gIH1cblxuICBjb25zdCBleHBlY3RPcGVyYW5kcyA9IGdldEV4cGVjdE9wZXJhbmRzKGV4cHJlc3Npb24pO1xuICBpZiAoZXhwZWN0T3BlcmFuZHMgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3R1YWw6IGdldElkZW50aWZpZXJOYW1lKGV4cGVjdE9wZXJhbmRzLmFjdHVhbCksXG4gICAgICBleHBlY3RlZDogZ2V0SWRlbnRpZmllck5hbWUoZXhwZWN0T3BlcmFuZHMuZXhwZWN0ZWQpLFxuICAgIH07XG4gIH1cbiAgY29uc3QgYXNzZXJ0T3BlcmFuZHMgPSBnZXRBc3NlcnRPcGVyYW5kcyhleHByZXNzaW9uKTtcbiAgcmV0dXJuIHtcbiAgICBhY3R1YWw6IGdldElkZW50aWZpZXJOYW1lKGFzc2VydE9wZXJhbmRzPy5hY3R1YWwpLFxuICAgIGV4cGVjdGVkOiBnZXRJZGVudGlmaWVyTmFtZShhc3NlcnRPcGVyYW5kcz8uZXhwZWN0ZWQpLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYSBzdGF0ZW1lbnQgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uKHN0YXRlbWVudCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihcbiAgc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50LFxuKTogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XG4gICAgcmV0dXJuIHN0YXRlbWVudC5leHByZXNzaW9uO1xuICB9XG4gIGlmIChcbiAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJWYXJpYWJsZURlY2xhcmF0aW9uXCIgJiZcbiAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMVxuICApIHtcbiAgICBjb25zdCBbZGVjbGFyYXRpb25dID0gc3RhdGVtZW50LmRlY2xhcmF0aW9ucztcbiAgICByZXR1cm4gZGVjbGFyYXRpb24/LmluaXQgPz8gdm9pZCAwO1xuICB9XG4gIHJldHVybiB2b2lkIDA7XG59XG5cbi8qKlxuICogQ2hlY2tzIGZvciBhc3NlcnRpb25zLlxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IGlzQXNzZXJ0aW9uRm91bmQgPSBmYWxzZTtcbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcbiAgICBpZiAobm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiYgaXNBc3NlcnRpb25DYWxsKG5vZGUpKSB7XG4gICAgICBpc0Fzc2VydGlvbkZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaXNBc3NlcnRpb25Gb3VuZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgZm9yIGFjdGlvbiBleHByZXNzaW9ucy5cbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc0FjdGlvbkV4cHJlc3Npb24oXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHVud3JhcHBlZEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICByZXR1cm4gKFxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24/LnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIlxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGFzc2VydGlvbiBhY3R1YWwgaXMgYSBsb2NhbCBjb2xsZWN0aW9uIHF1ZXJ5LlxuICogQHBhcmFtIGV4cHJlc3Npb24gQXNzZXJ0aW9uIGFjdHVhbCBleHByZXNzaW9uLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGEgbG9jYWwgY29sbGVjdGlvbiBxdWVyeS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc0Fzc2VydGlvbkxvY2FsRXhwcmVzc2lvbih7fSBhcyBFU1RyZWUuRXhwcmVzc2lvbik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNBc3NlcnRpb25Mb2NhbEV4cHJlc3Npb24oXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1ldGhvZE5hbWUgPVxuICAgIGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiXG4gICAgICA/IGdldEV4cHJlc3Npb25OYW1lKGV4cHJlc3Npb24uY2FsbGVlKVxuICAgICAgOiB2b2lkIDA7XG5cbiAgcmV0dXJuIChcbiAgICBtZXRob2ROYW1lICE9PSB2b2lkIDAgJiZcbiAgICBbXCJldmVyeVwiLCBcImZpbHRlclwiLCBcImZpbmRcIiwgXCJnZXRcIiwgXCJpbmNsdWRlc1wiLCBcIm1hcFwiLCBcInNvbWVcIl0uaW5jbHVkZXMoXG4gICAgICBtZXRob2ROYW1lLFxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgQXNzZXJ0IHN0YXRlbWVudCB2YWxpZGl0eS5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEFzc2VydFN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgaWYgKGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQpKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uRXhwcmVzc2lvbiA9IGdldEFzc2VydGlvbkV4cHJlc3Npb24oc3RhdGVtZW50KTtcblxuICAgIGlmIChhc3NlcnRpb25FeHByZXNzaW9uID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wZXJhbmRzID1cbiAgICAgIGdldEV4cGVjdE9wZXJhbmRzKGFzc2VydGlvbkV4cHJlc3Npb24pID8/XG4gICAgICBnZXRBc3NlcnRPcGVyYW5kcyhhc3NlcnRpb25FeHByZXNzaW9uKTtcbiAgICBjb25zdCBhY3R1YWwgPSBvcGVyYW5kcz8uYWN0dWFsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICFoYXNFdmFsdWF0ZWRBc3NlcnRpb25BY3R1YWwoYXNzZXJ0aW9uRXhwcmVzc2lvbiwgaXNBY3Rpb25FeHByZXNzaW9uKSB8fFxuICAgICAgaXNBc3NlcnRpb25Mb2NhbEV4cHJlc3Npb24oYWN0dWFsKVxuICAgICk7XG4gIH1cbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQuZGVjbGFyYXRpb25zLmV2ZXJ5KChkZWNsYXJhdGlvbikgPT4ge1xuICAgIGlmIChkZWNsYXJhdGlvbi5pbml0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICFpc0FjdGlvbkV4cHJlc3Npb24odW53cmFwRXhwcmVzc2lvbihkZWNsYXJhdGlvbi5pbml0KSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFVud3JhcHMgbmVzdGVkIGV4cHJlc3Npb25zLlxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdW53cmFwRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB1bndyYXBFeHByZXNzaW9uKFxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcbik6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGN1cnJlbnQgPSBleHByZXNzaW9uO1xuXG4gIHdoaWxlIChjdXJyZW50Py50eXBlID09PSBcIkNoYWluRXhwcmVzc2lvblwiKSB7XG4gICAgY3VycmVudCA9IGN1cnJlbnQuZXhwcmVzc2lvbjtcbiAgfVxuXG4gIGlmIChjdXJyZW50Py50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGN1cnJlbnQuYXJndW1lbnQ7XG4gIH1cblxuICByZXR1cm4gY3VycmVudDtcbn1cblxuLyoqXG4gKiBDaGVja3MgQUFBIG5hbWluZyBwcmVmaXhlcy5cbiAqIEBwYXJhbSBuYW1lIElucHV0IG5hbWUgdmFsdWUuXG4gKiBAcGFyYW0gcHJlZml4IElucHV0IHByZWZpeCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdXNlc1ByZWZpeChcImFjdHVhbFJlc3VsdFwiLCBcImFjdHVhbFwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB1c2VzUHJlZml4KG5hbWU6IHN0cmluZywgcHJlZml4OiBcImFjdHVhbFwiIHwgXCJleHBlY3RlZFwiKTogYm9vbGVhbiB7XG4gIHJldHVybiBuYW1lID09PSBwcmVmaXggfHwgbmFtZS5zdGFydHNXaXRoKHByZWZpeCk7XG59XG5cbi8qKiBDb21wYW5pb24gbWFya2VyIGZvciB0ZXN0IGlzb2xhdGlvbi4gKi9cbmV4cG9ydCB7XG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uLFxuICBoYXNBc3NlcnRpb24sXG4gIGlzQWN0aW9uRXhwcmVzc2lvbixcbiAgaXNWYWxpZEFzc2VydFN0YXRlbWVudCxcbiAgdW53cmFwRXhwcmVzc2lvbixcbiAgdXNlc1ByZWZpeCxcbn07XG4iXX0=
@@ -93,7 +93,7 @@ function reportMissingSections(context, analysis) {
93
93
  if (missingSections.length === 0) {
94
94
  return;
95
95
  }
96
- const fix = analysis.bodyLineCount >= 3
96
+ const fix = analysis.sectionComments.length === 0 && analysis.bodyLineCount >= 3
97
97
  ? (fixer) => buildMissingSectionFixes(analysis, missingSections, fixer)
98
98
  : void 0;
99
99
  context.report({
@@ -164,4 +164,4 @@ const updateSectionOrder = (input) => {
164
164
  return Math.max(lastPhaseOrder, currentPhaseOrder);
165
165
  };
166
166
  export { reportBlankLineSeparators, reportCodeBeforeArrange, reportEmptySections, reportMissingSections, reportOutOfOrderSections, updateSectionOrder, };
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1zZWN0aW9uLXJlcG9ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9lbmZvcmNlLWFhYS1zdHJ1Y3R1cmUvcnVsZS1zZWN0aW9uLXJlcG9ydGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDekIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXVCbkU7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHlCQUF5QixDQUNoQyxPQUF5QixFQUN6QixRQUEyQjtJQUUzQixNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBRWpFLEtBQUssTUFBTSxjQUFjLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxJQUNFLGNBQWMsQ0FBQyxPQUFPLEtBQUssbUJBQW1CO1lBQzlDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUN0RSxDQUFDO1lBQ0QsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQXFCLEVBQVksRUFBRSxDQUM5QyxLQUFLLENBQUMscUJBQXFCLENBQ3pCLGlCQUFpQixDQUNmLFFBQVEsQ0FBQyxVQUFVLEVBQ25CLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3RDLEVBQ0QsUUFBUSxDQUFDLE9BQU8sQ0FDakIsQ0FBQztRQUVKLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDYixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFD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LEVBQVUsRUFBRTtJQUNwRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRS9ELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ2IsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEMsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxJQUFJLGlCQUFpQixHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDYixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNoQyxTQUFTLEVBQUUsY0FBYztZQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFHRixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixrQkFBa0IsR0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBnZXRGbGF0dGVuZWRTZWN0aW9ucyB9IGZyb20gXCIuLi9hYWEvYW5hbHl6ZXIuYW5hbHlzaXMuaGVscGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBUZXN0QmxvY2tBbmFseXNpcyB9IGZyb20gXCIuLi9hYWEvdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgYWFhUGhhc2VPcmRlcixcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbn0gZnJvbSBcIi4uL2FhYS9hbmFseXplci5hbmFseXNpcy5oZWxwZXJzXCI7XG5pbXBvcnQgeyBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50IH0gZnJvbSBcIi4uL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5oZWxwZXJzXCI7XG5pbXBvcnQgeyBidWlsZE1pc3NpbmdTZWN0aW9uRml4ZXMgfSBmcm9tIFwiLi9taXNzaW5nLXNlY3Rpb24tZml4ZXNcIjtcblxuLyoqIEZsYXR0ZW5lZCBzZWN0aW9uIGVudHJ5IGVtaXR0ZWQgYnkgdGhlIEFBQSBhbmFseXplciBoZWxwZXIuICovXG50eXBlIEZsYXR0ZW5lZFNlY3Rpb24gPSBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGbGF0dGVuZWRTZWN0aW9ucz5bbnVtYmVyXTtcblxuLyoqIFVuaW9uIG9mIHZhbGlkIEFBQSBwaGFzZSBsYWJlbHMgZW1pdHRlZCBmb3IgZmxhdHRlbmVkIHNlY3Rpb25zLiAqL1xudHlwZSBGbGF0dGVuZWRTZWN0aW9uUGhhc2UgPSBGbGF0dGVuZWRTZWN0aW9uW1wicGhhc2VcIl07XG5cbi8qKiBDb21wb3NpdGUgaW5wdXQgZm9yIGFkdmFuY2luZyB0aGUgQUFBIHNlY3Rpb24gb3JkZXJpbmcgc3RhdGUuICovXG5pbnRlcmZhY2UgVXBkYXRlU2VjdGlvbk9yZGVySW5wdXQge1xuICAvKiogQWN0aXZlIEVTTGludCBydWxlIGNvbnRleHQuICovXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqIEhpZ2hlc3QgcGhhc2Ugb3JkZXIgc2VlbiBzbyBmYXIuICovXG4gIGxhc3RQaGFzZU9yZGVyOiBudW1iZXI7XG5cbiAgLyoqIFNlY3Rpb24gY29tbWVudCBhbmQgcGhhc2UgbWV0YWRhdGEgdW5kZXIgaW5zcGVjdGlvbi4gKi9cbiAgc2VjdGlvbjogRmxhdHRlbmVkU2VjdGlvbjtcblxuICAvKiogU2V0IG9mIHBoYXNlcyBhbHJlYWR5IHNlZW4gaW4gdGhlIGN1cnJlbnQgdGVzdCBibG9jay4gKi9cbiAgc2VlblBoYXNlczogU2V0PEZsYXR0ZW5lZFNlY3Rpb25QaGFzZT47XG59XG5cbi8qKlxuICogUmVwb3J0cyBzZWN0aW9uIGNvbW1lbnRzIHRoYXQgYXJlIG1pc3NpbmcgYSBibGFuayBsaW5lIGFib3ZlIHRoZW0uXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEJsYW5rTGluZVNlcGFyYXRvcnMoeyByZXBvcnQoKSB7fSB9IGFzIG5ldmVyLCB7IHNlY3Rpb25Db21tZW50czogW10sIHNvdXJjZVRleHQ6IFwiXCIgfSBhcyBuZXZlcik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVwb3J0QmxhbmtMaW5lU2VwYXJhdG9ycyhcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxuKTogdm9pZCB7XG4gIGNvbnN0IGZpcnN0U2VjdGlvbkNvbW1lbnQgPSBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHNbMF0/LmNvbW1lbnQ7XG5cbiAgZm9yIChjb25zdCBzZWN0aW9uQ29tbWVudCBvZiBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMoYW5hbHlzaXMpKSB7XG4gICAgaWYgKFxuICAgICAgc2VjdGlvbkNvbW1lbnQuY29tbWVudCA9PT0gZmlyc3RTZWN0aW9uQ29tbWVudCB8fFxuICAgICAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudChhbmFseXNpcy5zb3VyY2VUZXh0LCBzZWN0aW9uQ29tbWVudC5jb21tZW50KVxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZml4ID0gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4ID0+XG4gICAgICBmaXhlci5pbnNlcnRUZXh0QmVmb3JlUmFuZ2UoXG4gICAgICAgIGdldExpbmVTdGFydFJhbmdlKFxuICAgICAgICAgIGFuYWx5c2lzLnNvdXJjZVRleHQsXG4gICAgICAgICAgc2VjdGlvbkNvbW1lbnQuY29tbWVudC5sb2Muc3RhcnQubGluZSxcbiAgICAgICAgKSxcbiAgICAgICAgYW5hbHlzaXMubmV3bGluZSxcbiAgICAgICk7XG5cbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IHNlY3Rpb246IHNlY3Rpb25Db21tZW50LnBoYXNlcy5qb2luKFwiICYgXCIpIH0sXG4gICAgICBmaXgsXG4gICAgICBtZXNzYWdlSWQ6IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiLFxuICAgICAgbm9kZTogc2VjdGlvbkNvbW1lbnQuY29tbWVudCxcbiAgICAgIHN1Z2dlc3Q6IFt7IGZpeCwgbWVzc2FnZUlkOiBcImFkZEJsYW5rTGluZUJlZm9yZVNlY3Rpb25cIiB9XSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgZXhlY3V0YWJsZSBzdGF0ZW1lbnRzIHRoYXQgYXBwZWFyIGJlZm9yZSB0aGUgZmlyc3QgQXJyYW5nZSBzZWN0aW9uLlxuICogQHBhcmFtIGNvbnRleHQgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAqIEBwYXJhbSBhbmFseXNpcyBQYXJzZWQgdGVzdC1ibG9jayBhbmFseXNpcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRDb2RlQmVmb3JlQXJyYW5nZSh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSwgc3RhdGVtZW50czogW10gfSBhcyBuZXZlcik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVwb3J0Q29kZUJlZm9yZUFycmFuZ2UoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBmaXJzdEFycmFuZ2VMaW5lID0gYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzLmZpbmQoKHNlY3Rpb25Db21tZW50KSA9PlxuICAgIHNlY3Rpb25Db21tZW50LnBoYXNlcy5pbmNsdWRlcyhcIkFycmFuZ2VcIiksXG4gICk/LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmU7XG4gIGlmIChmaXJzdEFycmFuZ2VMaW5lID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRCZWZvcmVBcnJhbmdlID0gYW5hbHlzaXMuc3RhdGVtZW50cy5maW5kKFxuICAgIChzdGF0ZW1lbnQpID0+IHN0YXRlbWVudC5ub2RlLmxvYy5zdGFydC5saW5lIDwgZmlyc3RBcnJhbmdlTGluZSxcbiAgKTtcbiAgaWYgKHN0YXRlbWVudEJlZm9yZUFycmFuZ2UgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICBtZXNzYWdlSWQ6IFwiY29kZUJlZm9yZUFycmFuZ2VcIixcbiAgICBub2RlOiBzdGF0ZW1lbnRCZWZvcmVBcnJhbmdlLm5vZGUsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlcG9ydHMgc2VjdGlvbnMgdGhhdCBjb250YWluIG9ubHkgY29tbWVudHMgb3Igd2hpdGVzcGFjZS5cbiAqIEBwYXJhbSBjb250ZXh0IEVTTGludCBydWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gYW5hbHlzaXMgUGFyc2VkIHRlc3QtYmxvY2sgYW5hbHlzaXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0RW1wdHlTZWN0aW9ucyh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSwgc3RhdGVtZW50czogW10gfSBhcyBuZXZlcik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVwb3J0RW1wdHlTZWN0aW9ucyhcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxuKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBzZWN0aW9uQ29tbWVudF0gb2YgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5leHRTZWN0aW9uTGluZSA9XG4gICAgICBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHNbaW5kZXggKyAxXT8uY29tbWVudC5sb2Muc3RhcnQubGluZTtcbiAgICBjb25zdCBoYXNDb2RlSW5TZWN0aW9uID0gYW5hbHlzaXMuc3RhdGVtZW50cy5zb21lKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudExpbmUgPSBzdGF0ZW1lbnQubm9kZS5sb2Muc3RhcnQubGluZTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgc3RhdGVtZW50TGluZSA+IHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUgJiZcbiAgICAgICAgKG5leHRTZWN0aW9uTGluZSA9PT0gdm9pZCAwIHx8IHN0YXRlbWVudExpbmUgPCBuZXh0U2VjdGlvbkxpbmUpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaWYgKCFoYXNDb2RlSW5TZWN0aW9uKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIGRhdGE6IHsgc2VjdGlvbjogc2VjdGlvbkNvbW1lbnQucGhhc2VzLmpvaW4oXCIgJiBcIikgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcImVtcHR5U2VjdGlvblwiLFxuICAgICAgICBub2RlOiBzZWN0aW9uQ29tbWVudC5jb21tZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBhbnkgQUFBIHNlY3Rpb24gbWFya2VycyB0aGF0IGFyZSBtaXNzaW5nIGZyb20gYSBzdXBwb3J0ZWQgdGVzdCBibG9jay5cbiAqIEBwYXJhbSBjb250ZXh0IEVTTGludCBydWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gYW5hbHlzaXMgUGFyc2VkIHRlc3QtYmxvY2sgYW5hbHlzaXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0TWlzc2luZ1NlY3Rpb25zKHsgcmVwb3J0KCkge30gfSBhcyBuZXZlciwgeyBzZWN0aW9uQ29tbWVudHM6IFtdIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydE1pc3NpbmdTZWN0aW9ucyhcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxuKTogdm9pZCB7XG4gIGNvbnN0IHByZXNlbnRTZWN0aW9ucyA9IG5ldyBTZXQoXG4gICAgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzLmZsYXRNYXAoKHNlY3Rpb25Db21tZW50KSA9PiBzZWN0aW9uQ29tbWVudC5waGFzZXMpLFxuICApO1xuICBjb25zdCBoYXNQcmVTZWN0aW9uU3RhdGVtZW50cyA9IGFuYWx5c2lzLnN0YXRlbWVudHMuc29tZShcbiAgICAoc3RhdGVtZW50KSA9PiBzdGF0ZW1lbnQucGhhc2VzLmxlbmd0aCA9PT0gMCxcbiAgKTtcbiAgY29uc3QgbWlzc2luZ1NlY3Rpb25zID0gKFtcIkFycmFuZ2VcIiwgXCJBY3RcIiwgXCJBc3NlcnRcIl0gYXMgY29uc3QpLmZpbHRlcihcbiAgICAocGhhc2UpID0+XG4gICAgICAhcHJlc2VudFNlY3Rpb25zLmhhcyhwaGFzZSkgJiZcbiAgICAgIChwaGFzZSAhPT0gXCJBcnJhbmdlXCIgfHwgaGFzUHJlU2VjdGlvblN0YXRlbWVudHMpLFxuICApO1xuXG4gIGlmIChtaXNzaW5nU2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZml4ID1cbiAgICBhbmFseXNpcy5ib2R5TGluZUNvdW50ID49IDNcbiAgICAgID8gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4W10gPT5cbiAgICAgICAgICBidWlsZE1pc3NpbmdTZWN0aW9uRml4ZXMoYW5hbHlzaXMsIG1pc3NpbmdTZWN0aW9ucywgZml4ZXIpXG4gICAgICA6IHZvaWQgMDtcblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgZGF0YTogeyBzZWN0aW9uczogbWlzc2luZ1NlY3Rpb25zLmpvaW4oXCIsIFwiKSB9LFxuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7IGZpeCB9KSxcbiAgICBtZXNzYWdlSWQ6IFwibWlzc2luZ1NlY3Rpb25zXCIsXG4gICAgbm9kZTogYW5hbHlzaXMuY2FsbEV4cHJlc3Npb24sXG4gICAgLi4uKGZpeCAhPT0gdm9pZCAwICYmIHtcbiAgICAgIHN1Z2dlc3Q6IFt7IGZpeCwgbWVzc2FnZUlkOiBcImFkZE1pc3NpbmdTZWN0aW9uc1wiIH1dLFxuICAgIH0pLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHNlY3Rpb24gY29tbWVudHMgdGhhdCBhcHBlYXIgb3V0IG9mIGNhbm9uaWNhbCBBcnJhbmdlIC0+IEFjdCAtPiBBc3NlcnQgb3JkZXIuXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE91dE9mT3JkZXJTZWN0aW9ucyh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRPdXRPZk9yZGVyU2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzLmxlbmd0aCAtIDE7IGluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50c1tpbmRleF07XG4gICAgY29uc3QgY3VycmVudCA9IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50c1tpbmRleCArIDFdO1xuXG4gICAgaWYgKHByZXZpb3VzID09PSB2b2lkIDAgfHwgY3VycmVudCA9PT0gdm9pZCAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhQcmV2aW91c09yZGVyID0gTWF0aC5tYXgoXG4gICAgICAuLi5wcmV2aW91cy5waGFzZXMubWFwKChwaGFzZSkgPT4gYWFhUGhhc2VPcmRlcltwaGFzZV0pLFxuICAgICk7XG4gICAgY29uc3QgbWluQ3VycmVudE9yZGVyID0gTWF0aC5taW4oXG4gICAgICAuLi5jdXJyZW50LnBoYXNlcy5tYXAoKHBoYXNlKSA9PiBhYWFQaGFzZU9yZGVyW3BoYXNlXSksXG4gICAgKTtcblxuICAgIGlmIChtaW5DdXJyZW50T3JkZXIgPD0gbWF4UHJldmlvdXNPcmRlcikge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNlY3Rpb246IGN1cnJlbnQucGhhc2VzLmpvaW4oXCIgJiBcIikgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcIm91dE9mT3JkZXJTZWN0aW9uXCIsXG4gICAgICAgIG5vZGU6IGN1cnJlbnQuY29tbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRyYWNrcyB0aGUgY3VycmVudCBBQUEgb3JkZXJpbmcgc3RhdGUgZm9yIG9uZSBmbGF0dGVuZWQgc2VjdGlvbi5cbiAqIEBwYXJhbSBpbnB1dCBDb21wb3NpdGUgb3JkZXJpbmcgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHNlY3Rpb24uXG4gKiBAcmV0dXJucyBVcGRhdGVkIHBoYXNlIG9yZGVyIHdhdGVybWFyay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuZXh0T3JkZXIgPSB1cGRhdGVTZWN0aW9uT3JkZXIoeyBjb250ZXh0OiB7fSBhcyBSdWxlLlJ1bGVDb250ZXh0LCBsYXN0UGhhc2VPcmRlcjogLTEsIHNlY3Rpb246IHt9IGFzIG5ldmVyLCBzZWVuUGhhc2VzOiBuZXcgU2V0KCkgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgdXBkYXRlU2VjdGlvbk9yZGVyID0gKGlucHV0OiBVcGRhdGVTZWN0aW9uT3JkZXJJbnB1dCk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHsgY29udGV4dCwgbGFzdFBoYXNlT3JkZXIsIHNlY3Rpb24sIHNlZW5QaGFzZXMgfSA9IGlucHV0O1xuXG4gIGlmIChzZWVuUGhhc2VzLmhhcyhzZWN0aW9uLnBoYXNlKSkge1xuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIGRhdGE6IHsgc2VjdGlvbjogc2VjdGlvbi5waGFzZSB9LFxuICAgICAgbWVzc2FnZUlkOiBcImR1cGxpY2F0ZVNlY3Rpb25cIixcbiAgICAgIG5vZGU6IHNlY3Rpb24uY29tbWVudCxcbiAgICB9KTtcbiAgICByZXR1cm4gbGFzdFBoYXNlT3JkZXI7XG4gIH1cblxuICBjb25zdCBjdXJyZW50UGhhc2VPcmRlciA9IGFhYVBoYXNlT3JkZXJbc2VjdGlvbi5waGFzZV07XG4gIGlmIChjdXJyZW50UGhhc2VPcmRlciA8IGxhc3RQaGFzZU9yZGVyKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBzZWN0aW9uOiBzZWN0aW9uLnBoYXNlIH0sXG4gICAgICBtZXNzYWdlSWQ6IFwiaW52YWxpZE9yZGVyXCIsXG4gICAgICBub2RlOiBzZWN0aW9uLmNvbW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBzZWVuUGhhc2VzLmFkZChzZWN0aW9uLnBoYXNlKTtcbiAgcmV0dXJuIE1hdGgubWF4KGxhc3RQaGFzZU9yZGVyLCBjdXJyZW50UGhhc2VPcmRlcik7XG59O1xuXG5leHBvcnQgdHlwZSB7IEZsYXR0ZW5lZFNlY3Rpb25QaGFzZSB9O1xuZXhwb3J0IHtcbiAgcmVwb3J0QmxhbmtMaW5lU2VwYXJhdG9ycyxcbiAgcmVwb3J0Q29kZUJlZm9yZUFycmFuZ2UsXG4gIHJlcG9ydEVtcHR5U2VjdGlvbnMsXG4gIHJlcG9ydE1pc3NpbmdTZWN0aW9ucyxcbiAgcmVwb3J0T3V0T2ZPcmRlclNlY3Rpb25zLFxuICB1cGRhdGVTZWN0aW9uT3JkZXIsXG59O1xuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1zZWN0aW9uLXJlcG9ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9lbmZvcmNlLWFhYS1zdHJ1Y3R1cmUvcnVsZS1zZWN0aW9uLXJlcG9ydGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDekIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXVCbkU7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHlCQUF5QixDQUNoQyxPQUF5QixFQUN6QixRQUEyQjtJQUUzQixNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBRWpFLEtBQUssTUFBTSxjQUFjLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxJQUNFLGNBQWMsQ0FBQyxPQUFPLEtBQUssbUJBQW1CO1lBQzlDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUN0RSxDQUFDO1lBQ0QsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQXFCLEVBQVksRUFBRSxDQUM5QyxLQUFLLENBQUMscUJBQXFCLENBQ3pCLGlCQUFpQixDQUNmLFFBQVEsQ0FBQyxVQUFVLEVBQ25CLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3RDLEVBQ0QsUUFBUSxDQUFDLE9BQU8sQ0FDakIsQ0FBQztRQUVKLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDYixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFD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eXBlIHsgZ2V0RmxhdHRlbmVkU2VjdGlvbnMgfSBmcm9tIFwiLi4vYWFhL2FuYWx5emVyLmFuYWx5c2lzLmhlbHBlcnNcIjtcbmltcG9ydCB0eXBlIHsgVGVzdEJsb2NrQW5hbHlzaXMgfSBmcm9tIFwiLi4vYWFhL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIGFhYVBoYXNlT3JkZXIsXG4gIGdldExpbmVTdGFydFJhbmdlLFxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMsXG59IGZyb20gXCIuLi9hYWEvYW5hbHl6ZXIuYW5hbHlzaXMuaGVscGVyc1wiO1xuaW1wb3J0IHsgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCB9IGZyb20gXCIuLi9hYWEvYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uaGVscGVyc1wiO1xuaW1wb3J0IHsgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzIH0gZnJvbSBcIi4vbWlzc2luZy1zZWN0aW9uLWZpeGVzXCI7XG5cbi8qKiBGbGF0dGVuZWQgc2VjdGlvbiBlbnRyeSBlbWl0dGVkIGJ5IHRoZSBBQUEgYW5hbHl6ZXIgaGVscGVyLiAqL1xudHlwZSBGbGF0dGVuZWRTZWN0aW9uID0gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RmxhdHRlbmVkU2VjdGlvbnM+W251bWJlcl07XG5cbi8qKiBVbmlvbiBvZiB2YWxpZCBBQUEgcGhhc2UgbGFiZWxzIGVtaXR0ZWQgZm9yIGZsYXR0ZW5lZCBzZWN0aW9ucy4gKi9cbnR5cGUgRmxhdHRlbmVkU2VjdGlvblBoYXNlID0gRmxhdHRlbmVkU2VjdGlvbltcInBoYXNlXCJdO1xuXG4vKiogQ29tcG9zaXRlIGlucHV0IGZvciBhZHZhbmNpbmcgdGhlIEFBQSBzZWN0aW9uIG9yZGVyaW5nIHN0YXRlLiAqL1xuaW50ZXJmYWNlIFVwZGF0ZVNlY3Rpb25PcmRlcklucHV0IHtcbiAgLyoqIEFjdGl2ZSBFU0xpbnQgcnVsZSBjb250ZXh0LiAqL1xuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0O1xuXG4gIC8qKiBIaWdoZXN0IHBoYXNlIG9yZGVyIHNlZW4gc28gZmFyLiAqL1xuICBsYXN0UGhhc2VPcmRlcjogbnVtYmVyO1xuXG4gIC8qKiBTZWN0aW9uIGNvbW1lbnQgYW5kIHBoYXNlIG1ldGFkYXRhIHVuZGVyIGluc3BlY3Rpb24uICovXG4gIHNlY3Rpb246IEZsYXR0ZW5lZFNlY3Rpb247XG5cbiAgLyoqIFNldCBvZiBwaGFzZXMgYWxyZWFkeSBzZWVuIGluIHRoZSBjdXJyZW50IHRlc3QgYmxvY2suICovXG4gIHNlZW5QaGFzZXM6IFNldDxGbGF0dGVuZWRTZWN0aW9uUGhhc2U+O1xufVxuXG4vKipcbiAqIFJlcG9ydHMgc2VjdGlvbiBjb21tZW50cyB0aGF0IGFyZSBtaXNzaW5nIGEgYmxhbmsgbGluZSBhYm92ZSB0aGVtLlxuICogQHBhcmFtIGNvbnRleHQgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAqIEBwYXJhbSBhbmFseXNpcyBQYXJzZWQgdGVzdC1ibG9jayBhbmFseXNpcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRCbGFua0xpbmVTZXBhcmF0b3JzKHsgcmVwb3J0KCkge30gfSBhcyBuZXZlciwgeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzb3VyY2VUZXh0OiBcIlwiIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEJsYW5rTGluZVNlcGFyYXRvcnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBmaXJzdFNlY3Rpb25Db21tZW50ID0gYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzWzBdPy5jb21tZW50O1xuXG4gIGZvciAoY29uc3Qgc2VjdGlvbkNvbW1lbnQgb2YgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzKGFuYWx5c2lzKSkge1xuICAgIGlmIChcbiAgICAgIHNlY3Rpb25Db21tZW50LmNvbW1lbnQgPT09IGZpcnN0U2VjdGlvbkNvbW1lbnQgfHxcbiAgICAgIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQoYW5hbHlzaXMuc291cmNlVGV4dCwgc2VjdGlvbkNvbW1lbnQuY29tbWVudClcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpeCA9IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeCA9PlxuICAgICAgZml4ZXIuaW5zZXJ0VGV4dEJlZm9yZVJhbmdlKFxuICAgICAgICBnZXRMaW5lU3RhcnRSYW5nZShcbiAgICAgICAgICBhbmFseXNpcy5zb3VyY2VUZXh0LFxuICAgICAgICAgIHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICksXG4gICAgICAgIGFuYWx5c2lzLm5ld2xpbmUsXG4gICAgICApO1xuXG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBzZWN0aW9uOiBzZWN0aW9uQ29tbWVudC5waGFzZXMuam9pbihcIiAmIFwiKSB9LFxuICAgICAgZml4LFxuICAgICAgbWVzc2FnZUlkOiBcImJsYW5rTGluZUJlZm9yZVNlY3Rpb25cIixcbiAgICAgIG5vZGU6IHNlY3Rpb25Db21tZW50LmNvbW1lbnQsXG4gICAgICBzdWdnZXN0OiBbeyBmaXgsIG1lc3NhZ2VJZDogXCJhZGRCbGFua0xpbmVCZWZvcmVTZWN0aW9uXCIgfV0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXBvcnRzIGV4ZWN1dGFibGUgc3RhdGVtZW50cyB0aGF0IGFwcGVhciBiZWZvcmUgdGhlIGZpcnN0IEFycmFuZ2Ugc2VjdGlvbi5cbiAqIEBwYXJhbSBjb250ZXh0IEVTTGludCBydWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gYW5hbHlzaXMgUGFyc2VkIHRlc3QtYmxvY2sgYW5hbHlzaXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0Q29kZUJlZm9yZUFycmFuZ2UoeyByZXBvcnQoKSB7fSB9IGFzIG5ldmVyLCB7IHNlY3Rpb25Db21tZW50czogW10sIHN0YXRlbWVudHM6IFtdIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydENvZGVCZWZvcmVBcnJhbmdlKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMsXG4pOiB2b2lkIHtcbiAgY29uc3QgZmlyc3RBcnJhbmdlTGluZSA9IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5maW5kKChzZWN0aW9uQ29tbWVudCkgPT5cbiAgICBzZWN0aW9uQ29tbWVudC5waGFzZXMuaW5jbHVkZXMoXCJBcnJhbmdlXCIpLFxuICApPy5jb21tZW50LmxvYy5zdGFydC5saW5lO1xuICBpZiAoZmlyc3RBcnJhbmdlTGluZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50QmVmb3JlQXJyYW5nZSA9IGFuYWx5c2lzLnN0YXRlbWVudHMuZmluZChcbiAgICAoc3RhdGVtZW50KSA9PiBzdGF0ZW1lbnQubm9kZS5sb2Muc3RhcnQubGluZSA8IGZpcnN0QXJyYW5nZUxpbmUsXG4gICk7XG4gIGlmIChzdGF0ZW1lbnRCZWZvcmVBcnJhbmdlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgbWVzc2FnZUlkOiBcImNvZGVCZWZvcmVBcnJhbmdlXCIsXG4gICAgbm9kZTogc3RhdGVtZW50QmVmb3JlQXJyYW5nZS5ub2RlLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHNlY3Rpb25zIHRoYXQgY29udGFpbiBvbmx5IGNvbW1lbnRzIG9yIHdoaXRlc3BhY2UuXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEVtcHR5U2VjdGlvbnMoeyByZXBvcnQoKSB7fSB9IGFzIG5ldmVyLCB7IHNlY3Rpb25Db21tZW50czogW10sIHN0YXRlbWVudHM6IFtdIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEVtcHR5U2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IFtpbmRleCwgc2VjdGlvbkNvbW1lbnRdIG9mIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBuZXh0U2VjdGlvbkxpbmUgPVxuICAgICAgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzW2luZGV4ICsgMV0/LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmU7XG4gICAgY29uc3QgaGFzQ29kZUluU2VjdGlvbiA9IGFuYWx5c2lzLnN0YXRlbWVudHMuc29tZSgoc3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRMaW5lID0gc3RhdGVtZW50Lm5vZGUubG9jLnN0YXJ0LmxpbmU7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHN0YXRlbWVudExpbmUgPiBzZWN0aW9uQ29tbWVudC5jb21tZW50LmxvYy5zdGFydC5saW5lICYmXG4gICAgICAgIChuZXh0U2VjdGlvbkxpbmUgPT09IHZvaWQgMCB8fCBzdGF0ZW1lbnRMaW5lIDwgbmV4dFNlY3Rpb25MaW5lKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGlmICghaGFzQ29kZUluU2VjdGlvbikge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNlY3Rpb246IHNlY3Rpb25Db21tZW50LnBoYXNlcy5qb2luKFwiICYgXCIpIH0sXG4gICAgICAgIG1lc3NhZ2VJZDogXCJlbXB0eVNlY3Rpb25cIixcbiAgICAgICAgbm9kZTogc2VjdGlvbkNvbW1lbnQuY29tbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgYW55IEFBQSBzZWN0aW9uIG1hcmtlcnMgdGhhdCBhcmUgbWlzc2luZyBmcm9tIGEgc3VwcG9ydGVkIHRlc3QgYmxvY2suXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE1pc3NpbmdTZWN0aW9ucyh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRNaXNzaW5nU2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBwcmVzZW50U2VjdGlvbnMgPSBuZXcgU2V0KFxuICAgIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5mbGF0TWFwKChzZWN0aW9uQ29tbWVudCkgPT4gc2VjdGlvbkNvbW1lbnQucGhhc2VzKSxcbiAgKTtcbiAgY29uc3QgaGFzUHJlU2VjdGlvblN0YXRlbWVudHMgPSBhbmFseXNpcy5zdGF0ZW1lbnRzLnNvbWUoXG4gICAgKHN0YXRlbWVudCkgPT4gc3RhdGVtZW50LnBoYXNlcy5sZW5ndGggPT09IDAsXG4gICk7XG4gIGNvbnN0IG1pc3NpbmdTZWN0aW9ucyA9IChbXCJBcnJhbmdlXCIsIFwiQWN0XCIsIFwiQXNzZXJ0XCJdIGFzIGNvbnN0KS5maWx0ZXIoXG4gICAgKHBoYXNlKSA9PlxuICAgICAgIXByZXNlbnRTZWN0aW9ucy5oYXMocGhhc2UpICYmXG4gICAgICAocGhhc2UgIT09IFwiQXJyYW5nZVwiIHx8IGhhc1ByZVNlY3Rpb25TdGF0ZW1lbnRzKSxcbiAgKTtcblxuICBpZiAobWlzc2luZ1NlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZpeCA9XG4gICAgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzLmxlbmd0aCA9PT0gMCAmJiBhbmFseXNpcy5ib2R5TGluZUNvdW50ID49IDNcbiAgICAgID8gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4W10gPT5cbiAgICAgICAgICBidWlsZE1pc3NpbmdTZWN0aW9uRml4ZXMoYW5hbHlzaXMsIG1pc3NpbmdTZWN0aW9ucywgZml4ZXIpXG4gICAgICA6IHZvaWQgMDtcblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgZGF0YTogeyBzZWN0aW9uczogbWlzc2luZ1NlY3Rpb25zLmpvaW4oXCIsIFwiKSB9LFxuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7IGZpeCB9KSxcbiAgICBtZXNzYWdlSWQ6IFwibWlzc2luZ1NlY3Rpb25zXCIsXG4gICAgbm9kZTogYW5hbHlzaXMuY2FsbEV4cHJlc3Npb24sXG4gICAgLi4uKGZpeCAhPT0gdm9pZCAwICYmIHtcbiAgICAgIHN1Z2dlc3Q6IFt7IGZpeCwgbWVzc2FnZUlkOiBcImFkZE1pc3NpbmdTZWN0aW9uc1wiIH1dLFxuICAgIH0pLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHNlY3Rpb24gY29tbWVudHMgdGhhdCBhcHBlYXIgb3V0IG9mIGNhbm9uaWNhbCBBcnJhbmdlIC0+IEFjdCAtPiBBc3NlcnQgb3JkZXIuXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE91dE9mT3JkZXJTZWN0aW9ucyh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRPdXRPZk9yZGVyU2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzLmxlbmd0aCAtIDE7IGluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50c1tpbmRleF07XG4gICAgY29uc3QgY3VycmVudCA9IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50c1tpbmRleCArIDFdO1xuXG4gICAgaWYgKHByZXZpb3VzID09PSB2b2lkIDAgfHwgY3VycmVudCA9PT0gdm9pZCAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhQcmV2aW91c09yZGVyID0gTWF0aC5tYXgoXG4gICAgICAuLi5wcmV2aW91cy5waGFzZXMubWFwKChwaGFzZSkgPT4gYWFhUGhhc2VPcmRlcltwaGFzZV0pLFxuICAgICk7XG4gICAgY29uc3QgbWluQ3VycmVudE9yZGVyID0gTWF0aC5taW4oXG4gICAgICAuLi5jdXJyZW50LnBoYXNlcy5tYXAoKHBoYXNlKSA9PiBhYWFQaGFzZU9yZGVyW3BoYXNlXSksXG4gICAgKTtcblxuICAgIGlmIChtaW5DdXJyZW50T3JkZXIgPD0gbWF4UHJldmlvdXNPcmRlcikge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNlY3Rpb246IGN1cnJlbnQucGhhc2VzLmpvaW4oXCIgJiBcIikgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcIm91dE9mT3JkZXJTZWN0aW9uXCIsXG4gICAgICAgIG5vZGU6IGN1cnJlbnQuY29tbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRyYWNrcyB0aGUgY3VycmVudCBBQUEgb3JkZXJpbmcgc3RhdGUgZm9yIG9uZSBmbGF0dGVuZWQgc2VjdGlvbi5cbiAqIEBwYXJhbSBpbnB1dCBDb21wb3NpdGUgb3JkZXJpbmcgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHNlY3Rpb24uXG4gKiBAcmV0dXJucyBVcGRhdGVkIHBoYXNlIG9yZGVyIHdhdGVybWFyay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuZXh0T3JkZXIgPSB1cGRhdGVTZWN0aW9uT3JkZXIoeyBjb250ZXh0OiB7fSBhcyBSdWxlLlJ1bGVDb250ZXh0LCBsYXN0UGhhc2VPcmRlcjogLTEsIHNlY3Rpb246IHt9IGFzIG5ldmVyLCBzZWVuUGhhc2VzOiBuZXcgU2V0KCkgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgdXBkYXRlU2VjdGlvbk9yZGVyID0gKGlucHV0OiBVcGRhdGVTZWN0aW9uT3JkZXJJbnB1dCk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHsgY29udGV4dCwgbGFzdFBoYXNlT3JkZXIsIHNlY3Rpb24sIHNlZW5QaGFzZXMgfSA9IGlucHV0O1xuXG4gIGlmIChzZWVuUGhhc2VzLmhhcyhzZWN0aW9uLnBoYXNlKSkge1xuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIGRhdGE6IHsgc2VjdGlvbjogc2VjdGlvbi5waGFzZSB9LFxuICAgICAgbWVzc2FnZUlkOiBcImR1cGxpY2F0ZVNlY3Rpb25cIixcbiAgICAgIG5vZGU6IHNlY3Rpb24uY29tbWVudCxcbiAgICB9KTtcbiAgICByZXR1cm4gbGFzdFBoYXNlT3JkZXI7XG4gIH1cblxuICBjb25zdCBjdXJyZW50UGhhc2VPcmRlciA9IGFhYVBoYXNlT3JkZXJbc2VjdGlvbi5waGFzZV07XG4gIGlmIChjdXJyZW50UGhhc2VPcmRlciA8IGxhc3RQaGFzZU9yZGVyKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBzZWN0aW9uOiBzZWN0aW9uLnBoYXNlIH0sXG4gICAgICBtZXNzYWdlSWQ6IFwiaW52YWxpZE9yZGVyXCIsXG4gICAgICBub2RlOiBzZWN0aW9uLmNvbW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBzZWVuUGhhc2VzLmFkZChzZWN0aW9uLnBoYXNlKTtcbiAgcmV0dXJuIE1hdGgubWF4KGxhc3RQaGFzZU9yZGVyLCBjdXJyZW50UGhhc2VPcmRlcik7XG59O1xuXG5leHBvcnQgdHlwZSB7IEZsYXR0ZW5lZFNlY3Rpb25QaGFzZSB9O1xuZXhwb3J0IHtcbiAgcmVwb3J0QmxhbmtMaW5lU2VwYXJhdG9ycyxcbiAgcmVwb3J0Q29kZUJlZm9yZUFycmFuZ2UsXG4gIHJlcG9ydEVtcHR5U2VjdGlvbnMsXG4gIHJlcG9ydE1pc3NpbmdTZWN0aW9ucyxcbiAgcmVwb3J0T3V0T2ZPcmRlclNlY3Rpb25zLFxuICB1cGRhdGVTZWN0aW9uT3JkZXIsXG59O1xuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeperfect/eslint-plugin",
3
- "version": "2.8.0",
3
+ "version": "2.10.0",
4
4
  "description": "Custom ESLint rules for TypeScript repositories",
5
5
  "license": "MIT",
6
6
  "repository": "github:parloti/eslint-plugin",
@@ -79,22 +79,22 @@
79
79
  },
80
80
  "devDependencies": {
81
81
  "@codeperfect/commitlint-config-emoji": "^1.1.0",
82
- "@codeperfect/eslint-config": "^1.15.0",
82
+ "@codeperfect/eslint-config": "^1.18.0",
83
83
  "@commitlint/cz-commitlint": "^21.2.2",
84
- "@eslint-community/eslint-plugin-eslint-comments": "^4.8.0",
84
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.8.1",
85
85
  "@eslint/js": "^10.0.1",
86
86
  "@stryker-mutator/core": "^10.0.0",
87
87
  "@stryker-mutator/typescript-checker": "^10.0.0",
88
88
  "@stryker-mutator/vitest-runner": "^10.0.0",
89
89
  "@stylistic/eslint-plugin": "^5.10.0",
90
90
  "@types/lodash-es": "^4.17.12",
91
- "@types/node": "^22.20.2",
91
+ "@types/node": "^26.6.2",
92
92
  "@typescript-eslint/rule-tester": "^8.70.0",
93
93
  "@vitest/coverage-v8": "^4.1.11",
94
94
  "@vitest/eslint-plugin": "^1.6.27",
95
95
  "chalk": "^6.0.0",
96
96
  "concurrently": "^10.0.5",
97
- "eslint": "^10.10.0",
97
+ "eslint": "^10.11.0",
98
98
  "eslint-config-prettier": "^10.1.8",
99
99
  "eslint-import-resolver-typescript": "^4.4.5",
100
100
  "eslint-plugin-boundaries": "^7.2.0",
@@ -102,8 +102,8 @@
102
102
  "eslint-plugin-import-x": "^4.17.1",
103
103
  "eslint-plugin-jasmine": "^4.2.2",
104
104
  "eslint-plugin-jest": "^29.16.6",
105
- "eslint-plugin-jsdoc": "^64.3.9",
106
- "eslint-plugin-perfectionist": "^5.11.0",
105
+ "eslint-plugin-jsdoc": "^64.5.4",
106
+ "eslint-plugin-perfectionist": "^5.11.1",
107
107
  "eslint-plugin-prettier": "^5.5.6",
108
108
  "eslint-plugin-rxjs-x": "^1.0.6",
109
109
  "eslint-plugin-unicorn": "^74.0.0",
@@ -113,17 +113,17 @@
113
113
  "lint-staged": "^17.5.1",
114
114
  "lodash-es": "^4.18.1",
115
115
  "patch-package": "^8.0.1",
116
- "prettier": "^3.9.6",
116
+ "prettier": "^3.9.8",
117
117
  "rimraf": "^6.1.3",
118
118
  "semantic-release": "^25.0.9",
119
119
  "tsc-alias": "^1.9.5",
120
120
  "typedoc": "^0.28.20",
121
- "typedoc-plugin-markdown": "^4.13.0",
121
+ "typedoc-plugin-markdown": "^4.13.1",
122
122
  "typescript": "^6.0.3",
123
123
  "typescript-eslint": "^8.70.0",
124
124
  "vitest": "^4.1.11"
125
125
  },
126
126
  "peerDependencies": {
127
- "eslint": ">=10.10.0"
127
+ "eslint": ">=10.11.0"
128
128
  }
129
129
  }