diff --git a/waffle-tomcat10/apidocs/allclasses-index.html b/waffle-tomcat10/apidocs/allclasses-index.html new file mode 100644 index 0000000000..b984ce5c89 --- /dev/null +++ b/waffle-tomcat10/apidocs/allclasses-index.html @@ -0,0 +1,84 @@ + + + + +All Classes and Interfaces (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
Classes
+
+
Class
+
Description
+ +
+
A Windows Principal.
+
+ +
+
Mixed Negotiate + Form Authenticator.
+
+ +
+
An Apache Negotiate (NTLM, Kerberos) Authenticator.
+
+ +
+
A rudimentary Windows realm.
+
+
+
+
+ +
+
+ + diff --git a/waffle-tomcat10/apidocs/allpackages-index.html b/waffle-tomcat10/apidocs/allpackages-index.html new file mode 100644 index 0000000000..ff5bf4999b --- /dev/null +++ b/waffle-tomcat10/apidocs/allpackages-index.html @@ -0,0 +1,70 @@ + + + + +All Packages (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
+
Waffle Tomcat Package.
+
+
+
+ +
+
+ + diff --git a/waffle-tomcat10/apidocs/copy.svg b/waffle-tomcat10/apidocs/copy.svg new file mode 100644 index 0000000000..d435f6c375 --- /dev/null +++ b/waffle-tomcat10/apidocs/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/waffle-tomcat10/apidocs/element-list b/waffle-tomcat10/apidocs/element-list new file mode 100644 index 0000000000..5f17518c75 --- /dev/null +++ b/waffle-tomcat10/apidocs/element-list @@ -0,0 +1,2 @@ +module:waffle.tomcat10 +waffle.apache diff --git a/waffle-tomcat10/apidocs/help-doc.html b/waffle-tomcat10/apidocs/help-doc.html new file mode 100644 index 0000000000..cfa297560f --- /dev/null +++ b/waffle-tomcat10/apidocs/help-doc.html @@ -0,0 +1,202 @@ + + + + +API Help (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Module

+

Each module has a page that contains a list of its packages, dependencies on other modules, and services, with a summary for each. These pages may contain the following categories:

+
    +
  • Packages
  • +
  • Modules
  • +
  • Services
  • +
+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enums
  • +
  • Exception Classes
  • +
  • Annotation Types
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Use

+

Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+ +
+
+ + diff --git a/waffle-tomcat10/apidocs/index-all.html b/waffle-tomcat10/apidocs/index-all.html new file mode 100644 index 0000000000..323cb47739 --- /dev/null +++ b/waffle-tomcat10/apidocs/index-all.html @@ -0,0 +1,366 @@ + + + + +Index (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A C D G I L M N P R S W 
All Classes and Interfaces|All Packages|Serialized Form +

A

+
+
allowGuestLogin - Variable in class waffle.apache.MixedAuthenticator
+
+
The allow guest login.
+
+
allowGuestLogin - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The allow guest login.
+
+
auth - Variable in class waffle.apache.MixedAuthenticator
+
+
The auth.
+
+
auth - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The auth.
+
+
authenticate(Request, HttpServletResponse) - Method in class waffle.apache.MixedAuthenticator
+
 
+
authenticate(Request, HttpServletResponse) - Method in class waffle.apache.NegotiateAuthenticator
+
 
+
+

C

+
+
continueContextsTimeout - Variable in class waffle.apache.MixedAuthenticator
+
+
The auth continueContextsTimeout configuration.
+
+
continueContextsTimeout - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The auth continueContextsTimeout configuration.
+
+
createPrincipal(IWindowsIdentity) - Method in class waffle.apache.MixedAuthenticator
+
+
This method will create an instance of a IWindowsIdentity based GenericPrincipal.
+
+
createPrincipal(IWindowsIdentity) - Method in class waffle.apache.NegotiateAuthenticator
+
+
This method will create an instance of a IWindowsIdentity based GenericPrincipal.
+
+
+

D

+
+
doAuthenticate(Request, HttpServletResponse) - Method in class waffle.apache.MixedAuthenticator
+
+
XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours.
+
+
doAuthenticate(Request, HttpServletResponse) - Method in class waffle.apache.NegotiateAuthenticator
+
+
XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours.
+
+
doLogin(Request, String, String) - Method in class waffle.apache.MixedAuthenticator
+
 
+
doLogin(Request, String, String) - Method in class waffle.apache.NegotiateAuthenticator
+
 
+
+

G

+
+
GenericWindowsPrincipal - Class in waffle.apache
+
+
A Windows Principal.
+
+
GenericWindowsPrincipal(IWindowsIdentity, PrincipalFormat, PrincipalFormat) - Constructor for class waffle.apache.GenericWindowsPrincipal
+
+
A windows principal.
+
+
getAuth() - Method in class waffle.apache.MixedAuthenticator
+
+
Windows authentication provider.
+
+
getAuth() - Method in class waffle.apache.NegotiateAuthenticator
+
+
Windows authentication provider.
+
+
getAuthMethod() - Method in class waffle.apache.MixedAuthenticator
+
 
+
getAuthMethod() - Method in class waffle.apache.NegotiateAuthenticator
+
 
+
getContinueContextsTimeout() - Method in class waffle.apache.MixedAuthenticator
+
+
Gets the continue context time out configuration.
+
+
getContinueContextsTimeout() - Method in class waffle.apache.NegotiateAuthenticator
+
+
Gets the continue context time out configuration.
+
+
getGroups() - Method in class waffle.apache.GenericWindowsPrincipal
+
+
Windows groups that the user is a member of.
+
+
getInfo() - Method in class waffle.apache.MixedAuthenticator
+
+
Gets the info.
+
+
getInfo() - Method in class waffle.apache.NegotiateAuthenticator
+
+
Gets the info.
+
+
getPassword(String) - Method in class waffle.apache.WindowsRealm
+
 
+
getPrincipal(String) - Method in class waffle.apache.WindowsRealm
+
 
+
getPrincipalFormat() - Method in class waffle.apache.MixedAuthenticator
+
+
Principal format.
+
+
getPrincipalFormat() - Method in class waffle.apache.NegotiateAuthenticator
+
+
Principal format.
+
+
getRoleFormat() - Method in class waffle.apache.MixedAuthenticator
+
+
Principal format.
+
+
getRoleFormat() - Method in class waffle.apache.NegotiateAuthenticator
+
+
Principal format.
+
+
getRolesString() - Method in class waffle.apache.GenericWindowsPrincipal
+
+
Get an array of roles as a string.
+
+
getSid() - Method in class waffle.apache.GenericWindowsPrincipal
+
+
Byte representation of the SID.
+
+
getSidString() - Method in class waffle.apache.GenericWindowsPrincipal
+
+
String representation of the SID.
+
+
+

I

+
+
info - Variable in class waffle.apache.MixedAuthenticator
+
+
The info.
+
+
info - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The info.
+
+
isAllowGuestLogin() - Method in class waffle.apache.MixedAuthenticator
+
+
True if Guest login permitted.
+
+
isAllowGuestLogin() - Method in class waffle.apache.NegotiateAuthenticator
+
+
True if Guest login permitted.
+
+
+

L

+
+
log - Variable in class waffle.apache.MixedAuthenticator
+
+
The log.
+
+
log - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The log.
+
+
+

M

+
+
MixedAuthenticator - Class in waffle.apache
+
+
Mixed Negotiate + Form Authenticator.
+
+
MixedAuthenticator() - Constructor for class waffle.apache.MixedAuthenticator
+
+
Instantiates a new mixed authenticator.
+
+
+

N

+
+
NegotiateAuthenticator - Class in waffle.apache
+
+
An Apache Negotiate (NTLM, Kerberos) Authenticator.
+
+
NegotiateAuthenticator() - Constructor for class waffle.apache.NegotiateAuthenticator
+
+
Instantiates a new negotiate authenticator.
+
+
+

P

+
+
principalFormat - Variable in class waffle.apache.MixedAuthenticator
+
+
The principal format.
+
+
principalFormat - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The principal format.
+
+
protocols - Variable in class waffle.apache.MixedAuthenticator
+
+
The protocols.
+
+
protocols - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The protocols.
+
+
+

R

+
+
roleFormat - Variable in class waffle.apache.MixedAuthenticator
+
+
The role format.
+
+
roleFormat - Variable in class waffle.apache.NegotiateAuthenticator
+
+
The role format.
+
+
+

S

+
+
sendError(HttpServletResponse, int) - Method in class waffle.apache.MixedAuthenticator
+
+
Send an error code.
+
+
sendError(HttpServletResponse, int) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Send an error code.
+
+
sendUnauthorized(HttpServletResponse) - Method in class waffle.apache.MixedAuthenticator
+
+
Send a 401 Unauthorized along with protocol authentication headers.
+
+
sendUnauthorized(HttpServletResponse) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Send a 401 Unauthorized along with protocol authentication headers.
+
+
setAllowGuestLogin(boolean) - Method in class waffle.apache.MixedAuthenticator
+
+
Set whether Guest login is permitted.
+
+
setAllowGuestLogin(boolean) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Set whether Guest login is permitted.
+
+
setAuth(IWindowsAuthProvider) - Method in class waffle.apache.MixedAuthenticator
+
+
Set Windows auth provider.
+
+
setAuth(IWindowsAuthProvider) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Set Windows auth provider.
+
+
setContinueContextsTimeout(int) - Method in class waffle.apache.MixedAuthenticator
+
+
Sets the continue context time out configuration.
+
+
setContinueContextsTimeout(int) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Sets the continue context time out configuration.
+
+
setPrincipalFormat(String) - Method in class waffle.apache.MixedAuthenticator
+
+
Set the principal format.
+
+
setPrincipalFormat(String) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Set the principal format.
+
+
setProtocols(String) - Method in class waffle.apache.MixedAuthenticator
+
+
Set the authentication protocols.
+
+
setProtocols(String) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Set the authentication protocols.
+
+
setRoleFormat(String) - Method in class waffle.apache.MixedAuthenticator
+
+
Set the principal format.
+
+
setRoleFormat(String) - Method in class waffle.apache.NegotiateAuthenticator
+
+
Set the principal format.
+
+
startInternal() - Method in class waffle.apache.MixedAuthenticator
+
 
+
startInternal() - Method in class waffle.apache.NegotiateAuthenticator
+
 
+
stopInternal() - Method in class waffle.apache.MixedAuthenticator
+
 
+
stopInternal() - Method in class waffle.apache.NegotiateAuthenticator
+
 
+
+

W

+
+
waffle.apache - package waffle.apache
+
+
Waffle Tomcat Package.
+
+
waffle.tomcat10 - module waffle.tomcat10
+
 
+
WindowsRealm - Class in waffle.apache
+
+
A rudimentary Windows realm.
+
+
WindowsRealm() - Constructor for class waffle.apache.WindowsRealm
+
 
+
+A C D G I L M N P R S W 
All Classes and Interfaces|All Packages|Serialized Form
+ +
+
+ + diff --git a/waffle-tomcat10/apidocs/index.html b/waffle-tomcat10/apidocs/index.html new file mode 100644 index 0000000000..930a52f984 --- /dev/null +++ b/waffle-tomcat10/apidocs/index.html @@ -0,0 +1,25 @@ + + + + +waffle-tomcat10 3.5.1 API + + + + + + + + + + +
+ +

waffle.tomcat10/module-summary.html

+
+ + diff --git a/waffle-tomcat10/apidocs/legal/COPYRIGHT b/waffle-tomcat10/apidocs/legal/COPYRIGHT new file mode 100644 index 0000000000..ca74fffd91 --- /dev/null +++ b/waffle-tomcat10/apidocs/legal/COPYRIGHT @@ -0,0 +1 @@ +Please see ..\java.base\COPYRIGHT diff --git a/waffle-tomcat10/apidocs/legal/LICENSE b/waffle-tomcat10/apidocs/legal/LICENSE new file mode 100644 index 0000000000..4ad9fe4011 --- /dev/null +++ b/waffle-tomcat10/apidocs/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/waffle-tomcat10/apidocs/legal/jquery.md b/waffle-tomcat10/apidocs/legal/jquery.md new file mode 100644 index 0000000000..a763ec6f18 --- /dev/null +++ b/waffle-tomcat10/apidocs/legal/jquery.md @@ -0,0 +1,26 @@ +## jQuery v3.7.1 + +### jQuery License +``` +jQuery v 3.7.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/waffle-tomcat10/apidocs/legal/jqueryUI.md b/waffle-tomcat10/apidocs/legal/jqueryUI.md new file mode 100644 index 0000000000..8bda9d7a85 --- /dev/null +++ b/waffle-tomcat10/apidocs/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.2 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/waffle-tomcat10/apidocs/link.svg b/waffle-tomcat10/apidocs/link.svg new file mode 100644 index 0000000000..dadef51c52 --- /dev/null +++ b/waffle-tomcat10/apidocs/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/waffle-tomcat10/apidocs/member-search-index.js b/waffle-tomcat10/apidocs/member-search-index.js new file mode 100644 index 0000000000..2a433a5fdd --- /dev/null +++ b/waffle-tomcat10/apidocs/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"waffle.apache","c":"MixedAuthenticator","l":"allowGuestLogin"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"allowGuestLogin"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"auth"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"auth"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"authenticate(Request, HttpServletResponse)","u":"authenticate(org.apache.catalina.connector.Request,jakarta.servlet.http.HttpServletResponse)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"authenticate(Request, HttpServletResponse)","u":"authenticate(org.apache.catalina.connector.Request,jakarta.servlet.http.HttpServletResponse)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"continueContextsTimeout"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"continueContextsTimeout"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"createPrincipal(IWindowsIdentity)","u":"createPrincipal(waffle.windows.auth.IWindowsIdentity)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"createPrincipal(IWindowsIdentity)","u":"createPrincipal(waffle.windows.auth.IWindowsIdentity)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"doAuthenticate(Request, HttpServletResponse)","u":"doAuthenticate(org.apache.catalina.connector.Request,jakarta.servlet.http.HttpServletResponse)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"doAuthenticate(Request, HttpServletResponse)","u":"doAuthenticate(org.apache.catalina.connector.Request,jakarta.servlet.http.HttpServletResponse)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"doLogin(Request, String, String)","u":"doLogin(org.apache.catalina.connector.Request,java.lang.String,java.lang.String)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"doLogin(Request, String, String)","u":"doLogin(org.apache.catalina.connector.Request,java.lang.String,java.lang.String)"},{"p":"waffle.apache","c":"GenericWindowsPrincipal","l":"GenericWindowsPrincipal(IWindowsIdentity, PrincipalFormat, PrincipalFormat)","u":"%3Cinit%3E(waffle.windows.auth.IWindowsIdentity,waffle.windows.auth.PrincipalFormat,waffle.windows.auth.PrincipalFormat)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"getAuth()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"getAuth()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"getAuthMethod()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"getAuthMethod()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"getContinueContextsTimeout()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"getContinueContextsTimeout()"},{"p":"waffle.apache","c":"GenericWindowsPrincipal","l":"getGroups()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"getInfo()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"getInfo()"},{"p":"waffle.apache","c":"WindowsRealm","l":"getPassword(String)","u":"getPassword(java.lang.String)"},{"p":"waffle.apache","c":"WindowsRealm","l":"getPrincipal(String)","u":"getPrincipal(java.lang.String)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"getPrincipalFormat()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"getPrincipalFormat()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"getRoleFormat()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"getRoleFormat()"},{"p":"waffle.apache","c":"GenericWindowsPrincipal","l":"getRolesString()"},{"p":"waffle.apache","c":"GenericWindowsPrincipal","l":"getSid()"},{"p":"waffle.apache","c":"GenericWindowsPrincipal","l":"getSidString()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"info"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"info"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"isAllowGuestLogin()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"isAllowGuestLogin()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"log"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"log"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"MixedAuthenticator()","u":"%3Cinit%3E()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"NegotiateAuthenticator()","u":"%3Cinit%3E()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"principalFormat"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"principalFormat"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"protocols"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"protocols"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"roleFormat"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"roleFormat"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"sendError(HttpServletResponse, int)","u":"sendError(jakarta.servlet.http.HttpServletResponse,int)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"sendError(HttpServletResponse, int)","u":"sendError(jakarta.servlet.http.HttpServletResponse,int)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"sendUnauthorized(HttpServletResponse)","u":"sendUnauthorized(jakarta.servlet.http.HttpServletResponse)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"sendUnauthorized(HttpServletResponse)","u":"sendUnauthorized(jakarta.servlet.http.HttpServletResponse)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"setAllowGuestLogin(boolean)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"setAllowGuestLogin(boolean)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"setAuth(IWindowsAuthProvider)","u":"setAuth(waffle.windows.auth.IWindowsAuthProvider)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"setAuth(IWindowsAuthProvider)","u":"setAuth(waffle.windows.auth.IWindowsAuthProvider)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"setContinueContextsTimeout(int)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"setContinueContextsTimeout(int)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"setPrincipalFormat(String)","u":"setPrincipalFormat(java.lang.String)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"setPrincipalFormat(String)","u":"setPrincipalFormat(java.lang.String)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"setProtocols(String)","u":"setProtocols(java.lang.String)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"setProtocols(String)","u":"setProtocols(java.lang.String)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"setRoleFormat(String)","u":"setRoleFormat(java.lang.String)"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"setRoleFormat(String)","u":"setRoleFormat(java.lang.String)"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"startInternal()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"startInternal()"},{"p":"waffle.apache","c":"MixedAuthenticator","l":"stopInternal()"},{"p":"waffle.apache","c":"NegotiateAuthenticator","l":"stopInternal()"},{"p":"waffle.apache","c":"WindowsRealm","l":"WindowsRealm()","u":"%3Cinit%3E()"}];updateSearchResults(); \ No newline at end of file diff --git a/waffle-tomcat10/apidocs/module-search-index.js b/waffle-tomcat10/apidocs/module-search-index.js new file mode 100644 index 0000000000..0bb5af81ed --- /dev/null +++ b/waffle-tomcat10/apidocs/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [{"l":"waffle.tomcat10"}];updateSearchResults(); \ No newline at end of file diff --git a/waffle-tomcat10/apidocs/overview-tree.html b/waffle-tomcat10/apidocs/overview-tree.html new file mode 100644 index 0000000000..d8dbcc8a8b --- /dev/null +++ b/waffle-tomcat10/apidocs/overview-tree.html @@ -0,0 +1,102 @@ + + + + +Class Hierarchy (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+
+Package Hierarchies: + +
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • org.apache.catalina.realm.GenericPrincipal (implements java.io.Serializable, org.apache.catalina.TomcatPrincipal) + +
    • +
    • org.apache.catalina.util.LifecycleBase (implements org.apache.catalina.Lifecycle) +
        +
      • org.apache.catalina.util.LifecycleMBeanBase (implements org.apache.catalina.JmxEnabled) +
          +
        • org.apache.catalina.realm.RealmBase (implements org.apache.catalina.Realm) + +
        • +
        • org.apache.catalina.valves.ValveBase (implements org.apache.catalina.Contained, org.apache.catalina.Valve) +
            +
          • org.apache.catalina.authenticator.AuthenticatorBase (implements org.apache.catalina.Authenticator, jakarta.security.auth.message.config.RegistrationListener) + +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + diff --git a/waffle-tomcat10/apidocs/package-search-index.js b/waffle-tomcat10/apidocs/package-search-index.js new file mode 100644 index 0000000000..3b98c70359 --- /dev/null +++ b/waffle-tomcat10/apidocs/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"m":"waffle.tomcat10","l":"waffle.apache"}];updateSearchResults(); \ No newline at end of file diff --git a/waffle-tomcat10/apidocs/resources/glass.png b/waffle-tomcat10/apidocs/resources/glass.png new file mode 100644 index 0000000000..a7f591f467 Binary files /dev/null and b/waffle-tomcat10/apidocs/resources/glass.png differ diff --git a/waffle-tomcat10/apidocs/resources/x.png b/waffle-tomcat10/apidocs/resources/x.png new file mode 100644 index 0000000000..30548a756e Binary files /dev/null and b/waffle-tomcat10/apidocs/resources/x.png differ diff --git a/waffle-tomcat10/apidocs/script-dir/jquery-3.7.1.min.js b/waffle-tomcat10/apidocs/script-dir/jquery-3.7.1.min.js new file mode 100644 index 0000000000..7f37b5d991 --- /dev/null +++ b/waffle-tomcat10/apidocs/script-dir/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/waffle-tomcat10/apidocs/script.js b/waffle-tomcat10/apidocs/script.js new file mode 100644 index 0000000000..f1a0f25646 --- /dev/null +++ b/waffle-tomcat10/apidocs/script.js @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/waffle-tomcat10/apidocs/search-page.js b/waffle-tomcat10/apidocs/search-page.js new file mode 100644 index 0000000000..e4da097d94 --- /dev/null +++ b/waffle-tomcat10/apidocs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
    ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
    ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
    ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
    " + col1 + "
    ").appendTo(table); + if (category !== "modules") { + $("
    " + col2 + "
    ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
    ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
    ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/waffle-tomcat10/apidocs/search.html b/waffle-tomcat10/apidocs/search.html new file mode 100644 index 0000000000..c9fac41cfc --- /dev/null +++ b/waffle-tomcat10/apidocs/search.html @@ -0,0 +1,76 @@ + + + + +Search (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +

    Search

    +
    + + +
    +Additional resources +
    +
    +
    +

    The help page provides an introduction to the scope and syntax of JavaDoc search.

    +

    You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.

    +

    The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.

    +link +

    + +

    +
    +

    Loading search index...

    + +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/search.js b/waffle-tomcat10/apidocs/search.js new file mode 100644 index 0000000000..293b40f52a --- /dev/null +++ b/waffle-tomcat10/apidocs/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Types", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + categories[item.category] + "
  • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
    " + + idx.d + "
    "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" " + messages.linkIcon +""); + } + }); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/waffle-tomcat10/apidocs/serialized-form.html b/waffle-tomcat10/apidocs/serialized-form.html new file mode 100644 index 0000000000..686d921497 --- /dev/null +++ b/waffle-tomcat10/apidocs/serialized-form.html @@ -0,0 +1,104 @@ + + + + +Serialized Form (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Serialized Form

    +
    +
      +
    • +
      +

      Package waffle.apache

      +
        +
      • +
        +

        Class waffle.apache.GenericWindowsPrincipal

        +
        class GenericWindowsPrincipal extends org.apache.catalina.realm.GenericPrincipal implements Serializable
        +
        +
        serialVersionUID:
        +
        1L
        +
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            groups
            +
            Map<String,waffle.windows.auth.WindowsAccount> groups
            +
            The groups.
            +
          • +
          • +
            sid
            +
            byte[] sid
            +
            The sid.
            +
          • +
          • +
            sidString
            +
            String sidString
            +
            The sid string.
            +
          • +
          +
          +
        • +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/stylesheet.css b/waffle-tomcat10/apidocs/stylesheet.css new file mode 100644 index 0000000000..f71489f86c --- /dev/null +++ b/waffle-tomcat10/apidocs/stylesheet.css @@ -0,0 +1,1272 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/waffle-tomcat10/apidocs/tag-search-index.js b/waffle-tomcat10/apidocs/tag-search-index.js new file mode 100644 index 0000000000..f38b3cb3ce --- /dev/null +++ b/waffle-tomcat10/apidocs/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/waffle-tomcat10/apidocs/type-search-index.js b/waffle-tomcat10/apidocs/type-search-index.js new file mode 100644 index 0000000000..6d94421d3c --- /dev/null +++ b/waffle-tomcat10/apidocs/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"waffle.apache","l":"GenericWindowsPrincipal"},{"p":"waffle.apache","l":"MixedAuthenticator"},{"p":"waffle.apache","l":"NegotiateAuthenticator"},{"p":"waffle.apache","l":"WindowsRealm"}];updateSearchResults(); \ No newline at end of file diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/module-summary.html b/waffle-tomcat10/apidocs/waffle.tomcat10/module-summary.html new file mode 100644 index 0000000000..3be690e0af --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/module-summary.html @@ -0,0 +1,103 @@ + + + + +waffle.tomcat10 (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Module waffle.tomcat10

    +
    +
    +
    module waffle.tomcat10
    +
    +
      +
    • +
      + +

      Packages

      +
      +
      Exports
      +
      +
      Package
      +
      Description
      + +
      +
      Waffle Tomcat Package.
      +
      +
      +
      +
      +
    • +
    +
    +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/GenericWindowsPrincipal.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/GenericWindowsPrincipal.html new file mode 100644 index 0000000000..db84de312e --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/GenericWindowsPrincipal.html @@ -0,0 +1,275 @@ + + + + +GenericWindowsPrincipal (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +
    Package waffle.apache
    +

    Class GenericWindowsPrincipal

    +
    +
    java.lang.Object +
    org.apache.catalina.realm.GenericPrincipal +
    waffle.apache.GenericWindowsPrincipal
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable, Principal, org.apache.catalina.TomcatPrincipal
    +
    +
    +
    public class GenericWindowsPrincipal +extends org.apache.catalina.realm.GenericPrincipal
    +
    A Windows Principal.
    +
    +
    See Also:
    +
    + +
    +
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      +

      Fields inherited from class org.apache.catalina.realm.GenericPrincipal

      +attributes, gssCredential, loginContext, name, roles, userPrincipal
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      GenericWindowsPrincipal(waffle.windows.auth.IWindowsIdentity windowsIdentity, + waffle.windows.auth.PrincipalFormat principalFormat, + waffle.windows.auth.PrincipalFormat roleFormat)
      +
      +
      A windows principal.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      Map<String,waffle.windows.auth.WindowsAccount>
      + +
      +
      Windows groups that the user is a member of.
      +
      + + +
      +
      Get an array of roles as a string.
      +
      +
      byte[]
      + +
      +
      Byte representation of the SID.
      +
      + + +
      +
      String representation of the SID.
      +
      +
      +
      +
      +
      +

      Methods inherited from class org.apache.catalina.realm.GenericPrincipal

      +getAttribute, getAttributeNames, getGssCredential, getName, getRoles, getUserPrincipal, hasRole, logout, setGssCredential, toString
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +
      +

      Methods inherited from interface java.security.Principal

      +equals, hashCode, implies
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        GenericWindowsPrincipal

        +
        public GenericWindowsPrincipal(waffle.windows.auth.IWindowsIdentity windowsIdentity, + waffle.windows.auth.PrincipalFormat principalFormat, + waffle.windows.auth.PrincipalFormat roleFormat)
        +
        A windows principal.
        +
        +
        Parameters:
        +
        windowsIdentity - Windows identity.
        +
        principalFormat - Principal format.
        +
        roleFormat - Role format.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        getGroups

        +
        public Map<String,waffle.windows.auth.WindowsAccount> getGroups()
        +
        Windows groups that the user is a member of.
        +
        +
        Returns:
        +
        A map of group names to groups.
        +
        +
        +
      • +
      • +
        +

        getSid

        +
        public byte[] getSid()
        +
        Byte representation of the SID.
        +
        +
        Returns:
        +
        Array of bytes.
        +
        +
        +
      • +
      • +
        +

        getSidString

        +
        public String getSidString()
        +
        String representation of the SID.
        +
        +
        Returns:
        +
        String.
        +
        +
        +
      • +
      • +
        +

        getRolesString

        +
        public String getRolesString()
        +
        Get an array of roles as a string.
        +
        +
        Returns:
        +
        Role1, Role2, ...
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/MixedAuthenticator.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/MixedAuthenticator.html new file mode 100644 index 0000000000..47548a3698 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/MixedAuthenticator.html @@ -0,0 +1,685 @@ + + + + +MixedAuthenticator (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +
    Package waffle.apache
    +

    Class MixedAuthenticator

    +
    +
    java.lang.Object +
    org.apache.catalina.util.LifecycleBase +
    org.apache.catalina.util.LifecycleMBeanBase +
    org.apache.catalina.valves.ValveBase +
    org.apache.catalina.authenticator.AuthenticatorBase +
    waffle.apache.MixedAuthenticator
    +
    +
    +
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    jakarta.security.auth.message.config.RegistrationListener, MBeanRegistration, org.apache.catalina.Authenticator, org.apache.catalina.Contained, org.apache.catalina.JmxEnabled, org.apache.catalina.Lifecycle, org.apache.catalina.Valve
    +
    +
    +
    public class MixedAuthenticator +extends org.apache.catalina.authenticator.AuthenticatorBase
    +
    Mixed Negotiate + Form Authenticator.
    +
    +
    +
      + +
    • +
      +

      Nested Class Summary

      +
      +

      Nested classes/interfaces inherited from class org.apache.catalina.authenticator.AuthenticatorBase

      +org.apache.catalina.authenticator.AuthenticatorBase.AllowCorsPreflight
      +
      +

      Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      +org.apache.catalina.Lifecycle.SingleUse
      +
      +
    • + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      protected boolean
      + +
      +
      The allow guest login.
      +
      +
      protected waffle.windows.auth.IWindowsAuthProvider
      + +
      +
      The auth.
      +
      +
      protected int
      + +
      +
      The auth continueContextsTimeout configuration.
      +
      +
      protected String
      + +
      +
      The info.
      +
      +
      protected org.slf4j.Logger
      + +
      +
      The log.
      +
      +
      protected waffle.windows.auth.PrincipalFormat
      + +
      +
      The principal format.
      +
      +
      protected Set<String>
      + +
      +
      The protocols.
      +
      +
      protected waffle.windows.auth.PrincipalFormat
      + +
      +
      The role format.
      +
      +
      +
      +

      Fields inherited from class org.apache.catalina.authenticator.AuthenticatorBase

      +alwaysUseSession, AUTH_HEADER_NAME, cache, changeSessionIdOnAuthentication, context, disableProxyCaching, jaspicCallbackHandlerClass, REALM_NAME, securePagesWithPragma, secureRandomAlgorithm, secureRandomClass, secureRandomProvider, sendAuthInfoResponseHeaders, sessionIdGenerator, sm, sso
      +
      +

      Fields inherited from class org.apache.catalina.valves.ValveBase

      +asyncSupported, container, containerLog, next
      +
      +

      Fields inherited from interface org.apache.catalina.Lifecycle

      +AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      Instantiates a new mixed authenticator.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      boolean
      +
      authenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response)
      +
       
      +
      protected org.apache.catalina.realm.GenericPrincipal
      +
      createPrincipal(waffle.windows.auth.IWindowsIdentity windowsIdentity)
      +
      +
      This method will create an instance of a IWindowsIdentity based GenericPrincipal.
      +
      +
      protected boolean
      +
      doAuthenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response)
      +
      +
      XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours.
      +
      +
      protected Principal
      +
      doLogin(org.apache.catalina.connector.Request request, + String username, + String password)
      +
       
      +
      waffle.windows.auth.IWindowsAuthProvider
      + +
      +
      Windows authentication provider.
      +
      +
      protected String
      + +
       
      +
      int
      + +
      +
      Gets the continue context time out configuration.
      +
      + + +
      +
      Gets the info.
      +
      +
      waffle.windows.auth.PrincipalFormat
      + +
      +
      Principal format.
      +
      +
      waffle.windows.auth.PrincipalFormat
      + +
      +
      Principal format.
      +
      +
      boolean
      + +
      +
      True if Guest login permitted.
      +
      +
      protected void
      +
      sendError(jakarta.servlet.http.HttpServletResponse response, + int code)
      +
      +
      Send an error code.
      +
      +
      protected void
      +
      sendUnauthorized(jakarta.servlet.http.HttpServletResponse response)
      +
      +
      Send a 401 Unauthorized along with protocol authentication headers.
      +
      +
      void
      +
      setAllowGuestLogin(boolean value)
      +
      +
      Set whether Guest login is permitted.
      +
      +
      void
      +
      setAuth(waffle.windows.auth.IWindowsAuthProvider provider)
      +
      +
      Set Windows auth provider.
      +
      +
      void
      +
      setContinueContextsTimeout(int continueContextsTimeout)
      +
      +
      Sets the continue context time out configuration.
      +
      +
      void
      + +
      +
      Set the principal format.
      +
      +
      void
      + +
      +
      Set the authentication protocols.
      +
      +
      void
      + +
      +
      Set the principal format.
      +
      +
      void
      + +
      +
      Hook to the start and to set up the dependencies.
      +
      +
      void
      + +
       
      +
      +
      +
      +
      +

      Methods inherited from class org.apache.catalina.authenticator.AuthenticatorBase

      +allowCorsPreflightBypass, associate, changeSessionID, checkForCachedAuthentication, getAllowCorsPreflight, getAlwaysUseSession, getCache, getChangeSessionIdOnAuthentication, getContainer, getDisableProxyCaching, getJaspicCallbackHandlerClass, getRealmName, getSecurePagesWithPragma, getSecureRandomAlgorithm, getSecureRandomClass, getSecureRandomProvider, invoke, isContinuationRequired, isPreemptiveAuthPossible, isSendAuthInfoResponseHeaders, login, logout, notify, reauthenticateFromSSO, register, register, setAllowCorsPreflight, setAlwaysUseSession, setCache, setChangeSessionIdOnAuthentication, setContainer, setDisableProxyCaching, setJaspicCallbackHandlerClass, setSecurePagesWithPragma, setSecureRandomAlgorithm, setSecureRandomClass, setSecureRandomProvider, setSendAuthInfoResponseHeaders
      +
      +

      Methods inherited from class org.apache.catalina.valves.ValveBase

      +backgroundProcess, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setNext, toString
      +
      +

      Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

      +destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister
      +
      +

      Methods inherited from class org.apache.catalina.util.LifecycleBase

      +addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        info

        +
        protected String info
        +
        The info.
        +
        +
      • +
      • +
        +

        log

        +
        protected org.slf4j.Logger log
        +
        The log.
        +
        +
      • +
      • +
        +

        principalFormat

        +
        protected waffle.windows.auth.PrincipalFormat principalFormat
        +
        The principal format.
        +
        +
      • +
      • +
        +

        roleFormat

        +
        protected waffle.windows.auth.PrincipalFormat roleFormat
        +
        The role format.
        +
        +
      • +
      • +
        +

        allowGuestLogin

        +
        protected boolean allowGuestLogin
        +
        The allow guest login.
        +
        +
      • +
      • +
        +

        protocols

        +
        protected Set<String> protocols
        +
        The protocols.
        +
        +
      • +
      • +
        +

        continueContextsTimeout

        +
        protected int continueContextsTimeout
        +
        The auth continueContextsTimeout configuration.
        +
        +
      • +
      • +
        +

        auth

        +
        protected waffle.windows.auth.IWindowsAuthProvider auth
        +
        The auth.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        MixedAuthenticator

        +
        public MixedAuthenticator()
        +
        Instantiates a new mixed authenticator.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        startInternal

        +
        public void startInternal() + throws org.apache.catalina.LifecycleException
        +
        Hook to the start and to set up the dependencies.
        +
        +
        Throws:
        +
        org.apache.catalina.LifecycleException - the lifecycle exception
        +
        +
        +
      • +
      • +
        +

        stopInternal

        +
        public void stopInternal() + throws org.apache.catalina.LifecycleException
        +
        +
        Overrides:
        +
        stopInternal in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        Throws:
        +
        org.apache.catalina.LifecycleException
        +
        +
        +
      • +
      • +
        +

        authenticate

        +
        public boolean authenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response)
        +
        +
        Specified by:
        +
        authenticate in interface org.apache.catalina.Authenticator
        +
        Overrides:
        +
        authenticate in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        +
        +
      • +
      • +
        +

        doAuthenticate

        +
        protected boolean doAuthenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response) + throws IOException
        +
        XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours. In order to support old and + new at this time, we will continue to have both for time being.
        +
        +
        Specified by:
        +
        doAuthenticate in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      • +
        +

        getContinueContextsTimeout

        +
        public int getContinueContextsTimeout()
        +
        Gets the continue context time out configuration.
        +
        +
        Returns:
        +
        the continue contexts timeout
        +
        +
        +
      • +
      • +
        +

        setContinueContextsTimeout

        +
        public void setContinueContextsTimeout(int continueContextsTimeout)
        +
        Sets the continue context time out configuration.
        +
        +
        Parameters:
        +
        continueContextsTimeout - the new continue contexts timeout
        +
        +
        +
      • +
      • +
        +

        getAuth

        +
        public waffle.windows.auth.IWindowsAuthProvider getAuth()
        +
        Windows authentication provider.
        +
        +
        Returns:
        +
        IWindowsAuthProvider.
        +
        +
        +
      • +
      • +
        +

        setAuth

        +
        public void setAuth(waffle.windows.auth.IWindowsAuthProvider provider)
        +
        Set Windows auth provider.
        +
        +
        Parameters:
        +
        provider - Class implements IWindowsAuthProvider.
        +
        +
        +
      • +
      • +
        +

        getInfo

        +
        public String getInfo()
        +
        Gets the info.
        +
        +
        Returns:
        +
        the info
        +
        +
        +
      • +
      • +
        +

        setPrincipalFormat

        +
        public void setPrincipalFormat(String format)
        +
        Set the principal format.
        +
        +
        Parameters:
        +
        format - Principal format.
        +
        +
        +
      • +
      • +
        +

        getPrincipalFormat

        +
        public waffle.windows.auth.PrincipalFormat getPrincipalFormat()
        +
        Principal format.
        +
        +
        Returns:
        +
        Principal format.
        +
        +
        +
      • +
      • +
        +

        setRoleFormat

        +
        public void setRoleFormat(String format)
        +
        Set the principal format.
        +
        +
        Parameters:
        +
        format - Role format.
        +
        +
        +
      • +
      • +
        +

        getRoleFormat

        +
        public waffle.windows.auth.PrincipalFormat getRoleFormat()
        +
        Principal format.
        +
        +
        Returns:
        +
        Role format.
        +
        +
        +
      • +
      • +
        +

        isAllowGuestLogin

        +
        public boolean isAllowGuestLogin()
        +
        True if Guest login permitted.
        +
        +
        Returns:
        +
        True if Guest login permitted, false otherwise.
        +
        +
        +
      • +
      • +
        +

        setAllowGuestLogin

        +
        public void setAllowGuestLogin(boolean value)
        +
        Set whether Guest login is permitted. Default is true, if the Guest account is enabled, an invalid + username/password results in a Guest login.
        +
        +
        Parameters:
        +
        value - True or false.
        +
        +
        +
      • +
      • +
        +

        setProtocols

        +
        public void setProtocols(String value)
        +
        Set the authentication protocols. Default is "Negotiate, NTLM".
        +
        +
        Parameters:
        +
        value - Authentication protocols
        +
        +
        +
      • +
      • +
        +

        sendUnauthorized

        +
        protected void sendUnauthorized(jakarta.servlet.http.HttpServletResponse response)
        +
        Send a 401 Unauthorized along with protocol authentication headers.
        +
        +
        Parameters:
        +
        response - HTTP Response
        +
        +
        +
      • +
      • +
        +

        sendError

        +
        protected void sendError(jakarta.servlet.http.HttpServletResponse response, + int code)
        +
        Send an error code.
        +
        +
        Parameters:
        +
        response - HTTP Response
        +
        code - Error Code
        +
        +
        +
      • +
      • +
        +

        getAuthMethod

        +
        protected String getAuthMethod()
        +
        +
        Specified by:
        +
        getAuthMethod in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        +
        +
      • +
      • +
        +

        doLogin

        +
        protected Principal doLogin(org.apache.catalina.connector.Request request, + String username, + String password) + throws jakarta.servlet.ServletException
        +
        +
        Overrides:
        +
        doLogin in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        Throws:
        +
        jakarta.servlet.ServletException
        +
        +
        +
      • +
      • +
        +

        createPrincipal

        +
        protected org.apache.catalina.realm.GenericPrincipal createPrincipal(waffle.windows.auth.IWindowsIdentity windowsIdentity)
        +
        This method will create an instance of a IWindowsIdentity based GenericPrincipal. It is used for creating custom + implementation within subclasses.
        +
        +
        Parameters:
        +
        windowsIdentity - the windows identity to initialize the principal
        +
        Returns:
        +
        the Generic Principal
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/NegotiateAuthenticator.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/NegotiateAuthenticator.html new file mode 100644 index 0000000000..49cb820d45 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/NegotiateAuthenticator.html @@ -0,0 +1,685 @@ + + + + +NegotiateAuthenticator (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +
    Package waffle.apache
    +

    Class NegotiateAuthenticator

    +
    +
    java.lang.Object +
    org.apache.catalina.util.LifecycleBase +
    org.apache.catalina.util.LifecycleMBeanBase +
    org.apache.catalina.valves.ValveBase +
    org.apache.catalina.authenticator.AuthenticatorBase +
    waffle.apache.NegotiateAuthenticator
    +
    +
    +
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    jakarta.security.auth.message.config.RegistrationListener, MBeanRegistration, org.apache.catalina.Authenticator, org.apache.catalina.Contained, org.apache.catalina.JmxEnabled, org.apache.catalina.Lifecycle, org.apache.catalina.Valve
    +
    +
    +
    public class NegotiateAuthenticator +extends org.apache.catalina.authenticator.AuthenticatorBase
    +
    An Apache Negotiate (NTLM, Kerberos) Authenticator.
    +
    +
    +
      + +
    • +
      +

      Nested Class Summary

      +
      +

      Nested classes/interfaces inherited from class org.apache.catalina.authenticator.AuthenticatorBase

      +org.apache.catalina.authenticator.AuthenticatorBase.AllowCorsPreflight
      +
      +

      Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      +org.apache.catalina.Lifecycle.SingleUse
      +
      +
    • + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      protected boolean
      + +
      +
      The allow guest login.
      +
      +
      protected waffle.windows.auth.IWindowsAuthProvider
      + +
      +
      The auth.
      +
      +
      protected int
      + +
      +
      The auth continueContextsTimeout configuration.
      +
      +
      protected String
      + +
      +
      The info.
      +
      +
      protected org.slf4j.Logger
      + +
      +
      The log.
      +
      +
      protected waffle.windows.auth.PrincipalFormat
      + +
      +
      The principal format.
      +
      +
      protected Set<String>
      + +
      +
      The protocols.
      +
      +
      protected waffle.windows.auth.PrincipalFormat
      + +
      +
      The role format.
      +
      +
      +
      +

      Fields inherited from class org.apache.catalina.authenticator.AuthenticatorBase

      +alwaysUseSession, AUTH_HEADER_NAME, cache, changeSessionIdOnAuthentication, context, disableProxyCaching, jaspicCallbackHandlerClass, REALM_NAME, securePagesWithPragma, secureRandomAlgorithm, secureRandomClass, secureRandomProvider, sendAuthInfoResponseHeaders, sessionIdGenerator, sm, sso
      +
      +

      Fields inherited from class org.apache.catalina.valves.ValveBase

      +asyncSupported, container, containerLog, next
      +
      +

      Fields inherited from interface org.apache.catalina.Lifecycle

      +AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      Instantiates a new negotiate authenticator.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      boolean
      +
      authenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response)
      +
       
      +
      protected org.apache.catalina.realm.GenericPrincipal
      +
      createPrincipal(waffle.windows.auth.IWindowsIdentity windowsIdentity)
      +
      +
      This method will create an instance of a IWindowsIdentity based GenericPrincipal.
      +
      +
      protected boolean
      +
      doAuthenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response)
      +
      +
      XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours.
      +
      +
      protected Principal
      +
      doLogin(org.apache.catalina.connector.Request request, + String username, + String password)
      +
       
      +
      waffle.windows.auth.IWindowsAuthProvider
      + +
      +
      Windows authentication provider.
      +
      +
      protected String
      + +
       
      +
      int
      + +
      +
      Gets the continue context time out configuration.
      +
      + + +
      +
      Gets the info.
      +
      +
      waffle.windows.auth.PrincipalFormat
      + +
      +
      Principal format.
      +
      +
      waffle.windows.auth.PrincipalFormat
      + +
      +
      Principal format.
      +
      +
      boolean
      + +
      +
      True if Guest login permitted.
      +
      +
      protected void
      +
      sendError(jakarta.servlet.http.HttpServletResponse response, + int code)
      +
      +
      Send an error code.
      +
      +
      protected void
      +
      sendUnauthorized(jakarta.servlet.http.HttpServletResponse response)
      +
      +
      Send a 401 Unauthorized along with protocol authentication headers.
      +
      +
      void
      +
      setAllowGuestLogin(boolean value)
      +
      +
      Set whether Guest login is permitted.
      +
      +
      void
      +
      setAuth(waffle.windows.auth.IWindowsAuthProvider provider)
      +
      +
      Set Windows auth provider.
      +
      +
      void
      +
      setContinueContextsTimeout(int continueContextsTimeout)
      +
      +
      Sets the continue context time out configuration.
      +
      +
      void
      + +
      +
      Set the principal format.
      +
      +
      void
      + +
      +
      Set the authentication protocols.
      +
      +
      void
      + +
      +
      Set the principal format.
      +
      +
      void
      + +
      +
      Hook to the start and to set up the dependencies.
      +
      +
      void
      + +
       
      +
      +
      +
      +
      +

      Methods inherited from class org.apache.catalina.authenticator.AuthenticatorBase

      +allowCorsPreflightBypass, associate, changeSessionID, checkForCachedAuthentication, getAllowCorsPreflight, getAlwaysUseSession, getCache, getChangeSessionIdOnAuthentication, getContainer, getDisableProxyCaching, getJaspicCallbackHandlerClass, getRealmName, getSecurePagesWithPragma, getSecureRandomAlgorithm, getSecureRandomClass, getSecureRandomProvider, invoke, isContinuationRequired, isPreemptiveAuthPossible, isSendAuthInfoResponseHeaders, login, logout, notify, reauthenticateFromSSO, register, register, setAllowCorsPreflight, setAlwaysUseSession, setCache, setChangeSessionIdOnAuthentication, setContainer, setDisableProxyCaching, setJaspicCallbackHandlerClass, setSecurePagesWithPragma, setSecureRandomAlgorithm, setSecureRandomClass, setSecureRandomProvider, setSendAuthInfoResponseHeaders
      +
      +

      Methods inherited from class org.apache.catalina.valves.ValveBase

      +backgroundProcess, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setNext, toString
      +
      +

      Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

      +destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister
      +
      +

      Methods inherited from class org.apache.catalina.util.LifecycleBase

      +addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        info

        +
        protected String info
        +
        The info.
        +
        +
      • +
      • +
        +

        log

        +
        protected org.slf4j.Logger log
        +
        The log.
        +
        +
      • +
      • +
        +

        principalFormat

        +
        protected waffle.windows.auth.PrincipalFormat principalFormat
        +
        The principal format.
        +
        +
      • +
      • +
        +

        roleFormat

        +
        protected waffle.windows.auth.PrincipalFormat roleFormat
        +
        The role format.
        +
        +
      • +
      • +
        +

        allowGuestLogin

        +
        protected boolean allowGuestLogin
        +
        The allow guest login.
        +
        +
      • +
      • +
        +

        protocols

        +
        protected Set<String> protocols
        +
        The protocols.
        +
        +
      • +
      • +
        +

        continueContextsTimeout

        +
        protected int continueContextsTimeout
        +
        The auth continueContextsTimeout configuration.
        +
        +
      • +
      • +
        +

        auth

        +
        protected waffle.windows.auth.IWindowsAuthProvider auth
        +
        The auth.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        NegotiateAuthenticator

        +
        public NegotiateAuthenticator()
        +
        Instantiates a new negotiate authenticator.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        startInternal

        +
        public void startInternal() + throws org.apache.catalina.LifecycleException
        +
        Hook to the start and to set up the dependencies.
        +
        +
        Throws:
        +
        org.apache.catalina.LifecycleException - the lifecycle exception
        +
        +
        +
      • +
      • +
        +

        stopInternal

        +
        public void stopInternal() + throws org.apache.catalina.LifecycleException
        +
        +
        Overrides:
        +
        stopInternal in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        Throws:
        +
        org.apache.catalina.LifecycleException
        +
        +
        +
      • +
      • +
        +

        authenticate

        +
        public boolean authenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response)
        +
        +
        Specified by:
        +
        authenticate in interface org.apache.catalina.Authenticator
        +
        Overrides:
        +
        authenticate in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        +
        +
      • +
      • +
        +

        doAuthenticate

        +
        protected boolean doAuthenticate(org.apache.catalina.connector.Request request, + jakarta.servlet.http.HttpServletResponse response) + throws IOException
        +
        XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours. In order to support old and + new at this time, we will continue to have both for time being.
        +
        +
        Specified by:
        +
        doAuthenticate in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      • +
        +

        getContinueContextsTimeout

        +
        public int getContinueContextsTimeout()
        +
        Gets the continue context time out configuration.
        +
        +
        Returns:
        +
        the continue contexts timeout
        +
        +
        +
      • +
      • +
        +

        setContinueContextsTimeout

        +
        public void setContinueContextsTimeout(int continueContextsTimeout)
        +
        Sets the continue context time out configuration.
        +
        +
        Parameters:
        +
        continueContextsTimeout - the new continue contexts timeout
        +
        +
        +
      • +
      • +
        +

        getAuth

        +
        public waffle.windows.auth.IWindowsAuthProvider getAuth()
        +
        Windows authentication provider.
        +
        +
        Returns:
        +
        IWindowsAuthProvider.
        +
        +
        +
      • +
      • +
        +

        setAuth

        +
        public void setAuth(waffle.windows.auth.IWindowsAuthProvider provider)
        +
        Set Windows auth provider.
        +
        +
        Parameters:
        +
        provider - Class implements IWindowsAuthProvider.
        +
        +
        +
      • +
      • +
        +

        getInfo

        +
        public String getInfo()
        +
        Gets the info.
        +
        +
        Returns:
        +
        the info
        +
        +
        +
      • +
      • +
        +

        setPrincipalFormat

        +
        public void setPrincipalFormat(String format)
        +
        Set the principal format.
        +
        +
        Parameters:
        +
        format - Principal format.
        +
        +
        +
      • +
      • +
        +

        getPrincipalFormat

        +
        public waffle.windows.auth.PrincipalFormat getPrincipalFormat()
        +
        Principal format.
        +
        +
        Returns:
        +
        Principal format.
        +
        +
        +
      • +
      • +
        +

        setRoleFormat

        +
        public void setRoleFormat(String format)
        +
        Set the principal format.
        +
        +
        Parameters:
        +
        format - Role format.
        +
        +
        +
      • +
      • +
        +

        getRoleFormat

        +
        public waffle.windows.auth.PrincipalFormat getRoleFormat()
        +
        Principal format.
        +
        +
        Returns:
        +
        Role format.
        +
        +
        +
      • +
      • +
        +

        isAllowGuestLogin

        +
        public boolean isAllowGuestLogin()
        +
        True if Guest login permitted.
        +
        +
        Returns:
        +
        True if Guest login permitted, false otherwise.
        +
        +
        +
      • +
      • +
        +

        setAllowGuestLogin

        +
        public void setAllowGuestLogin(boolean value)
        +
        Set whether Guest login is permitted. Default is true, if the Guest account is enabled, an invalid + username/password results in a Guest login.
        +
        +
        Parameters:
        +
        value - True or false.
        +
        +
        +
      • +
      • +
        +

        setProtocols

        +
        public void setProtocols(String value)
        +
        Set the authentication protocols. Default is "Negotiate, NTLM".
        +
        +
        Parameters:
        +
        value - Authentication protocols
        +
        +
        +
      • +
      • +
        +

        sendUnauthorized

        +
        protected void sendUnauthorized(jakarta.servlet.http.HttpServletResponse response)
        +
        Send a 401 Unauthorized along with protocol authentication headers.
        +
        +
        Parameters:
        +
        response - HTTP Response
        +
        +
        +
      • +
      • +
        +

        sendError

        +
        protected void sendError(jakarta.servlet.http.HttpServletResponse response, + int code)
        +
        Send an error code.
        +
        +
        Parameters:
        +
        response - HTTP Response
        +
        code - Error Code
        +
        +
        +
      • +
      • +
        +

        getAuthMethod

        +
        protected String getAuthMethod()
        +
        +
        Specified by:
        +
        getAuthMethod in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        +
        +
      • +
      • +
        +

        doLogin

        +
        protected Principal doLogin(org.apache.catalina.connector.Request request, + String username, + String password) + throws jakarta.servlet.ServletException
        +
        +
        Overrides:
        +
        doLogin in class org.apache.catalina.authenticator.AuthenticatorBase
        +
        Throws:
        +
        jakarta.servlet.ServletException
        +
        +
        +
      • +
      • +
        +

        createPrincipal

        +
        protected org.apache.catalina.realm.GenericPrincipal createPrincipal(waffle.windows.auth.IWindowsIdentity windowsIdentity)
        +
        This method will create an instance of a IWindowsIdentity based GenericPrincipal. It is used for creating custom + implementation within subclasses.
        +
        +
        Parameters:
        +
        windowsIdentity - the windows identity to initialize the principal
        +
        Returns:
        +
        the Generic Principal
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/WindowsRealm.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/WindowsRealm.html new file mode 100644 index 0000000000..bd1158bcd8 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/WindowsRealm.html @@ -0,0 +1,241 @@ + + + + +WindowsRealm (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +
    Package waffle.apache
    +

    Class WindowsRealm

    +
    +
    java.lang.Object +
    org.apache.catalina.util.LifecycleBase +
    org.apache.catalina.util.LifecycleMBeanBase +
    org.apache.catalina.realm.RealmBase +
    waffle.apache.WindowsRealm
    +
    +
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    MBeanRegistration, org.apache.catalina.Contained, org.apache.catalina.JmxEnabled, org.apache.catalina.Lifecycle, org.apache.catalina.Realm
    +
    +
    +
    public class WindowsRealm +extends org.apache.catalina.realm.RealmBase
    +
    A rudimentary Windows realm.
    +
    +
    +
      + +
    • +
      +

      Nested Class Summary

      +
      +

      Nested classes/interfaces inherited from class org.apache.catalina.realm.RealmBase

      +org.apache.catalina.realm.RealmBase.AllRolesMode
      +
      +

      Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      +org.apache.catalina.Lifecycle.SingleUse
      +
      +
    • + +
    • +
      +

      Field Summary

      +
      +

      Fields inherited from class org.apache.catalina.realm.RealmBase

      +allRolesMode, container, containerLog, realmPath, sm, stripRealmForGss, support, USER_ATTRIBUTES_DELIMITER, USER_ATTRIBUTES_WILDCARD, userAttributes, userAttributesList, validate, x509UsernameRetriever, x509UsernameRetrieverClassName
      +
      +

      Fields inherited from interface org.apache.catalina.Lifecycle

      +AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
       
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      protected String
      + +
       
      +
      protected Principal
      + +
       
      +
      +
      +
      +
      +

      Methods inherited from class org.apache.catalina.realm.RealmBase

      +addPropertyChangeListener, authenticate, authenticate, authenticate, authenticate, authenticate, authenticate, authenticate, backgroundProcess, findSecurityConstraints, getAllRolesMode, getContainer, getCredentialHandler, getDigest, getDigest, getDomainInternal, getObjectNameKeyProperties, getPrincipal, getPrincipal, getPrincipal, getRealmPath, getRealmSuffix, getServer, getTransportGuaranteeRedirectStatus, getUserAttributes, getValidate, getX509UsernameRetrieverClassName, hasMessageDigest, hasResourcePermission, hasRole, hasRoleInternal, hasUserDataPermission, initInternal, isStripRealmForGss, main, parseUserAttributes, removePropertyChangeListener, setAllRolesMode, setContainer, setCredentialHandler, setRealmPath, setStripRealmForGss, setTransportGuaranteeRedirectStatus, setUserAttributes, setValidate, setX509UsernameRetrieverClassName, startInternal, stopInternal, toString
      +
      +

      Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

      +destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister
      +
      +

      Methods inherited from class org.apache.catalina.util.LifecycleBase

      +addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +
      +

      Methods inherited from interface org.apache.catalina.Realm

      +isAvailable
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        WindowsRealm

        +
        public WindowsRealm()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        getPassword

        +
        protected String getPassword(String value)
        +
        +
        Specified by:
        +
        getPassword in class org.apache.catalina.realm.RealmBase
        +
        +
        +
      • +
      • +
        +

        getPrincipal

        +
        protected Principal getPrincipal(String value)
        +
        +
        Specified by:
        +
        getPrincipal in class org.apache.catalina.realm.RealmBase
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/GenericWindowsPrincipal.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/GenericWindowsPrincipal.html new file mode 100644 index 0000000000..7d5a281a30 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/GenericWindowsPrincipal.html @@ -0,0 +1,61 @@ + + + + +Uses of Class waffle.apache.GenericWindowsPrincipal (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    waffle.apache.GenericWindowsPrincipal

    +
    +No usage of waffle.apache.GenericWindowsPrincipal
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/MixedAuthenticator.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/MixedAuthenticator.html new file mode 100644 index 0000000000..32a4361f63 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/MixedAuthenticator.html @@ -0,0 +1,61 @@ + + + + +Uses of Class waffle.apache.MixedAuthenticator (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    waffle.apache.MixedAuthenticator

    +
    +No usage of waffle.apache.MixedAuthenticator
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/NegotiateAuthenticator.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/NegotiateAuthenticator.html new file mode 100644 index 0000000000..721d63e27c --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/NegotiateAuthenticator.html @@ -0,0 +1,61 @@ + + + + +Uses of Class waffle.apache.NegotiateAuthenticator (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    waffle.apache.NegotiateAuthenticator

    +
    +No usage of waffle.apache.NegotiateAuthenticator
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/WindowsRealm.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/WindowsRealm.html new file mode 100644 index 0000000000..fbf938b1f2 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/class-use/WindowsRealm.html @@ -0,0 +1,61 @@ + + + + +Uses of Class waffle.apache.WindowsRealm (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    waffle.apache.WindowsRealm

    +
    +No usage of waffle.apache.WindowsRealm
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-summary.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-summary.html new file mode 100644 index 0000000000..c81f7856f6 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-summary.html @@ -0,0 +1,113 @@ + + + + +waffle.apache (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Package waffle.apache

    +
    +
    +
    package waffle.apache
    +
    +
    Waffle Tomcat Package.
    +
    +
    + +
    +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-tree.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-tree.html new file mode 100644 index 0000000000..23785c3a1d --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-tree.html @@ -0,0 +1,98 @@ + + + + +waffle.apache Class Hierarchy (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package waffle.apache

    +
    +
    +

    Class Hierarchy

    +
      +
    • java.lang.Object +
        +
      • org.apache.catalina.realm.GenericPrincipal (implements java.io.Serializable, org.apache.catalina.TomcatPrincipal) + +
      • +
      • org.apache.catalina.util.LifecycleBase (implements org.apache.catalina.Lifecycle) +
          +
        • org.apache.catalina.util.LifecycleMBeanBase (implements org.apache.catalina.JmxEnabled) +
            +
          • org.apache.catalina.realm.RealmBase (implements org.apache.catalina.Realm) + +
          • +
          • org.apache.catalina.valves.ValveBase (implements org.apache.catalina.Contained, org.apache.catalina.Valve) +
              +
            • org.apache.catalina.authenticator.AuthenticatorBase (implements org.apache.catalina.Authenticator, jakarta.security.auth.message.config.RegistrationListener) + +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
    +
    + +
    +
    + + diff --git a/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-use.html b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-use.html new file mode 100644 index 0000000000..37f09b2230 --- /dev/null +++ b/waffle-tomcat10/apidocs/waffle.tomcat10/waffle/apache/package-use.html @@ -0,0 +1,61 @@ + + + + +Uses of Package waffle.apache (waffle-tomcat10 3.5.1 API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    waffle.apache

    +
    +No usage of waffle.apache
    + +
    +
    + + diff --git a/waffle-tomcat10/checkstyle.html b/waffle-tomcat10/checkstyle.html new file mode 100644 index 0000000000..004211c0b3 --- /dev/null +++ b/waffle-tomcat10/checkstyle.html @@ -0,0 +1,580 @@ + + + + + + + + + + Checkstyle Results – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Checkstyle Results

    +

    The following document contains the results of Checkstyle 10.21.1 with checkstyle.xml ruleset.

    +

    Summary

    + + + + + + + + + + +
    Files Info Warnings Errors
    130400
    +

    Files

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    File I W E
    waffle/apache/GenericWindowsPrincipal.java020
    waffle/apache/MixedAuthenticator.java040
    waffle/apache/MixedAuthenticatorTest.java080
    waffle/apache/NegotiateAuthenticator.java040
    waffle/apache/NegotiateAuthenticatorTest.java070
    waffle/apache/WaffleAuthenticatorBase.java030
    waffle/apache/WaffleAuthenticatorBaseTest.java030
    waffle/apache/WindowsAccountTest.java020
    waffle/apache/WindowsRealm.java010
    waffle/apache/catalina/SimpleHttpRequest.java050
    waffle/apache/catalina/SimpleHttpResponse.java010
    +

    Rules

    + + + + + + + + + + + + + + + +
    CategoryRuleViolationsSeverity
    importsCustomImportOrder +
      +
    • separateLineBetweenGroups: "true"
    • +
    • sortImportsInGroupAlphabetically: "true"
    • +
    • customImportOrderRules: "STATIC###THIRD_PARTY_PACKAGE"
    • +
    • tokens: "IMPORT, STATIC_IMPORT, PACKAGE_DEF"
    31 Warning
    namingAbbreviationAsWordInName +
      +
    • tokens: "CLASS_DEF, INTERFACE_DEF, ENUM_DEF, ANNOTATION_DEF, ANNOTATION_FIELD_DEF, PARAMETER_DEF, VARIABLE_DEF, METHOD_DEF, PATTERN_VARIABLE_DEF, RECORD_DEF, RECORD_COMPONENT_DEF"
    • +
    • ignoreFinal: "false"
    • +
    • allowedAbbreviations: "XML,URL"
    • +
    • allowedAbbreviationLength: "0"
    9 Warning
    +

    Details

    +

    waffle/apache/GenericWindowsPrincipal.java

    + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.realm.GenericPrincipal'31
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.windows.auth.IWindowsAccount'33
    +

    waffle/apache/MixedAuthenticator.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'jakarta.servlet.RequestDispatcher'28
     WarningimportsCustomImportOrderExtra separation in import group before 'java.io.IOException'34
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.LifecycleException'38
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.util.AuthorizationHeader'44
    +

    waffle/apache/MixedAuthenticatorTest.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'jakarta.servlet.ServletException'31
     WarningimportsCustomImportOrderExtra separation in import group before 'java.util.Base64'33
     WarningimportsCustomImportOrderExtra separation in import group before 'mockit.Expectations'36
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.Context'39
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.apache.catalina.SimpleHttpRequest'48
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'testChallengeGET' must contain no more than '1' consecutive capital letters.110
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'testChallengePOST' must contain no more than '1' consecutive capital letters.130
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'testProgrammaticSecuritySID' must contain no more than '1' consecutive capital letters.298
    +

    waffle/apache/NegotiateAuthenticator.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'jakarta.servlet.http.HttpServletResponse'28
     WarningimportsCustomImportOrderExtra separation in import group before 'java.io.IOException'31
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.LifecycleException'35
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.util.AuthorizationHeader'40
    +

    waffle/apache/NegotiateAuthenticatorTest.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'java.util.Base64'31
     WarningimportsCustomImportOrderExtra separation in import group before 'mockit.Expectations'33
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.Context'36
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.apache.catalina.SimpleHttpRequest'44
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'testChallengeGET' must contain no more than '1' consecutive capital letters.113
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'testChallengePOST' must contain no more than '1' consecutive capital letters.132
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'testPOSTEmpty' must contain no more than '1' consecutive capital letters.244
    +

    waffle/apache/WaffleAuthenticatorBase.java

    + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'java.io.IOException'29
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.LifecycleException'36
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.windows.auth.IWindowsAuthProvider'42
    +

    waffle/apache/WaffleAuthenticatorBaseTest.java

    + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'java.io.IOException'28
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.connector.Request'30
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'should_accept_NTLM_protocol' must contain no more than '1' consecutive capital letters.94
    +

    waffle/apache/WindowsAccountTest.java

    + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'org.junit.jupiter.api.Assertions'35
     WarningimportsCustomImportOrderExtra separation in import group before 'waffle.mock.MockWindowsAccount'39
    +

    waffle/apache/WindowsRealm.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.realm.RealmBase'28
    +

    waffle/apache/catalina/SimpleHttpRequest.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'java.security.Principal'28
     WarningimportsCustomImportOrderExtra separation in import group before 'mockit.Mocked'32
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.connector.Request'34
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'requestURI' must contain no more than '1' consecutive capital letters.61
     WarningnamingAbbreviationAsWordInNameAbbreviation in name 'setRequestURI' must contain no more than '1' consecutive capital letters.249
    +

    waffle/apache/catalina/SimpleHttpResponse.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     WarningimportsCustomImportOrderExtra separation in import group before 'org.apache.catalina.connector.Response'32
    +
    +
    +
    + + + diff --git a/waffle-tomcat10/ci-management.html b/waffle-tomcat10/ci-management.html new file mode 100644 index 0000000000..019d82864b --- /dev/null +++ b/waffle-tomcat10/ci-management.html @@ -0,0 +1,152 @@ + + + + + + + + + + CI Management – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Overview

    +

    This project uses GitHub Actions.

    +

    Access

    +

    The following is a link to the continuous integration system used by the project:

    +
    https://github.com/Waffle/waffle/actions
    +

    Notifiers

    +

    No notifiers are defined. Please check back at a later date.

    +
    +
    +
    + + + diff --git a/waffle-tomcat10/cpd.html b/waffle-tomcat10/cpd.html new file mode 100644 index 0000000000..5700f9929e --- /dev/null +++ b/waffle-tomcat10/cpd.html @@ -0,0 +1,235 @@ + + + + + + + + + + CPD Results – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    CPD Results

    +

    The following document contains the results of PMD's CPD 7.7.0.

    +

    Duplications

    + + + + + + + + + + + + + + +
    FileProjectLine
    waffle\apache\MixedAuthenticator.javawaffle-tomcat10149
    waffle\apache\NegotiateAuthenticator.javawaffle-tomcat1096
    +
    final boolean ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();
    +
    +        if (ntlmPost) {
    +            // type 1 NTLM authentication message received
    +            this.auth.resetSecurityToken(connectionId);
    +        }
    +
    +        final byte[] tokenBuffer = authorizationHeader.getTokenBytes();
    +        this.log.debug("token buffer: {} byte(s)", Integer.valueOf(tokenBuffer.length));
    +
    +        // log the user in using the token
    +        IWindowsSecurityContext securityContext;
    +        try {
    +            securityContext = this.auth.acceptSecurityToken(connectionId, tokenBuffer, securityPackage);
    +        } catch (final Win32Exception e) {
    +            this.log.warn("error logging in user: {}", e.getMessage());
    +            this.log.trace("", e);
    +            this.sendUnauthorized(response);
    +            return false;
    +        }
    +        this.log.debug("continue required: {}", Boolean.valueOf(securityContext.isContinue()));
    +
    +        final byte[] continueTokenBytes = securityContext.getToken();
    +        if (continueTokenBytes != null && continueTokenBytes.length > 0) {
    +            final String continueToken = Base64.getEncoder().encodeToString(continueTokenBytes);
    +            this.log.debug("continue token: {}", continueToken);
    +            response.addHeader("WWW-Authenticate", securityPackage + " " + continueToken);
    +        }
    +
    +        try {
    +            if (securityContext.isContinue() || ntlmPost) {
    + + + + + + + + + + + + + + +
    FileProjectLine
    waffle\apache\MixedAuthenticator.javawaffle-tomcat10188
    waffle\apache\NegotiateAuthenticator.javawaffle-tomcat10142
    +
    this.sendUnauthorized(response);
    +            return false;
    +        }
    +
    +        // create and register the user principal with the session
    +        final IWindowsIdentity windowsIdentity = securityContext.getIdentity();
    +
    +        // disable guest login
    +        if (!this.allowGuestLogin && windowsIdentity.isGuest()) {
    +            this.log.warn("guest login disabled: {}", windowsIdentity.getFqn());
    +            this.sendUnauthorized(response);
    +            return false;
    +        }
    +
    +        try {
    +
    +            this.log.debug("logged in user: {} ({})", windowsIdentity.getFqn(), windowsIdentity.getSidString());
    +
    +            final GenericPrincipal genericPrincipal = this.createPrincipal(windowsIdentity);
    +
    +            if (this.log.isDebugEnabled()) {
    +                this.log.debug("roles: {}", String.join(", ", genericPrincipal.getRoles()));
    +            }
    +
    +
    +
    + + + diff --git a/waffle-tomcat10/css/apache-maven-fluido-2.0.0-M10.min.css b/waffle-tomcat10/css/apache-maven-fluido-2.0.0-M10.min.css new file mode 100644 index 0000000000..5b33638419 --- /dev/null +++ b/waffle-tomcat10/css/apache-maven-fluido-2.0.0-M10.min.css @@ -0,0 +1,20 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000 !important;text-shadow:none !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:gray}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none !important}.visible-tablet{display:none !important}.hidden-desktop{display:none !important}.visible-desktop{display:inherit !important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important}.visible-desktop{display:none !important}.visible-tablet{display:inherit !important}.hidden-tablet{display:none !important}}@media(max-width:767px){.hidden-desktop{display:inherit !important}.visible-desktop{display:none !important}.visible-phone{display:inherit !important}.hidden-phone{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:inherit !important}.hidden-print{display:none !important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important}}.clear{clear:both;visibility:hidden}.clear hr{display:none}section>p,section>dt,section>dl,section>table.table,section>pre{margin-right:7px;margin-left:7px}#poweredBy{text-align:center}a.externalLink{padding-right:18px}a.newWindow{background:url('../images/window-new.png') right center no-repeat;padding-right:18px}a.externalLink[href^=http]{background:url('../images/internet-web-browser.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".asc"]{background:url('../images/accessories-text-editor.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".jpg"],a.externalLink[href$=".jpeg"],a.externalLink[href$=".gif"],a.externalLink[href$=".png"]{background:url('../images/image-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".tar.gz"],a.externalLink[href$=".zip"]{background:url('../images/package-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".md5"],a.externalLink[href$=".sha1"]{background:url('../images/document-properties.png') right center no-repeat;padding-right:18px}a.externalLink[href^=https]{background:url('../images/application-certificate.png') right center no-repeat;padding-right:18px}a.externalLink[href^=file]{background:url('../images/drive-harddisk.png') right center no-repeat;padding-right:18px}a.externalLink[href^=ftp]{background:url('../images/network-server.png') right center no-repeat;padding-right:18px}a.externalLink[href^=mailto]{background:url('../images/contact-new.png') right center no-repeat;padding-right:18px}li.none{list-style:none}.search-query{width:95%}.sidebar-nav .search-query{width:calc(100% - 30px)}body.topBarEnabled{padding-top:43px}div.container-top,div.container-fluid-top{padding-top:10px}.builtBy{display:block}img.builtBy{margin:10px auto}#search-form{margin-left:9px;margin-right:9px}li{color:#404040}table.zebra-striped{background-color:#FFF}.footer{background-color:#EEE}.sidebar-nav{padding-left:0;padding-right:0}.sidebar-nav .icon-chevron-right,.sidebar-nav .icon-chevron-down{margin-top:2px;margin-right:-6px;float:right;opacity:.25}li.pull-right{margin-left:3px;margin-right:3px}.well{margin-bottom:10px}a.dropdown-toggle{cursor:pointer}h1>code,h2>code,h3>code,h4>code,h5>code{font-size:unset}.table th,.table td{text-align:revert}.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0;padding-left:15px}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}/*! + * "Fork me on GitHub" CSS ribbon v0.2.3 | MIT License + * https://github.com/simonwhitaker/github-fork-ribbon-css +*/.github-fork-ribbon{width:12.1em;height:12.1em;position:absolute;overflow:hidden;top:0;right:0;z-index:9999;pointer-events:none;font-size:13px;text-decoration:none;text-indent:-999999px}.github-fork-ribbon.fixed{position:fixed}.github-fork-ribbon:hover,.github-fork-ribbon:active{background-color:rgba(0,0,0,0.0)}.github-fork-ribbon:before,.github-fork-ribbon:after{position:absolute;display:block;width:15.38em;height:1.54em;top:3.23em;right:-3.23em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.github-fork-ribbon:before{content:"";padding:.38em 0;background-color:#a00;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,0.15)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:-moz-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:-ms-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,0.15));-webkit-box-shadow:0 .15em .23em 0 rgba(0,0,0,0.5);-moz-box-shadow:0 .15em .23em 0 rgba(0,0,0,0.5);box-shadow:0 .15em .23em 0 rgba(0,0,0,0.5);pointer-events:auto}.github-fork-ribbon:after{content:attr(data-ribbon);color:#fff;font:700 1em "Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.54em;text-decoration:none;text-shadow:0 -.08em rgba(0,0,0,0.5);text-align:center;text-indent:0;padding:.15em 0;margin:.15em 0;border-width:.08em 0;border-style:dotted;border-color:#fff;border-color:rgba(255,255,255,0.7)}.github-fork-ribbon.left-top,.github-fork-ribbon.left-bottom{right:auto;left:0}.github-fork-ribbon.left-bottom,.github-fork-ribbon.right-bottom{top:auto;bottom:0}.github-fork-ribbon.left-top:before,.github-fork-ribbon.left-top:after,.github-fork-ribbon.left-bottom:before,.github-fork-ribbon.left-bottom:after{right:auto;left:-3.23em}.github-fork-ribbon.left-bottom:before,.github-fork-ribbon.left-bottom:after,.github-fork-ribbon.right-bottom:before,.github-fork-ribbon.right-bottom:after{top:auto;bottom:3.23em}.github-fork-ribbon.left-top:before,.github-fork-ribbon.left-top:after,.github-fork-ribbon.right-bottom:before,.github-fork-ribbon.right-bottom:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)} \ No newline at end of file diff --git a/waffle-tomcat10/css/print.css b/waffle-tomcat10/css/print.css new file mode 100644 index 0000000000..d637584360 --- /dev/null +++ b/waffle-tomcat10/css/print.css @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#banner, +#footer, +#leftcol, +#breadcrumbs, +.docs #toc, +.docs .courtesylinks, +#leftColumn, +#navColumn { + display: none !important; +} + +#bodyColumn, +body.docs div.docs { + margin: 0 !important; + border: none !important; +} diff --git a/waffle-tomcat10/css/site.css b/waffle-tomcat10/css/site.css new file mode 100644 index 0000000000..055e7e286a --- /dev/null +++ b/waffle-tomcat10/css/site.css @@ -0,0 +1 @@ +/* You can override this file with your own styles */ \ No newline at end of file diff --git a/waffle-tomcat10/dependencies.html b/waffle-tomcat10/dependencies.html new file mode 100644 index 0000000000..a5d7402834 --- /dev/null +++ b/waffle-tomcat10/dependencies.html @@ -0,0 +1,1411 @@ + + + + + + + + + + Project Dependencies – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Project Dependencies

    +

    compile

    +

    The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

    + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.github.wafflewaffle-jna-jakarta3.5.1jarMIT
    net.bytebuddybyte-buddy1.15.11jarApache License, Version 2.0
    net.bytebuddybyte-buddy-agent1.15.11jarApache License, Version 2.0
    +

    test

    +

    The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.github.hazendaz.jmockitjmockit1.55.0jarThe MIT License
    com.github.wafflewaffle-tests-jakarta3.5.1jarMIT
    net.sf.jopt-simplejopt-simple5.0.4jarThe MIT License
    org.apache.commonscommons-math33.6.1jarApache License, Version 2.0
    org.assertjassertj-core3.27.0jarApache License, Version 2.0
    org.junit.jupiterjunit-jupiter-engine5.11.4jarEclipse Public License v2.0
    org.openjdk.jmhjmh-core1.37jarGNU General Public License (GPL), version 2, with the Classpath exception
    org.openjdk.jmhjmh-generator-annprocess1.37jarGNU General Public License (GPL), version 2, with the Classpath exception
    org.slf4jslf4j-simple2.0.16jarMIT License
    +

    provided

    +

    The following is a list of provided dependencies for this project. These dependencies are required to compile the application, but should be provided by default when using the library:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.github.spotbugsspotbugs-annotations4.8.6jarGNU LESSER GENERAL PUBLIC LICENSE, Version 2.1
    com.google.errorproneerror_prone_annotations2.36.0jarApache 2.0
    com.google.j2objcj2objc-annotations3.0.0jarApache License, Version 2.0
    org.apache.tomcattomcat-api10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-catalina10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-coyote10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-jaspic-api10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-juli10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-servlet-api10.1.34jarApache License, Version 2.0 and + Common Development And Distribution License (CDDL) Version 1.0 and + Eclipse Public License - v 2.0
    org.apache.tomcattomcat-util10.1.34jarApache License, Version 2.0
    +

    Project Transitive Dependencies

    +

    The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

    +

    compile

    +

    The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.github.ben-manes.caffeinecaffeine3.1.8jarApache License, Version 2.0
    net.java.dev.jnajna5.16.0jarLGPL-2.1-or-laterApache-2.0
    net.java.dev.jnajna-platform5.16.0jarLGPL-2.1-or-laterApache-2.0
    org.checkerframeworkchecker-qual3.48.3jarThe MIT License
    org.slf4jjcl-over-slf4j2.0.16jarApache License, Version 2.0
    org.slf4jslf4j-api2.0.16jarMIT License
    +

    test

    +

    The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    org.apiguardianapiguardian-api1.1.2jarThe Apache License, Version 2.0
    org.junit.jupiterjunit-jupiter-api5.11.4jarEclipse Public License v2.0
    org.junit.platformjunit-platform-commons1.11.4jarEclipse Public License v2.0
    org.junit.platformjunit-platform-engine1.11.4jarEclipse Public License v2.0
    org.mockitomockito-core5.14.2jarMIT
    org.objenesisobjenesis3.4jarApache License, Version 2.0
    org.opentest4jopentest4j1.3.0jarThe Apache License, Version 2.0
    +

    provided

    +

    The following is a list of provided dependencies for this project. These dependencies are required to compile the application, but should be provided by default when using the library:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.google.code.findbugsjsr3053.0.2jarThe Apache Software License, Version 2.0
    org.apache.tomcattomcat-annotations-api10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-el-api10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-jni10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-jsp-api10.1.34jarApache License, Version 2.0
    org.apache.tomcattomcat-util-scan10.1.34jarApache License, Version 2.0
    +

    Project Dependency Graph

    + +
    +

    Dependency Tree

    +
    +

    Licenses

    +

    Apache 2.0: error-prone annotations

    +

    The Apache License, Version 2.0: org.apiguardian:apiguardian-api, org.opentest4j:opentest4j

    +

    MIT License: SLF4J API Module, SLF4J Simple Provider

    +

    Eclipse Public License v2.0: JUnit Jupiter API, JUnit Jupiter Engine, JUnit Platform Commons, JUnit Platform Engine API

    +

    Apache License, Version 2.0 and + Common Development And Distribution License (CDDL) Version 1.0 and + Eclipse Public License - v 2.0: tomcat-servlet-api

    +

    GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1: SpotBugs Annotations

    +

    LGPL-2.1-or-later: Java Native Access, Java Native Access Platform

    +

    The MIT License: Checker Qual, JOpt Simple, jmockit

    +

    Apache-2.0: Java Native Access, Java Native Access Platform

    +

    Apache License, Version 2.0: Apache Commons Math, AssertJ Core, Byte Buddy (without dependencies), Byte Buddy agent, Caffeine cache, J2ObjC Annotations, JCL 1.2 implemented over SLF4J, Objenesis, tomcat-annotations-api, tomcat-api, tomcat-catalina, tomcat-coyote, tomcat-el-api, tomcat-jaspic-api, tomcat-jni, tomcat-jsp-api, tomcat-juli, tomcat-util, tomcat-util-scan

    +

    MIT: mockito-core, waffle-jna-jakarta, waffle-tests-jakarta, waffle-tomcat10

    +

    GNU General Public License (GPL), version 2, with the Classpath exception: JMH Core, JMH Generators: Annotation Processors

    +

    The Apache Software License, Version 2.0: FindBugs-jsr305

    +

    Dependency File Details

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FilenameSizeEntriesClassesPackagesJava VersionDebug Information
    caffeine-3.1.8.jar889.2 kB713704311Yes
    jmockit-1.55.0.jar775.4 kB4804104811Yes
    spotbugs-annotations-4.8.6.jar15.3 kB312411.8Yes
    waffle-jna-jakarta-3.5.1.jar74.7 kB7355711Yes
    waffle-tests-jakarta-3.5.1.jar18.6 kB2515211Yes
    jsr305-3.0.2.jar19.9 kB463531.5Yes
    error_prone_annotations-2.36.0.jar19.4 kB47----
       • Root-402721.8Yes
       • Versioned-7119No
    j2objc-annotations-3.0.0.jar12.5 kB31----
       • Root-291711.8Yes
       • Versioned-2119No
    byte-buddy-1.15.11.jar8.5 MB5890----
       • Root-29502897381.5Yes
       • Versioned-29402898391.8Yes
    byte-buddy-agent-1.15.11.jar365.4 kB170----
       • Root-917221.5Yes
       • Versioned-797331.8Yes
    jna-5.16.0.jar2 MB19212541.8Yes
    jna-platform-5.16.0.jar1.4 MB13321284151.8Yes
    jopt-simple-5.0.4.jar78.1 kB715931.7Yes
    commons-math3-3.6.1.jar2.2 MB14021301751.5Yes
    tomcat-annotations-api-10.1.34.jar14.2 kB2618411Yes
    tomcat-api-10.1.34.jar11.7 kB1912211Yes
    tomcat-catalina-10.1.34.jar1.8 MB7796982911Yes
    tomcat-coyote-10.1.34.jar937.6 kB4854372411Yes
    tomcat-el-api-10.1.34.jar91.7 kB6154211Yes
    tomcat-jaspic-api-10.1.34.jar28.6 kB4635511Yes
    tomcat-jni-10.1.34.jar16.2 kB2012211Yes
    tomcat-jsp-api-10.1.34.jar78.6 kB8774411Yes
    tomcat-juli-10.1.34.jar48.8 kB3426311Yes
    tomcat-servlet-api-10.1.34.jar367 kB15289511Yes
    tomcat-util-10.1.34.jar221.3 kB1381131111Yes
    tomcat-util-scan-10.1.34.jar232.4 kB138118711Yes
    apiguardian-api-1.1.2.jar6.8 kB9321.6Yes
    assertj-core-3.27.0.jar1.4 MB883----
       • Root-879840271.8Yes
       • Versioned-4119No
    checker-qual-3.48.3.jar238.6 kB454381331.8Yes
    junit-jupiter-api-5.11.4.jar216.4 kB19718281.8Yes
    junit-jupiter-engine-5.11.4.jar260.1 kB15213591.8Yes
    junit-platform-commons-1.11.4.jar142 kB88----
       • Root-786481.8Yes
       • Versioned-10419Yes
    junit-platform-engine-1.11.4.jar246.8 kB177158101.8Yes
    mockito-core-5.14.2.jar707.7 kB6465746411Yes
    objenesis-3.4.jar49.1 kB5943101.8Yes
    jmh-core-1.37.jar553 kB363332131.8Yes
    jmh-generator-annprocess-1.37.jar30.9 kB26821.8Yes
    opentest4j-1.3.0.jar14.3 kB15921.6Yes
    jcl-over-slf4j-2.0.16.jar18.4 kB26----
       • Root-24821.8Yes
       • Versioned-2119No
    slf4j-api-2.0.16.jar69.4 kB71----
       • Root-695541.8Yes
       • Versioned-2119No
    slf4j-simple-2.0.16.jar15.7 kB22----
       • Root-20611.8Yes
       • Versioned-2119No
    TotalSizeEntriesClassesPackagesJava VersionDebug Information
    4124.2 MB15676115094971141
    compile: 9compile: 13.5 MBcompile: 8921compile: 5581compile: 10811compile: 9
    provided: 16provided: 3.9 MBprovided: 2140provided: 1789provided: 105provided: 16
    test: 16test: 6.7 MBtest: 4615test: 4139test: 28411test: 16
    +
    +
    +
    + + + diff --git a/waffle-tomcat10/dependency-check-report.html b/waffle-tomcat10/dependency-check-report.html new file mode 100644 index 0000000000..7cd8082fe6 --- /dev/null +++ b/waffle-tomcat10/dependency-check-report.html @@ -0,0 +1,695 @@ + + + + + Dependency-Check Report + + + + + + + + + + +
    + +

    Dependency-Check is an open source tool performing a best effort analysis of 3rd party dependencies; +false positives and false negatives may exist in the analysis performed by the tool. Use of the tool and +the reporting provided constitutes acceptance for use in an AS IS condition, and there are NO warranties, +implied or otherwise, with regard to the analysis or its use. Any use of the tool and the reporting provided +is at the user’s risk. In no event shall the copyright holder or OWASP be held liable for any damages whatsoever +arising out of or in connection with the use of this tool, the analysis performed, or the resulting report.

    +

    How to read the report | +Suppressing false positives | +Getting Help: github issues

    + Sponsor

    +

    Project: waffle-tomcat10

    com.github.waffle:waffle-tomcat10:3.5.1

    Scan Information (show all):
    • dependency-check version: 11.1.1
    • Report Generated On: Wed, 1 Jan 2025 01:32:24 -0500
    • Dependencies Scanned: 30 (25 unique)
    • Vulnerable Dependencies1
    • Vulnerabilities Found: 1
    • Vulnerabilities Suppressed: 0
    • ...

    Summary

    Display: Showing Vulnerable Dependencies (click to show all)

    DependencyVulnerability IDsPackageHighest SeverityCVE CountConfidenceEvidence Count
    byte-buddy-1.15.11.jarpkg:maven/net.bytebuddy/byte-buddy@1.15.11 029
    byte-buddy-agent-1.15.11.jar: attach_hotspot_windows.dll 02
    byte-buddy-agent-1.15.11.jar: attach_hotspot_windows.dll 02
    byte-buddy-agent-1.15.11.jarpkg:maven/net.bytebuddy/byte-buddy-agent@1.15.11 033
    caffeine-3.1.8.jarpkg:maven/com.github.ben-manes.caffeine/caffeine@3.1.8 037
    checker-qual-3.48.3.jarpkg:maven/org.checkerframework/checker-qual@3.48.3 044
    error_prone_annotations-2.36.0.jarpkg:maven/com.google.errorprone/error_prone_annotations@2.36.0 029
    j2objc-annotations-3.0.0.jarpkg:maven/com.google.j2objc/j2objc-annotations@3.0.0 033
    jcl-over-slf4j-2.0.16.jarpkg:maven/org.slf4j/jcl-over-slf4j@2.0.16 031
    jna-5.16.0.jar: jnidispatch.dll 02
    jna-5.16.0.jar: jnidispatch.dll 02
    jna-5.16.0.jar: jnidispatch.dll 02
    jna-5.16.0.jarcpe:2.3:a:oracle:java_se:5.16.0:*:*:*:*:*:*:*pkg:maven/net.java.dev.jna/jna@5.16.0 0Low48
    jna-platform-5.16.0.jarpkg:maven/net.java.dev.jna/jna-platform@5.16.0 044
    jsr305-3.0.2.jarpkg:maven/com.google.code.findbugs/jsr305@3.0.2 017
    slf4j-api-2.0.16.jarpkg:maven/org.slf4j/slf4j-api@2.0.16 029
    spotbugs-annotations-4.8.6.jarpkg:maven/com.github.spotbugs/spotbugs-annotations@4.8.6 053
    tomcat-annotations-api-10.1.34.jarcpe:2.3:a:www-sql_project:www-sql:10.1.34:*:*:*:*:*:*:*pkg:maven/org.apache.tomcat/tomcat-annotations-api@10.1.34 0Low30
    tomcat-api-10.1.34.jarcpe:2.3:a:apache:tomcat:10.1.34:*:*:*:*:*:*:*
    cpe:2.3:a:apache_tomcat:apache_tomcat:10.1.34:*:*:*:*:*:*:*
    pkg:maven/org.apache.tomcat/tomcat-api@10.1.34 0Highest24
    tomcat-catalina-10.1.34.jarcpe:2.3:a:apache:tomcat:10.1.34:*:*:*:*:*:*:*
    cpe:2.3:a:apache_tomcat:apache_tomcat:10.1.34:*:*:*:*:*:*:*
    pkg:maven/org.apache.tomcat/tomcat-catalina@10.1.34HIGH1Highest30
    tomcat-el-api-10.1.34.jarpkg:maven/org.apache.tomcat/tomcat-el-api@10.1.34 025
    tomcat-jni-10.1.34.jarpkg:maven/org.apache.tomcat/tomcat-jni@10.1.34 026
    tomcat-juli-10.1.34.jarpkg:maven/org.apache.tomcat/tomcat-juli@10.1.34 026
    tomcat-servlet-api-10.1.34.jarpkg:maven/org.apache.tomcat/tomcat-servlet-api@10.1.34 039
    waffle-jna-jakarta-3.5.1.jarpkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1 030

    Dependencies (vulnerable)

    byte-buddy-1.15.11.jar

    Description:

    +        Byte Buddy is a Java library for creating Java classes at run time.
    +        This artifact is a build of Byte Buddy with all ASM dependencies repackaged into its own name space.
    +    

    License:

    https://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\net\bytebuddy\byte-buddy\1.15.11\byte-buddy-1.15.11.jar
    MD5: 603bc53c7a294f23765bfb7e1820ad44
    SHA1: f61886478e0f9ee4c21d09574736f0ff45e0a46c
    SHA256:fa08998aae1e7bdae83bde0712c50e8444d71c0e0c196bb2247ade8d4ad0eb90
    Referenced In Project/Scope: waffle-tomcat10:compile
    byte-buddy-1.15.11.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    byte-buddy-agent-1.15.11.jar: attach_hotspot_windows.dll

    File Path: C:\Users\Jeremy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.15.11\byte-buddy-agent-1.15.11.jar\win32-x86-64\attach_hotspot_windows.dll
    MD5: 053a783e5777c6a9867c27d51af89677
    SHA1: 5ef4d98ae6a033a5707d0b5466e6138beb337e76
    SHA256:16d424423f9b09accf132ad35dbeaa52ac9f6bd45bba1406b89df851f651db20
    Referenced In Project/Scope: waffle-tomcat10:compile

    Identifiers

    • None

    byte-buddy-agent-1.15.11.jar: attach_hotspot_windows.dll

    File Path: C:\Users\Jeremy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.15.11\byte-buddy-agent-1.15.11.jar\win32-x86\attach_hotspot_windows.dll
    MD5: fbca33102ac97be0ed496c0f78e466b3
    SHA1: c4df05146a86a6d073769bb697d550ef42518ed5
    SHA256:810f94c4a2f5ca1a072c19859f7954fed9aa3a1dcb0d601e92d2338793202e72
    Referenced In Project/Scope: waffle-tomcat10:compile

    Identifiers

    • None

    byte-buddy-agent-1.15.11.jar

    Description:

    The Byte Buddy agent offers convenience for attaching an agent to the local or a remote VM.

    License:

    https://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.15.11\byte-buddy-agent-1.15.11.jar
    MD5: 449a1534609bf3535d74cbb10b4ed074
    SHA1: a38b16385e867f59a641330f0362ebe742788ed8
    SHA256:316d2c0795c2a4d4c4756f2e6f9349837c7430ac34e0477ead874d05f5cc19e5
    Referenced In Project/Scope: waffle-tomcat10:compile
    byte-buddy-agent-1.15.11.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    caffeine-3.1.8.jar

    Description:

    A high performance caching library

    License:

    Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\com\github\ben-manes\caffeine\caffeine\3.1.8\caffeine-3.1.8.jar
    MD5: b19301179903e8781776397d9923f7c8
    SHA1: 24795585df8afaf70a2cd534786904ea5889c047
    SHA256:7dd15f9df1be238ffaa367ce6f556737a88031de4294dad18eef57c474ddf1d3
    Referenced In Project/Scope: waffle-tomcat10:compile
    caffeine-3.1.8.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1

    Identifiers

    checker-qual-3.48.3.jar

    Description:

    checker-qual contains annotations (type qualifiers) that a programmerwrites to specify Java code for type-checking by the Checker Framework.

    License:

    The MIT License: http://opensource.org/licenses/MIT
    File Path: C:\Users\Jeremy\.m2\repository\org\checkerframework\checker-qual\3.48.3\checker-qual-3.48.3.jar
    MD5: 9fe3deae54d20bd78960459c952ac7d4
    SHA1: c48effe7d78de3cf5e8a98c614281ec6a2466a77
    SHA256:443685b1b232803baaf803c15d6f5a425473c6f7b81c5f276dfcf93288e389a5
    Referenced In Project/Scope: waffle-tomcat10:compile
    checker-qual-3.48.3.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1

    Identifiers

    error_prone_annotations-2.36.0.jar

    Description:

    Error Prone is a static analysis tool for Java that catches common programming mistakes at compile-time.

    License:

    Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\com\google\errorprone\error_prone_annotations\2.36.0\error_prone_annotations-2.36.0.jar
    MD5: 0e48e5ba2cd0a8d8d09bad849b99f6a6
    SHA1: 227d4d4957ccc3dc5761bd897e3a0ee587e750a7
    SHA256:77440e270b0bc9a249903c5a076c36a722c4886ca4f42675f2903a1c53ed61a5
    Referenced In Project/Scope: waffle-tomcat10:provided
    error_prone_annotations-2.36.0.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    j2objc-annotations-3.0.0.jar

    Description:

    +    A set of annotations that provide additional information to the J2ObjC
    +    translator to modify the result of translation.
    +  

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\com\google\j2objc\j2objc-annotations\3.0.0\j2objc-annotations-3.0.0.jar
    MD5: f59529b29202a5baf37f491ea5ec8627
    SHA1: 7399e65dd7e9ff3404f4535b2f017093bdb134c7
    SHA256:88241573467ddca44ffd4d74aa04c2bbfd11bf7c17e0c342c94c9de7a70a7c64
    Referenced In Project/Scope: waffle-tomcat10:provided
    j2objc-annotations-3.0.0.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    jcl-over-slf4j-2.0.16.jar

    Description:

    JCL 1.2 implemented over SLF4J

    License:

    Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\slf4j\jcl-over-slf4j\2.0.16\jcl-over-slf4j-2.0.16.jar
    MD5: c077b88c43f9d63f64f9880fdb457efb
    SHA1: 9d08badad22f1ac07deac9188ade596472a2bfd9
    SHA256:5744d62c5af556e839ab922c9fa3f737f0a5971e478ba68b2eb5256b2842ec78
    Referenced In Project/Scope: waffle-tomcat10:compile
    jcl-over-slf4j-2.0.16.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1

    Identifiers

    jna-5.16.0.jar: jnidispatch.dll

    File Path: C:\Users\Jeremy\.m2\repository\net\java\dev\jna\jna\5.16.0\jna-5.16.0.jar\com\sun\jna\win32-aarch64\jnidispatch.dll
    MD5: 302945a811fd8e21bcdd5226c73b6f74
    SHA1: 6b05e299ff2b3eb3b7b7aeac44263f715693607c
    SHA256:b8f98be314234cf12b5b46c29652f70c0f6abb93ae19b63d3fe2692062aa699d
    Referenced In Project/Scope: waffle-tomcat10:compile

    Identifiers

    • None

    jna-5.16.0.jar: jnidispatch.dll

    File Path: C:\Users\Jeremy\.m2\repository\net\java\dev\jna\jna\5.16.0\jna-5.16.0.jar\com\sun\jna\win32-x86-64\jnidispatch.dll
    MD5: 2d2475f1f026dd54e9f3e787ae4f81da
    SHA1: 27ff882ac271db547aee520b38e3ba9aa91e136c
    SHA256:5a7ff949f6d93d86491eb5b26b1cfc60051168a60622650224b89995ac420023
    Referenced In Project/Scope: waffle-tomcat10:compile

    Identifiers

    • None

    jna-5.16.0.jar: jnidispatch.dll

    File Path: C:\Users\Jeremy\.m2\repository\net\java\dev\jna\jna\5.16.0\jna-5.16.0.jar\com\sun\jna\win32-x86\jnidispatch.dll
    MD5: 0caa1ef75a807f9dde05084fa2219a5c
    SHA1: 2f5e1cd82cde192905c7510ce99037b67d980640
    SHA256:752d597cee7e95cb517327146bf42f124c0d6c0bc48b3ecc3b1b3b0531a52f44
    Referenced In Project/Scope: waffle-tomcat10:compile

    Identifiers

    • None

    jna-5.16.0.jar

    Description:

    Java Native Access

    License:

    LGPL-2.1-or-later: https://www.gnu.org/licenses/old-licenses/lgpl-2.1
    +Apache-2.0: https://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\net\java\dev\jna\jna\5.16.0\jna-5.16.0.jar
    MD5: accc2e2b8676434a87f4f73fb4d90b44
    SHA1: ebea09f91dc9f7048099f963fb8d6f919f0a4d9c
    SHA256:3f5233589a799eb66dc2969afa3433fb56859d3d787c58b9bc7dd9e86f0a250c
    Referenced In Project/Scope: waffle-tomcat10:compile
    jna-5.16.0.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1

    Identifiers

    jna-platform-5.16.0.jar

    Description:

    Java Native Access Platform

    License:

    LGPL-2.1-or-later: https://www.gnu.org/licenses/old-licenses/lgpl-2.1
    +Apache-2.0: https://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\net\java\dev\jna\jna-platform\5.16.0\jna-platform-5.16.0.jar
    MD5: 12ba6b7a7752ecf0a5baed725f3192c2
    SHA1: b2a9065f97c166893d504b164706512338e3bbc2
    SHA256:e5a79523964509757555782bb60283e4902611013f107e4600dc93298f73f382
    Referenced In Project/Scope: waffle-tomcat10:compile
    jna-platform-5.16.0.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1

    Identifiers

    jsr305-3.0.2.jar

    Description:

    JSR305 Annotations for Findbugs

    License:

    The Apache Software License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar
    MD5: dd83accb899363c32b07d7a1b2e4ce40
    SHA1: 25ea2e8b0c338a877313bd4672d3fe056ea78f0d
    SHA256:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7
    Referenced In Project/Scope: waffle-tomcat10:provided
    jsr305-3.0.2.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.spotbugs/spotbugs-annotations@4.8.6

    Identifiers

    slf4j-api-2.0.16.jar

    Description:

    The slf4j API

    License:

    http://www.opensource.org/licenses/mit-license.php
    File Path: C:\Users\Jeremy\.m2\repository\org\slf4j\slf4j-api\2.0.16\slf4j-api-2.0.16.jar
    MD5: c8de8f5d740584cb24b5652cfba8b3c4
    SHA1: 0172931663a09a1fa515567af5fbef00897d3c04
    SHA256:a12578dde1ba00bd9b816d388a0b879928d00bab3c83c240f7013bf4196c579a
    Referenced In Project/Scope: waffle-tomcat10:compile
    slf4j-api-2.0.16.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-jna-jakarta@3.5.1

    Identifiers

    spotbugs-annotations-4.8.6.jar

    Description:

    Annotations the SpotBugs tool supports

    License:

    GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
    File Path: C:\Users\Jeremy\.m2\repository\com\github\spotbugs\spotbugs-annotations\4.8.6\spotbugs-annotations-4.8.6.jar
    MD5: 0806b237c67c69869506ce3ced9a722f
    SHA1: 1dcffed3e561ed32134a0dff4717f19bc2fdf4d8
    SHA256:4548b74a815ed44f5480ca4f06204a8b00809dc7e5f6a825a9edf18f40377b65
    Referenced In Project/Scope: waffle-tomcat10:provided
    spotbugs-annotations-4.8.6.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    tomcat-annotations-api-10.1.34.jar

    Description:

    Annotations Package

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-annotations-api\10.1.34\tomcat-annotations-api-10.1.34.jar
    MD5: fd4182a557eca3319be849dbb3c6fa38
    SHA1: b072912234e5710fd5330ae980a624fc1d364540
    SHA256:bdc6351ba265ee9037212cfcef31d0c74703a814d4f9c695f2010a1bd223dc27
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-annotations-api-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/org.apache.tomcat/tomcat-catalina@10.1.34

    Identifiers

    tomcat-api-10.1.34.jar

    Description:

    Definition of interfaces shared by Catalina and Jasper

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-api\10.1.34\tomcat-api-10.1.34.jar
    MD5: 1c4fd2ee38cbd85f1522b0953e0bb5be
    SHA1: 993e96fa7aaf6f84eed4f7a97facd575d9e13bde
    SHA256:0b5e68ee88e8a1f1b57604bc22efe7f3511cf68518e22abf2712a6118b8ec154
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-api-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    tomcat-catalina-10.1.34.jar

    Description:

    Tomcat Servlet Engine Core Classes and Standard implementations

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-catalina\10.1.34\tomcat-catalina-10.1.34.jar
    MD5: 5d393079517c92b1a8a692a1d572bd20
    SHA1: 7fe070d949d4487c90d48888f4dd014cfdcfb5de
    SHA256:a7612bda58b671c9e57b7abfd547dc00063497c883a67dc99a5fd3d3d7ff5259
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-catalina-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    CVE-2024-56337 (OSSINDEX)  

    Time-of-check Time-of-use (TOCTOU) Race Condition vulnerability in Apache Tomcat.
    +
    +This issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.1, from 10.1.0-M1 through 10.1.33, from 9.0.0.M1 through 9.0.97.
    +
    +The mitigation for CVE-2024-50379 was incomplete.
    +
    +Users running Tomcat on a case insensitive file system with the default servlet write enabled (readonly initialisation 
    +parameter set to the non-default value of false) may need additional configuration to fully mitigate CVE-2024-50379 depending on which version of Java they are using with Tomcat:
    +- running on Java 8 or Java 11: the system property sun.io.useCanonCaches must be explicitly set to false (it defaults to true)
    +- running on Java 17: the system property sun.io.useCanonCaches, if set, must be set to false (it defaults to false)
    +- running on Java 21 onwards: no further configuration is required (the system property and the problematic cache have been removed)
    +
    +Tomcat 11.0.3, 10.1.35 and 9.0.99 onwards will include checks that sun.io.useCanonCaches is set appropriately before allowing the default servlet to be write enabled on a case insensitive file system. Tomcat will also set sun.io.useCanonCaches to false by default where it can.
    +
    +Sonatype's research suggests that this CVE's details differ from those defined at NVD. See https://ossindex.sonatype.org/vulnerability/CVE-2024-56337 for details
    CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition

    CVSSv2:
    • Base Score: HIGH (7.199999809265137)
    • Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U

    References:

    Vulnerable Software & Versions (OSSINDEX):

    • cpe:2.3:a:org.apache.tomcat:tomcat-catalina:10.1.34:*:*:*:*:*:*:*

    tomcat-el-api-10.1.34.jar

    Description:

    Expression language package

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-el-api\10.1.34\tomcat-el-api-10.1.34.jar
    MD5: 060c3608b462ea98a33d96f1a2cfef7c
    SHA1: 0d4f6a9db064198f738d2304d6d0baf27c11c8a9
    SHA256:d91a9cba4c12ecd33e3c76a3fbf616c761caad50561abeead8ff7dbbfd5753bb
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-el-api-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/org.apache.tomcat/tomcat-catalina@10.1.34

    Identifiers

    tomcat-jni-10.1.34.jar

    Description:

    Interface code to the native connector

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-jni\10.1.34\tomcat-jni-10.1.34.jar
    MD5: 4453b69aa8248f4430485b2d230e93c0
    SHA1: 5148d4d8a3b0b82c733212462d10155bdb6ec25d
    SHA256:4deedd83ee5962ed71a9b4c4e824cdea027d340cb402b7257bd3978ef6a5ef31
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-jni-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/org.apache.tomcat/tomcat-catalina@10.1.34

    Identifiers

    tomcat-juli-10.1.34.jar

    Description:

    Tomcat Core Logging Package

    License:

    Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-juli\10.1.34\tomcat-juli-10.1.34.jar
    MD5: 1990cd30ff077a788979bf80623927e5
    SHA1: 3e730bdbf592151765b48efe1f753ddd4de94601
    SHA256:08179379975e14a7cf569ab89a5481dd821cd7097a5db680c950a8dd1844282b
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-juli-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    tomcat-servlet-api-10.1.34.jar

    Description:

    jakarta.servlet package

    License:

    +        Apache License, Version 2.0 and
    +        Common Development And Distribution License (CDDL) Version 1.0 and
    +        Eclipse Public License - v 2.0
    +      : 
    +        http://www.apache.org/licenses/LICENSE-2.0.txt and
    +        http://www.opensource.org/licenses/cddl1.txt and
    +        https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
    +      
    File Path: C:\Users\Jeremy\.m2\repository\org\apache\tomcat\tomcat-servlet-api\10.1.34\tomcat-servlet-api-10.1.34.jar
    MD5: 1625f9a63c09c6047e10fb147a4e540b
    SHA1: 680a730f85a503c6a18377b8ac0a83fc42db88be
    SHA256:0846819339597d259b89c1a7ab27824027c5bbf38b576addc48060214f7d1f36
    Referenced In Project/Scope: waffle-tomcat10:provided
    tomcat-servlet-api-10.1.34.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers

    waffle-jna-jakarta-3.5.1.jar

    Description:

    WAFFLE JNA Jakarta Pakage implementation

    File Path: C:\Users\Jeremy\GitHub\waffle\Source\JNA\target\checkout\Source\JNA\waffle-jna-jakarta\target\waffle-jna-jakarta-3.5.1.jar
    MD5: 4292b31211ec75d0a54780009f620fd7
    SHA1: a54b03b4de48b62188b183e04313092119f3e247
    SHA256:e53d74bd6e09b543b97ccb7b5aff7dbdb1a9058066eafb9c2573c75adf254703
    Referenced In Project/Scope: waffle-tomcat10:compile
    waffle-jna-jakarta-3.5.1.jar is in the transitive dependency tree of the listed items.Included by: pkg:maven/com.github.waffle/waffle-tomcat10@3.5.1

    Identifiers



    This report contains data retrieved from the National Vulnerability Database.
    This report may contain data retrieved from the CISA Known Exploited Vulnerability Catalog.
    This report may contain data retrieved from the Github Advisory Database (via NPM Audit API).
    This report may contain data retrieved from RetireJS.
    This report may contain data retrieved from the Sonatype OSS Index.
    \ No newline at end of file diff --git a/waffle-tomcat10/dependency-info.html b/waffle-tomcat10/dependency-info.html new file mode 100644 index 0000000000..aec94097d9 --- /dev/null +++ b/waffle-tomcat10/dependency-info.html @@ -0,0 +1,166 @@ + + + + + + + + + + Maven Coordinates – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Maven Coordinates

    +

    Apache Maven

    +
    <dependency>
    +  <groupId>com.github.waffle</groupId>
    +  <artifactId>waffle-tomcat10</artifactId>
    +  <version>3.5.1</version>
    +</dependency>
    +

    Apache Ivy

    +
    <dependency org="com.github.waffle" name="waffle-tomcat10" rev="3.5.1">
    +  <artifact name="waffle-tomcat10" type="jar" />
    +</dependency>
    +

    Groovy Grape

    +
    @Grapes(
    +@Grab(group='com.github.waffle', module='waffle-tomcat10', version='3.5.1')
    +)
    +

    Gradle/Grails

    +
    implementation 'com.github.waffle:waffle-tomcat10:3.5.1'
    +

    Scala SBT

    +
    libraryDependencies += "com.github.waffle" % "waffle-tomcat10" % "3.5.1"
    +

    Leiningen

    +
    [com.github.waffle/waffle-tomcat10 "3.5.1"]
    +
    +
    +
    + + + diff --git a/waffle-tomcat10/dependency-updates-report.html b/waffle-tomcat10/dependency-updates-report.html new file mode 100644 index 0000000000..d9ba1560ca --- /dev/null +++ b/waffle-tomcat10/dependency-updates-report.html @@ -0,0 +1,999 @@ + + + + + + + + + + Dependency Updates Report – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Overview

    +

    This report summarizes newer versions that may be available for your project's various dependencies.

    + + + + + + + + + + + + + + + + + + + + + +
    # of dependencies using the latest version available13
    # of dependencies where the next version available is smaller than an incremental version update0
    # of dependencies where the next version available is an incremental version update0
    # of dependencies where the next version available is a minor version update1
    # of dependencies where the next version available is a major version update8
    +

    Dependency Management

    +

    This project does not declare any dependencies in a dependencyManagement section.

    +

    Dependencies

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StatusGroup IdArtifact IdCurrent VersionScopeClassifierTypeLatest SubincrementalLatest IncrementalLatest MinorLatest Major
    com.github.hazendaz.jmockitjmockit1.55.0testjar
    com.github.spotbugsspotbugs-annotations4.8.6providedjar
    com.github.wafflewaffle-jna-jakarta3.5.1compilejar
    com.github.wafflewaffle-tests-jakarta3.5.1testjar
    com.google.errorproneerror_prone_annotations2.36.0providedjar
    com.google.j2objcj2objc-annotations3.0.0providedjar
    net.bytebuddybyte-buddy1.15.11compilejar
    net.bytebuddybyte-buddy-agent1.15.11compilejar
    net.sf.jopt-simplejopt-simple5.0.4testjar6.0-alpha-3
    org.apache.commonscommons-math33.6.1testjar
    org.apache.tomcattomcat-api10.1.34providedjar11.0.2
    org.apache.tomcattomcat-catalina10.1.34providedjar11.0.2
    org.apache.tomcattomcat-coyote10.1.34providedjar11.0.2
    org.apache.tomcattomcat-jaspic-api10.1.34providedjar11.0.2
    org.apache.tomcattomcat-juli10.1.34providedjar11.0.2
    org.apache.tomcattomcat-servlet-api10.1.34providedjar11.0.2
    org.apache.tomcattomcat-util10.1.34providedjar11.0.2
    org.assertjassertj-core3.27.0testjar
    org.junit.jupiterjunit-jupiter-engine5.11.4testjar
    org.openjdk.jmhjmh-core1.37testjar
    org.openjdk.jmhjmh-generator-annprocess1.37testjar
    org.slf4jslf4j-simple2.0.16testjar2.1.0-alpha1
    StatusGroup IdArtifact IdCurrent VersionScopeClassifierTypeLatest SubincrementalLatest IncrementalLatest MinorLatest Major
    +

    Dependency Updates

    +

    -

    +

    com.github.hazendaz.jmockit:jmockit

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idcom.github.hazendaz.jmockit
    Artifact Idjmockit
    Current Version1.55.0
    Scopetest
    Classifier
    Typejar
    +

    com.github.spotbugs:spotbugs-annotations

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idcom.github.spotbugs
    Artifact Idspotbugs-annotations
    Current Version4.8.6
    Scopeprovided
    Classifier
    Typejar
    +

    com.github.waffle:waffle-jna-jakarta

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idcom.github.waffle
    Artifact Idwaffle-jna-jakarta
    Current Version3.5.1
    Scopecompile
    Classifier
    Typejar
    +

    com.github.waffle:waffle-tests-jakarta

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idcom.github.waffle
    Artifact Idwaffle-tests-jakarta
    Current Version3.5.1
    Scopetest
    Classifier
    Typejar
    +

    com.google.errorprone:error_prone_annotations

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idcom.google.errorprone
    Artifact Iderror_prone_annotations
    Current Version2.36.0
    Scopeprovided
    Classifier
    Typejar
    +

    com.google.j2objc:j2objc-annotations

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idcom.google.j2objc
    Artifact Idj2objc-annotations
    Current Version3.0.0
    Scopeprovided
    Classifier
    Typejar
    +

    net.bytebuddy:byte-buddy

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idnet.bytebuddy
    Artifact Idbyte-buddy
    Current Version1.15.11
    Scopecompile
    Classifier
    Typejar
    +

    net.bytebuddy:byte-buddy-agent

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idnet.bytebuddy
    Artifact Idbyte-buddy-agent
    Current Version1.15.11
    Scopecompile
    Classifier
    Typejar
    +

    net.sf.jopt-simple:jopt-simple

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idnet.sf.jopt-simple
    Artifact Idjopt-simple
    Current Version5.0.4
    Scopetest
    Classifier
    Typejar
    Newer versions6.0-alpha-1
    6.0-alpha-2
    6.0-alpha-3 Latest Major
    +

    org.apache.commons:commons-math3

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.apache.commons
    Artifact Idcommons-math3
    Current Version3.6.1
    Scopetest
    Classifier
    Typejar
    +

    org.apache.tomcat:tomcat-api

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-api
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.apache.tomcat:tomcat-catalina

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-catalina
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.apache.tomcat:tomcat-coyote

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-coyote
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.apache.tomcat:tomcat-jaspic-api

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-jaspic-api
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.apache.tomcat:tomcat-juli

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-juli
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.apache.tomcat:tomcat-servlet-api

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-servlet-api
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.apache.tomcat:tomcat-util

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer major version available. Major updates are rarely passive.
    Group Idorg.apache.tomcat
    Artifact Idtomcat-util
    Current Version10.1.34
    Scopeprovided
    Classifier
    Typejar
    Newer versions11.0.0-M1
    11.0.0-M3
    11.0.0-M4
    11.0.0-M5
    11.0.0-M6
    11.0.0-M7
    11.0.0-M9
    11.0.0-M10
    11.0.0-M11
    11.0.0-M12
    11.0.0-M13
    11.0.0-M14
    11.0.0-M15
    11.0.0-M16
    11.0.0-M17
    11.0.0-M18
    11.0.0-M19
    11.0.0-M20
    11.0.0-M21
    11.0.0-M22
    11.0.0-M24
    11.0.0-M25
    11.0.0-M26
    11.0.0
    11.0.1
    11.0.2 Latest Major
    +

    org.assertj:assertj-core

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.assertj
    Artifact Idassertj-core
    Current Version3.27.0
    Scopetest
    Classifier
    Typejar
    +

    org.junit.jupiter:junit-jupiter-engine

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.junit.jupiter
    Artifact Idjunit-jupiter-engine
    Current Version5.11.4
    Scopetest
    Classifier
    Typejar
    +

    org.openjdk.jmh:jmh-core

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.openjdk.jmh
    Artifact Idjmh-core
    Current Version1.37
    Scopetest
    Classifier
    Typejar
    +

    org.openjdk.jmh:jmh-generator-annprocess

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.openjdk.jmh
    Artifact Idjmh-generator-annprocess
    Current Version1.37
    Scopetest
    Classifier
    Typejar
    +

    org.slf4j:slf4j-simple

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Idorg.slf4j
    Artifact Idslf4j-simple
    Current Version2.0.16
    Scopetest
    Classifier
    Typejar
    Newer versions2.1.0-alpha0
    2.1.0-alpha1 Latest Minor
    +
    +
    +
    + + + diff --git a/waffle-tomcat10/distribution-management.html b/waffle-tomcat10/distribution-management.html new file mode 100644 index 0000000000..b237a813d0 --- /dev/null +++ b/waffle-tomcat10/distribution-management.html @@ -0,0 +1,151 @@ + + + + + + + + + + Project Distribution Management – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Overview

    +

    The following is the distribution management information used by this project.

    +

    Repository - ossrh

    https://oss.sonatype.org/service/local/staging/deploy/maven2/
    +

    Snapshot Repository - ossrh

    https://oss.sonatype.org/content/repositories/snapshots
    +

    Site - gh-pages-scm

    +

    scm:git:ssh://git@github.com/Waffle/waffle.git/waffle-tomcat10

    +
    +
    +
    + + + diff --git a/waffle-tomcat10/fonts/glyphicons-halflings-regular.eot b/waffle-tomcat10/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000..423bd5d3a2 Binary files /dev/null and b/waffle-tomcat10/fonts/glyphicons-halflings-regular.eot differ diff --git a/waffle-tomcat10/fonts/glyphicons-halflings-regular.svg b/waffle-tomcat10/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000000..4469488747 --- /dev/null +++ b/waffle-tomcat10/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/waffle-tomcat10/fonts/glyphicons-halflings-regular.ttf b/waffle-tomcat10/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000..a498ef4e7c Binary files /dev/null and b/waffle-tomcat10/fonts/glyphicons-halflings-regular.ttf differ diff --git a/waffle-tomcat10/fonts/glyphicons-halflings-regular.woff b/waffle-tomcat10/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000..d83c539b82 Binary files /dev/null and b/waffle-tomcat10/fonts/glyphicons-halflings-regular.woff differ diff --git a/waffle-tomcat10/images/accessories-text-editor.png b/waffle-tomcat10/images/accessories-text-editor.png new file mode 100644 index 0000000000..abc3366eda Binary files /dev/null and b/waffle-tomcat10/images/accessories-text-editor.png differ diff --git a/waffle-tomcat10/images/add.gif b/waffle-tomcat10/images/add.gif new file mode 100644 index 0000000000..1cb3dbf936 Binary files /dev/null and b/waffle-tomcat10/images/add.gif differ diff --git a/waffle-tomcat10/images/apache-maven-project-2.png b/waffle-tomcat10/images/apache-maven-project-2.png new file mode 100644 index 0000000000..a44db6ed08 Binary files /dev/null and b/waffle-tomcat10/images/apache-maven-project-2.png differ diff --git a/waffle-tomcat10/images/application-certificate.png b/waffle-tomcat10/images/application-certificate.png new file mode 100644 index 0000000000..cc6aff616f Binary files /dev/null and b/waffle-tomcat10/images/application-certificate.png differ diff --git a/waffle-tomcat10/images/close.gif b/waffle-tomcat10/images/close.gif new file mode 100644 index 0000000000..1c26bbc526 Binary files /dev/null and b/waffle-tomcat10/images/close.gif differ diff --git a/waffle-tomcat10/images/contact-new.png b/waffle-tomcat10/images/contact-new.png new file mode 100644 index 0000000000..ebc4316d84 Binary files /dev/null and b/waffle-tomcat10/images/contact-new.png differ diff --git a/waffle-tomcat10/images/document-properties.png b/waffle-tomcat10/images/document-properties.png new file mode 100644 index 0000000000..34c2409a7c Binary files /dev/null and b/waffle-tomcat10/images/document-properties.png differ diff --git a/waffle-tomcat10/images/drive-harddisk.png b/waffle-tomcat10/images/drive-harddisk.png new file mode 100644 index 0000000000..d7ce475f83 Binary files /dev/null and b/waffle-tomcat10/images/drive-harddisk.png differ diff --git a/waffle-tomcat10/images/fix.gif b/waffle-tomcat10/images/fix.gif new file mode 100644 index 0000000000..b7eb3dc442 Binary files /dev/null and b/waffle-tomcat10/images/fix.gif differ diff --git a/waffle-tomcat10/images/icon_error_sml.gif b/waffle-tomcat10/images/icon_error_sml.gif new file mode 100644 index 0000000000..12e9a01a93 Binary files /dev/null and b/waffle-tomcat10/images/icon_error_sml.gif differ diff --git a/waffle-tomcat10/images/icon_help_sml.gif b/waffle-tomcat10/images/icon_help_sml.gif new file mode 100644 index 0000000000..aaf20e6eea Binary files /dev/null and b/waffle-tomcat10/images/icon_help_sml.gif differ diff --git a/waffle-tomcat10/images/icon_info_sml.gif b/waffle-tomcat10/images/icon_info_sml.gif new file mode 100644 index 0000000000..b776326703 Binary files /dev/null and b/waffle-tomcat10/images/icon_info_sml.gif differ diff --git a/waffle-tomcat10/images/icon_success_sml.gif b/waffle-tomcat10/images/icon_success_sml.gif new file mode 100644 index 0000000000..0a195279b3 Binary files /dev/null and b/waffle-tomcat10/images/icon_success_sml.gif differ diff --git a/waffle-tomcat10/images/icon_warning_sml.gif b/waffle-tomcat10/images/icon_warning_sml.gif new file mode 100644 index 0000000000..ac6ad6ada3 Binary files /dev/null and b/waffle-tomcat10/images/icon_warning_sml.gif differ diff --git a/waffle-tomcat10/images/image-x-generic.png b/waffle-tomcat10/images/image-x-generic.png new file mode 100644 index 0000000000..ab49efb345 Binary files /dev/null and b/waffle-tomcat10/images/image-x-generic.png differ diff --git a/waffle-tomcat10/images/internet-web-browser.png b/waffle-tomcat10/images/internet-web-browser.png new file mode 100644 index 0000000000..307d6aca61 Binary files /dev/null and b/waffle-tomcat10/images/internet-web-browser.png differ diff --git a/waffle-tomcat10/images/logos/build-by-maven-black.png b/waffle-tomcat10/images/logos/build-by-maven-black.png new file mode 100644 index 0000000000..919fd0f66a Binary files /dev/null and b/waffle-tomcat10/images/logos/build-by-maven-black.png differ diff --git a/waffle-tomcat10/images/logos/build-by-maven-white.png b/waffle-tomcat10/images/logos/build-by-maven-white.png new file mode 100644 index 0000000000..7d44c9c2e5 Binary files /dev/null and b/waffle-tomcat10/images/logos/build-by-maven-white.png differ diff --git a/waffle-tomcat10/images/logos/maven-feather.png b/waffle-tomcat10/images/logos/maven-feather.png new file mode 100644 index 0000000000..b5ada836e9 Binary files /dev/null and b/waffle-tomcat10/images/logos/maven-feather.png differ diff --git a/waffle-tomcat10/images/network-server.png b/waffle-tomcat10/images/network-server.png new file mode 100644 index 0000000000..1d12e1938a Binary files /dev/null and b/waffle-tomcat10/images/network-server.png differ diff --git a/waffle-tomcat10/images/package-x-generic.png b/waffle-tomcat10/images/package-x-generic.png new file mode 100644 index 0000000000..8b7e9e67b5 Binary files /dev/null and b/waffle-tomcat10/images/package-x-generic.png differ diff --git a/waffle-tomcat10/images/profiles/pre-release.png b/waffle-tomcat10/images/profiles/pre-release.png new file mode 100644 index 0000000000..d448e850cd Binary files /dev/null and b/waffle-tomcat10/images/profiles/pre-release.png differ diff --git a/waffle-tomcat10/images/profiles/retired.png b/waffle-tomcat10/images/profiles/retired.png new file mode 100644 index 0000000000..f89f6a29c6 Binary files /dev/null and b/waffle-tomcat10/images/profiles/retired.png differ diff --git a/waffle-tomcat10/images/profiles/sandbox.png b/waffle-tomcat10/images/profiles/sandbox.png new file mode 100644 index 0000000000..f88b362676 Binary files /dev/null and b/waffle-tomcat10/images/profiles/sandbox.png differ diff --git a/waffle-tomcat10/images/remove.gif b/waffle-tomcat10/images/remove.gif new file mode 100644 index 0000000000..fc65631cad Binary files /dev/null and b/waffle-tomcat10/images/remove.gif differ diff --git a/waffle-tomcat10/images/rss.png b/waffle-tomcat10/images/rss.png new file mode 100644 index 0000000000..a9850ee2cd Binary files /dev/null and b/waffle-tomcat10/images/rss.png differ diff --git a/waffle-tomcat10/images/update.gif b/waffle-tomcat10/images/update.gif new file mode 100644 index 0000000000..b2a6d0bf63 Binary files /dev/null and b/waffle-tomcat10/images/update.gif differ diff --git a/waffle-tomcat10/images/waffle.jpg b/waffle-tomcat10/images/waffle.jpg new file mode 100644 index 0000000000..00455a8db4 Binary files /dev/null and b/waffle-tomcat10/images/waffle.jpg differ diff --git a/waffle-tomcat10/images/window-new.png b/waffle-tomcat10/images/window-new.png new file mode 100644 index 0000000000..0e12ef954c Binary files /dev/null and b/waffle-tomcat10/images/window-new.png differ diff --git a/waffle-tomcat10/img/glyphicons-halflings-white.png b/waffle-tomcat10/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000..3bf6484a29 Binary files /dev/null and b/waffle-tomcat10/img/glyphicons-halflings-white.png differ diff --git a/waffle-tomcat10/img/glyphicons-halflings.png b/waffle-tomcat10/img/glyphicons-halflings.png new file mode 100644 index 0000000000..a996999320 Binary files /dev/null and b/waffle-tomcat10/img/glyphicons-halflings.png differ diff --git a/waffle-tomcat10/index.html b/waffle-tomcat10/index.html new file mode 100644 index 0000000000..06b4f1c9ea --- /dev/null +++ b/waffle-tomcat10/index.html @@ -0,0 +1,147 @@ + + + + + + + + + + About – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    About waffle-tomcat10

    +

    Tomcat 10 integration for WAFFLE

    +
    +
    +
    + + + diff --git a/waffle-tomcat10/issue-management.html b/waffle-tomcat10/issue-management.html new file mode 100644 index 0000000000..3b16193145 --- /dev/null +++ b/waffle-tomcat10/issue-management.html @@ -0,0 +1,150 @@ + + + + + + + + + + Issue Management – waffle-tomcat10 + + + + + + + +
    +
    + + + +
    +
    +
    + + +
    +
    +
    +

    Overview

    +

    This project uses Github to manage its issues.

    +

    Issue Management

    +

    Issues, bugs, and feature requests should be submitted to the following issue management system for this project.

    +
    https://github.com/Waffle/waffle/issues
    +
    +
    +
    + + + diff --git a/waffle-tomcat10/jacoco/index.html b/waffle-tomcat10/jacoco/index.html new file mode 100644 index 0000000000..153a1c537e --- /dev/null +++ b/waffle-tomcat10/jacoco/index.html @@ -0,0 +1 @@ +waffle-tomcat10

    waffle-tomcat10

    ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
    Total317 of 1,30375%37 of 10063%37977831584505
    waffle.apache31798675%376363%37977831584505
    \ No newline at end of file diff --git a/waffle-tomcat10/jacoco/jacoco-resources/branchfc.gif b/waffle-tomcat10/jacoco/jacoco-resources/branchfc.gif new file mode 100644 index 0000000000..989b46d304 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/branchfc.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/branchnc.gif b/waffle-tomcat10/jacoco/jacoco-resources/branchnc.gif new file mode 100644 index 0000000000..1933e07c37 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/branchnc.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/branchpc.gif b/waffle-tomcat10/jacoco/jacoco-resources/branchpc.gif new file mode 100644 index 0000000000..cbf711b703 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/branchpc.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/bundle.gif b/waffle-tomcat10/jacoco/jacoco-resources/bundle.gif new file mode 100644 index 0000000000..fca9c53e62 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/bundle.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/class.gif b/waffle-tomcat10/jacoco/jacoco-resources/class.gif new file mode 100644 index 0000000000..eb348fb0d4 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/class.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/down.gif b/waffle-tomcat10/jacoco/jacoco-resources/down.gif new file mode 100644 index 0000000000..440a14db74 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/down.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/greenbar.gif b/waffle-tomcat10/jacoco/jacoco-resources/greenbar.gif new file mode 100644 index 0000000000..0ba6567253 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/greenbar.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/group.gif b/waffle-tomcat10/jacoco/jacoco-resources/group.gif new file mode 100644 index 0000000000..a4ea580d27 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/group.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/method.gif b/waffle-tomcat10/jacoco/jacoco-resources/method.gif new file mode 100644 index 0000000000..7d24707ee8 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/method.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/package.gif b/waffle-tomcat10/jacoco/jacoco-resources/package.gif new file mode 100644 index 0000000000..131c28da40 Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/package.gif differ diff --git a/waffle-tomcat10/jacoco/jacoco-resources/prettify.css b/waffle-tomcat10/jacoco/jacoco-resources/prettify.css new file mode 100644 index 0000000000..be5166e0fc --- /dev/null +++ b/waffle-tomcat10/jacoco/jacoco-resources/prettify.css @@ -0,0 +1,13 @@ +/* Pretty printing styles. Used with prettify.js. */ + +.str { color: #2A00FF; } +.kwd { color: #7F0055; font-weight:bold; } +.com { color: #3F5FBF; } +.typ { color: #606; } +.lit { color: #066; } +.pun { color: #660; } +.pln { color: #000; } +.tag { color: #008; } +.atn { color: #606; } +.atv { color: #080; } +.dec { color: #606; } diff --git a/waffle-tomcat10/jacoco/jacoco-resources/prettify.js b/waffle-tomcat10/jacoco/jacoco-resources/prettify.js new file mode 100644 index 0000000000..b2766fe0a3 --- /dev/null +++ b/waffle-tomcat10/jacoco/jacoco-resources/prettify.js @@ -0,0 +1,1510 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + *

    + * + * For a fairly comprehensive set of languages see the + * README + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + *

    + * Usage:

      + *
    1. include this source file in an html page via + * {@code } + *
    2. define style rules. See the example page for examples. + *
    3. mark the {@code
      } and {@code } tags in your source with
      + *    {@code class=prettyprint.}
      + *    You can also use the (html deprecated) {@code } tag, but the pretty
      + *    printer needs to do more substantial DOM manipulations to support that, so
      + *    some css styles may not be preserved.
      + * </ol>
      + * That's it.  I wanted to keep the API as simple as possible, so there's no
      + * need to specify which language the code is in, but if you wish, you can add
      + * another class to the {@code <pre>} or {@code <code>} element to specify the
      + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
      + * starts with "lang-" followed by a file extension, specifies the file type.
      + * See the "lang-*.js" files in this directory for code that implements
      + * per-language file handlers.
      + * <p>
      + * Change log:<br>
      + * cbeust, 2006/08/22
      + * <blockquote>
      + *   Java annotations (start with "@") are now captured as literals ("lit")
      + * </blockquote>
      + * @requires console
      + */
      +
      +// JSLint declarations
      +/*global console, document, navigator, setTimeout, window */
      +
      +/**
      + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
      + * UI events.
      + * If set to {@code false}, {@code prettyPrint()} is synchronous.
      + */
      +window['PR_SHOULD_USE_CONTINUATION'] = true;
      +
      +/** the number of characters between tab columns */
      +window['PR_TAB_WIDTH'] = 8;
      +
      +/** Walks the DOM returning a properly escaped version of innerHTML.
      +  * @param {Node} node
      +  * @param {Array.<string>} out output buffer that receives chunks of HTML.
      +  */
      +window['PR_normalizedHtml']
      +
      +/** Contains functions for creating and registering new language handlers.
      +  * @type {Object}
      +  */
      +  = window['PR']
      +
      +/** Pretty print a chunk of code.
      +  *
      +  * @param {string} sourceCodeHtml code as html
      +  * @return {string} code as html, but prettier
      +  */
      +  = window['prettyPrintOne']
      +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
      +  * {@code class=prettyprint} and prettify them.
      +  * @param {Function?} opt_whenDone if specified, called when the last entry
      +  *     has been finished.
      +  */
      +  = window['prettyPrint'] = void 0;
      +
      +/** browser detection. @extern @returns false if not IE, otherwise the major version. */
      +window['_pr_isIE6'] = function () {
      +  var ieVersion = navigator && navigator.userAgent &&
      +      navigator.userAgent.match(/\bMSIE ([678])\./);
      +  ieVersion = ieVersion ? +ieVersion[1] : false;
      +  window['_pr_isIE6'] = function () { return ieVersion; };
      +  return ieVersion;
      +};
      +
      +
      +(function () {
      +  // Keyword lists for various languages.
      +  var FLOW_CONTROL_KEYWORDS =
      +      "break continue do else for if return while ";
      +  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
      +      "double enum extern float goto int long register short signed sizeof " +
      +      "static struct switch typedef union unsigned void volatile ";
      +  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
      +      "new operator private protected public this throw true try typeof ";
      +  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
      +      "concept concept_map const_cast constexpr decltype " +
      +      "dynamic_cast explicit export friend inline late_check " +
      +      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
      +      "template typeid typename using virtual wchar_t where ";
      +  var JAVA_KEYWORDS = COMMON_KEYWORDS +
      +      "abstract boolean byte extends final finally implements import " +
      +      "instanceof null native package strictfp super synchronized throws " +
      +      "transient ";
      +  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
      +      "as base by checked decimal delegate descending event " +
      +      "fixed foreach from group implicit in interface internal into is lock " +
      +      "object out override orderby params partial readonly ref sbyte sealed " +
      +      "stackalloc string select uint ulong unchecked unsafe ushort var ";
      +  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
      +      "debugger eval export function get null set undefined var with " +
      +      "Infinity NaN ";
      +  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
      +      "goto if import last local my next no our print package redo require " +
      +      "sub undef unless until use wantarray while BEGIN END ";
      +  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
      +      "elif except exec finally from global import in is lambda " +
      +      "nonlocal not or pass print raise try with yield " +
      +      "False True None ";
      +  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
      +      " defined elsif end ensure false in module next nil not or redo rescue " +
      +      "retry self super then true undef unless until when yield BEGIN END ";
      +  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
      +      "function in local set then until ";
      +  var ALL_KEYWORDS = (
      +      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
      +      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
      +
      +  // token style names.  correspond to css classes
      +  /** token style for a string literal */
      +  var PR_STRING = 'str';
      +  /** token style for a keyword */
      +  var PR_KEYWORD = 'kwd';
      +  /** token style for a comment */
      +  var PR_COMMENT = 'com';
      +  /** token style for a type */
      +  var PR_TYPE = 'typ';
      +  /** token style for a literal value.  e.g. 1, null, true. */
      +  var PR_LITERAL = 'lit';
      +  /** token style for a punctuation string. */
      +  var PR_PUNCTUATION = 'pun';
      +  /** token style for a punctuation string. */
      +  var PR_PLAIN = 'pln';
      +
      +  /** token style for an sgml tag. */
      +  var PR_TAG = 'tag';
      +  /** token style for a markup declaration such as a DOCTYPE. */
      +  var PR_DECLARATION = 'dec';
      +  /** token style for embedded source. */
      +  var PR_SOURCE = 'src';
      +  /** token style for an sgml attribute name. */
      +  var PR_ATTRIB_NAME = 'atn';
      +  /** token style for an sgml attribute value. */
      +  var PR_ATTRIB_VALUE = 'atv';
      +
      +  /**
      +   * A class that indicates a section of markup that is not code, e.g. to allow
      +   * embedding of line numbers within code listings.
      +   */
      +  var PR_NOCODE = 'nocode';
      +
      +  /** A set of tokens that can precede a regular expression literal in
      +    * javascript.
      +    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
      +    * list, but I've removed ones that might be problematic when seen in
      +    * languages that don't support regular expression literals.
      +    *
      +    * <p>Specifically, I've removed any keywords that can't precede a regexp
      +    * literal in a syntactically legal javascript program, and I've removed the
      +    * "in" keyword since it's not a keyword in many languages, and might be used
      +    * as a count of inches.
      +    *
      +    * <p>The link a above does not accurately describe EcmaScript rules since
      +    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
      +    * very well in practice.
      +    *
      +    * @private
      +    */
      +  var REGEXP_PRECEDER_PATTERN = function () {
      +      var preceders = [
      +          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
      +          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
      +          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
      +          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
      +          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
      +          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
      +          "||=", "~" /* handles =~ and !~ */,
      +          "break", "case", "continue", "delete",
      +          "do", "else", "finally", "instanceof",
      +          "return", "throw", "try", "typeof"
      +          ];
      +      var pattern = '(?:^^|[+-]';
      +      for (var i = 0; i < preceders.length; ++i) {
      +        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
      +      }
      +      pattern += ')\\s*';  // matches at end, and matches empty string
      +      return pattern;
      +      // CAVEAT: this does not properly handle the case where a regular
      +      // expression immediately follows another since a regular expression may
      +      // have flags for case-sensitivity and the like.  Having regexp tokens
      +      // adjacent is not valid in any language I'm aware of, so I'm punting.
      +      // TODO: maybe style special characters inside a regexp as punctuation.
      +    }();
      +
      +  // Define regexps here so that the interpreter doesn't have to create an
      +  // object each time the function containing them is called.
      +  // The language spec requires a new object created even if you don't access
      +  // the $1 members.
      +  var pr_amp = /&/g;
      +  var pr_lt = /</g;
      +  var pr_gt = />/g;
      +  var pr_quot = /\"/g;
      +  /** like textToHtml but escapes double quotes to be attribute safe. */
      +  function attribToHtml(str) {
      +    return str.replace(pr_amp, '&amp;')
      +        .replace(pr_lt, '&lt;')
      +        .replace(pr_gt, '&gt;')
      +        .replace(pr_quot, '&quot;');
      +  }
      +
      +  /** escapest html special characters to html. */
      +  function textToHtml(str) {
      +    return str.replace(pr_amp, '&amp;')
      +        .replace(pr_lt, '&lt;')
      +        .replace(pr_gt, '&gt;');
      +  }
      +
      +
      +  var pr_ltEnt = /&lt;/g;
      +  var pr_gtEnt = /&gt;/g;
      +  var pr_aposEnt = /&apos;/g;
      +  var pr_quotEnt = /&quot;/g;
      +  var pr_ampEnt = /&amp;/g;
      +  var pr_nbspEnt = /&nbsp;/g;
      +  /** unescapes html to plain text. */
      +  function htmlToText(html) {
      +    var pos = html.indexOf('&');
      +    if (pos < 0) { return html; }
      +    // Handle numeric entities specially.  We can't use functional substitution
      +    // since that doesn't work in older versions of Safari.
      +    // These should be rare since most browsers convert them to normal chars.
      +    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
      +      var end = html.indexOf(';', pos);
      +      if (end >= 0) {
      +        var num = html.substring(pos + 3, end);
      +        var radix = 10;
      +        if (num && num.charAt(0) === 'x') {
      +          num = num.substring(1);
      +          radix = 16;
      +        }
      +        var codePoint = parseInt(num, radix);
      +        if (!isNaN(codePoint)) {
      +          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
      +                  html.substring(end + 1));
      +        }
      +      }
      +    }
      +
      +    return html.replace(pr_ltEnt, '<')
      +        .replace(pr_gtEnt, '>')
      +        .replace(pr_aposEnt, "'")
      +        .replace(pr_quotEnt, '"')
      +        .replace(pr_nbspEnt, ' ')
      +        .replace(pr_ampEnt, '&');
      +  }
      +
      +  /** is the given node's innerHTML normally unescaped? */
      +  function isRawContent(node) {
      +    return 'XMP' === node.tagName;
      +  }
      +
      +  var newlineRe = /[\r\n]/g;
      +  /**
      +   * Are newlines and adjacent spaces significant in the given node's innerHTML?
      +   */
      +  function isPreformatted(node, content) {
      +    // PRE means preformatted, and is a very common case, so don't create
      +    // unnecessary computed style objects.
      +    if ('PRE' === node.tagName) { return true; }
      +    if (!newlineRe.test(content)) { return true; }  // Don't care
      +    var whitespace = '';
      +    // For disconnected nodes, IE has no currentStyle.
      +    if (node.currentStyle) {
      +      whitespace = node.currentStyle.whiteSpace;
      +    } else if (window.getComputedStyle) {
      +      // Firefox makes a best guess if node is disconnected whereas Safari
      +      // returns the empty string.
      +      whitespace = window.getComputedStyle(node, null).whiteSpace;
      +    }
      +    return !whitespace || whitespace === 'pre';
      +  }
      +
      +  function normalizedHtml(node, out, opt_sortAttrs) {
      +    switch (node.nodeType) {
      +      case 1:  // an element
      +        var name = node.tagName.toLowerCase();
      +
      +        out.push('<', name);
      +        var attrs = node.attributes;
      +        var n = attrs.length;
      +        if (n) {
      +          if (opt_sortAttrs) {
      +            var sortedAttrs = [];
      +            for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
      +            sortedAttrs.sort(function (a, b) {
      +                return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
      +              });
      +            attrs = sortedAttrs;
      +          }
      +          for (var i = 0; i < n; ++i) {
      +            var attr = attrs[i];
      +            if (!attr.specified) { continue; }
      +            out.push(' ', attr.name.toLowerCase(),
      +                     '="', attribToHtml(attr.value), '"');
      +          }
      +        }
      +        out.push('>');
      +        for (var child = node.firstChild; child; child = child.nextSibling) {
      +          normalizedHtml(child, out, opt_sortAttrs);
      +        }
      +        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
      +          out.push('<\/', name, '>');
      +        }
      +        break;
      +      case 3: case 4: // text
      +        out.push(textToHtml(node.nodeValue));
      +        break;
      +    }
      +  }
      +
      +  /**
      +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
      +   * matches the union o the sets o strings matched d by the input RegExp.
      +   * Since it matches globally, if the input strings have a start-of-input
      +   * anchor (/^.../), it is ignored for the purposes of unioning.
      +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
      +   * @return {RegExp} a global regex.
      +   */
      +  function combinePrefixPatterns(regexs) {
      +    var capturedGroupIndex = 0;
      +
      +    var needToFoldCase = false;
      +    var ignoreCase = false;
      +    for (var i = 0, n = regexs.length; i < n; ++i) {
      +      var regex = regexs[i];
      +      if (regex.ignoreCase) {
      +        ignoreCase = true;
      +      } else if (/[a-z]/i.test(regex.source.replace(
      +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
      +        needToFoldCase = true;
      +        ignoreCase = false;
      +        break;
      +      }
      +    }
      +
      +    function decodeEscape(charsetPart) {
      +      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
      +      switch (charsetPart.charAt(1)) {
      +        case 'b': return 8;
      +        case 't': return 9;
      +        case 'n': return 0xa;
      +        case 'v': return 0xb;
      +        case 'f': return 0xc;
      +        case 'r': return 0xd;
      +        case 'u': case 'x':
      +          return parseInt(charsetPart.substring(2), 16)
      +              || charsetPart.charCodeAt(1);
      +        case '0': case '1': case '2': case '3': case '4':
      +        case '5': case '6': case '7':
      +          return parseInt(charsetPart.substring(1), 8);
      +        default: return charsetPart.charCodeAt(1);
      +      }
      +    }
      +
      +    function encodeEscape(charCode) {
      +      if (charCode < 0x20) {
      +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
      +      }
      +      var ch = String.fromCharCode(charCode);
      +      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
      +        ch = '\\' + ch;
      +      }
      +      return ch;
      +    }
      +
      +    function caseFoldCharset(charSet) {
      +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
      +          new RegExp(
      +              '\\\\u[0-9A-Fa-f]{4}'
      +              + '|\\\\x[0-9A-Fa-f]{2}'
      +              + '|\\\\[0-3][0-7]{0,2}'
      +              + '|\\\\[0-7]{1,2}'
      +              + '|\\\\[\\s\\S]'
      +              + '|-'
      +              + '|[^-\\\\]',
      +              'g'));
      +      var groups = [];
      +      var ranges = [];
      +      var inverse = charsetParts[0] === '^';
      +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
      +        var p = charsetParts[i];
      +        switch (p) {
      +          case '\\B': case '\\b':
      +          case '\\D': case '\\d':
      +          case '\\S': case '\\s':
      +          case '\\W': case '\\w':
      +            groups.push(p);
      +            continue;
      +        }
      +        var start = decodeEscape(p);
      +        var end;
      +        if (i + 2 < n && '-' === charsetParts[i + 1]) {
      +          end = decodeEscape(charsetParts[i + 2]);
      +          i += 2;
      +        } else {
      +          end = start;
      +        }
      +        ranges.push([start, end]);
      +        // If the range might intersect letters, then expand it.
      +        if (!(end < 65 || start > 122)) {
      +          if (!(end < 65 || start > 90)) {
      +            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
      +          }
      +          if (!(end < 97 || start > 122)) {
      +            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
      +          }
      +        }
      +      }
      +
      +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
      +      // -> [[1, 12], [14, 14], [16, 17]]
      +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
      +      var consolidatedRanges = [];
      +      var lastRange = [NaN, NaN];
      +      for (var i = 0; i < ranges.length; ++i) {
      +        var range = ranges[i];
      +        if (range[0] <= lastRange[1] + 1) {
      +          lastRange[1] = Math.max(lastRange[1], range[1]);
      +        } else {
      +          consolidatedRanges.push(lastRange = range);
      +        }
      +      }
      +
      +      var out = ['['];
      +      if (inverse) { out.push('^'); }
      +      out.push.apply(out, groups);
      +      for (var i = 0; i < consolidatedRanges.length; ++i) {
      +        var range = consolidatedRanges[i];
      +        out.push(encodeEscape(range[0]));
      +        if (range[1] > range[0]) {
      +          if (range[1] + 1 > range[0]) { out.push('-'); }
      +          out.push(encodeEscape(range[1]));
      +        }
      +      }
      +      out.push(']');
      +      return out.join('');
      +    }
      +
      +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
      +      // Split into character sets, escape sequences, punctuation strings
      +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
      +      // include any of the above.
      +      var parts = regex.source.match(
      +          new RegExp(
      +              '(?:'
      +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
      +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
      +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
      +              + '|\\\\[0-9]+'  // a back-reference or octal escape
      +              + '|\\\\[^ux0-9]'  // other escape sequence
      +              + '|\\(\\?[:!=]'  // start of a non-capturing group
      +              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
      +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
      +              + ')',
      +              'g'));
      +      var n = parts.length;
      +
      +      // Maps captured group numbers to the number they will occupy in
      +      // the output or to -1 if that has not been determined, or to
      +      // undefined if they need not be capturing in the output.
      +      var capturedGroups = [];
      +
      +      // Walk over and identify back references to build the capturedGroups
      +      // mapping.
      +      for (var i = 0, groupIndex = 0; i < n; ++i) {
      +        var p = parts[i];
      +        if (p === '(') {
      +          // groups are 1-indexed, so max group index is count of '('
      +          ++groupIndex;
      +        } else if ('\\' === p.charAt(0)) {
      +          var decimalValue = +p.substring(1);
      +          if (decimalValue && decimalValue <= groupIndex) {
      +            capturedGroups[decimalValue] = -1;
      +          }
      +        }
      +      }
      +
      +      // Renumber groups and reduce capturing groups to non-capturing groups
      +      // where possible.
      +      for (var i = 1; i < capturedGroups.length; ++i) {
      +        if (-1 === capturedGroups[i]) {
      +          capturedGroups[i] = ++capturedGroupIndex;
      +        }
      +      }
      +      for (var i = 0, groupIndex = 0; i < n; ++i) {
      +        var p = parts[i];
      +        if (p === '(') {
      +          ++groupIndex;
      +          if (capturedGroups[groupIndex] === undefined) {
      +            parts[i] = '(?:';
      +          }
      +        } else if ('\\' === p.charAt(0)) {
      +          var decimalValue = +p.substring(1);
      +          if (decimalValue && decimalValue <= groupIndex) {
      +            parts[i] = '\\' + capturedGroups[groupIndex];
      +          }
      +        }
      +      }
      +
      +      // Remove any prefix anchors so that the output will match anywhere.
      +      // ^^ really does mean an anchored match though.
      +      for (var i = 0, groupIndex = 0; i < n; ++i) {
      +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
      +      }
      +
      +      // Expand letters to groupts to handle mixing of case-sensitive and
      +      // case-insensitive patterns if necessary.
      +      if (regex.ignoreCase && needToFoldCase) {
      +        for (var i = 0; i < n; ++i) {
      +          var p = parts[i];
      +          var ch0 = p.charAt(0);
      +          if (p.length >= 2 && ch0 === '[') {
      +            parts[i] = caseFoldCharset(p);
      +          } else if (ch0 !== '\\') {
      +            // TODO: handle letters in numeric escapes.
      +            parts[i] = p.replace(
      +                /[a-zA-Z]/g,
      +                function (ch) {
      +                  var cc = ch.charCodeAt(0);
      +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
      +                });
      +          }
      +        }
      +      }
      +
      +      return parts.join('');
      +    }
      +
      +    var rewritten = [];
      +    for (var i = 0, n = regexs.length; i < n; ++i) {
      +      var regex = regexs[i];
      +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
      +      rewritten.push(
      +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
      +    }
      +
      +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
      +  }
      +
      +  var PR_innerHtmlWorks = null;
      +  function getInnerHtml(node) {
      +    // inner html is hopelessly broken in Safari 2.0.4 when the content is
      +    // an html description of well formed XML and the containing tag is a PRE
      +    // tag, so we detect that case and emulate innerHTML.
      +    if (null === PR_innerHtmlWorks) {
      +      var testNode = document.createElement('PRE');
      +      testNode.appendChild(
      +          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
      +      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
      +    }
      +
      +    if (PR_innerHtmlWorks) {
      +      var content = node.innerHTML;
      +      // XMP tags contain unescaped entities so require special handling.
      +      if (isRawContent(node)) {
      +        content = textToHtml(content);
      +      } else if (!isPreformatted(node, content)) {
      +        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
      +            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
      +      }
      +      return content;
      +    }
      +
      +    var out = [];
      +    for (var child = node.firstChild; child; child = child.nextSibling) {
      +      normalizedHtml(child, out);
      +    }
      +    return out.join('');
      +  }
      +
      +  /** returns a function that expand tabs to spaces.  This function can be fed
      +    * successive chunks of text, and will maintain its own internal state to
      +    * keep track of how tabs are expanded.
      +    * @return {function (string) : string} a function that takes
      +    *   plain text and return the text with tabs expanded.
      +    * @private
      +    */
      +  function makeTabExpander(tabWidth) {
      +    var SPACES = '                ';
      +    var charInLine = 0;
      +
      +    return function (plainText) {
      +      // walk over each character looking for tabs and newlines.
      +      // On tabs, expand them.  On newlines, reset charInLine.
      +      // Otherwise increment charInLine
      +      var out = null;
      +      var pos = 0;
      +      for (var i = 0, n = plainText.length; i < n; ++i) {
      +        var ch = plainText.charAt(i);
      +
      +        switch (ch) {
      +          case '\t':
      +            if (!out) { out = []; }
      +            out.push(plainText.substring(pos, i));
      +            // calculate how much space we need in front of this part
      +            // nSpaces is the amount of padding -- the number of spaces needed
      +            // to move us to the next column, where columns occur at factors of
      +            // tabWidth.
      +            var nSpaces = tabWidth - (charInLine % tabWidth);
      +            charInLine += nSpaces;
      +            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
      +              out.push(SPACES.substring(0, nSpaces));
      +            }
      +            pos = i + 1;
      +            break;
      +          case '\n':
      +            charInLine = 0;
      +            break;
      +          default:
      +            ++charInLine;
      +        }
      +      }
      +      if (!out) { return plainText; }
      +      out.push(plainText.substring(pos));
      +      return out.join('');
      +    };
      +  }
      +
      +  var pr_chunkPattern = new RegExp(
      +      '[^<]+'  // A run of characters other than '<'
      +      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
      +      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
      +      // a probable tag that should not be highlighted
      +      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
      +      + '|<',  // A '<' that does not begin a larger chunk
      +      'g');
      +  var pr_commentPrefix = /^<\!--/;
      +  var pr_cdataPrefix = /^<!\[CDATA\[/;
      +  var pr_brPrefix = /^<br\b/i;
      +  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
      +
      +  /** split markup into chunks of html tags (style null) and
      +    * plain text (style {@link #PR_PLAIN}), converting tags which are
      +    * significant for tokenization (<br>) into their textual equivalent.
      +    *
      +    * @param {string} s html where whitespace is considered significant.
      +    * @return {Object} source code and extracted tags.
      +    * @private
      +    */
      +  function extractTags(s) {
      +    // since the pattern has the 'g' modifier and defines no capturing groups,
      +    // this will return a list of all chunks which we then classify and wrap as
      +    // PR_Tokens
      +    var matches = s.match(pr_chunkPattern);
      +    var sourceBuf = [];
      +    var sourceBufLen = 0;
      +    var extractedTags = [];
      +    if (matches) {
      +      for (var i = 0, n = matches.length; i < n; ++i) {
      +        var match = matches[i];
      +        if (match.length > 1 && match.charAt(0) === '<') {
      +          if (pr_commentPrefix.test(match)) { continue; }
      +          if (pr_cdataPrefix.test(match)) {
      +            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
      +            sourceBuf.push(match.substring(9, match.length - 3));
      +            sourceBufLen += match.length - 12;
      +          } else if (pr_brPrefix.test(match)) {
      +            // <br> tags are lexically significant so convert them to text.
      +            // This is undone later.
      +            sourceBuf.push('\n');
      +            ++sourceBufLen;
      +          } else {
      +            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
      +              // A <span class="nocode"> will start a section that should be
      +              // ignored.  Continue walking the list until we see a matching end
      +              // tag.
      +              var name = match.match(pr_tagNameRe)[2];
      +              var depth = 1;
      +              var j;
      +              end_tag_loop:
      +              for (j = i + 1; j < n; ++j) {
      +                var name2 = matches[j].match(pr_tagNameRe);
      +                if (name2 && name2[2] === name) {
      +                  if (name2[1] === '/') {
      +                    if (--depth === 0) { break end_tag_loop; }
      +                  } else {
      +                    ++depth;
      +                  }
      +                }
      +              }
      +              if (j < n) {
      +                extractedTags.push(
      +                    sourceBufLen, matches.slice(i, j + 1).join(''));
      +                i = j;
      +              } else {  // Ignore unclosed sections.
      +                extractedTags.push(sourceBufLen, match);
      +              }
      +            } else {
      +              extractedTags.push(sourceBufLen, match);
      +            }
      +          }
      +        } else {
      +          var literalText = htmlToText(match);
      +          sourceBuf.push(literalText);
      +          sourceBufLen += literalText.length;
      +        }
      +      }
      +    }
      +    return { source: sourceBuf.join(''), tags: extractedTags };
      +  }
      +
      +  /** True if the given tag contains a class attribute with the nocode class. */
      +  function isNoCodeTag(tag) {
      +    return !!tag
      +        // First canonicalize the representation of attributes
      +        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
      +                 ' $1="$2$3$4"')
      +        // Then look for the attribute we want.
      +        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
      +  }
      +
      +  /**
      +   * Apply the given language handler to sourceCode and add the resulting
      +   * decorations to out.
      +   * @param {number} basePos the index of sourceCode within the chunk of source
      +   *    whose decorations are already present on out.
      +   */
      +  function appendDecorations(basePos, sourceCode, langHandler, out) {
      +    if (!sourceCode) { return; }
      +    var job = {
      +      source: sourceCode,
      +      basePos: basePos
      +    };
      +    langHandler(job);
      +    out.push.apply(out, job.decorations);
      +  }
      +
      +  /** Given triples of [style, pattern, context] returns a lexing function,
      +    * The lexing function interprets the patterns to find token boundaries and
      +    * returns a decoration list of the form
      +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
      +    * where index_n is an index into the sourceCode, and style_n is a style
      +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
      +    * all characters in sourceCode[index_n-1:index_n].
      +    *
      +    * The stylePatterns is a list whose elements have the form
      +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
      +    *
      +    * Style is a style constant like PR_PLAIN, or can be a string of the
      +    * form 'lang-FOO', where FOO is a language extension describing the
      +    * language of the portion of the token in $1 after pattern executes.
      +    * E.g., if style is 'lang-lisp', and group 1 contains the text
      +    * '(hello (world))', then that portion of the token will be passed to the
      +    * registered lisp handler for formatting.
      +    * The text before and after group 1 will be restyled using this decorator
      +    * so decorators should take care that this doesn't result in infinite
      +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
      +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
      +    * '<script>foo()<\/script>', which would cause the current decorator to
      +    * be called with '<script>' which would not match the same rule since
      +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
      +    * the generic tag rule.  The handler registered for the 'js' extension would
      +    * then be called with 'foo()', and finally, the current decorator would
      +    * be called with '<\/script>' which would not match the original rule and
      +    * so the generic tag rule would identify it as a tag.
      +    *
      +    * Pattern must only match prefixes, and if it matches a prefix, then that
      +    * match is considered a token with the same style.
      +    *
      +    * Context is applied to the last non-whitespace, non-comment token
      +    * recognized.
      +    *
      +    * Shortcut is an optional string of characters, any of which, if the first
      +    * character, gurantee that this pattern and only this pattern matches.
      +    *
      +    * @param {Array} shortcutStylePatterns patterns that always start with
      +    *   a known character.  Must have a shortcut string.
      +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
      +    *   order if the shortcut ones fail.  May have shortcuts.
      +    *
      +    * @return {function (Object)} a
      +    *   function that takes source code and returns a list of decorations.
      +    */
      +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
      +    var shortcuts = {};
      +    var tokenizer;
      +    (function () {
      +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
      +      var allRegexs = [];
      +      var regexKeys = {};
      +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
      +        var patternParts = allPatterns[i];
      +        var shortcutChars = patternParts[3];
      +        if (shortcutChars) {
      +          for (var c = shortcutChars.length; --c >= 0;) {
      +            shortcuts[shortcutChars.charAt(c)] = patternParts;
      +          }
      +        }
      +        var regex = patternParts[1];
      +        var k = '' + regex;
      +        if (!regexKeys.hasOwnProperty(k)) {
      +          allRegexs.push(regex);
      +          regexKeys[k] = null;
      +        }
      +      }
      +      allRegexs.push(/[\0-\uffff]/);
      +      tokenizer = combinePrefixPatterns(allRegexs);
      +    })();
      +
      +    var nPatterns = fallthroughStylePatterns.length;
      +    var notWs = /\S/;
      +
      +    /**
      +     * Lexes job.source and produces an output array job.decorations of style
      +     * classes preceded by the position at which they start in job.source in
      +     * order.
      +     *
      +     * @param {Object} job an object like {@code
      +     *    source: {string} sourceText plain text,
      +     *    basePos: {int} position of job.source in the larger chunk of
      +     *        sourceCode.
      +     * }
      +     */
      +    var decorate = function (job) {
      +      var sourceCode = job.source, basePos = job.basePos;
      +      /** Even entries are positions in source in ascending order.  Odd enties
      +        * are style markers (e.g., PR_COMMENT) that run from that position until
      +        * the end.
      +        * @type {Array.<number|string>}
      +        */
      +      var decorations = [basePos, PR_PLAIN];
      +      var pos = 0;  // index into sourceCode
      +      var tokens = sourceCode.match(tokenizer) || [];
      +      var styleCache = {};
      +
      +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
      +        var token = tokens[ti];
      +        var style = styleCache[token];
      +        var match = void 0;
      +
      +        var isEmbedded;
      +        if (typeof style === 'string') {
      +          isEmbedded = false;
      +        } else {
      +          var patternParts = shortcuts[token.charAt(0)];
      +          if (patternParts) {
      +            match = token.match(patternParts[1]);
      +            style = patternParts[0];
      +          } else {
      +            for (var i = 0; i < nPatterns; ++i) {
      +              patternParts = fallthroughStylePatterns[i];
      +              match = token.match(patternParts[1]);
      +              if (match) {
      +                style = patternParts[0];
      +                break;
      +              }
      +            }
      +
      +            if (!match) {  // make sure that we make progress
      +              style = PR_PLAIN;
      +            }
      +          }
      +
      +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
      +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
      +            isEmbedded = false;
      +            style = PR_SOURCE;
      +          }
      +
      +          if (!isEmbedded) { styleCache[token] = style; }
      +        }
      +
      +        var tokenStart = pos;
      +        pos += token.length;
      +
      +        if (!isEmbedded) {
      +          decorations.push(basePos + tokenStart, style);
      +        } else {  // Treat group 1 as an embedded block of source code.
      +          var embeddedSource = match[1];
      +          var embeddedSourceStart = token.indexOf(embeddedSource);
      +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
      +          if (match[2]) {
      +            // If embeddedSource can be blank, then it would match at the
      +            // beginning which would cause us to infinitely recurse on the
      +            // entire token, so we catch the right context in match[2].
      +            embeddedSourceEnd = token.length - match[2].length;
      +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
      +          }
      +          var lang = style.substring(5);
      +          // Decorate the left of the embedded source
      +          appendDecorations(
      +              basePos + tokenStart,
      +              token.substring(0, embeddedSourceStart),
      +              decorate, decorations);
      +          // Decorate the embedded source
      +          appendDecorations(
      +              basePos + tokenStart + embeddedSourceStart,
      +              embeddedSource,
      +              langHandlerForExtension(lang, embeddedSource),
      +              decorations);
      +          // Decorate the right of the embedded section
      +          appendDecorations(
      +              basePos + tokenStart + embeddedSourceEnd,
      +              token.substring(embeddedSourceEnd),
      +              decorate, decorations);
      +        }
      +      }
      +      job.decorations = decorations;
      +    };
      +    return decorate;
      +  }
      +
      +  /** returns a function that produces a list of decorations from source text.
      +    *
      +    * This code treats ", ', and ` as string delimiters, and \ as a string
      +    * escape.  It does not recognize perl's qq() style strings.
      +    * It has no special handling for double delimiter escapes as in basic, or
      +    * the tripled delimiters used in python, but should work on those regardless
      +    * although in those cases a single string literal may be broken up into
      +    * multiple adjacent string literals.
      +    *
      +    * It recognizes C, C++, and shell style comments.
      +    *
      +    * @param {Object} options a set of optional parameters.
      +    * @return {function (Object)} a function that examines the source code
      +    *     in the input job and builds the decoration list.
      +    */
      +  function sourceDecorator(options) {
      +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
      +    if (options['tripleQuotedStrings']) {
      +      // '''multi-line-string''', 'single-line-string', and double-quoted
      +      shortcutStylePatterns.push(
      +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
      +           null, '\'"']);
      +    } else if (options['multiLineStrings']) {
      +      // 'multi-line-string', "multi-line-string"
      +      shortcutStylePatterns.push(
      +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
      +           null, '\'"`']);
      +    } else {
      +      // 'single-line-string', "single-line-string"
      +      shortcutStylePatterns.push(
      +          [PR_STRING,
      +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
      +           null, '"\'']);
      +    }
      +    if (options['verbatimStrings']) {
      +      // verbatim-string-literal production from the C# grammar.  See issue 93.
      +      fallthroughStylePatterns.push(
      +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
      +    }
      +    if (options['hashComments']) {
      +      if (options['cStyleComments']) {
      +        // Stop C preprocessor declarations at an unclosed open comment
      +        shortcutStylePatterns.push(
      +            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
      +             null, '#']);
      +        fallthroughStylePatterns.push(
      +            [PR_STRING,
      +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
      +             null]);
      +      } else {
      +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
      +      }
      +    }
      +    if (options['cStyleComments']) {
      +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
      +      fallthroughStylePatterns.push(
      +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
      +    }
      +    if (options['regexLiterals']) {
      +      var REGEX_LITERAL = (
      +          // A regular expression literal starts with a slash that is
      +          // not followed by * or / so that it is not confused with
      +          // comments.
      +          '/(?=[^/*])'
      +          // and then contains any number of raw characters,
      +          + '(?:[^/\\x5B\\x5C]'
      +          // escape sequences (\x5C),
      +          +    '|\\x5C[\\s\\S]'
      +          // or non-nesting character sets (\x5B\x5D);
      +          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
      +          // finally closed by a /.
      +          + '/');
      +      fallthroughStylePatterns.push(
      +          ['lang-regex',
      +           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
      +           ]);
      +    }
      +
      +    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
      +    if (keywords.length) {
      +      fallthroughStylePatterns.push(
      +          [PR_KEYWORD,
      +           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
      +    }
      +
      +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
      +    fallthroughStylePatterns.push(
      +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
      +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
      +        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
      +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
      +        [PR_LITERAL,
      +         new RegExp(
      +             '^(?:'
      +             // A hex number
      +             + '0x[a-f0-9]+'
      +             // or an octal or decimal number,
      +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
      +             // possibly in scientific notation
      +             + '(?:e[+\\-]?\\d+)?'
      +             + ')'
      +             // with an optional modifier like UL for unsigned long
      +             + '[a-z]*', 'i'),
      +         null, '0123456789'],
      +        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
      +
      +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
      +  }
      +
      +  var decorateSource = sourceDecorator({
      +        'keywords': ALL_KEYWORDS,
      +        'hashComments': true,
      +        'cStyleComments': true,
      +        'multiLineStrings': true,
      +        'regexLiterals': true
      +      });
      +
      +  /** Breaks {@code job.source} around style boundaries in
      +    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
      +    * and leaves the result in {@code job.prettyPrintedHtml}.
      +    * @param {Object} job like {
      +    *    source: {string} source as plain text,
      +    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
      +    *                   html preceded by their position in {@code job.source}
      +    *                   in order
      +    *    decorations: {Array.<number|string} an array of style classes preceded
      +    *                 by the position at which they start in job.source in order
      +    * }
      +    * @private
      +    */
      +  function recombineTagsAndDecorations(job) {
      +    var sourceText = job.source;
      +    var extractedTags = job.extractedTags;
      +    var decorations = job.decorations;
      +
      +    var html = [];
      +    // index past the last char in sourceText written to html
      +    var outputIdx = 0;
      +
      +    var openDecoration = null;
      +    var currentDecoration = null;
      +    var tagPos = 0;  // index into extractedTags
      +    var decPos = 0;  // index into decorations
      +    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
      +
      +    var adjacentSpaceRe = /([\r\n ]) /g;
      +    var startOrSpaceRe = /(^| ) /gm;
      +    var newlineRe = /\r\n?|\n/g;
      +    var trailingSpaceRe = /[ \r\n]$/;
      +    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
      +
      +    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
      +    var isIE678 = window['_pr_isIE6']();
      +    var lineBreakHtml = (
      +        isIE678
      +        ? (job.sourceNode.tagName === 'PRE'
      +           // Use line feeds instead of <br>s so that copying and pasting works
      +           // on IE.
      +           // Doing this on other browsers breaks lots of stuff since \r\n is
      +           // treated as two newlines on Firefox.
      +           ? (isIE678 === 6 ? '&#160;\r\n' :
      +              isIE678 === 7 ? '&#160;<br>\r' : '&#160;\r')
      +           // IE collapses multiple adjacent <br>s into 1 line break.
      +           // Prefix every newline with '&#160;' to prevent such behavior.
      +           // &nbsp; is the same as &#160; but works in XML as well as HTML.
      +           : '&#160;<br />')
      +        : '<br />');
      +
      +    // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed
      +    // number of the first line.
      +    var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/);
      +    var lineBreaker;
      +    if (numberLines) {
      +      var lineBreaks = [];
      +      for (var i = 0; i < 10; ++i) {
      +        lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">';
      +      }
      +      var lineNum = numberLines[1] && numberLines[1].length
      +          ? numberLines[1] - 1 : 0;  // Lines are 1-indexed
      +      html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"');
      +      if (lineNum) {
      +        html.push(' value="', lineNum + 1, '"');
      +      }
      +      html.push('>');
      +      lineBreaker = function () {
      +        var lb = lineBreaks[++lineNum % 10];
      +        // If a decoration is open, we need to close it before closing a list-item
      +        // and reopen it on the other side of the list item.
      +        return openDecoration
      +            ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb;
      +      };
      +    } else {
      +      lineBreaker = lineBreakHtml;
      +    }
      +
      +    // A helper function that is responsible for opening sections of decoration
      +    // and outputing properly escaped chunks of source
      +    function emitTextUpTo(sourceIdx) {
      +      if (sourceIdx > outputIdx) {
      +        if (openDecoration && openDecoration !== currentDecoration) {
      +          // Close the current decoration
      +          html.push('</span>');
      +          openDecoration = null;
      +        }
      +        if (!openDecoration && currentDecoration) {
      +          openDecoration = currentDecoration;
      +          html.push('<span class="', openDecoration, '">');
      +        }
      +        // This interacts badly with some wikis which introduces paragraph tags
      +        // into pre blocks for some strange reason.
      +        // It's necessary for IE though which seems to lose the preformattedness
      +        // of <pre> tags when their innerHTML is assigned.
      +        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
      +        // and it serves to undo the conversion of <br>s to newlines done in
      +        // chunkify.
      +        var htmlChunk = textToHtml(
      +            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
      +            .replace(lastWasSpace
      +                     ? startOrSpaceRe
      +                     : adjacentSpaceRe, '$1&#160;');
      +        // Keep track of whether we need to escape space at the beginning of the
      +        // next chunk.
      +        lastWasSpace = trailingSpaceRe.test(htmlChunk);
      +        html.push(htmlChunk.replace(newlineRe, lineBreaker));
      +        outputIdx = sourceIdx;
      +      }
      +    }
      +
      +    while (true) {
      +      // Determine if we're going to consume a tag this time around.  Otherwise
      +      // we consume a decoration or exit.
      +      var outputTag;
      +      if (tagPos < extractedTags.length) {
      +        if (decPos < decorations.length) {
      +          // Pick one giving preference to extractedTags since we shouldn't open
      +          // a new style that we're going to have to immediately close in order
      +          // to output a tag.
      +          outputTag = extractedTags[tagPos] <= decorations[decPos];
      +        } else {
      +          outputTag = true;
      +        }
      +      } else {
      +        outputTag = false;
      +      }
      +      // Consume either a decoration or a tag or exit.
      +      if (outputTag) {
      +        emitTextUpTo(extractedTags[tagPos]);
      +        if (openDecoration) {
      +          // Close the current decoration
      +          html.push('</span>');
      +          openDecoration = null;
      +        }
      +        html.push(extractedTags[tagPos + 1]);
      +        tagPos += 2;
      +      } else if (decPos < decorations.length) {
      +        emitTextUpTo(decorations[decPos]);
      +        currentDecoration = decorations[decPos + 1];
      +        decPos += 2;
      +      } else {
      +        break;
      +      }
      +    }
      +    emitTextUpTo(sourceText.length);
      +    if (openDecoration) {
      +      html.push('</span>');
      +    }
      +    if (numberLines) { html.push('</li></ol>'); }
      +    job.prettyPrintedHtml = html.join('');
      +  }
      +
      +  /** Maps language-specific file extensions to handlers. */
      +  var langHandlerRegistry = {};
      +  /** Register a language handler for the given file extensions.
      +    * @param {function (Object)} handler a function from source code to a list
      +    *      of decorations.  Takes a single argument job which describes the
      +    *      state of the computation.   The single parameter has the form
      +    *      {@code {
      +    *        source: {string} as plain text.
      +    *        decorations: {Array.<number|string>} an array of style classes
      +    *                     preceded by the position at which they start in
      +    *                     job.source in order.
      +    *                     The language handler should assigned this field.
      +    *        basePos: {int} the position of source in the larger source chunk.
      +    *                 All positions in the output decorations array are relative
      +    *                 to the larger source chunk.
      +    *      } }
      +    * @param {Array.<string>} fileExtensions
      +    */
      +  function registerLangHandler(handler, fileExtensions) {
      +    for (var i = fileExtensions.length; --i >= 0;) {
      +      var ext = fileExtensions[i];
      +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
      +        langHandlerRegistry[ext] = handler;
      +      } else if ('console' in window) {
      +        console['warn']('cannot override language handler %s', ext);
      +      }
      +    }
      +  }
      +  function langHandlerForExtension(extension, source) {
      +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
      +      // Treat it as markup if the first non whitespace character is a < and
      +      // the last non-whitespace character is a >.
      +      extension = /^\s*</.test(source)
      +          ? 'default-markup'
      +          : 'default-code';
      +    }
      +    return langHandlerRegistry[extension];
      +  }
      +  registerLangHandler(decorateSource, ['default-code']);
      +  registerLangHandler(
      +      createSimpleLexer(
      +          [],
      +          [
      +           [PR_PLAIN,       /^[^<?]+/],
      +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
      +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
      +           // Unescaped content in an unknown language
      +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
      +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
      +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
      +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
      +           // Unescaped content in javascript.  (Or possibly vbscript).
      +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
      +           // Contains unescaped stylesheet content
      +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
      +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
      +          ]),
      +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
      +  registerLangHandler(
      +      createSimpleLexer(
      +          [
      +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
      +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
      +           ],
      +          [
      +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
      +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
      +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
      +           [PR_PUNCTUATION,  /^[=<>\/]+/],
      +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
      +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
      +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
      +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
      +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
      +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
      +           ]),
      +      ['in.tag']);
      +  registerLangHandler(
      +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': CPP_KEYWORDS,
      +          'hashComments': true,
      +          'cStyleComments': true
      +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': 'null true false'
      +        }), ['json']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': CSHARP_KEYWORDS,
      +          'hashComments': true,
      +          'cStyleComments': true,
      +          'verbatimStrings': true
      +        }), ['cs']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': JAVA_KEYWORDS,
      +          'cStyleComments': true
      +        }), ['java']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': SH_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true
      +        }), ['bsh', 'csh', 'sh']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': PYTHON_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true,
      +          'tripleQuotedStrings': true
      +        }), ['cv', 'py']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': PERL_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true,
      +          'regexLiterals': true
      +        }), ['perl', 'pl', 'pm']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': RUBY_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true,
      +          'regexLiterals': true
      +        }), ['rb']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': JSCRIPT_KEYWORDS,
      +          'cStyleComments': true,
      +          'regexLiterals': true
      +        }), ['js']);
      +  registerLangHandler(
      +      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
      +
      +  function applyDecorator(job) {
      +    var sourceCodeHtml = job.sourceCodeHtml;
      +    var opt_langExtension = job.langExtension;
      +
      +    // Prepopulate output in case processing fails with an exception.
      +    job.prettyPrintedHtml = sourceCodeHtml;
      +
      +    try {
      +      // Extract tags, and convert the source code to plain text.
      +      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
      +      /** Plain text. @type {string} */
      +      var source = sourceAndExtractedTags.source;
      +      job.source = source;
      +      job.basePos = 0;
      +
      +      /** Even entries are positions in source in ascending order.  Odd entries
      +        * are tags that were extracted at that position.
      +        * @type {Array.<number|string>}
      +        */
      +      job.extractedTags = sourceAndExtractedTags.tags;
      +
      +      // Apply the appropriate language handler
      +      langHandlerForExtension(opt_langExtension, source)(job);
      +      // Integrate the decorations and tags back into the source code to produce
      +      // a decorated html string which is left in job.prettyPrintedHtml.
      +      recombineTagsAndDecorations(job);
      +    } catch (e) {
      +      if ('console' in window) {
      +        console['log'](e && e['stack'] ? e['stack'] : e);
      +      }
      +    }
      +  }
      +
      +  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
      +    var job = {
      +      sourceCodeHtml: sourceCodeHtml,
      +      langExtension: opt_langExtension
      +    };
      +    applyDecorator(job);
      +    return job.prettyPrintedHtml;
      +  }
      +
      +  function prettyPrint(opt_whenDone) {
      +    function byTagName(tn) { return document.getElementsByTagName(tn); }
      +    // fetch a list of nodes to rewrite
      +    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
      +    var elements = [];
      +    for (var i = 0; i < codeSegments.length; ++i) {
      +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
      +        elements.push(codeSegments[i][j]);
      +      }
      +    }
      +    codeSegments = null;
      +
      +    var clock = Date;
      +    if (!clock['now']) {
      +      clock = { 'now': function () { return (new Date).getTime(); } };
      +    }
      +
      +    // The loop is broken into a series of continuations to make sure that we
      +    // don't make the browser unresponsive when rewriting a large page.
      +    var k = 0;
      +    var prettyPrintingJob;
      +
      +    function doWork() {
      +      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
      +                     clock.now() + 250 /* ms */ :
      +                     Infinity);
      +      for (; k < elements.length && clock.now() < endTime; k++) {
      +        var cs = elements[k];
      +        // [JACOCO] 'prettyprint' -> 'source'
      +        if (cs.className && cs.className.indexOf('source') >= 0) {
      +          // If the classes includes a language extensions, use it.
      +          // Language extensions can be specified like
      +          //     <pre class="prettyprint lang-cpp">
      +          // the language extension "cpp" is used to find a language handler as
      +          // passed to PR_registerLangHandler.
      +          var langExtension = cs.className.match(/\blang-(\w+)\b/);
      +          if (langExtension) { langExtension = langExtension[1]; }
      +
      +          // make sure this is not nested in an already prettified element
      +          var nested = false;
      +          for (var p = cs.parentNode; p; p = p.parentNode) {
      +            if ((p.tagName === 'pre' || p.tagName === 'code' ||
      +                 p.tagName === 'xmp') &&
      +                // [JACOCO] 'prettyprint' -> 'source'
      +                p.className && p.className.indexOf('source') >= 0) {
      +              nested = true;
      +              break;
      +            }
      +          }
      +          if (!nested) {
      +            // fetch the content as a snippet of properly escaped HTML.
      +            // Firefox adds newlines at the end.
      +            var content = getInnerHtml(cs);
      +            content = content.replace(/(?:\r\n?|\n)$/, '');
      +
      +            // do the pretty printing
      +            prettyPrintingJob = {
      +              sourceCodeHtml: content,
      +              langExtension: langExtension,
      +              sourceNode: cs
      +            };
      +            applyDecorator(prettyPrintingJob);
      +            replaceWithPrettyPrintedHtml();
      +          }
      +        }
      +      }
      +      if (k < elements.length) {
      +        // finish up in a continuation
      +        setTimeout(doWork, 250);
      +      } else if (opt_whenDone) {
      +        opt_whenDone();
      +      }
      +    }
      +
      +    function replaceWithPrettyPrintedHtml() {
      +      var newContent = prettyPrintingJob.prettyPrintedHtml;
      +      if (!newContent) { return; }
      +      var cs = prettyPrintingJob.sourceNode;
      +
      +      // push the prettified html back into the tag.
      +      if (!isRawContent(cs)) {
      +        // just replace the old html with the new
      +        cs.innerHTML = newContent;
      +      } else {
      +        // we need to change the tag to a <pre> since <xmp>s do not allow
      +        // embedded tags such as the span tags used to attach styles to
      +        // sections of source code.
      +        var pre = document.createElement('PRE');
      +        for (var i = 0; i < cs.attributes.length; ++i) {
      +          var a = cs.attributes[i];
      +          if (a.specified) {
      +            var aname = a.name.toLowerCase();
      +            if (aname === 'class') {
      +              pre.className = a.value;  // For IE 6
      +            } else {
      +              pre.setAttribute(a.name, a.value);
      +            }
      +          }
      +        }
      +        pre.innerHTML = newContent;
      +
      +        // remove the old
      +        cs.parentNode.replaceChild(pre, cs);
      +        cs = pre;
      +      }
      +    }
      +
      +    doWork();
      +  }
      +
      +  window['PR_normalizedHtml'] = normalizedHtml;
      +  window['prettyPrintOne'] = prettyPrintOne;
      +  window['prettyPrint'] = prettyPrint;
      +  window['PR'] = {
      +        'combinePrefixPatterns': combinePrefixPatterns,
      +        'createSimpleLexer': createSimpleLexer,
      +        'registerLangHandler': registerLangHandler,
      +        'sourceDecorator': sourceDecorator,
      +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
      +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
      +        'PR_COMMENT': PR_COMMENT,
      +        'PR_DECLARATION': PR_DECLARATION,
      +        'PR_KEYWORD': PR_KEYWORD,
      +        'PR_LITERAL': PR_LITERAL,
      +        'PR_NOCODE': PR_NOCODE,
      +        'PR_PLAIN': PR_PLAIN,
      +        'PR_PUNCTUATION': PR_PUNCTUATION,
      +        'PR_SOURCE': PR_SOURCE,
      +        'PR_STRING': PR_STRING,
      +        'PR_TAG': PR_TAG,
      +        'PR_TYPE': PR_TYPE
      +      };
      +})();
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/redbar.gif b/waffle-tomcat10/jacoco/jacoco-resources/redbar.gif
      new file mode 100644
      index 0000000000..c2f71469ba
      Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/redbar.gif differ
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/report.css b/waffle-tomcat10/jacoco/jacoco-resources/report.css
      new file mode 100644
      index 0000000000..dd936bca54
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/jacoco-resources/report.css
      @@ -0,0 +1,243 @@
      +body, td {
      +  font-family:sans-serif;
      +  font-size:10pt;
      +}
      +
      +h1 {
      +  font-weight:bold;
      +  font-size:18pt;
      +}
      +
      +.breadcrumb {
      +  border:#d6d3ce 1px solid;
      +  padding:2px 4px 2px 4px;
      +}
      +
      +.breadcrumb .info {
      +  float:right;
      +}
      +
      +.breadcrumb .info a {
      +  margin-left:8px;
      +}
      +
      +.el_report {
      +  padding-left:18px;
      +  background-image:url(report.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_group {
      +  padding-left:18px;
      +  background-image:url(group.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_bundle {
      +  padding-left:18px;
      +  background-image:url(bundle.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_package {
      +  padding-left:18px;
      +  background-image:url(package.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_class {
      +  padding-left:18px;
      +  background-image:url(class.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_source {
      +  padding-left:18px;
      +  background-image:url(source.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_method {
      +  padding-left:18px;
      +  background-image:url(method.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +.el_session {
      +  padding-left:18px;
      +  background-image:url(session.gif);
      +  background-position:left center;
      +  background-repeat:no-repeat;
      +}
      +
      +pre.source {
      +  border:#d6d3ce 1px solid;
      +  font-family:monospace;
      +}
      +
      +pre.source ol {
      +  margin-bottom: 0px;
      +  margin-top: 0px;
      +}
      +
      +pre.source li {
      +  border-left: 1px solid #D6D3CE;
      +  color: #A0A0A0;
      +  padding-left: 0px;
      +}
      +
      +pre.source span.fc {
      +  background-color:#ccffcc;
      +}
      +
      +pre.source span.nc {
      +  background-color:#ffaaaa;
      +}
      +
      +pre.source span.pc {
      +  background-color:#ffffcc;
      +}
      +
      +pre.source span.bfc {
      +  background-image: url(branchfc.gif);
      +  background-repeat: no-repeat;
      +  background-position: 2px center;
      +}
      +
      +pre.source span.bfc:hover {
      +  background-color:#80ff80;
      +}
      +
      +pre.source span.bnc {
      +  background-image: url(branchnc.gif);
      +  background-repeat: no-repeat;
      +  background-position: 2px center;
      +}
      +
      +pre.source span.bnc:hover {
      +  background-color:#ff8080;
      +}
      +
      +pre.source span.bpc {
      +  background-image: url(branchpc.gif);
      +  background-repeat: no-repeat;
      +  background-position: 2px center;
      +}
      +
      +pre.source span.bpc:hover {
      +  background-color:#ffff80;
      +}
      +
      +table.coverage {
      +  empty-cells:show;
      +  border-collapse:collapse;
      +}
      +
      +table.coverage thead {
      +  background-color:#e0e0e0;
      +}
      +
      +table.coverage thead td {
      +  white-space:nowrap;
      +  padding:2px 14px 0px 6px;
      +  border-bottom:#b0b0b0 1px solid;
      +}
      +
      +table.coverage thead td.bar {
      +  border-left:#cccccc 1px solid;
      +}
      +
      +table.coverage thead td.ctr1 {
      +  text-align:right;
      +  border-left:#cccccc 1px solid;
      +}
      +
      +table.coverage thead td.ctr2 {
      +  text-align:right;
      +  padding-left:2px;
      +}
      +
      +table.coverage thead td.sortable {
      +  cursor:pointer;
      +  background-image:url(sort.gif);
      +  background-position:right center;
      +  background-repeat:no-repeat;
      +}
      +
      +table.coverage thead td.up {
      +  background-image:url(up.gif);
      +}
      +
      +table.coverage thead td.down {
      +  background-image:url(down.gif);
      +}
      +
      +table.coverage tbody td {
      +  white-space:nowrap;
      +  padding:2px 6px 2px 6px;
      +  border-bottom:#d6d3ce 1px solid;
      +}
      +
      +table.coverage tbody tr:hover {
      +  background: #f0f0d0 !important;
      +}
      +
      +table.coverage tbody td.bar {
      +  border-left:#e8e8e8 1px solid;
      +}
      +
      +table.coverage tbody td.ctr1 {
      +  text-align:right;
      +  padding-right:14px;
      +  border-left:#e8e8e8 1px solid;
      +}
      +
      +table.coverage tbody td.ctr2 {
      +  text-align:right;
      +  padding-right:14px;
      +  padding-left:2px;
      +}
      +
      +table.coverage tfoot td {
      +  white-space:nowrap;
      +  padding:2px 6px 2px 6px;
      +}
      +
      +table.coverage tfoot td.bar {
      +  border-left:#e8e8e8 1px solid;
      +}
      +
      +table.coverage tfoot td.ctr1 {
      +  text-align:right;
      +  padding-right:14px;
      +  border-left:#e8e8e8 1px solid;
      +}
      +
      +table.coverage tfoot td.ctr2 {
      +  text-align:right;
      +  padding-right:14px;
      +  padding-left:2px;
      +}
      +
      +.footer {
      +  margin-top:20px;
      +  border-top:#d6d3ce 1px solid;
      +  padding-top:2px;
      +  font-size:8pt;
      +  color:#a0a0a0;
      +}
      +
      +.footer a {
      +  color:#a0a0a0;
      +}
      +
      +.right {
      +  float:right;
      +}
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/report.gif b/waffle-tomcat10/jacoco/jacoco-resources/report.gif
      new file mode 100644
      index 0000000000..8547be50bf
      Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/report.gif differ
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/session.gif b/waffle-tomcat10/jacoco/jacoco-resources/session.gif
      new file mode 100644
      index 0000000000..0151bad8a0
      Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/session.gif differ
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/sort.gif b/waffle-tomcat10/jacoco/jacoco-resources/sort.gif
      new file mode 100644
      index 0000000000..6757c2c32b
      Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/sort.gif differ
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/sort.js b/waffle-tomcat10/jacoco/jacoco-resources/sort.js
      new file mode 100644
      index 0000000000..9dcb0e8bbf
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/jacoco-resources/sort.js
      @@ -0,0 +1,148 @@
      +/*******************************************************************************
      + * Copyright (c) 2009, 2024 Mountainminds GmbH & Co. KG and Contributors
      + * This program and the accompanying materials are made available under
      + * the terms of the Eclipse Public License 2.0 which is available at
      + * http://www.eclipse.org/legal/epl-2.0
      + *
      + * SPDX-License-Identifier: EPL-2.0
      + *
      + * Contributors:
      + *    Marc R. Hoffmann - initial API and implementation
      + *
      + *******************************************************************************/
      +
      +(function () {
      +
      +  /**
      +   * Sets the initial sorting derived from the hash.
      +   *
      +   * @param linkelementids
      +   *          list of element ids to search for links to add sort inidcator
      +   *          hash links
      +   */
      +  function initialSort(linkelementids) {
      +    window.linkelementids = linkelementids;
      +    var hash = window.location.hash;
      +    if (hash) {
      +      var m = hash.match(/up-./);
      +      if (m) {
      +        var header = window.document.getElementById(m[0].charAt(3));
      +        if (header) {
      +          sortColumn(header, true);
      +        }
      +        return;
      +      }
      +      var m = hash.match(/dn-./);
      +      if (m) {
      +        var header = window.document.getElementById(m[0].charAt(3));
      +        if (header) {
      +          sortColumn(header, false);
      +        }
      +        return
      +      }
      +    }
      +  }
      +
      +  /**
      +   * Sorts the columns with the given header dependening on the current sort state.
      +   */
      +  function toggleSort(header) {
      +    var sortup = header.className.indexOf('down ') == 0;
      +    sortColumn(header, sortup);
      +  }
      +
      +  /**
      +   * Sorts the columns with the given header in the given direction.
      +   */
      +  function sortColumn(header, sortup) {
      +    var table = header.parentNode.parentNode.parentNode;
      +    var body = table.tBodies[0];
      +    var colidx = getNodePosition(header);
      +
      +    resetSortedStyle(table);
      +
      +    var rows = body.rows;
      +    var sortedrows = [];
      +    for (var i = 0; i < rows.length; i++) {
      +      r = rows[i];
      +      sortedrows[parseInt(r.childNodes[colidx].id.slice(1))] = r;
      +    }
      +
      +    var hash;
      +
      +    if (sortup) {
      +      for (var i = sortedrows.length - 1; i >= 0; i--) {
      +        body.appendChild(sortedrows[i]);
      +      }
      +      header.className = 'up ' + header.className;
      +      hash = 'up-' + header.id;
      +    } else {
      +      for (var i = 0; i < sortedrows.length; i++) {
      +        body.appendChild(sortedrows[i]);
      +      }
      +      header.className = 'down ' + header.className;
      +      hash = 'dn-' + header.id;
      +    }
      +
      +    setHash(hash);
      +  }
      +
      +  /**
      +   * Adds the sort indicator as a hash to the document URL and all links.
      +   */
      +  function setHash(hash) {
      +    window.document.location.hash = hash;
      +    ids = window.linkelementids;
      +    for (var i = 0; i < ids.length; i++) {
      +        setHashOnAllLinks(document.getElementById(ids[i]), hash);
      +    }
      +  }
      +
      +  /**
      +   * Extend all links within the given tag with the given hash.
      +   */
      +  function setHashOnAllLinks(tag, hash) {
      +    links = tag.getElementsByTagName("a");
      +    for (var i = 0; i < links.length; i++) {
      +        var a = links[i];
      +        var href = a.href;
      +        var hashpos = href.indexOf("#");
      +        if (hashpos != -1) {
      +            href = href.substring(0, hashpos);
      +        }
      +        a.href = href + "#" + hash;
      +    }
      +  }
      +
      +  /**
      +   * Calculates the position of a element within its parent.
      +   */
      +  function getNodePosition(element) {
      +    var pos = -1;
      +    while (element) {
      +      element = element.previousSibling;
      +      pos++;
      +    }
      +    return pos;
      +  }
      +
      +  /**
      +   * Remove the sorting indicator style from all headers.
      +   */
      +  function resetSortedStyle(table) {
      +    for (var c = table.tHead.firstChild.firstChild; c; c = c.nextSibling) {
      +      if (c.className) {
      +        if (c.className.indexOf('down ') == 0) {
      +          c.className = c.className.slice(5);
      +        }
      +        if (c.className.indexOf('up ') == 0) {
      +          c.className = c.className.slice(3);
      +        }
      +      }
      +    }
      +  }
      +
      +  window['initialSort'] = initialSort;
      +  window['toggleSort'] = toggleSort;
      +
      +})();
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/source.gif b/waffle-tomcat10/jacoco/jacoco-resources/source.gif
      new file mode 100644
      index 0000000000..b226e41c52
      Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/source.gif differ
      diff --git a/waffle-tomcat10/jacoco/jacoco-resources/up.gif b/waffle-tomcat10/jacoco/jacoco-resources/up.gif
      new file mode 100644
      index 0000000000..58ed21660e
      Binary files /dev/null and b/waffle-tomcat10/jacoco/jacoco-resources/up.gif differ
      diff --git a/waffle-tomcat10/jacoco/jacoco-sessions.html b/waffle-tomcat10/jacoco/jacoco-sessions.html
      new file mode 100644
      index 0000000000..b1d5c88913
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/jacoco-sessions.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Sessions</title></head><body><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><a href="index.html" class="el_report">waffle-tomcat10</a> &gt; <span class="el_session">Sessions</span></div><h1>Sessions</h1><p>This coverage report is based on execution data from the following sessions:</p><table class="coverage" cellspacing="0"><thead><tr><td>Session</td><td>Start Time</td><td>Dump Time</td></tr></thead><tbody><tr><td><span class="el_session">JeremyDesktop-bf780878</span></td><td>2025 Jan 1 01:31:50</td><td>2025 Jan 1 01:31:53</td></tr></tbody></table><p>Execution data for the following classes is considered in this report:</p><table class="coverage" cellspacing="0"><thead><tr><td>Class</td><td>Id</td></tr></thead><tbody><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.AbstractLinkedDeque</span></td><td><code>2a77ffa24d5d9be7</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BLCHeader.DrainStatusRef</span></td><td><code>f84773f97a6736ed</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BLCHeader.PadDrainStatus</span></td><td><code>7d9a5319a41b9ca8</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue</span></td><td><code>c00926e9a449c6ff</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueColdProducerFields</span></td><td><code>a09cd70d23ecaf3d</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueConsumerFields</span></td><td><code>6aa34cb249547b49</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueuePad1</span></td><td><code>fba0a1f26e123349</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueuePad2</span></td><td><code>659c8423778e5829</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueuePad3</span></td><td><code>4c5dd3b7ab6320a4</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueProducerFields</span></td><td><code>2c89335480f8e1a3</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BoundedLocalCache</span></td><td><code>c40895bd13c08a30</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BoundedLocalCache.AddTask</span></td><td><code>2b96ff3dfbdab506</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BoundedLocalCache.BoundedLocalManualCache</span></td><td><code>2e99a20c317be260</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BoundedLocalCache.PerformCleanupTask</span></td><td><code>325653349ec9abfb</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.BoundedLocalCache.RemovalTask</span></td><td><code>064b1491c34fa605</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.Buffer</span></td><td><code>b1599ea3d29c0bdd</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.Caffeine</span></td><td><code>3033f4dc9a559439</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.DisabledBuffer</span></td><td><code>bae42ed77b9c7bab</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.DisabledScheduler</span></td><td><code>367cc347203f24c6</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.LocalCacheFactory</span></td><td><code>eafc83c4690285c7</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.LocalManualCache</span></td><td><code>668cd73d0e9e0e99</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.MpscChunkedArrayQueue</span></td><td><code>bbccdde9ba05cf42</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.MpscChunkedArrayQueueColdProducerFields</span></td><td><code>977fd31d4bc0a927</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.MpscGrowableArrayQueue</span></td><td><code>56727eedb72e9c12</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.Node</span></td><td><code>c9d7459d5e88dfe5</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.NodeFactory</span></td><td><code>09fd07b81651c244</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.NodeFactory.DeadStrongKey</span></td><td><code>8d763f90e68321d1</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.NodeFactory.DeadWeakKey</span></td><td><code>14c5fc6c93daea06</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.NodeFactory.RetiredStrongKey</span></td><td><code>8ba46556c0fe9ae2</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.NodeFactory.RetiredWeakKey</span></td><td><code>fcd9c1d025ed4138</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.PS</span></td><td><code>b8394d3b1e9a2204</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.PSW</span></td><td><code>5831cb345519a101</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.References.WeakKeyReference</span></td><td><code>35b9176751619591</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.RemovalCause</span></td><td><code>5635bc3ea5b0be0a</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.RemovalCause.1</span></td><td><code>63e34038fca337d0</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.RemovalCause.2</span></td><td><code>e9a223aac1af09fe</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.RemovalCause.3</span></td><td><code>bdf614718504efd6</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.RemovalCause.4</span></td><td><code>8251a6ebebe76147</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.RemovalCause.5</span></td><td><code>63fc8265ff1c8342</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.SS</span></td><td><code>81263068a75eb751</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.SSW</span></td><td><code>ca19b3f66d87c91c</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.Scheduler</span></td><td><code>8ba6d50828293955</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.SingletonWeigher</span></td><td><code>f15cdba8a06e8d8c</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.SystemTicker</span></td><td><code>8ddf9883f173703f</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.Ticker</span></td><td><code>4cdd1e09fe54e663</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.Weigher</span></td><td><code>250db2c53ab263c8</code></td></tr><tr><td><span class="el_class">com.github.benmanes.caffeine.cache.WriteOrderDeque</span></td><td><code>ef7fb210f1f19988</code></td></tr><tr><td><span class="el_class">com.sun.jna.Callback</span></td><td><code>434efcdf485821aa</code></td></tr><tr><td><span class="el_class">com.sun.jna.CallbackReference</span></td><td><code>b338cbfc6770d971</code></td></tr><tr><td><span class="el_class">com.sun.jna.CallbackReference.AttachOptions</span></td><td><code>112330ffdc516f64</code></td></tr><tr><td><span class="el_class">com.sun.jna.DefaultTypeMapper</span></td><td><code>86028cb7ac241e13</code></td></tr><tr><td><span class="el_class">com.sun.jna.DefaultTypeMapper.Entry</span></td><td><code>dcdeaaa861c940a1</code></td></tr><tr><td><span class="el_class">com.sun.jna.FromNativeContext</span></td><td><code>40994fdd441efd8b</code></td></tr><tr><td><span class="el_class">com.sun.jna.Function</span></td><td><code>61a6466c513aec4b</code></td></tr><tr><td><span class="el_class">com.sun.jna.FunctionParameterContext</span></td><td><code>8a741ba61be9844f</code></td></tr><tr><td><span class="el_class">com.sun.jna.FunctionResultContext</span></td><td><code>7efc8f5dc5b70008</code></td></tr><tr><td><span class="el_class">com.sun.jna.IntegerType</span></td><td><code>ccfd0c669f8c00de</code></td></tr><tr><td><span class="el_class">com.sun.jna.JNIEnv</span></td><td><code>50a7c0699da27f8c</code></td></tr><tr><td><span class="el_class">com.sun.jna.Klass</span></td><td><code>ee8a7cc34d94dedc</code></td></tr><tr><td><span class="el_class">com.sun.jna.LastErrorException</span></td><td><code>7315be387b0f1366</code></td></tr><tr><td><span class="el_class">com.sun.jna.Library.Handler</span></td><td><code>271195e9e75dbdeb</code></td></tr><tr><td><span class="el_class">com.sun.jna.Library.Handler.FunctionInfo</span></td><td><code>d9b0ade05420b393</code></td></tr><tr><td><span class="el_class">com.sun.jna.Memory</span></td><td><code>88f71f582793148b</code></td></tr><tr><td><span class="el_class">com.sun.jna.Memory.MemoryDisposer</span></td><td><code>7cf0238361da29a1</code></td></tr><tr><td><span class="el_class">com.sun.jna.Memory.SharedMemory</span></td><td><code>060c20236cd99563</code></td></tr><tr><td><span class="el_class">com.sun.jna.MethodParameterContext</span></td><td><code>f1cb05e60286b6fb</code></td></tr><tr><td><span class="el_class">com.sun.jna.MethodResultContext</span></td><td><code>fb78f286fcfc2319</code></td></tr><tr><td><span class="el_class">com.sun.jna.Native</span></td><td><code>d7a6c665abe5fc32</code></td></tr><tr><td><span class="el_class">com.sun.jna.Native.1</span></td><td><code>3a0446487a7a5991</code></td></tr><tr><td><span class="el_class">com.sun.jna.Native.2</span></td><td><code>f65a2d6f496c39fe</code></td></tr><tr><td><span class="el_class">com.sun.jna.Native.5</span></td><td><code>cb479c1d000e4d09</code></td></tr><tr><td><span class="el_class">com.sun.jna.Native.7</span></td><td><code>7b06cba0dd94a5ec</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeLibrary</span></td><td><code>dccba72a21cca387</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeLibrary.1</span></td><td><code>4f6359dafbb1de14</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeLibrary.2</span></td><td><code>2344f2740e04dbd8</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeLibrary.NativeLibraryDisposer</span></td><td><code>f8b03d9288b882f5</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeLong</span></td><td><code>aa72e99971baa1b1</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeMappedConverter</span></td><td><code>2b9223675c1535f8</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeString</span></td><td><code>3d28aed2b6c13d41</code></td></tr><tr><td><span class="el_class">com.sun.jna.NativeString.StringMemory</span></td><td><code>ead13a5db1177ab8</code></td></tr><tr><td><span class="el_class">com.sun.jna.Platform</span></td><td><code>3745629b5e34f0f0</code></td></tr><tr><td><span class="el_class">com.sun.jna.Pointer</span></td><td><code>764763ec4e1c97bc</code></td></tr><tr><td><span class="el_class">com.sun.jna.Pointer.Opaque</span></td><td><code>cdade0c9acd31f2b</code></td></tr><tr><td><span class="el_class">com.sun.jna.PointerType</span></td><td><code>6f69fbe02f0f9f9b</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure</span></td><td><code>9fb0c4f3f16b5ba5</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.1</span></td><td><code>0638697bbe80e6d7</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.2</span></td><td><code>d8bdcc39d3ccb5bb</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.3</span></td><td><code>c49e694d509ea7fc</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.AutoAllocated</span></td><td><code>788b1d628aacda70</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.LayoutInfo</span></td><td><code>ac985b99d0086bbf</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.StructField</span></td><td><code>2d8f416086d6d7a2</code></td></tr><tr><td><span class="el_class">com.sun.jna.Structure.StructureSet</span></td><td><code>62c90ea3c3226fbc</code></td></tr><tr><td><span class="el_class">com.sun.jna.StructureReadContext</span></td><td><code>d4dc46395a7224e9</code></td></tr><tr><td><span class="el_class">com.sun.jna.StructureWriteContext</span></td><td><code>bfa000b79135b078</code></td></tr><tr><td><span class="el_class">com.sun.jna.ToNativeContext</span></td><td><code>65c16cf68ab964ac</code></td></tr><tr><td><span class="el_class">com.sun.jna.VarArgsChecker</span></td><td><code>f065ed464f2b4194</code></td></tr><tr><td><span class="el_class">com.sun.jna.VarArgsChecker.RealVarArgsChecker</span></td><td><code>8adbc20c1979b81f</code></td></tr><tr><td><span class="el_class">com.sun.jna.WString</span></td><td><code>cc3ec3150181c10b</code></td></tr><tr><td><span class="el_class">com.sun.jna.WeakMemoryHolder</span></td><td><code>154292fbd52e87e2</code></td></tr><tr><td><span class="el_class">com.sun.jna.internal.Cleaner</span></td><td><code>2aa35b38a95f3b08</code></td></tr><tr><td><span class="el_class">com.sun.jna.internal.Cleaner.CleanerRef</span></td><td><code>e869958fc56960c1</code></td></tr><tr><td><span class="el_class">com.sun.jna.internal.Cleaner.CleanerThread</span></td><td><code>627aa76ee12b9514</code></td></tr><tr><td><span class="el_class">com.sun.jna.internal.ReflectionUtils</span></td><td><code>610b059d03270bdf</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Advapi32</span></td><td><code>f8e1a0a2ea73383d</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Advapi32Util</span></td><td><code>102d9a3137a78152</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Advapi32Util.Account</span></td><td><code>46e5dfdd5143c365</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Kernel32</span></td><td><code>472dc22bc0cfe59d</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Kernel32Util</span></td><td><code>6d7560615c5efc20</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Secur32</span></td><td><code>0d61638b4ca5acd9</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Secur32Util</span></td><td><code>68e13b4f9a5977df</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi</span></td><td><code>fa6aa844c76e70ee</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.CredHandle</span></td><td><code>3baea375a2c7d471</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.CtxtHandle</span></td><td><code>e4d89fe73ef49299</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.SECURITY_INTEGER</span></td><td><code>f41a693837de22e3</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.SecBuffer</span></td><td><code>701b05d165336697</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.SecBufferDesc</span></td><td><code>d62eea0528a539d2</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.SecHandle</span></td><td><code>13f2de26c224ca14</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Sspi.TimeStamp</span></td><td><code>5ff64302a5eb5698</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc</span></td><td><code>b922167678020fd8</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.VersionHelpers</span></td><td><code>1d1771eb9d30e778</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.W32Errors</span></td><td><code>5701361c3faf1592</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.Win32Exception</span></td><td><code>6a8d6bf8aac4b9c6</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinBase</span></td><td><code>79857d72c2cf8390</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinDef.DWORD</span></td><td><code>3feb999281b8ec0f</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinDef.WORD</span></td><td><code>0a0cf2d428ca57ae</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.HANDLE</span></td><td><code>9ed662537a4697d1</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.HANDLEByReference</span></td><td><code>4a5954dd001ac818</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.HRESULT</span></td><td><code>afb3c452a4d553d8</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.LocaleMacros</span></td><td><code>9e196ff1ed954e27</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.OSVERSIONINFOEX</span></td><td><code>6c398e0f5ab8abf2</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.PSID</span></td><td><code>dfcc50eab60ac362</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.PSID.ByReference</span></td><td><code>6fc868da3d5ea4f6</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.SID_AND_ATTRIBUTES</span></td><td><code>07f143e2e1528635</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.TOKEN_GROUPS</span></td><td><code>88d74322539562fa</code></td></tr><tr><td><span class="el_class">com.sun.jna.platform.win32.WinNT.TOKEN_USER</span></td><td><code>936c52f4cd03146d</code></td></tr><tr><td><span class="el_class">com.sun.jna.ptr.ByReference</span></td><td><code>4b4ccdf4837f8e37</code></td></tr><tr><td><span class="el_class">com.sun.jna.ptr.IntByReference</span></td><td><code>08a380733d32a8a9</code></td></tr><tr><td><span class="el_class">com.sun.jna.ptr.PointerByReference</span></td><td><code>35283d86e7a60f68</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APIFunctionMapper</span></td><td><code>ba0d3e734fac140b</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APIOptions</span></td><td><code>f4cb5ad08fef16dd</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APIOptions.1</span></td><td><code>5383c92c07560c19</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APIOptions.2</span></td><td><code>3f322c8368523ab9</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APITypeMapper</span></td><td><code>3fce234ec90e0283</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APITypeMapper.1</span></td><td><code>c86c2ee3fff50376</code></td></tr><tr><td><span class="el_class">com.sun.jna.win32.W32APITypeMapper.2</span></td><td><code>c07bb09d9c767885</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL</span></td><td><code>c579c5333dcee547</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL.1</span></td><td><code>61bf2b4a0ec4b4a2</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL.ProviderService</span></td><td><code>5b8ec4cca0c9bbac</code></td></tr><tr><td><span class="el_class">jakarta.servlet.ServletInputStream</span></td><td><code>4e94768e3f58a02f</code></td></tr><tr><td><span class="el_class">mockit.Expectations</span></td><td><code>7a26ef36dfc51562</code></td></tr><tr><td><span class="el_class">mockit.Invocations</span></td><td><code>7f0fc5adf193bc07</code></td></tr><tr><td><span class="el_class">mockit.asm.AnnotatedReader</span></td><td><code>3f8b15d63d5b1223</code></td></tr><tr><td><span class="el_class">mockit.asm.BaseWriter</span></td><td><code>2f5216f3902a031d</code></td></tr><tr><td><span class="el_class">mockit.asm.SignatureWriter</span></td><td><code>004a622ec556d71a</code></td></tr><tr><td><span class="el_class">mockit.asm.annotations.AnnotationReader</span></td><td><code>e0378165fe5828ad</code></td></tr><tr><td><span class="el_class">mockit.asm.annotations.AnnotationVisitor</span></td><td><code>cce79663883beb24</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.BootstrapMethodsWriter</span></td><td><code>20f41b42fbdb1bb2</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.ClassInfo</span></td><td><code>4fc39bbd4b2dd78d</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.ClassReader</span></td><td><code>3df0678d6d1c626f</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.ClassVisitor</span></td><td><code>f1490a92ec992dd6</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.ClassWriter</span></td><td><code>6a072a3a94756d04</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.ConstantPoolCopying</span></td><td><code>441e20196d8cb640</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.InnerClassesWriter</span></td><td><code>388c8c2f4a3e4e36</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.InterfaceWriter</span></td><td><code>18686be666fe08ff</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.NestHostWriter</span></td><td><code>c5052d5920ff1894</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.NestMembersWriter</span></td><td><code>b6c1d948c533d80c</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.SourceFileWriter</span></td><td><code>0b780c04e58abeb3</code></td></tr><tr><td><span class="el_class">mockit.asm.classes.WrappingClassVisitor</span></td><td><code>b3e5b03e17c38275</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.AttributeWriter</span></td><td><code>25c74aa04b899d45</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.BootstrapMethodItem</span></td><td><code>aa369b05674ff114</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.ClassMemberItem</span></td><td><code>1caa3d17729e0e2b</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.ConstantPoolGeneration</span></td><td><code>4d653e6bc9863f4b</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.DoubleItem</span></td><td><code>c06b8443f6b1c15a</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.DynamicItem</span></td><td><code>42989c8bbc5328ee</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.FloatItem</span></td><td><code>c122155f2db80e38</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.IntItem</span></td><td><code>740e7027bc8d49eb</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.IntValueItem</span></td><td><code>af1e6b78d7348342</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.Item</span></td><td><code>58e9ad848cf0d674</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.LongItem</span></td><td><code>78ab9bc24adae6cb</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.LongValueItem</span></td><td><code>fbb6589ad2a3fcd9</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.MergedTypeTableItem</span></td><td><code>c1bde84156e1aaf6</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.MethodHandleItem</span></td><td><code>9f60dccaac1cd812</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.NameAndTypeItem</span></td><td><code>f778e904acdcd5f6</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.NormalTypeTableItem</span></td><td><code>0f28c381dacbff33</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.StringItem</span></td><td><code>8e05125fb952552d</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.TypeOrMemberItem</span></td><td><code>3b03047dd0c1d2bc</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.TypeTableItem</span></td><td><code>203911eb396b6673</code></td></tr><tr><td><span class="el_class">mockit.asm.constantPool.UninitializedTypeTableItem</span></td><td><code>20975b327dc8fb42</code></td></tr><tr><td><span class="el_class">mockit.asm.controlFlow.CFGAnalysis</span></td><td><code>657843ccc84ac82d</code></td></tr><tr><td><span class="el_class">mockit.asm.controlFlow.Edge</span></td><td><code>a8df1c9ee7d28d9c</code></td></tr><tr><td><span class="el_class">mockit.asm.controlFlow.Frame</span></td><td><code>56163feb0a0ab003</code></td></tr><tr><td><span class="el_class">mockit.asm.controlFlow.Label</span></td><td><code>0ce1d53145507166</code></td></tr><tr><td><span class="el_class">mockit.asm.controlFlow.StackMapTableWriter</span></td><td><code>814243b602750b62</code></td></tr><tr><td><span class="el_class">mockit.asm.exceptionHandling.ExceptionHandler</span></td><td><code>75a7fc0ac9dfe487</code></td></tr><tr><td><span class="el_class">mockit.asm.exceptionHandling.ExceptionHandling</span></td><td><code>89c40897c167ea92</code></td></tr><tr><td><span class="el_class">mockit.asm.fields.FieldReader</span></td><td><code>2dec1d4b3188c63d</code></td></tr><tr><td><span class="el_class">mockit.asm.fields.FieldVisitor</span></td><td><code>5e80e7d57378bce0</code></td></tr><tr><td><span class="el_class">mockit.asm.jvmConstants.Access</span></td><td><code>44f9a6befa0d7f16</code></td></tr><tr><td><span class="el_class">mockit.asm.jvmConstants.JVMInstruction</span></td><td><code>3e3e99cdb9710f4c</code></td></tr><tr><td><span class="el_class">mockit.asm.metadata.ClassMetadataReader</span></td><td><code>3f55d3e6a0d11cd3</code></td></tr><tr><td><span class="el_class">mockit.asm.metadata.ClassMetadataReader.Attribute</span></td><td><code>e985a1a1cfbcda93</code></td></tr><tr><td><span class="el_class">mockit.asm.metadata.ClassMetadataReader.ConstantPoolTag</span></td><td><code>59bc74d3e6f420f0</code></td></tr><tr><td><span class="el_class">mockit.asm.metadata.ClassMetadataReader.MemberInfo</span></td><td><code>c14d45405b2d204a</code></td></tr><tr><td><span class="el_class">mockit.asm.metadata.ClassMetadataReader.MethodInfo</span></td><td><code>c761410564f15f46</code></td></tr><tr><td><span class="el_class">mockit.asm.metadata.ObjectWithAttributes</span></td><td><code>e003e6ea548861b0</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.ExceptionsWriter</span></td><td><code>d5e082c8f010a044</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.LineNumberTableWriter</span></td><td><code>be6163340dfadc65</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.LocalVariableTableWriter</span></td><td><code>d541feb0a9c19962</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.MethodReader</span></td><td><code>033e4e6df7e5f7f4</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.MethodVisitor</span></td><td><code>58d05007728aa171</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.MethodWriter</span></td><td><code>dc33fbd2a4105dce</code></td></tr><tr><td><span class="el_class">mockit.asm.methods.WrappingMethodVisitor</span></td><td><code>8dfd35348df79999</code></td></tr><tr><td><span class="el_class">mockit.asm.types.ArrayType</span></td><td><code>9ebee9e3d7dcb66f</code></td></tr><tr><td><span class="el_class">mockit.asm.types.JavaType</span></td><td><code>7a4290d165920664</code></td></tr><tr><td><span class="el_class">mockit.asm.types.ObjectType</span></td><td><code>9eddb14b705b9f29</code></td></tr><tr><td><span class="el_class">mockit.asm.types.PrimitiveType</span></td><td><code>d1e4c8aed8c87893</code></td></tr><tr><td><span class="el_class">mockit.asm.types.ReferenceType</span></td><td><code>9617f56c8a752247</code></td></tr><tr><td><span class="el_class">mockit.asm.util.ByteVector</span></td><td><code>318ab749bbb19a73</code></td></tr><tr><td><span class="el_class">mockit.asm.util.BytecodeReader</span></td><td><code>babad71a4e2748b7</code></td></tr><tr><td><span class="el_class">mockit.asm.util.MethodHandle</span></td><td><code>93296730c904dc15</code></td></tr><tr><td><span class="el_class">mockit.coverage.CodeCoverage</span></td><td><code>6bd6041105c94b0d</code></td></tr><tr><td><span class="el_class">mockit.coverage.Configuration</span></td><td><code>ee3e0a8e5ad38345</code></td></tr><tr><td><span class="el_class">mockit.integration.TestRunnerDecorator</span></td><td><code>208ee8fde89d3897</code></td></tr><tr><td><span class="el_class">mockit.integration.junit5.JMockitExtension</span></td><td><code>1fadb1fba9eff25c</code></td></tr><tr><td><span class="el_class">mockit.integration.junit5.JMockitExtension.ParamValueInitContext</span></td><td><code>4356925d279708de</code></td></tr><tr><td><span class="el_class">mockit.internal.BaseClassModifier</span></td><td><code>437220472fe6bdfd</code></td></tr><tr><td><span class="el_class">mockit.internal.BaseClassModifier.1</span></td><td><code>fc6c64cf5b59fb61</code></td></tr><tr><td><span class="el_class">mockit.internal.BaseClassModifier.DynamicModifier</span></td><td><code>88686ae7e8482bf7</code></td></tr><tr><td><span class="el_class">mockit.internal.ClassFile</span></td><td><code>29596b644bbf9923</code></td></tr><tr><td><span class="el_class">mockit.internal.ClassLoadingBridge</span></td><td><code>15f24762849122c1</code></td></tr><tr><td><span class="el_class">mockit.internal.classGeneration.ImplementationClass</span></td><td><code>4e77fb4abdc4b79a</code></td></tr><tr><td><span class="el_class">mockit.internal.classGeneration.ImplementationClass.1</span></td><td><code>d8095aa238215b46</code></td></tr><tr><td><span class="el_class">mockit.internal.classGeneration.MockedTypeInfo</span></td><td><code>b99474624967f2d8</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.ActiveInvocations</span></td><td><code>4eccb20f2a5f86b1</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.EquivalentInstances</span></td><td><code>4c437eafa03a42a2</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.ExecutionMode</span></td><td><code>5072e5d769324541</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.ExecutionMode.1</span></td><td><code>8231b81c6d6208c7</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.ExecutionMode.2</span></td><td><code>58a2925fb6dee872</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.ExecutionMode.3</span></td><td><code>b08f5ec7b33cbb7c</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.Expectation</span></td><td><code>adf7f6392392983f</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.FailureState</span></td><td><code>cc17a255e2078b26</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.InstanceBasedMatching</span></td><td><code>3d9e79c39b9bf9ca</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.MockingFilters</span></td><td><code>f7a6fe223c55cae1</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.Phase</span></td><td><code>9c34712d90f1c918</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.PhasedExecutionState</span></td><td><code>e9d0b26bc014e035</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.RecordAndReplayExecution</span></td><td><code>cf17c0b3ce437488</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.RecordPhase</span></td><td><code>6b0a6c0723058932</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.ReplayPhase</span></td><td><code>64cfc795e675cb34</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.TestOnlyPhase</span></td><td><code>cc9a79a666754158</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.ArgumentValuesAndMatchers</span></td><td><code>f9aac0624fb73c05</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.ArgumentValuesAndMatchersWithoutVarargs</span></td><td><code>d5637188e8cc4aeb</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.ExpectationError</span></td><td><code>1ee16adc610723ff</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.ExpectedInvocation</span></td><td><code>a81962b694e9ce5e</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.InvocationArguments</span></td><td><code>47042e13cf0ebd6d</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.InvocationConstraints</span></td><td><code>662637b27f8f9f54</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.InvocationResult</span></td><td><code>af4e45ce249d30b6</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.InvocationResult.ReturnValueResult</span></td><td><code>bbace4ad37b26e85</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.invocation.InvocationResults</span></td><td><code>08afce9b0e58e824</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.BaseTypeRedefinition</span></td><td><code>1c628a1a87fd61cc</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.BaseTypeRedefinition.1</span></td><td><code>135608c5a79f3baf</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.BaseTypeRedefinition.MockedClass</span></td><td><code>4241986c180cfed8</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.CascadingTypeRedefinition</span></td><td><code>81f42b0a8741d35d</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.FieldTypeRedefinition</span></td><td><code>e877170731a6eb1e</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.FieldTypeRedefinitions</span></td><td><code>35630960e9213938</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.InstanceFactory</span></td><td><code>b059b857c9659afd</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.InstanceFactory.ClassInstanceFactory</span></td><td><code>efc4ba5cc5f4cdac</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.InstanceFactory.InterfaceInstanceFactory</span></td><td><code>b7d572b72e3d3236</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.InterfaceImplementationGenerator</span></td><td><code>9b5087ca2f1048aa</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.MockedBridge</span></td><td><code>11ebc7261cc3cb49</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.MockedClassModifier</span></td><td><code>378a3628c36a0287</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.MockedType</span></td><td><code>df48b180ec3682fb</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.ParameterTypeRedefinitions</span></td><td><code>e2abde05df3b1c64</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.TypeRedefinition</span></td><td><code>4177d9428cbd2e81</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.mocking.TypeRedefinitions</span></td><td><code>a4af6d88279c79a3</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.state.CascadingTypes</span></td><td><code>e9433ca41b315d72</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.state.ExecutingTest</span></td><td><code>2fc1937508a2fa8a</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.state.MockedTypeCascade</span></td><td><code>e587fabb1aafa7d2</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.transformation.ArgumentCapturing</span></td><td><code>948b2632ffea9745</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.transformation.ArgumentMatching</span></td><td><code>558350e104310aef</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.transformation.ExpectationsTransformer</span></td><td><code>a28815043857aef2</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.transformation.ExpectationsTransformer.1</span></td><td><code>2bba08fe3f19ce07</code></td></tr><tr><td><span class="el_class">mockit.internal.expectations.transformation.InvocationBlockModifier</span></td><td><code>c96d1a2f5c77bdf5</code></td></tr><tr><td><span class="el_class">mockit.internal.faking.FakeBridge</span></td><td><code>d5c7bf36e16d2186</code></td></tr><tr><td><span class="el_class">mockit.internal.faking.FakeClasses</span></td><td><code>ecd18691572198ca</code></td></tr><tr><td><span class="el_class">mockit.internal.faking.FakeClasses.SavePoint</span></td><td><code>ca6b2f2cb18f5f14</code></td></tr><tr><td><span class="el_class">mockit.internal.faking.FakeMethodBridge</span></td><td><code>283dc1fcb5d58bad</code></td></tr><tr><td><span class="el_class">mockit.internal.faking.FakeStates</span></td><td><code>d3de3753be2ecde3</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.InjectionPoint</span></td><td><code>3b574be4e12bbeed</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.InjectionProvider</span></td><td><code>6ff449a642886939</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.InjectionProviders</span></td><td><code>7dbea24730c7c152</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.InjectionState</span></td><td><code>31831b185f8e2f41</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.InterfaceResolution</span></td><td><code>3aee6d087d50d3a1</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.LifecycleMethods</span></td><td><code>376296af3032aead</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.TestedClassInstantiations</span></td><td><code>aee5214f3e2696bc</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.TestedObject</span></td><td><code>136985dd3d64eb64</code></td></tr><tr><td><span class="el_class">mockit.internal.injection.TestedParameters</span></td><td><code>2a781347c9e613af</code></td></tr><tr><td><span class="el_class">mockit.internal.reflection.ConstructorReflection</span></td><td><code>fe0c09ff97f2a3ce</code></td></tr><tr><td><span class="el_class">mockit.internal.reflection.FieldReflection</span></td><td><code>abd12061bd4283a1</code></td></tr><tr><td><span class="el_class">mockit.internal.reflection.GenericTypeReflection</span></td><td><code>b7aa45cedb777f0a</code></td></tr><tr><td><span class="el_class">mockit.internal.reflection.GenericTypeReflection.GenericSignature</span></td><td><code>653701ce149724d6</code></td></tr><tr><td><span class="el_class">mockit.internal.reflection.ParameterReflection</span></td><td><code>75296e515beb647c</code></td></tr><tr><td><span class="el_class">mockit.internal.reflection.RealMethodOrConstructor</span></td><td><code>8990a00c86f27c70</code></td></tr><tr><td><span class="el_class">mockit.internal.startup.ClassLoadingBridgeFields</span></td><td><code>3ebd7aada25f5a8a</code></td></tr><tr><td><span class="el_class">mockit.internal.startup.ClassLoadingBridgeFields.FieldAdditionTransformer</span></td><td><code>ed1206875ae014cf</code></td></tr><tr><td><span class="el_class">mockit.internal.startup.ClassLoadingBridgeFields.FieldAdditionTransformer.1</span></td><td><code>ec57dc6d9a4881f8</code></td></tr><tr><td><span class="el_class">mockit.internal.startup.JMockitInitialization</span></td><td><code>0cd55b58aee06d7b</code></td></tr><tr><td><span class="el_class">mockit.internal.startup.Startup</span></td><td><code>1d083da07ec4fdf7</code></td></tr><tr><td><span class="el_class">mockit.internal.state.CachedClassfiles</span></td><td><code>210df8762ca2e895</code></td></tr><tr><td><span class="el_class">mockit.internal.state.MockFixture</span></td><td><code>ffebddc45b811643</code></td></tr><tr><td><span class="el_class">mockit.internal.state.ParameterNames</span></td><td><code>820a3b47bf64ce8f</code></td></tr><tr><td><span class="el_class">mockit.internal.state.SavePoint</span></td><td><code>898f466122816107</code></td></tr><tr><td><span class="el_class">mockit.internal.state.TestRun</span></td><td><code>44a16518219034d7</code></td></tr><tr><td><span class="el_class">mockit.internal.state.TestRun.1</span></td><td><code>89ddc43d7d4169c3</code></td></tr><tr><td><span class="el_class">mockit.internal.util.ClassLoad</span></td><td><code>7a804751dfac4c20</code></td></tr><tr><td><span class="el_class">mockit.internal.util.DefaultValues</span></td><td><code>586ef07b130db778</code></td></tr><tr><td><span class="el_class">mockit.internal.util.DefaultValues.1</span></td><td><code>1880b785d46249f0</code></td></tr><tr><td><span class="el_class">mockit.internal.util.DefaultValues.2</span></td><td><code>3b37fc59ddb47d37</code></td></tr><tr><td><span class="el_class">mockit.internal.util.DefaultValues.3</span></td><td><code>ab3ba8d96a396d9d</code></td></tr><tr><td><span class="el_class">mockit.internal.util.GeneratedClasses</span></td><td><code>2b34bcb398d81e27</code></td></tr><tr><td><span class="el_class">mockit.internal.util.ObjectMethods</span></td><td><code>55ae7fb2803ca101</code></td></tr><tr><td><span class="el_class">mockit.internal.util.ParameterNameExtractor</span></td><td><code>ce314cc47e2bddac</code></td></tr><tr><td><span class="el_class">mockit.internal.util.TestMethod</span></td><td><code>651527a55f1be97c</code></td></tr><tr><td><span class="el_class">mockit.internal.util.TypeConversionBytecode</span></td><td><code>7f8024ac9fd6e5b3</code></td></tr><tr><td><span class="el_class">mockit.internal.util.TypeDescriptor</span></td><td><code>1e88781829c35013</code></td></tr><tr><td><span class="el_class">mockit.internal.util.Utilities</span></td><td><code>8500120edad3d9da</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.Installer</span></td><td><code>8bf7b5c7d2be2c5c</code></td></tr><tr><td><span class="el_class">org.apache.catalina.LifecycleEvent</span></td><td><code>0f70c2183830b7a6</code></td></tr><tr><td><span class="el_class">org.apache.catalina.LifecycleState</span></td><td><code>684cd706c1cd3b5d</code></td></tr><tr><td><span class="el_class">org.apache.catalina.authenticator.AuthenticatorBase</span></td><td><code>8d75a6c351335b5b</code></td></tr><tr><td><span class="el_class">org.apache.catalina.authenticator.AuthenticatorBase.AllowCorsPreflight</span></td><td><code>1abd22d0059e0826</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.CoyoteInputStream</span></td><td><code>1751c868316abc16</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.CoyoteReader</span></td><td><code>9cf6e89595841ff0</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.InputBuffer</span></td><td><code>9be2cc9ad9db60dc</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.OutputBuffer</span></td><td><code>816bbe2aad1bb727</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request</span></td><td><code>f54da2a9ba8cd356</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.1</span></td><td><code>3e7c44cdf8eb8beb</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.2</span></td><td><code>287189e2e59f660e</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.3</span></td><td><code>c8f4cada41cf6e00</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.4</span></td><td><code>ad536b7076e25dd9</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.5</span></td><td><code>7a8f449e0099dc5b</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.6</span></td><td><code>b13045ef2e3889b6</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.7</span></td><td><code>b6877cbc9f5c596c</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Request.8</span></td><td><code>06e8ca2a20b9f2f5</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.RequestFacade</span></td><td><code>7f6c9c8f6def2aae</code></td></tr><tr><td><span class="el_class">org.apache.catalina.connector.Response</span></td><td><code>370a237962c09fb2</code></td></tr><tr><td><span class="el_class">org.apache.catalina.core.ApplicationMapping</span></td><td><code>2e6de316b30e834f</code></td></tr><tr><td><span class="el_class">org.apache.catalina.mapper.MappingData</span></td><td><code>0d875ad847998e54</code></td></tr><tr><td><span class="el_class">org.apache.catalina.realm.GenericPrincipal</span></td><td><code>98ecc1a59191aa1d</code></td></tr><tr><td><span class="el_class">org.apache.catalina.realm.RealmBase</span></td><td><code>93e46d06827f80d4</code></td></tr><tr><td><span class="el_class">org.apache.catalina.realm.RealmBase.AllRolesMode</span></td><td><code>51a9ea00eca99bb4</code></td></tr><tr><td><span class="el_class">org.apache.catalina.util.LifecycleBase</span></td><td><code>7a679fcc2e3fee47</code></td></tr><tr><td><span class="el_class">org.apache.catalina.util.LifecycleMBeanBase</span></td><td><code>46a06dd4de236998</code></td></tr><tr><td><span class="el_class">org.apache.catalina.util.ParameterMap</span></td><td><code>46dff14c2c519e3e</code></td></tr><tr><td><span class="el_class">org.apache.catalina.util.SessionIdGeneratorBase</span></td><td><code>26e6fd1f10144bee</code></td></tr><tr><td><span class="el_class">org.apache.catalina.util.StandardSessionIdGenerator</span></td><td><code>71495350da81d633</code></td></tr><tr><td><span class="el_class">org.apache.catalina.valves.ValveBase</span></td><td><code>b51f98b318e0bf59</code></td></tr><tr><td><span class="el_class">org.apache.juli.logging.DirectJDKLog</span></td><td><code>d45099484e08f676</code></td></tr><tr><td><span class="el_class">org.apache.juli.logging.LogFactory</span></td><td><code>8b872f53855e0af4</code></td></tr><tr><td><span class="el_class">org.apache.maven.plugin.surefire.log.api.NullConsoleLogger</span></td><td><code>50e0945fec76b333</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.BaseProviderFactory</span></td><td><code>da939a0152866a4b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.BiProperty</span></td><td><code>ed0281592f3976b4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.Command</span></td><td><code>52d7b732759793ff</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.Constants</span></td><td><code>8f58b0da27218c74</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.DumpErrorSingleton</span></td><td><code>ea25742803c9e73f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.ForkedProcessEventType</span></td><td><code>4f32ae2d4e670365</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.ForkingReporterFactory</span></td><td><code>be06f83accc5a8aa</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.ForkingRunListener</span></td><td><code>c34d0a9f28f66585</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.MasterProcessCommand</span></td><td><code>fc8c116a509256d1</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.Shutdown</span></td><td><code>47a37ed2a684ef1d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.cli.CommandLineOption</span></td><td><code>5825f848ee2abcd7</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.provider.AbstractProvider</span></td><td><code>0fea65ed91d7c12a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ConsoleOutputCapture</span></td><td><code>7ee3451cf95e2f70</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ConsoleOutputCapture.ForwardingPrintStream</span></td><td><code>804935f758ebaea3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ConsoleOutputCapture.NullOutputStream</span></td><td><code>a81300d2d50decb6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ReporterConfiguration</span></td><td><code>bf4075c0385296c2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.RunMode</span></td><td><code>70edc0a9dea60143</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.SimpleReportEntry</span></td><td><code>5acc6a35bed0445f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.TestOutputReportEntry</span></td><td><code>42f823601e9c6877</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder</span></td><td><code>c6f3b2781f9ac881</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.BufferedStream</span></td><td><code>11f69a75bc1c7211</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.Memento</span></td><td><code>e504a9e8cfc028af</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.Segment</span></td><td><code>773004ac6cd115ef</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.StreamReadStatus</span></td><td><code>8d5ee1d510b5c935</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamEncoder</span></td><td><code>9547668418a858ad</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.SegmentType</span></td><td><code>77b0d78ed3ddd126</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.suite.RunResult</span></td><td><code>54776a4f781eda02</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.DirectoryScannerParameters</span></td><td><code>529e83b831c47f72</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.IncludedExcludedPatterns</span></td><td><code>e12220ce508068df</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest</span></td><td><code>119a5faa0ae08a91</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest.ClassMatcher</span></td><td><code>cb9dd1b6069a872b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest.MethodMatcher</span></td><td><code>1d5196f3dfcebd52</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest.Type</span></td><td><code>6f46eedd1917ca66</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.RunOrderParameters</span></td><td><code>f74f6b3eb9f1a132</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.TestArtifactInfo</span></td><td><code>6d162cddde2db959</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.TestListResolver</span></td><td><code>0f4645f0d7fd02c8</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.TestRequest</span></td><td><code>1cb2946d8f0dc9e4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.CloseableIterator</span></td><td><code>01846c357efacb7b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.DefaultRunOrderCalculator</span></td><td><code>21a42ec0f6d63b8e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.DefaultScanResult</span></td><td><code>01695a339c66ab8d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.ReflectionUtils</span></td><td><code>7f9a430ae144c985</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.RunOrder</span></td><td><code>02d51e3d43c45761</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.TestsToRun</span></td><td><code>db4e8195893ece6d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.TestsToRun.ClassesIterator</span></td><td><code>543f26bfbdd04ce0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel</span></td><td><code>6826ce793980b64e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleWritableChannel</span></td><td><code>484afcc5593fbc9a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.Channels</span></td><td><code>eb60281181a1dc33</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.Channels.3</span></td><td><code>605144c3f67338aa</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.Channels.4</span></td><td><code>4834cf9402eabd28</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ClassMethod</span></td><td><code>817ad544e129b000</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.DaemonThreadFactory</span></td><td><code>b2161e778265b95d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.NamedThreadFactory</span></td><td><code>e3fb668fa8792230</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.DumpFileUtils</span></td><td><code>9cc0f89ffb46ba32</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ImmutableMap</span></td><td><code>c7398d64c0977b06</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ImmutableMap.Node</span></td><td><code>3a9862055afaee58</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ObjectUtils</span></td><td><code>992d9f9f62042416</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.AbstractPathConfiguration</span></td><td><code>f8b4034fe9c934d2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BooterDeserializer</span></td><td><code>d2b4a565d2c195cc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClassLoaderConfiguration</span></td><td><code>c511fbfeb1f35c23</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Classpath</span></td><td><code>d05af49602124353</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClasspathConfiguration</span></td><td><code>d14c58928ac6aa7b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader</span></td><td><code>8bc1181d0c5af474</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.1</span></td><td><code>72a8e2906ddc1c93</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.CommandRunnable</span></td><td><code>f6a6b02be2fb0964</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter</span></td><td><code>c8ce6ed3be8ec9bc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.1</span></td><td><code>68f2dae15ae26cc2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.3</span></td><td><code>fc217f2c1d87c099</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.4</span></td><td><code>2afb302f7c81f991</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.6</span></td><td><code>850ef2748b5ef5e6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.7</span></td><td><code>9577114e02a5bdef</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.8</span></td><td><code>3c8febd047cd2b0c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.PingScheduler</span></td><td><code>c83e3af27d5d3c47</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedNodeArg</span></td><td><code>9dbb0ff22dfc1303</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker</span></td><td><code>5ebcebb7a3e691d5</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProcessCheckerType</span></td><td><code>e554be35191ff5a7</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PropertiesWrapper</span></td><td><code>1e4e30276db2e62e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProviderConfiguration</span></td><td><code>ec2cd1e39ec4278e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.StartupConfiguration</span></td><td><code>70176a3dd903d57a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.SystemPropertyManager</span></td><td><code>a843c08e9b5c79ad</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.TypeEncodedValue</span></td><td><code>355d20d53741b604</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory</span></td><td><code>67a1c051e3809086</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory.1</span></td><td><code>cc936f6c85f9235a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory.2</span></td><td><code>a1fa70e4af42c555</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.CommandChannelDecoder</span></td><td><code>6684e6bad0b7c71e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.EventChannelEncoder</span></td><td><code>b69d9287bf010b1a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.EventChannelEncoder.StackTrace</span></td><td><code>265e85a5e039b0af</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelProcessorFactory</span></td><td><code>3b29862697f79d34</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory</span></td><td><code>8c14c673718fba9e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.stream.CommandDecoder</span></td><td><code>a23a4082e2bbd1ed</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.stream.CommandDecoder.1</span></td><td><code>950700970edca54a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.stream.EventEncoder</span></td><td><code>7c894cb22c8c16ca</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.JUnitPlatformProvider</span></td><td><code>958f7eb4311b3c2f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.LazyLauncher</span></td><td><code>a3841276826f155c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter</span></td><td><code>94dea888dddc8baf</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter.1</span></td><td><code>967ebdaaeef83363</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.TestPlanScannerFilter</span></td><td><code>db2b13639af3176e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ClassMethodIndexer</span></td><td><code>0e8f3008aec84fcb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.JavaVersion</span></td><td><code>363a8d75e6cd432e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.StringUtils</span></td><td><code>4dc496aad4d8c8ec</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.SystemProperties</span></td><td><code>45d027bffac2edd4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.SystemUtils</span></td><td><code>db6b6930fe523518</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.function.Suppliers</span></td><td><code>cca733b85f832b5f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.math.NumberUtils</span></td><td><code>c9f62ce6c986c2d4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.utils.StringUtils</span></td><td><code>abd8480c7152bf46</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils</span></td><td><code>011b23cd829ec86c</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.AbstractChunk</span></td><td><code>a4bd4c002876061f</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.ByteChunk</span></td><td><code>5e28b7f38beae476</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.CharChunk</span></td><td><code>aafdaf0cf3b9c5b9</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.MessageBytes</span></td><td><code>d3e4ebaa6aefd48a</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.MessageBytes.MessageBytesFactory</span></td><td><code>b3c07e7280b034b9</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.StringUtils</span></td><td><code>f72f3e26f0e50a3a</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.UEncoder</span></td><td><code>8758f2abe26fc75f</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.buf.UEncoder.SafeCharsSet</span></td><td><code>bf78c45cad86e87c</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.collections.ConcurrentCache</span></td><td><code>aa9b57980197547a</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.http.ConcurrentDateFormat</span></td><td><code>9027ad282debd267</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.http.FastHttpDateFormat</span></td><td><code>28a5d609cd144b7d</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.http.parser.MediaTypeCache</span></td><td><code>3a0388e77184097a</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.AttributeInfo</span></td><td><code>db3318d1179e1494</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.BaseModelMBean</span></td><td><code>8cd6ddc5f8954d2f</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.FeatureInfo</span></td><td><code>185cd2e12240ade6</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.ManagedBean</span></td><td><code>0d1c1cc865d6fcf1</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.OperationInfo</span></td><td><code>173afcb635d3c62f</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.ParameterInfo</span></td><td><code>4b60f5498f5f5625</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.Registry</span></td><td><code>e03e83010fe7f332</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.modules.MbeansDescriptorsIntrospectionSource</span></td><td><code>8d484d37cf22d528</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.modeler.modules.ModelerSource</span></td><td><code>9f9f56a9991c419b</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.res.StringManager</span></td><td><code>6f4ab184b879dbdd</code></td></tr><tr><td><span class="el_class">org.apache.tomcat.util.res.StringManager.1</span></td><td><code>be13787c742f191f</code></td></tr><tr><td><span class="el_class">org.apiguardian.api.API.Status</span></td><td><code>95d0ffea805fc01a</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractArrayAssert</span></td><td><code>52a83e4c5b0d885a</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractAssert</span></td><td><code>9153c59c9866e7b8</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractByteArrayAssert</span></td><td><code>2713facd24e3832c</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractCharSequenceAssert</span></td><td><code>79830f5bfa4f3aa4</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractCollectionAssert</span></td><td><code>371f173b2681dbc4</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractComparableAssert</span></td><td><code>4bc0b15e745cd2bd</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractEnumerableAssert</span></td><td><code>85ebcc1938625274</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractIntegerAssert</span></td><td><code>74584e5937642417</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractIterableAssert</span></td><td><code>875e03ce7eebc214</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractObjectAssert</span></td><td><code>f88b77b8cdba18c5</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AbstractStringAssert</span></td><td><code>d34c6c7d30471cbf</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.Assertions</span></td><td><code>8b5d1d363cfc106f</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AssertionsForClassTypes</span></td><td><code>3bb26d1a64f753ac</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.AssertionsForInterfaceTypes</span></td><td><code>17313199bf40b6f3</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.ByteArrayAssert</span></td><td><code>7906904d804b762a</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.CollectionAssert</span></td><td><code>2e9e8d32868d1ebb</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.IntegerAssert</span></td><td><code>8f698b21fd75dcf6</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.StringAssert</span></td><td><code>276d8048089fdd6d</code></td></tr><tr><td><span class="el_class">org.assertj.core.api.WritableAssertionInfo</span></td><td><code>cfe8767c89787032</code></td></tr><tr><td><span class="el_class">org.assertj.core.configuration.Configuration</span></td><td><code>6ea356a40ee80ccf</code></td></tr><tr><td><span class="el_class">org.assertj.core.configuration.ConfigurationProvider</span></td><td><code>3346c4801f784bb9</code></td></tr><tr><td><span class="el_class">org.assertj.core.configuration.PreferredAssumptionException</span></td><td><code>2789214dba489051</code></td></tr><tr><td><span class="el_class">org.assertj.core.configuration.PreferredAssumptionException.1</span></td><td><code>1eab9d24cce924d2</code></td></tr><tr><td><span class="el_class">org.assertj.core.configuration.Services</span></td><td><code>3dc1dd22400d3099</code></td></tr><tr><td><span class="el_class">org.assertj.core.error.AssertionErrorCreator</span></td><td><code>543f029a329b7766</code></td></tr><tr><td><span class="el_class">org.assertj.core.error.ConstructorInvoker</span></td><td><code>dbd17ff2cbb8bc28</code></td></tr><tr><td><span class="el_class">org.assertj.core.error.GroupTypeDescription</span></td><td><code>e2d30a487eec2c68</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.AbstractComparisonStrategy</span></td><td><code>9fcb1f09c849da9e</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Arrays</span></td><td><code>3fbd1fe7048fa682</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.ByteArrays</span></td><td><code>cab4c1affc126670</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.CommonValidations</span></td><td><code>d9d0b8eb4a72e411</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Comparables</span></td><td><code>492c5254e1e386a8</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Conditions</span></td><td><code>9baff3cf7a28d7f0</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Failures</span></td><td><code>8ba67cf50de48759</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Integers</span></td><td><code>51f142568138237e</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Iterables</span></td><td><code>f18aa7cfc4213dca</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Numbers</span></td><td><code>b1c5a72fc2773178</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Objects</span></td><td><code>4df2f0c084d1fac2</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Predicates</span></td><td><code>049321053006733f</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.StandardComparisonStrategy</span></td><td><code>cb180b5c43beb144</code></td></tr><tr><td><span class="el_class">org.assertj.core.internal.Strings</span></td><td><code>7e045dfabe913b45</code></td></tr><tr><td><span class="el_class">org.assertj.core.presentation.CompositeRepresentation</span></td><td><code>3230199b443ac68a</code></td></tr><tr><td><span class="el_class">org.assertj.core.presentation.StandardRepresentation</span></td><td><code>c5356b8393ecdf92</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.Arrays</span></td><td><code>20c1f3363764d24e</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.IterableUtil</span></td><td><code>f9e2689dc9f9dc4d</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.Lists</span></td><td><code>5895215344293d99</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.Preconditions</span></td><td><code>718301d7b0d951f1</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.Streams</span></td><td><code>d730dd591d3325a8</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.introspection.FieldSupport</span></td><td><code>1f44f51b62bb0ce5</code></td></tr><tr><td><span class="el_class">org.assertj.core.util.introspection.PropertySupport</span></td><td><code>381c5ad4b48534d7</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI</span></td><td><code>b5cb112a99fd1b1f</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.1</span></td><td><code>ed80b81835c50e7c</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.2</span></td><td><code>68e7868fb48efa3c</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.ProviderService</span></td><td><code>90fb351bc62eddf9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertEquals</span></td><td><code>aea44e892a85baf5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertFalse</span></td><td><code>490b1f992b8daa2c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotEquals</span></td><td><code>cbd0225f6ecb5cb3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotNull</span></td><td><code>e2884cd35b13d591</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNull</span></td><td><code>33d846259de857a9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertThrows</span></td><td><code>b610f9f2b407653a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertTrue</span></td><td><code>f0647c0dd50bd0ca</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertionUtils</span></td><td><code>6c2dda6a293d5c0e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.Assertions</span></td><td><code>6fe7bd6cc744a068</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator</span></td><td><code>43ef10ce77605f90</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.IndicativeSentences</span></td><td><code>9ab9100f1735780b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores</span></td><td><code>f15d5590363b49dd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Simple</span></td><td><code>e125babed463cf50</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Standard</span></td><td><code>1342164bd94b6208</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.TestInstance.Lifecycle</span></td><td><code>824d5aabc76a4e92</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ConditionEvaluationResult</span></td><td><code>35e14124a607c6e0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext</span></td><td><code>7c86fcf714cebd4b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext.Namespace</span></td><td><code>f54a3d73ed88c765</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext.Store</span></td><td><code>e944780f81f4a619</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.InvocationInterceptor</span></td><td><code>4b39cae55e027ad8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.TestInstancePreDestroyCallback</span></td><td><code>3ae4d9d89c44523e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.JupiterTestEngine</span></td><td><code>e2ae6d11698760d5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.CachingJupiterConfiguration</span></td><td><code>7e7fdcd1b43926e2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.DefaultJupiterConfiguration</span></td><td><code>3264494f5452162d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.EnumConfigurationParameterConverter</span></td><td><code>bab380425dca8d4f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter</span></td><td><code>518e1c643c30f164</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.AbstractExtensionContext</span></td><td><code>92d1cbb782871d54</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor</span></td><td><code>6bd43b670d3d109a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassExtensionContext</span></td><td><code>e06c010a57c8fe35</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassTestDescriptor</span></td><td><code>cbcf684282c128ae</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DefaultTestInstanceFactoryContext</span></td><td><code>92e45b48982d1267</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DisplayNameUtils</span></td><td><code>9775811d058104a0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ExtensionUtils</span></td><td><code>99569ba69e99ecc5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor</span></td><td><code>4b5e361d03d8e2d8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext</span></td><td><code>95abf612d36312bc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterTestDescriptor</span></td><td><code>2edd5e083fbd4650</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.LifecycleMethodUtils</span></td><td><code>1338a13e54c3417d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor</span></td><td><code>95f79302a3c3bfc9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodExtensionContext</span></td><td><code>98cadb8bc0242165</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils</span></td><td><code>6fdb52a1560f3f07</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor</span></td><td><code>4a4b21b6873750d1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractAnnotatedDescriptorWrapper</span></td><td><code>4c3051cd66ae8274</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractOrderingVisitor</span></td><td><code>2747cc3e148c57d9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractOrderingVisitor.DescriptorWrapperOrderer</span></td><td><code>01a66e5fdf0989e5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassOrderingVisitor</span></td><td><code>dbd6c4e35e0c9807</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassSelectorResolver</span></td><td><code>8192a76b48a09183</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DefaultClassDescriptor</span></td><td><code>f1ea1aa229787830</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DiscoverySelectorResolver</span></td><td><code>0493a46e2481b698</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodFinder</span></td><td><code>943e016148cf5f16</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodOrderingVisitor</span></td><td><code>1c057f4243f10c0e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver</span></td><td><code>340dbe384622c6a6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType</span></td><td><code>c7fa66a429b1a169</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.1</span></td><td><code>d532d669ad917197</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.2</span></td><td><code>c4e9f930d2a0da9e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.3</span></td><td><code>5582d95f7c8ba333</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsInnerClass</span></td><td><code>373ab803cd4c3f71</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsNestedTestClass</span></td><td><code>5b959cc55c1f4f91</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsPotentialTestContainer</span></td><td><code>4134835721917de5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestClassWithTests</span></td><td><code>cb8d6d2ffc57432f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod</span></td><td><code>671448bb3682a8b7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestMethod</span></td><td><code>53d31c5fa4778cc3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod</span></td><td><code>db07bccfb8a7df73</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestableMethod</span></td><td><code>8a0a6571eef022fb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConditionEvaluator</span></td><td><code>3bb7965905521dbe</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConstructorInvocation</span></td><td><code>f53a3f70cf473b9d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultExecutableInvoker</span></td><td><code>8974ffb77e1cf465</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultParameterContext</span></td><td><code>96c6273036c2db02</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultTestInstances</span></td><td><code>d098f31a49ce3334</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InterceptingExecutableInvoker</span></td><td><code>ab30414a2f357de2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.ReflectiveInterceptorCall</span></td><td><code>d077167b1b3ad9de</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain</span></td><td><code>22131ce04612244a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.InterceptedInvocation</span></td><td><code>b7b2338a38c29871</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.ValidatingInvocation</span></td><td><code>10e75cb36574e272</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext</span></td><td><code>50163587b45842fe</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.Builder</span></td><td><code>b39a5e63227384a5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.State</span></td><td><code>0766343b70481496</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.MethodInvocation</span></td><td><code>58ecfbfde557e87f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.NamespaceAwareStore</span></td><td><code>bcf4aaea269ea610</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ParameterResolutionUtils</span></td><td><code>cd7f5d13b9a64866</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.TestInstancesProvider</span></td><td><code>2ebaf1272ef59bc5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.AutoCloseExtension</span></td><td><code>b0c206c116575b65</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.DisabledCondition</span></td><td><code>ae3c30ff8f7ce050</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.ExtensionRegistry</span></td><td><code>9b67ba9d9cc3e810</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.MutableExtensionRegistry</span></td><td><code>2445286ad5728ba3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.MutableExtensionRegistry.Entry</span></td><td><code>2c27256a5e9eeb22</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestExtension</span></td><td><code>134b5213d4cb80ac</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TempDirectory</span></td><td><code>797b378613d1c2c3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TempDirectory.Scope</span></td><td><code>0acad3073640ecc4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestInfoParameterResolver</span></td><td><code>1977e7bd25ea66b8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestReporterParameterResolver</span></td><td><code>24002b8886de1936</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutConfiguration</span></td><td><code>1e8a45682947503e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutDurationParser</span></td><td><code>363c8531b5e8d2d4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutExtension</span></td><td><code>62b73ea4d52632c9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory</span></td><td><code>46546a446de4c9c0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector</span></td><td><code>de05466420699f92</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try</span></td><td><code>d1970dd64ce22fa4</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try.Failure</span></td><td><code>2135634bf7e7ad88</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try.Success</span></td><td><code>88f304668c6ff14e</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory</span></td><td><code>7b57f78fc724ac54</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory.DelegatingLogger</span></td><td><code>835c9a026ac4df32</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.AnnotationSupport</span></td><td><code>3f97027aa7ba84bf</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.ReflectionSupport</span></td><td><code>a54544f01875c65f</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.AnnotationUtils</span></td><td><code>1da637c10cbda39c</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassLoaderUtils</span></td><td><code>41a8b61339cf4862</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassNamePatternFilterUtils</span></td><td><code>484cfeb1dc3b6e93</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassUtils</span></td><td><code>76e509e75c23c314</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClasspathScanner</span></td><td><code>23726102aeb1c0ca</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.CollectionUtils</span></td><td><code>6cb29bed5c13bb1d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.LruCache</span></td><td><code>fd8ff40dff05b112</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.Preconditions</span></td><td><code>99362b29a037afdc</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils</span></td><td><code>f1c34b50fa11302d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode</span></td><td><code>ecf76570811abc50</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.StringUtils</span></td><td><code>372dfca6fa74c1ea</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.UnrecoverableExceptions</span></td><td><code>2ffa834710d16849</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter</span></td><td><code>cecade1862d00032</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter.1</span></td><td><code>ed62b01b8b763511</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener</span></td><td><code>22e0c8566a0701f5</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener.1</span></td><td><code>a4cdbe8dd38d8f57</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener</span></td><td><code>73f93afa543ca74a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener.1</span></td><td><code>999902b68f81dd9a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ExecutionRequest</span></td><td><code>83d3937d6c2e4880</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.Filter</span></td><td><code>c8d2fba4bb555492</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.FilterResult</span></td><td><code>1b4753bc794e8388</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult</span></td><td><code>02b8934961bdea6f</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult.Status</span></td><td><code>22866b13273482bd</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor</span></td><td><code>a5f736d88185f693</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor.Type</span></td><td><code>8530bdf90ae8fa6b</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult</span></td><td><code>29479a0ae9db2840</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult.Status</span></td><td><code>9e54a6b249ea167a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId</span></td><td><code>a5ee26b408b26ea1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId.Segment</span></td><td><code>03b0ccd7b69c9fc2</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueIdFormat</span></td><td><code>455c5b5eb27d1f81</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.ClassSelector</span></td><td><code>a6b2f6753eef3ff0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.DiscoverySelectors</span></td><td><code>8b2cda0d30b056d5</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.MethodSelector</span></td><td><code>6c04eeae9238dc1c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.AbstractTestDescriptor</span></td><td><code>17948dfe4c8d10c0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.ClassSource</span></td><td><code>02f1eaa5b7b685aa</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.EngineDescriptor</span></td><td><code>4ba3237c7e6b18d6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.MethodSource</span></td><td><code>ace231244bac7856</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.ClassContainerSelectorResolver</span></td><td><code>fde8e703faa64574</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution</span></td><td><code>4937cdb1a041a120</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.DefaultContext</span></td><td><code>151f6fae99911199</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver</span></td><td><code>0ad8786b2f016b1a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.Builder</span></td><td><code>29666059b7fb2614</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.DefaultInitializationContext</span></td><td><code>1b0484c56b030686</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver</span></td><td><code>458b4a4e46b6b868</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match</span></td><td><code>3c16d4dff276f57a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match.Type</span></td><td><code>bd8402e1232e1a40</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Resolution</span></td><td><code>ba500d6ba9a79953</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource</span></td><td><code>fa0dc5b65de1b0a0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource.LockMode</span></td><td><code>705f9e9f579aeab0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine</span></td><td><code>599b10c51fe35ea3</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor</span></td><td><code>a78f13d5e60b7d08</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.LockManager</span></td><td><code>99cdeecddb4ca68b</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node</span></td><td><code>3f2ca9c1749a3d5a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node.SkipResult</span></td><td><code>42796aad70055913</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeExecutionAdvisor</span></td><td><code>c8bf7d7bb2e19471</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask</span></td><td><code>c4c004e32fc81aac</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask.DefaultDynamicTestExecutor</span></td><td><code>9048d6cd4a8e05d3</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTaskContext</span></td><td><code>f68790b28827581e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTreeWalker</span></td><td><code>c9f34e2fe83d5caa</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils</span></td><td><code>732ad1771b71d292</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils.1</span></td><td><code>5a44a7e2cbf864b4</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NopLock</span></td><td><code>2234b58e6ffa6ea1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService</span></td><td><code>512f5438a4d56505</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SingleLock</span></td><td><code>f0bfd18cc662d7fc</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ThrowableCollector</span></td><td><code>a891c129fd2a01df</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore</span></td><td><code>fb95e61bdaf5378c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.CompositeKey</span></td><td><code>a34d604b86522ded</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.EvaluatedValue</span></td><td><code>158ca2dfb82179f2</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.MemoizingSupplier</span></td><td><code>cf599a824eea18cf</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.StoredValue</span></td><td><code>3db67e78dde11925</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult</span></td><td><code>c9df2add13bcb88f</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult.Status</span></td><td><code>f767a377012b98ff</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener</span></td><td><code>088911f06a0807a1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener.1</span></td><td><code>d946f222ae757dc1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherSessionListener</span></td><td><code>694596eba9b0c85e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherSessionListener.1</span></td><td><code>44b3640faa83f474</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestExecutionListener</span></td><td><code>f2d1545415335fda</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestIdentifier</span></td><td><code>fef478667b042ad5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestPlan</span></td><td><code>f4faaefa1c9341ff</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.CompositeEngineExecutionListener</span></td><td><code>8321b18dbabfecb3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.CompositeTestExecutionListener</span></td><td><code>04623991ddcc58da</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultDiscoveryRequest</span></td><td><code>e6360c7333fc842d</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncher</span></td><td><code>95dfc056bdb1d2d2</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherConfig</span></td><td><code>b4cd1fb6724efdef</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession</span></td><td><code>e040225d1f67e564</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession.1</span></td><td><code>bcc6e4bee671ccad</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession.ClosedLauncher</span></td><td><code>aa7b08954aea78f5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingEngineExecutionListener</span></td><td><code>61bd4de41739236f</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingLauncher</span></td><td><code>cdc9b7e4e1a576e0</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator</span></td><td><code>e4e806767310de9f</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.Phase</span></td><td><code>67a547a561eee0f4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryResultValidator</span></td><td><code>552f6c5833b8f8bd</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineExecutionOrchestrator</span></td><td><code>6e65b7c784b87efc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineFilterer</span></td><td><code>53cf37d963f8b58c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineIdValidator</span></td><td><code>b0288378227ce052</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ExecutionListenerAdapter</span></td><td><code>d91ab455a4c89f9b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.InternalTestPlan</span></td><td><code>ce2dcedb783e6f56</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.IterationOrder</span></td><td><code>452edacea5001e83</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.IterationOrder.1</span></td><td><code>0736e6add61b3334</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.IterationOrder.2</span></td><td><code>0d0d72b6e503c372</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig</span></td><td><code>58100dc14c875cb9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig.Builder</span></td><td><code>64729ce9bd729578</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters</span></td><td><code>4b25c1714dc335ec</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.Builder</span></td><td><code>ba76828012d853d8</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider</span></td><td><code>52b5b9d7814ff3b1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.2</span></td><td><code>886f3c723ddb9556</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.3</span></td><td><code>0d89b6f56eb4db06</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder</span></td><td><code>fb76ce235ae5247b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryResult</span></td><td><code>9833a129382c2ccc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherFactory</span></td><td><code>79c2095302f261bb</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherListenerRegistry</span></td><td><code>64d5f2a8ac991f94</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ListenerRegistry</span></td><td><code>7fe9373f303770d1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener</span></td><td><code>3840931f19c9d795</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener.Outcome</span></td><td><code>730ad6d2d5641536</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderRegistry</span></td><td><code>08e28076c727f8e6</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry</span></td><td><code>771f386239bb3682</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener</span></td><td><code>f6f65efcfd071c8e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.StreamInterceptingTestExecutionListener</span></td><td><code>0f855b867dc3eac4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.UniqueIdTrackingListener</span></td><td><code>aaf56096b3079d53</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener</span></td><td><code>0a9a375bd99ca30a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners</span></td><td><code>408046ed24478736</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners.LauncherDiscoveryListenerType</span></td><td><code>bf2a372dcc5e43f7</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.session.LauncherSessionListeners</span></td><td><code>46b8848a888d4d59</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisBase</span></td><td><code>0c1d2fd83029257f</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisHelper</span></td><td><code>69c98e9d865aa4c7</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisSerializer</span></td><td><code>e76a0838790f7d3f</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisStd</span></td><td><code>f35c83a75caea811</code></td></tr><tr><td><span class="el_class">org.objenesis.instantiator.sun.SunReflectionFactoryHelper</span></td><td><code>d17e7b3403696605</code></td></tr><tr><td><span class="el_class">org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator</span></td><td><code>6156947e7d7c507c</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.BaseInstantiatorStrategy</span></td><td><code>b0aaa6460452f5ce</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.PlatformDescription</span></td><td><code>031d9c56280f5d15</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.SerializingInstantiatorStrategy</span></td><td><code>43668f961cbbdc45</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.StdInstantiatorStrategy</span></td><td><code>a236724bac9c4a70</code></td></tr><tr><td><span class="el_class">org.slf4j.LoggerFactory</span></td><td><code>d4f8bf028cb667a7</code></td></tr><tr><td><span class="el_class">org.slf4j.event.Level</span></td><td><code>4ced2c509667233d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.AbstractLogger</span></td><td><code>0927772f80afa51d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.BasicMDCAdapter</span></td><td><code>354fafb117483fdb</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.BasicMDCAdapter.1</span></td><td><code>8f0671fb507009fb</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.BasicMarkerFactory</span></td><td><code>d8e0b7e9d11b515c</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.FormattingTuple</span></td><td><code>f769e1b68746078d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.LegacyAbstractLogger</span></td><td><code>9c0bab469712e43b</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.MessageFormatter</span></td><td><code>e2bc58b82ebe1d3d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPLoggerFactory</span></td><td><code>eaf704972ef7000c</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPMDCAdapter</span></td><td><code>d816a97d0b663014</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOP_FallbackServiceProvider</span></td><td><code>44c4aa253bad3620</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Reporter</span></td><td><code>c9b912a7116daa87</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Reporter.Level</span></td><td><code>07530b930aa1c996</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Reporter.TargetChoice</span></td><td><code>0aa347cd82827a6b</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.SubstituteLoggerFactory</span></td><td><code>2c5fb1b0f92b644d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.SubstituteServiceProvider</span></td><td><code>1caf06178d203dfd</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.ThreadLocalMapOfStacks</span></td><td><code>2b24a935616f8730</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Util</span></td><td><code>859d67cf0632e467</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.OutputChoice</span></td><td><code>1210473ae6c23a02</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.OutputChoice.OutputChoiceType</span></td><td><code>b1a3560a9741f5b4</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleLogger</span></td><td><code>1d2d4d9ea2830f3d</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleLoggerConfiguration</span></td><td><code>1f2875dbbf5941d4</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleLoggerFactory</span></td><td><code>e94c2f64e0e452e9</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleServiceProvider</span></td><td><code>99b66f9433a7c345</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC</span></td><td><code>68c46e83f562a8e3</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.1</span></td><td><code>8ac81549806b31e1</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.ProviderService</span></td><td><code>2dfac80a07c2a37e</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.ProviderServiceA</span></td><td><code>0c531391998db416</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider</span></td><td><code>8d9a06b412ba029c</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider.ProviderService</span></td><td><code>3ebef2c3c6f69a54</code></td></tr><tr><td><span class="el_class">sun.security.mscapi.SunMSCAPI</span></td><td><code>a623f42c0b7041de</code></td></tr><tr><td><span class="el_class">sun.security.mscapi.SunMSCAPI.1</span></td><td><code>686adcd71850e80d</code></td></tr><tr><td><span class="el_class">sun.security.mscapi.SunMSCAPI.2</span></td><td><code>1c690e194ce7b5d7</code></td></tr><tr><td><span class="el_class">sun.security.mscapi.SunMSCAPI.ProviderService</span></td><td><code>9b753db76b971b20</code></td></tr><tr><td><span class="el_class">sun.security.mscapi.SunMSCAPI.ProviderServiceA</span></td><td><code>194493c99dd7b8a8</code></td></tr><tr><td><span class="el_class">sun.security.pkcs11.SunPKCS11</span></td><td><code>98b532d3a11c6404</code></td></tr><tr><td><span class="el_class">sun.security.pkcs11.SunPKCS11.Descriptor</span></td><td><code>9e1cbf39adfded46</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC</span></td><td><code>02588d556ebf08eb</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC.1</span></td><td><code>b2870d346d9a946c</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC.ProviderService</span></td><td><code>5174e24e4c379a7d</code></td></tr><tr><td><span class="el_class">sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo</span></td><td><code>cea799461486d92b</code></td></tr><tr><td><span class="el_class">sun.util.resources.provider.NonBaseLocaleDataMetaInfo</span></td><td><code>054ae92f6b367f49</code></td></tr><tr><td><a href="waffle.apache/GenericWindowsPrincipal.html" class="el_class">waffle.apache.GenericWindowsPrincipal</a></td><td><code>a436502b7360b633</code></td></tr><tr><td><span class="el_class">waffle.apache.GenericWindowsPrincipal.1</span></td><td><code>3251899f686f9eab</code></td></tr><tr><td><a href="waffle.apache/MixedAuthenticator.html" class="el_class">waffle.apache.MixedAuthenticator</a></td><td><code>a46afc9ae9bb5934</code></td></tr><tr><td><span class="el_class">waffle.apache.MixedAuthenticatorTest</span></td><td><code>048e118fc3a19344</code></td></tr><tr><td><span class="el_class">waffle.apache.MixedAuthenticatorTest.1</span></td><td><code>1276ffd2be2b79f2</code></td></tr><tr><td><span class="el_class">waffle.apache.MixedAuthenticatorTest.2</span></td><td><code>8f6f025c8bc8998b</code></td></tr><tr><td><span class="el_class">waffle.apache.MixedAuthenticatorTest.3</span></td><td><code>c55ed8af1869425e</code></td></tr><tr><td><span class="el_class">waffle.apache.MixedAuthenticatorTest.4</span></td><td><code>ca2a07adacd5383a</code></td></tr><tr><td><a href="waffle.apache/NegotiateAuthenticator.html" class="el_class">waffle.apache.NegotiateAuthenticator</a></td><td><code>174c2e34f1ad3fe0</code></td></tr><tr><td><span class="el_class">waffle.apache.NegotiateAuthenticatorTest</span></td><td><code>8c4a5502ce3cba07</code></td></tr><tr><td><span class="el_class">waffle.apache.NegotiateAuthenticatorTest.1</span></td><td><code>45fa7763db8fb124</code></td></tr><tr><td><a href="waffle.apache/WaffleAuthenticatorBase.html" class="el_class">waffle.apache.WaffleAuthenticatorBase</a></td><td><code>79f835ca8c14a373</code></td></tr><tr><td><span class="el_class">waffle.apache.WaffleAuthenticatorBaseTest</span></td><td><code>61d2101ea53f6d86</code></td></tr><tr><td><span class="el_class">waffle.apache.WaffleAuthenticatorBaseTest.1</span></td><td><code>a3a2306e7f8e2b75</code></td></tr><tr><td><span class="el_class">waffle.apache.WindowsAccountTest</span></td><td><code>f033b62c36ca0e11</code></td></tr><tr><td><a href="waffle.apache/WindowsRealm.html" class="el_class">waffle.apache.WindowsRealm</a></td><td><code>48f734b99cf261a4</code></td></tr><tr><td><span class="el_class">waffle.apache.WindowsRealmTest</span></td><td><code>3b5eb69b5d743ce4</code></td></tr><tr><td><span class="el_class">waffle.apache.catalina.SimpleHttpRequest</span></td><td><code>d0f422b9f19865a1</code></td></tr><tr><td><span class="el_class">waffle.apache.catalina.SimpleHttpResponse</span></td><td><code>a60e669634c9b162</code></td></tr><tr><td><span class="el_class">waffle.mock.MockWindowsAccount</span></td><td><code>62629162e0dc7f9e</code></td></tr><tr><td><span class="el_class">waffle.mock.MockWindowsAuthProvider</span></td><td><code>08e7b4e82d09bf42</code></td></tr><tr><td><span class="el_class">waffle.mock.MockWindowsIdentity</span></td><td><code>bf3ce08efccc0715</code></td></tr><tr><td><span class="el_class">waffle.util.AuthorizationHeader</span></td><td><code>62fb3edb694c2b44</code></td></tr><tr><td><span class="el_class">waffle.util.NtlmMessage</span></td><td><code>211eb2f285c1fce4</code></td></tr><tr><td><span class="el_class">waffle.util.NtlmServletRequest</span></td><td><code>cebf22dfb9f71522</code></td></tr><tr><td><span class="el_class">waffle.util.SPNegoMessage</span></td><td><code>ced795522ca751a6</code></td></tr><tr><td><span class="el_class">waffle.util.cache.Cache</span></td><td><code>4834c62e196a34c3</code></td></tr><tr><td><span class="el_class">waffle.util.cache.CaffeineCache</span></td><td><code>f8d174ba89bd9d4e</code></td></tr><tr><td><span class="el_class">waffle.util.cache.CaffeineCacheSupplier</span></td><td><code>8c6df1c1e1227bff</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.PrincipalFormat</span></td><td><code>192ecbec772c84ec</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.WindowsAccount</span></td><td><code>4b2ac08ca37d9534</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.impl.WindowsAccountImpl</span></td><td><code>5646d75e33e39b8b</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.impl.WindowsAuthProviderImpl</span></td><td><code>ecc0e84957504fda</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.impl.WindowsAuthProviderImpl.ContinueContext</span></td><td><code>762230beffde4ef7</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.impl.WindowsCredentialsHandleImpl</span></td><td><code>4a0094b0a80bc68d</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.impl.WindowsIdentityImpl</span></td><td><code>0a5a641410dba81e</code></td></tr><tr><td><span class="el_class">waffle.windows.auth.impl.WindowsSecurityContextImpl</span></td><td><code>36f0a4fc5ee1c3d4</code></td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/jacoco.csv b/waffle-tomcat10/jacoco/jacoco.csv
      new file mode 100644
      index 0000000000..3eaf72e777
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/jacoco.csv
      @@ -0,0 +1,6 @@
      +GROUP,PACKAGE,CLASS,INSTRUCTION_MISSED,INSTRUCTION_COVERED,BRANCH_MISSED,BRANCH_COVERED,LINE_MISSED,LINE_COVERED,COMPLEXITY_MISSED,COMPLEXITY_COVERED,METHOD_MISSED,METHOD_COVERED
      +waffle-tomcat10,waffle.apache,WaffleAuthenticatorBase,102,195,6,8,27,47,8,19,5,15
      +waffle-tomcat10,waffle.apache,WindowsRealm,0,7,0,0,0,3,0,3,0,3
      +waffle-tomcat10,waffle.apache,MixedAuthenticator,110,406,17,31,25,98,15,17,1,7
      +waffle-tomcat10,waffle.apache,NegotiateAuthenticator,83,228,11,15,20,57,10,8,1,4
      +waffle-tomcat10,waffle.apache,GenericWindowsPrincipal,22,150,3,9,6,32,4,13,1,8
      diff --git a/waffle-tomcat10/jacoco/jacoco.xml b/waffle-tomcat10/jacoco/jacoco.xml
      new file mode 100644
      index 0000000000..95cb07bc61
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/jacoco.xml
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="waffle-tomcat10"><sessioninfo id="JeremyDesktop-bf780878" start="1735713110799" dump="1735713113408"/><package name="waffle/apache"><class name="waffle/apache/WaffleAuthenticatorBase" sourcefilename="WaffleAuthenticatorBase.java"><method name="&lt;init&gt;" desc="()V" line="50"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getContinueContextsTimeout" desc="()I" line="85"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setContinueContextsTimeout" desc="(I)V" line="95"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAuth" desc="()Lwaffle/windows/auth/IWindowsAuthProvider;" line="104"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setAuth" desc="(Lwaffle/windows/auth/IWindowsAuthProvider;)V" line="114"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getInfo" desc="()Ljava/lang/String;" line="123"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPrincipalFormat" desc="(Ljava/lang/String;)V" line="133"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPrincipalFormat" desc="()Lwaffle/windows/auth/PrincipalFormat;" line="143"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setRoleFormat" desc="(Ljava/lang/String;)V" line="153"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRoleFormat" desc="()Lwaffle/windows/auth/PrincipalFormat;" line="163"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isAllowGuestLogin" desc="()Z" line="172"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setAllowGuestLogin" desc="(Z)V" line="183"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setProtocols" desc="(Ljava/lang/String;)V" line="193"><counter type="INSTRUCTION" missed="0" covered="59"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendUnauthorized" desc="(Ljakarta/servlet/http/HttpServletResponse;)V" line="217"><counter type="INSTRUCTION" missed="6" covered="27"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="2" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendError" desc="(Ljakarta/servlet/http/HttpServletResponse;I)V" line="238"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAuthMethod" desc="()Ljava/lang/String;" line="246"><counter type="INSTRUCTION" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="doLogin" desc="(Lorg/apache/catalina/connector/Request;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Principal;" line="252"><counter type="INSTRUCTION" missed="76" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createPrincipal" desc="(Lwaffle/windows/auth/IWindowsIdentity;)Lorg/apache/catalina/realm/GenericPrincipal;" line="288"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="startInternal" desc="()V" line="299"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="53"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="102" covered="195"/><counter type="BRANCH" missed="6" covered="8"/><counter type="LINE" missed="27" covered="47"/><counter type="COMPLEXITY" missed="8" covered="19"/><counter type="METHOD" missed="5" covered="15"/><counter type="CLASS" missed="0" covered="1"/></class><class name="waffle/apache/WindowsRealm" sourcefilename="WindowsRealm.java"><method name="&lt;init&gt;" desc="()V" line="33"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPassword" desc="(Ljava/lang/String;)Ljava/lang/String;" line="37"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPrincipal" desc="(Ljava/lang/String;)Ljava/security/Principal;" line="42"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="waffle/apache/MixedAuthenticator" sourcefilename="MixedAuthenticator.java"><method name="&lt;init&gt;" desc="()V" line="58"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="startInternal" desc="()V" line="66"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stopInternal" desc="()V" line="72"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="authenticate" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;)Z" line="80"><counter type="INSTRUCTION" missed="20" covered="136"/><counter type="BRANCH" missed="5" covered="17"/><counter type="LINE" missed="5" covered="29"/><counter type="COMPLEXITY" missed="4" covered="8"/><counter type="METHOD" missed="0" covered="1"/></method><method name="negotiate" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;Lwaffle/util/AuthorizationHeader;)Z" line="143"><counter type="INSTRUCTION" missed="58" covered="139"/><counter type="BRANCH" missed="7" covered="11"/><counter type="LINE" missed="14" covered="33"/><counter type="COMPLEXITY" missed="6" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="post" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;)Z" line="238"><counter type="INSTRUCTION" missed="21" covered="82"/><counter type="BRANCH" missed="5" covered="3"/><counter type="LINE" missed="3" covered="19"/><counter type="COMPLEXITY" missed="4" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="redirectTo" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;Ljava/lang/String;)V" line="292"><counter type="INSTRUCTION" missed="6" covered="20"/><counter type="LINE" missed="2" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="doAuthenticate" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;)Z" line="307"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="110" covered="406"/><counter type="BRANCH" missed="17" covered="31"/><counter type="LINE" missed="25" covered="98"/><counter type="COMPLEXITY" missed="15" covered="17"/><counter type="METHOD" missed="1" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><class name="waffle/apache/NegotiateAuthenticator" sourcefilename="NegotiateAuthenticator.java"><method name="&lt;init&gt;" desc="()V" line="54"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="startInternal" desc="()V" line="62"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stopInternal" desc="()V" line="68"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="authenticate" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;)Z" line="75"><counter type="INSTRUCTION" missed="78" covered="199"/><counter type="BRANCH" missed="11" covered="15"/><counter type="LINE" missed="19" covered="46"/><counter type="COMPLEXITY" missed="9" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="doAuthenticate" desc="(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;)Z" line="194"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="83" covered="228"/><counter type="BRANCH" missed="11" covered="15"/><counter type="LINE" missed="20" covered="57"/><counter type="COMPLEXITY" missed="10" covered="8"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="waffle/apache/GenericWindowsPrincipal" sourcefilename="GenericWindowsPrincipal.java"><method name="&lt;init&gt;" desc="(Lwaffle/windows/auth/IWindowsIdentity;Lwaffle/windows/auth/PrincipalFormat;Lwaffle/windows/auth/PrincipalFormat;)V" line="67"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRoles" desc="(Lwaffle/windows/auth/IWindowsIdentity;Lwaffle/windows/auth/PrincipalFormat;Lwaffle/windows/auth/PrincipalFormat;)Ljava/util/List;" line="87"><counter type="INSTRUCTION" missed="0" covered="35"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGroups" desc="([Lwaffle/windows/auth/IWindowsAccount;)Ljava/util/Map;" line="104"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGroups" desc="()Ljava/util/Map;" line="117"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSid" desc="()[B" line="126"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSidString" desc="()Ljava/lang/String;" line="135"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRoleNames" desc="(Lwaffle/windows/auth/IWindowsAccount;Lwaffle/windows/auth/PrincipalFormat;)Ljava/util/List;" line="149"><counter type="INSTRUCTION" missed="17" covered="17"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="5" covered="5"/><counter type="COMPLEXITY" missed="3" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPrincipalNames" desc="(Lwaffle/windows/auth/IWindowsIdentity;Lwaffle/windows/auth/PrincipalFormat;)Ljava/util/List;" line="180"><counter type="INSTRUCTION" missed="0" covered="34"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRolesString" desc="()Ljava/lang/String;" line="205"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="22" covered="150"/><counter type="BRANCH" missed="3" covered="9"/><counter type="LINE" missed="6" covered="32"/><counter type="COMPLEXITY" missed="4" covered="13"/><counter type="METHOD" missed="1" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="GenericWindowsPrincipal.java"><line nr="67" mi="0" ci="8" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><line nr="70" mi="0" ci="5" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="87" mi="0" ci="4" mb="0" cb="0"/><line nr="88" mi="0" ci="6" mb="0" cb="0"/><line nr="89" mi="0" ci="17" mb="0" cb="2"/><line nr="90" mi="0" ci="6" mb="0" cb="0"/><line nr="92" mi="0" ci="2" mb="0" cb="0"/><line nr="104" mi="0" ci="4" mb="0" cb="0"/><line nr="105" mi="0" ci="16" mb="0" cb="2"/><line nr="106" mi="0" ci="9" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="117" mi="0" ci="3" mb="0" cb="0"/><line nr="126" mi="0" ci="5" mb="0" cb="0"/><line nr="135" mi="0" ci="3" mb="0" cb="0"/><line nr="149" mi="0" ci="4" mb="0" cb="0"/><line nr="150" mi="0" ci="5" mb="3" cb="1"/><line nr="152" mi="0" ci="5" mb="0" cb="0"/><line nr="153" mi="0" ci="1" mb="0" cb="0"/><line nr="155" mi="5" ci="0" mb="0" cb="0"/><line nr="156" mi="1" ci="0" mb="0" cb="0"/><line nr="158" mi="5" ci="0" mb="0" cb="0"/><line nr="159" mi="5" ci="0" mb="0" cb="0"/><line nr="160" mi="1" ci="0" mb="0" cb="0"/><line nr="165" mi="0" ci="2" mb="0" cb="0"/><line nr="180" mi="0" ci="4" mb="0" cb="0"/><line nr="181" mi="0" ci="5" mb="0" cb="4"/><line nr="183" mi="0" ci="5" mb="0" cb="0"/><line nr="184" mi="0" ci="1" mb="0" cb="0"/><line nr="186" mi="0" ci="5" mb="0" cb="0"/><line nr="187" mi="0" ci="1" mb="0" cb="0"/><line nr="189" mi="0" ci="5" mb="0" cb="0"/><line nr="190" mi="0" ci="5" mb="0" cb="0"/><line nr="191" mi="0" ci="1" mb="0" cb="0"/><line nr="196" mi="0" ci="2" mb="0" cb="0"/><line nr="205" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="22" covered="150"/><counter type="BRANCH" missed="3" covered="9"/><counter type="LINE" missed="6" covered="32"/><counter type="COMPLEXITY" missed="4" covered="13"/><counter type="METHOD" missed="1" covered="8"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WindowsRealm.java"><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaffleAuthenticatorBase.java"><line nr="50" mi="0" ci="2" mb="0" cb="0"/><line nr="53" mi="0" ci="16" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="68" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="4" mb="0" cb="0"/><line nr="85" mi="3" ci="0" mb="0" cb="0"/><line nr="95" mi="3" ci="0" mb="0" cb="0"/><line nr="96" mi="1" ci="0" mb="0" cb="0"/><line nr="104" mi="0" ci="3" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="123" mi="0" ci="3" mb="0" cb="0"/><line nr="133" mi="0" ci="6" mb="0" cb="0"/><line nr="134" mi="0" ci="6" mb="0" cb="0"/><line nr="135" mi="0" ci="1" mb="0" cb="0"/><line nr="143" mi="0" ci="3" mb="0" cb="0"/><line nr="153" mi="0" ci="6" mb="0" cb="0"/><line nr="154" mi="0" ci="6" mb="0" cb="0"/><line nr="155" mi="0" ci="1" mb="0" cb="0"/><line nr="163" mi="0" ci="3" mb="0" cb="0"/><line nr="172" mi="0" ci="3" mb="0" cb="0"/><line nr="183" mi="0" ci="3" mb="0" cb="0"/><line nr="184" mi="0" ci="1" mb="0" cb="0"/><line nr="193" mi="0" ci="5" mb="0" cb="0"/><line nr="194" mi="0" ci="5" mb="0" cb="0"/><line nr="195" mi="0" ci="16" mb="0" cb="2"/><line nr="196" mi="0" ci="3" mb="0" cb="0"/><line nr="197" mi="0" ci="3" mb="0" cb="2"/><line nr="198" mi="0" ci="5" mb="0" cb="0"/><line nr="199" mi="0" ci="4" mb="0" cb="2"/><line nr="200" mi="0" ci="6" mb="0" cb="0"/><line nr="202" mi="0" ci="5" mb="0" cb="0"/><line nr="203" mi="0" ci="6" mb="0" cb="0"/><line nr="207" mi="0" ci="1" mb="0" cb="0"/><line nr="217" mi="0" ci="11" mb="0" cb="2"/><line nr="218" mi="0" ci="4" mb="0" cb="0"/><line nr="219" mi="0" ci="1" mb="0" cb="0"/><line nr="220" mi="0" ci="4" mb="0" cb="0"/><line nr="221" mi="0" ci="3" mb="0" cb="0"/><line nr="222" mi="0" ci="2" mb="0" cb="0"/><line nr="223" mi="1" ci="0" mb="0" cb="0"/><line nr="224" mi="5" ci="0" mb="0" cb="0"/><line nr="225" mi="0" ci="1" mb="0" cb="0"/><line nr="226" mi="0" ci="1" mb="0" cb="0"/><line nr="238" mi="3" ci="0" mb="0" cb="0"/><line nr="239" mi="1" ci="0" mb="0" cb="0"/><line nr="240" mi="5" ci="0" mb="0" cb="0"/><line nr="241" mi="1" ci="0" mb="0" cb="0"/><line nr="242" mi="1" ci="0" mb="0" cb="0"/><line nr="246" mi="2" ci="0" mb="0" cb="0"/><line nr="252" mi="5" ci="0" mb="0" cb="0"/><line nr="255" mi="6" ci="0" mb="0" cb="0"/><line nr="256" mi="1" ci="0" mb="0" cb="0"/><line nr="257" mi="5" ci="0" mb="0" cb="0"/><line nr="258" mi="5" ci="0" mb="0" cb="0"/><line nr="259" mi="6" ci="0" mb="0" cb="0"/><line nr="260" mi="1" ci="0" mb="0" cb="0"/><line nr="262" mi="6" ci="0" mb="4" cb="0"/><line nr="263" mi="6" ci="0" mb="0" cb="0"/><line nr="264" mi="6" ci="0" mb="0" cb="0"/><line nr="267" mi="7" ci="0" mb="0" cb="0"/><line nr="268" mi="4" ci="0" mb="0" cb="0"/><line nr="269" mi="4" ci="0" mb="2" cb="0"/><line nr="270" mi="8" ci="0" mb="0" cb="0"/><line nr="272" mi="4" ci="0" mb="0" cb="0"/><line nr="274" mi="2" ci="0" mb="0" cb="0"/><line nr="288" mi="0" ci="9" mb="0" cb="0"/><line nr="299" mi="0" ci="6" mb="0" cb="0"/><line nr="300" mi="0" ci="1" mb="0" cb="0"/><line nr="301" mi="0" ci="7" mb="0" cb="0"/><line nr="302" mi="0" ci="2" mb="0" cb="0"/><line nr="303" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="102" covered="195"/><counter type="BRANCH" missed="6" covered="8"/><counter type="LINE" missed="27" covered="47"/><counter type="COMPLEXITY" missed="8" covered="19"/><counter type="METHOD" missed="5" covered="15"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="NegotiateAuthenticator.java"><line nr="54" mi="0" ci="2" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="57" mi="0" ci="4" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="62" mi="0" ci="4" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="0"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="0" ci="2" mb="0" cb="0"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="76" mi="0" ci="5" mb="0" cb="0"/><line nr="77" mi="0" ci="3" mb="0" cb="0"/><line nr="79" mi="0" ci="19" mb="0" cb="0"/><line nr="80" mi="0" ci="3" mb="0" cb="0"/><line nr="81" mi="0" ci="7" mb="0" cb="0"/><line nr="83" mi="2" ci="2" mb="3" cb="1"/><line nr="85" mi="6" ci="0" mb="0" cb="0"/><line nr="86" mi="2" ci="0" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="0" cb="2"/><line nr="92" mi="0" ci="3" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="6" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="2"/><line nr="100" mi="0" ci="4" mb="0" cb="0"/><line nr="103" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="7" mb="0" cb="0"/><line nr="109" mi="0" ci="7" mb="0" cb="0"/><line nr="110" mi="1" ci="0" mb="0" cb="0"/><line nr="111" mi="6" ci="0" mb="0" cb="0"/><line nr="112" mi="5" ci="0" mb="0" cb="0"/><line nr="113" mi="3" ci="0" mb="0" cb="0"/><line nr="114" mi="2" ci="0" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="7" mb="0" cb="0"/><line nr="118" mi="0" ci="3" mb="0" cb="0"/><line nr="119" mi="0" ci="5" mb="1" cb="3"/><line nr="120" mi="0" ci="4" mb="0" cb="0"/><line nr="121" mi="0" ci="5" mb="0" cb="0"/><line nr="122" mi="0" ci="6" mb="0" cb="0"/><line nr="126" mi="0" ci="3" mb="0" cb="2"/><line nr="127" mi="0" ci="4" mb="0" cb="0"/><line nr="128" mi="0" ci="3" mb="0" cb="0"/><line nr="129" mi="0" ci="2" mb="0" cb="0"/><line nr="130" mi="0" ci="2" mb="0" cb="0"/><line nr="132" mi="1" ci="0" mb="0" cb="0"/><line nr="133" mi="6" ci="0" mb="0" cb="0"/><line nr="134" mi="5" ci="0" mb="0" cb="0"/><line nr="135" mi="3" ci="0" mb="0" cb="0"/><line nr="136" mi="2" ci="0" mb="0" cb="0"/><line nr="137" mi="0" ci="1" mb="0" cb="0"/><line nr="140" mi="0" ci="7" mb="2" cb="2"/><line nr="141" mi="4" ci="0" mb="0" cb="0"/><line nr="142" mi="4" ci="0" mb="0" cb="0"/><line nr="143" mi="2" ci="0" mb="0" cb="0"/><line nr="147" mi="0" ci="3" mb="0" cb="0"/><line nr="150" mi="3" ci="3" mb="3" cb="1"/><line nr="151" mi="6" ci="0" mb="0" cb="0"/><line nr="152" mi="3" ci="0" mb="0" cb="0"/><line nr="153" mi="2" ci="0" mb="0" cb="0"/><line nr="157" mi="0" ci="8" mb="0" cb="0"/><line nr="159" mi="0" ci="4" mb="0" cb="0"/><line nr="161" mi="0" ci="4" mb="1" cb="1"/><line nr="162" mi="8" ci="0" mb="0" cb="0"/><line nr="165" mi="0" ci="2" mb="0" cb="0"/><line nr="168" mi="0" ci="4" mb="0" cb="0"/><line nr="169" mi="2" ci="8" mb="1" cb="1"/><line nr="172" mi="0" ci="9" mb="0" cb="0"/><line nr="173" mi="0" ci="6" mb="0" cb="0"/><line nr="176" mi="0" ci="2" mb="0" cb="0"/><line nr="177" mi="0" ci="2" mb="0" cb="0"/><line nr="180" mi="0" ci="2" mb="0" cb="0"/><line nr="183" mi="0" ci="4" mb="0" cb="0"/><line nr="184" mi="0" ci="3" mb="0" cb="0"/><line nr="185" mi="0" ci="2" mb="0" cb="0"/><line nr="194" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="83" covered="228"/><counter type="BRANCH" missed="11" covered="15"/><counter type="LINE" missed="20" covered="57"/><counter type="COMPLEXITY" missed="10" covered="8"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MixedAuthenticator.java"><line nr="58" mi="0" ci="2" mb="0" cb="0"/><line nr="59" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="4" mb="0" cb="0"/><line nr="61" mi="0" ci="4" mb="0" cb="0"/><line nr="62" mi="0" ci="1" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="67" mi="0" ci="2" mb="0" cb="0"/><line nr="68" mi="0" ci="1" mb="0" cb="0"/><line nr="72" mi="0" ci="2" mb="0" cb="0"/><line nr="73" mi="0" ci="4" mb="0" cb="0"/><line nr="74" mi="0" ci="1" mb="0" cb="0"/><line nr="80" mi="0" ci="7" mb="2" cb="2"/><line nr="81" mi="4" ci="0" mb="0" cb="0"/><line nr="82" mi="4" ci="0" mb="0" cb="0"/><line nr="83" mi="2" ci="0" mb="0" cb="0"/><line nr="86" mi="0" ci="19" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="89" mi="0" ci="8" mb="0" cb="2"/><line nr="90" mi="0" ci="6" mb="0" cb="0"/><line nr="91" mi="0" ci="8" mb="0" cb="2"/><line nr="92" mi="0" ci="6" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="5" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="7" mb="0" cb="0"/><line nr="100" mi="0" ci="4" mb="0" cb="0"/><line nr="102" mi="2" ci="2" mb="3" cb="1"/><line nr="103" mi="6" ci="0" mb="0" cb="0"/><line nr="104" mi="2" ci="0" mb="0" cb="0"/><line nr="105" mi="0" ci="2" mb="0" cb="2"/><line nr="106" mi="0" ci="3" mb="0" cb="2"/><line nr="107" mi="0" ci="6" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="2"/><line nr="109" mi="0" ci="6" mb="0" cb="0"/><line nr="111" mi="0" ci="2" mb="0" cb="0"/><line nr="113" mi="0" ci="4" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="2" mb="0" cb="0"/><line nr="116" mi="0" ci="2" mb="0" cb="2"/><line nr="117" mi="0" ci="5" mb="0" cb="0"/><line nr="118" mi="0" ci="2" mb="0" cb="2"/><line nr="119" mi="0" ci="6" mb="0" cb="0"/><line nr="121" mi="0" ci="2" mb="0" cb="0"/><line nr="123" mi="0" ci="6" mb="0" cb="0"/><line nr="124" mi="0" ci="2" mb="0" cb="0"/><line nr="143" mi="0" ci="3" mb="0" cb="0"/><line nr="145" mi="0" ci="3" mb="0" cb="0"/><line nr="147" mi="0" ci="6" mb="0" cb="0"/><line nr="149" mi="0" ci="3" mb="0" cb="0"/><line nr="151" mi="0" ci="2" mb="0" cb="2"/><line nr="153" mi="0" ci="4" mb="0" cb="0"/><line nr="156" mi="0" ci="3" mb="0" cb="0"/><line nr="157" mi="0" ci="7" mb="0" cb="0"/><line nr="162" mi="0" ci="7" mb="0" cb="0"/><line nr="163" mi="1" ci="0" mb="0" cb="0"/><line nr="164" mi="6" ci="0" mb="0" cb="0"/><line nr="165" mi="5" ci="0" mb="0" cb="0"/><line nr="166" mi="3" ci="0" mb="0" cb="0"/><line nr="167" mi="2" ci="0" mb="0" cb="0"/><line nr="168" mi="0" ci="1" mb="0" cb="0"/><line nr="169" mi="0" ci="7" mb="0" cb="0"/><line nr="171" mi="0" ci="3" mb="0" cb="0"/><line nr="172" mi="0" ci="5" mb="1" cb="3"/><line nr="173" mi="0" ci="4" mb="0" cb="0"/><line nr="174" mi="0" ci="5" mb="0" cb="0"/><line nr="175" mi="0" ci="6" mb="0" cb="0"/><line nr="179" mi="0" ci="5" mb="1" cb="3"/><line nr="180" mi="0" ci="4" mb="0" cb="0"/><line nr="181" mi="0" ci="3" mb="0" cb="0"/><line nr="182" mi="0" ci="2" mb="0" cb="0"/><line nr="183" mi="0" ci="2" mb="0" cb="0"/><line nr="185" mi="1" ci="0" mb="0" cb="0"/><line nr="186" mi="6" ci="0" mb="0" cb="0"/><line nr="187" mi="5" ci="0" mb="0" cb="0"/><line nr="188" mi="3" ci="0" mb="0" cb="0"/><line nr="189" mi="2" ci="0" mb="0" cb="0"/><line nr="190" mi="0" ci="1" mb="0" cb="0"/><line nr="193" mi="0" ci="3" mb="0" cb="0"/><line nr="196" mi="3" ci="3" mb="3" cb="1"/><line nr="197" mi="6" ci="0" mb="0" cb="0"/><line nr="198" mi="3" ci="0" mb="0" cb="0"/><line nr="199" mi="2" ci="0" mb="0" cb="0"/><line nr="204" mi="0" ci="8" mb="0" cb="0"/><line nr="206" mi="0" ci="4" mb="0" cb="0"/><line nr="208" mi="0" ci="4" mb="1" cb="1"/><line nr="209" mi="8" ci="0" mb="0" cb="0"/><line nr="213" mi="0" ci="4" mb="0" cb="0"/><line nr="214" mi="2" ci="8" mb="1" cb="1"/><line nr="216" mi="0" ci="9" mb="0" cb="0"/><line nr="217" mi="0" ci="6" mb="0" cb="0"/><line nr="220" mi="0" ci="2" mb="0" cb="0"/><line nr="223" mi="0" ci="2" mb="0" cb="0"/><line nr="238" mi="0" ci="4" mb="0" cb="0"/><line nr="239" mi="0" ci="4" mb="0" cb="0"/><line nr="241" mi="0" ci="5" mb="0" cb="0"/><line nr="245" mi="0" ci="6" mb="0" cb="0"/><line nr="246" mi="0" ci="1" mb="0" cb="0"/><line nr="247" mi="0" ci="5" mb="0" cb="0"/><line nr="248" mi="0" ci="5" mb="0" cb="0"/><line nr="249" mi="0" ci="2" mb="0" cb="0"/><line nr="250" mi="0" ci="1" mb="0" cb="0"/><line nr="253" mi="3" ci="3" mb="3" cb="1"/><line nr="254" mi="6" ci="0" mb="0" cb="0"/><line nr="255" mi="2" ci="0" mb="0" cb="0"/><line nr="259" mi="0" ci="7" mb="0" cb="0"/><line nr="261" mi="0" ci="4" mb="0" cb="0"/><line nr="263" mi="0" ci="4" mb="1" cb="1"/><line nr="264" mi="8" ci="0" mb="0" cb="0"/><line nr="268" mi="0" ci="4" mb="0" cb="0"/><line nr="269" mi="2" ci="8" mb="1" cb="1"/><line nr="271" mi="0" ci="9" mb="0" cb="0"/><line nr="272" mi="0" ci="6" mb="0" cb="0"/><line nr="274" mi="0" ci="2" mb="0" cb="0"/><line nr="277" mi="0" ci="2" mb="0" cb="0"/><line nr="292" mi="0" ci="5" mb="0" cb="0"/><line nr="293" mi="0" ci="4" mb="0" cb="0"/><line nr="294" mi="0" ci="4" mb="0" cb="0"/><line nr="295" mi="0" ci="5" mb="0" cb="0"/><line nr="296" mi="1" ci="0" mb="0" cb="0"/><line nr="297" mi="5" ci="0" mb="0" cb="0"/><line nr="298" mi="0" ci="1" mb="0" cb="0"/><line nr="299" mi="0" ci="1" mb="0" cb="0"/><line nr="307" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="110" covered="406"/><counter type="BRANCH" missed="17" covered="31"/><counter type="LINE" missed="25" covered="98"/><counter type="COMPLEXITY" missed="15" covered="17"/><counter type="METHOD" missed="1" covered="7"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="317" covered="986"/><counter type="BRANCH" missed="37" covered="63"/><counter type="LINE" missed="78" covered="237"/><counter type="COMPLEXITY" missed="37" covered="60"/><counter type="METHOD" missed="8" covered="37"/><counter type="CLASS" missed="0" covered="5"/></package><counter type="INSTRUCTION" missed="317" covered="986"/><counter type="BRANCH" missed="37" covered="63"/><counter type="LINE" missed="78" covered="237"/><counter type="COMPLEXITY" missed="37" covered="60"/><counter type="METHOD" missed="8" covered="37"/><counter type="CLASS" missed="0" covered="5"/></report>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/GenericWindowsPrincipal.html b/waffle-tomcat10/jacoco/waffle.apache/GenericWindowsPrincipal.html
      new file mode 100644
      index 0000000000..d0d9e9dbc8
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/GenericWindowsPrincipal.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>GenericWindowsPrincipal</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.html" class="el_package">waffle.apache</a> &gt; <span class="el_class">GenericWindowsPrincipal</span></div><h1>GenericWindowsPrincipal</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">22 of 172</td><td class="ctr2">87%</td><td class="bar">3 of 12</td><td class="ctr2">75%</td><td class="ctr1">4</td><td class="ctr2">17</td><td class="ctr1">6</td><td class="ctr2">38</td><td class="ctr1">1</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a4"><a href="GenericWindowsPrincipal.java.html#L149" class="el_method">getRoleNames(IWindowsAccount, PrincipalFormat)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="58" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="58" height="10" title="17" alt="17"/></td><td class="ctr2" id="c7">50%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="30" height="10" title="1" alt="1"/></td><td class="ctr2" id="e3">25%</td><td class="ctr1" id="f0">3</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">5</td><td class="ctr2" id="i0">10</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a6"><a href="GenericWindowsPrincipal.java.html#L205" class="el_method">getRolesString()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="17" height="10" title="5" alt="5"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a5"><a href="GenericWindowsPrincipal.java.html#L87" class="el_method">getRoles(IWindowsIdentity, PrincipalFormat, PrincipalFormat)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="35" alt="35"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">2</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">5</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a3"><a href="GenericWindowsPrincipal.java.html#L180" class="el_method">getPrincipalNames(IWindowsIdentity, PrincipalFormat)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="116" height="10" title="34" alt="34"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i1">10</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="GenericWindowsPrincipal.java.html#L104" class="el_method">getGroups(IWindowsAccount[])</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="106" height="10" title="31" alt="31"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d3"><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="2" alt="2"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g3">2</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i4">4</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a0"><a href="GenericWindowsPrincipal.java.html#L67" class="el_method">GenericWindowsPrincipal(IWindowsIdentity, PrincipalFormat, PrincipalFormat)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="75" height="10" title="22" alt="22"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i3">5</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a7"><a href="GenericWindowsPrincipal.java.html#L126" class="el_method">getSid()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="5" alt="5"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a1"><a href="GenericWindowsPrincipal.java.html#L117" class="el_method">getGroups()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a8"><a href="GenericWindowsPrincipal.java.html#L135" class="el_method">getSidString()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/GenericWindowsPrincipal.java.html b/waffle-tomcat10/jacoco/waffle.apache/GenericWindowsPrincipal.java.html
      new file mode 100644
      index 0000000000..bb6a6da1f6
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/GenericWindowsPrincipal.java.html
      @@ -0,0 +1,209 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>GenericWindowsPrincipal.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.source.html" class="el_package">waffle.apache</a> &gt; <span class="el_source">GenericWindowsPrincipal.java</span></div><h1>GenericWindowsPrincipal.java</h1><pre class="source lang-java linenums">/*
      + * MIT License
      + *
      + * Copyright (c) 2010-2024 The Waffle Project Contributors: https://github.com/Waffle/waffle/graphs/contributors
      + *
      + * Permission is hereby granted, free of charge, to any person obtaining a copy
      + * of this software and associated documentation files (the &quot;Software&quot;), to deal
      + * in the Software without restriction, including without limitation the rights
      + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      + * copies of the Software, and to permit persons to whom the Software is
      + * furnished to do so, subject to the following conditions:
      + *
      + * The above copyright notice and this permission notice shall be included in all
      + * copies or substantial portions of the Software.
      + *
      + * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      + * SOFTWARE.
      + */
      +package waffle.apache;
      +
      +import java.util.ArrayList;
      +import java.util.HashMap;
      +import java.util.List;
      +import java.util.Map;
      +
      +import org.apache.catalina.realm.GenericPrincipal;
      +
      +import waffle.windows.auth.IWindowsAccount;
      +import waffle.windows.auth.IWindowsIdentity;
      +import waffle.windows.auth.PrincipalFormat;
      +import waffle.windows.auth.WindowsAccount;
      +
      +/**
      + * A Windows Principal.
      + */
      +public class GenericWindowsPrincipal extends GenericPrincipal {
      +
      +    /** The Constant serialVersionUID. */
      +    private static final long serialVersionUID = 1L;
      +
      +    /** The sid. */
      +    private final byte[] sid;
      +
      +    /** The sid string. */
      +    private final String sidString;
      +
      +    /** The groups. */
      +    private final Map&lt;String, WindowsAccount&gt; groups;
      +
      +    /**
      +     * A windows principal.
      +     *
      +     * @param windowsIdentity
      +     *            Windows identity.
      +     * @param principalFormat
      +     *            Principal format.
      +     * @param roleFormat
      +     *            Role format.
      +     */
      +    public GenericWindowsPrincipal(final IWindowsIdentity windowsIdentity, final PrincipalFormat principalFormat,
      +            final PrincipalFormat roleFormat) {
      +<span class="fc" id="L67">        super(windowsIdentity.getFqn(), GenericWindowsPrincipal.getRoles(windowsIdentity, principalFormat, roleFormat));</span>
      +<span class="fc" id="L68">        this.sid = windowsIdentity.getSid();</span>
      +<span class="fc" id="L69">        this.sidString = windowsIdentity.getSidString();</span>
      +<span class="fc" id="L70">        this.groups = GenericWindowsPrincipal.getGroups(windowsIdentity.getGroups());</span>
      +<span class="fc" id="L71">    }</span>
      +
      +    /**
      +     * Gets the roles.
      +     *
      +     * @param windowsIdentity
      +     *            the windows identity
      +     * @param principalFormat
      +     *            the principal format
      +     * @param roleFormat
      +     *            the role format
      +     *
      +     * @return the roles
      +     */
      +    private static List&lt;String&gt; getRoles(final IWindowsIdentity windowsIdentity, final PrincipalFormat principalFormat,
      +            final PrincipalFormat roleFormat) {
      +<span class="fc" id="L87">        final List&lt;String&gt; roles = new ArrayList&lt;&gt;();</span>
      +<span class="fc" id="L88">        roles.addAll(GenericWindowsPrincipal.getPrincipalNames(windowsIdentity, principalFormat));</span>
      +<span class="fc bfc" id="L89" title="All 2 branches covered.">        for (final IWindowsAccount group : windowsIdentity.getGroups()) {</span>
      +<span class="fc" id="L90">            roles.addAll(GenericWindowsPrincipal.getRoleNames(group, roleFormat));</span>
      +        }
      +<span class="fc" id="L92">        return roles;</span>
      +    }
      +
      +    /**
      +     * Gets the groups.
      +     *
      +     * @param groups
      +     *            the groups
      +     *
      +     * @return the groups
      +     */
      +    private static Map&lt;String, WindowsAccount&gt; getGroups(final IWindowsAccount[] groups) {
      +<span class="fc" id="L104">        final Map&lt;String, WindowsAccount&gt; groupMap = new HashMap&lt;&gt;();</span>
      +<span class="fc bfc" id="L105" title="All 2 branches covered.">        for (final IWindowsAccount group : groups) {</span>
      +<span class="fc" id="L106">            groupMap.put(group.getFqn(), new WindowsAccount(group));</span>
      +        }
      +<span class="fc" id="L108">        return groupMap;</span>
      +    }
      +
      +    /**
      +     * Windows groups that the user is a member of.
      +     *
      +     * @return A map of group names to groups.
      +     */
      +    public Map&lt;String, WindowsAccount&gt; getGroups() {
      +<span class="fc" id="L117">        return this.groups;</span>
      +    }
      +
      +    /**
      +     * Byte representation of the SID.
      +     *
      +     * @return Array of bytes.
      +     */
      +    public byte[] getSid() {
      +<span class="fc" id="L126">        return this.sid.clone();</span>
      +    }
      +
      +    /**
      +     * String representation of the SID.
      +     *
      +     * @return String.
      +     */
      +    public String getSidString() {
      +<span class="fc" id="L135">        return this.sidString;</span>
      +    }
      +
      +    /**
      +     * Returns a list of role principal objects.
      +     *
      +     * @param group
      +     *            Windows group.
      +     * @param principalFormat
      +     *            Principal format.
      +     *
      +     * @return List of role principal objects.
      +     */
      +    private static List&lt;String&gt; getRoleNames(final IWindowsAccount group, final PrincipalFormat principalFormat) {
      +<span class="fc" id="L149">        final List&lt;String&gt; principals = new ArrayList&lt;&gt;();</span>
      +<span class="pc bpc" id="L150" title="3 of 4 branches missed.">        switch (principalFormat) {</span>
      +            case FQN:
      +<span class="fc" id="L152">                principals.add(group.getFqn());</span>
      +<span class="fc" id="L153">                break;</span>
      +            case SID:
      +<span class="nc" id="L155">                principals.add(group.getSidString());</span>
      +<span class="nc" id="L156">                break;</span>
      +            case BOTH:
      +<span class="nc" id="L158">                principals.add(group.getFqn());</span>
      +<span class="nc" id="L159">                principals.add(group.getSidString());</span>
      +<span class="nc" id="L160">                break;</span>
      +            case NONE:
      +            default:
      +                break;
      +        }
      +<span class="fc" id="L165">        return principals;</span>
      +    }
      +
      +    /**
      +     * Returns a list of user principal objects.
      +     *
      +     * @param windowsIdentity
      +     *            Windows identity.
      +     * @param principalFormat
      +     *            Principal format.
      +     *
      +     * @return A list of user principal objects.
      +     */
      +    private static List&lt;String&gt; getPrincipalNames(final IWindowsIdentity windowsIdentity,
      +            final PrincipalFormat principalFormat) {
      +<span class="fc" id="L180">        final List&lt;String&gt; principals = new ArrayList&lt;&gt;();</span>
      +<span class="fc bfc" id="L181" title="All 4 branches covered.">        switch (principalFormat) {</span>
      +            case FQN:
      +<span class="fc" id="L183">                principals.add(windowsIdentity.getFqn());</span>
      +<span class="fc" id="L184">                break;</span>
      +            case SID:
      +<span class="fc" id="L186">                principals.add(windowsIdentity.getSidString());</span>
      +<span class="fc" id="L187">                break;</span>
      +            case BOTH:
      +<span class="fc" id="L189">                principals.add(windowsIdentity.getFqn());</span>
      +<span class="fc" id="L190">                principals.add(windowsIdentity.getSidString());</span>
      +<span class="fc" id="L191">                break;</span>
      +            case NONE:
      +            default:
      +                break;
      +        }
      +<span class="fc" id="L196">        return principals;</span>
      +    }
      +
      +    /**
      +     * Get an array of roles as a string.
      +     *
      +     * @return Role1, Role2, ...
      +     */
      +    public String getRolesString() {
      +<span class="nc" id="L205">        return String.join(&quot;, &quot;, this.getRoles());</span>
      +    }
      +
      +}
      +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/MixedAuthenticator.html b/waffle-tomcat10/jacoco/waffle.apache/MixedAuthenticator.html
      new file mode 100644
      index 0000000000..2bf6e63afb
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/MixedAuthenticator.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MixedAuthenticator</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.html" class="el_package">waffle.apache</a> &gt; <span class="el_class">MixedAuthenticator</span></div><h1>MixedAuthenticator</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">110 of 516</td><td class="ctr2">78%</td><td class="bar">17 of 48</td><td class="ctr2">64%</td><td class="ctr1">15</td><td class="ctr2">32</td><td class="ctr1">25</td><td class="ctr2">123</td><td class="ctr1">1</td><td class="ctr2">8</td></tr></tfoot><tbody><tr><td id="a3"><a href="MixedAuthenticator.java.html#L143" class="el_method">negotiate(Request, HttpServletResponse, AuthorizationHeader)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="35" height="10" title="58" alt="58"/><img src="../jacoco-resources/greenbar.gif" width="84" height="10" title="139" alt="139"/></td><td class="ctr2" id="c6">70%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="38" height="10" title="7" alt="7"/><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="11" alt="11"/></td><td class="ctr2" id="e1">61%</td><td class="ctr1" id="f0">6</td><td class="ctr2" id="g1">10</td><td class="ctr1" id="h0">14</td><td class="ctr2" id="i0">47</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a4"><a href="MixedAuthenticator.java.html#L238" class="el_method">post(Request, HttpServletResponse)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="12" height="10" title="21" alt="21"/><img src="../jacoco-resources/greenbar.gif" width="49" height="10" title="82" alt="82"/></td><td class="ctr2" id="c4">79%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="5" alt="5"/><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="3" alt="3"/></td><td class="ctr2" id="e2">37%</td><td class="ctr1" id="f1">4</td><td class="ctr2" id="g2">5</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">22</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="MixedAuthenticator.java.html#L80" class="el_method">authenticate(Request, HttpServletResponse)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="12" height="10" title="20" alt="20"/><img src="../jacoco-resources/greenbar.gif" width="82" height="10" title="136" alt="136"/></td><td class="ctr2" id="c3">87%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="5" alt="5"/><img src="../jacoco-resources/greenbar.gif" width="92" height="10" title="17" alt="17"/></td><td class="ctr2" id="e0">77%</td><td class="ctr1" id="f2">4</td><td class="ctr2" id="g0">12</td><td class="ctr1" id="h1">5</td><td class="ctr2" id="i1">34</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="MixedAuthenticator.java.html#L292" class="el_method">redirectTo(Request, HttpServletResponse, String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="12" height="10" title="20" alt="20"/></td><td class="ctr2" id="c5">76%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">2</td><td class="ctr2" id="i3">8</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="MixedAuthenticator.java.html#L307" class="el_method">doAuthenticate(Request, HttpServletResponse)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="5" alt="5"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a2"><a href="MixedAuthenticator.java.html#L58" class="el_method">MixedAuthenticator()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="15" alt="15"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i4">5</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a6"><a href="MixedAuthenticator.java.html#L66" class="el_method">startInternal()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i5">3</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a7"><a href="MixedAuthenticator.java.html#L72" class="el_method">stopInternal()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="7" alt="7"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i6">3</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/MixedAuthenticator.java.html b/waffle-tomcat10/jacoco/waffle.apache/MixedAuthenticator.java.html
      new file mode 100644
      index 0000000000..0ff36a8268
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/MixedAuthenticator.java.html
      @@ -0,0 +1,311 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MixedAuthenticator.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.source.html" class="el_package">waffle.apache</a> &gt; <span class="el_source">MixedAuthenticator.java</span></div><h1>MixedAuthenticator.java</h1><pre class="source lang-java linenums">/*
      + * MIT License
      + *
      + * Copyright (c) 2010-2024 The Waffle Project Contributors: https://github.com/Waffle/waffle/graphs/contributors
      + *
      + * Permission is hereby granted, free of charge, to any person obtaining a copy
      + * of this software and associated documentation files (the &quot;Software&quot;), to deal
      + * in the Software without restriction, including without limitation the rights
      + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      + * copies of the Software, and to permit persons to whom the Software is
      + * furnished to do so, subject to the following conditions:
      + *
      + * The above copyright notice and this permission notice shall be included in all
      + * copies or substantial portions of the Software.
      + *
      + * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      + * SOFTWARE.
      + */
      +package waffle.apache;
      +
      +import com.sun.jna.platform.win32.Win32Exception;
      +
      +import jakarta.servlet.RequestDispatcher;
      +import jakarta.servlet.ServletContext;
      +import jakarta.servlet.ServletException;
      +import jakarta.servlet.http.HttpServletResponse;
      +import jakarta.servlet.http.HttpSession;
      +
      +import java.io.IOException;
      +import java.security.Principal;
      +import java.util.Base64;
      +
      +import org.apache.catalina.LifecycleException;
      +import org.apache.catalina.connector.Request;
      +import org.apache.catalina.realm.GenericPrincipal;
      +import org.apache.tomcat.util.descriptor.web.LoginConfig;
      +import org.slf4j.LoggerFactory;
      +
      +import waffle.util.AuthorizationHeader;
      +import waffle.util.NtlmServletRequest;
      +import waffle.windows.auth.IWindowsIdentity;
      +import waffle.windows.auth.IWindowsSecurityContext;
      +
      +/**
      + * Mixed Negotiate + Form Authenticator.
      + */
      +public class MixedAuthenticator extends WaffleAuthenticatorBase {
      +
      +    /**
      +     * Instantiates a new mixed authenticator.
      +     */
      +    public MixedAuthenticator() {
      +<span class="fc" id="L58">        super();</span>
      +<span class="fc" id="L59">        this.log = LoggerFactory.getLogger(MixedAuthenticator.class);</span>
      +<span class="fc" id="L60">        this.info = MixedAuthenticator.class.getSimpleName();</span>
      +<span class="fc" id="L61">        this.log.debug(&quot;[waffle.apache.MixedAuthenticator] loaded&quot;);</span>
      +<span class="fc" id="L62">    }</span>
      +
      +    @Override
      +    public synchronized void startInternal() throws LifecycleException {
      +<span class="fc" id="L66">        this.log.info(&quot;[waffle.apache.MixedAuthenticator] started&quot;);</span>
      +<span class="fc" id="L67">        super.startInternal();</span>
      +<span class="fc" id="L68">    }</span>
      +
      +    @Override
      +    public synchronized void stopInternal() throws LifecycleException {
      +<span class="fc" id="L72">        super.stopInternal();</span>
      +<span class="fc" id="L73">        this.log.info(&quot;[waffle.apache.MixedAuthenticator] stopped&quot;);</span>
      +<span class="fc" id="L74">    }</span>
      +
      +    @Override
      +    public boolean authenticate(final Request request, final HttpServletResponse response) {
      +
      +        // realm: fail if no realm is configured
      +<span class="pc bpc" id="L80" title="2 of 4 branches missed.">        if (this.context == null || this.context.getRealm() == null) {</span>
      +<span class="nc" id="L81">            this.log.warn(&quot;missing context/realm&quot;);</span>
      +<span class="nc" id="L82">            this.sendError(response, HttpServletResponse.SC_SERVICE_UNAVAILABLE);</span>
      +<span class="nc" id="L83">            return false;</span>
      +        }
      +
      +<span class="fc" id="L86">        this.log.debug(&quot;{} {}, contentlength: {}&quot;, request.getMethod(), request.getRequestURI(),</span>
      +<span class="fc" id="L87">                Integer.valueOf(request.getContentLength()));</span>
      +
      +<span class="fc bfc" id="L89" title="All 2 branches covered.">        final boolean negotiateCheck = request.getParameter(&quot;j_negotiate_check&quot;) != null;</span>
      +<span class="fc" id="L90">        this.log.debug(&quot;negotiateCheck: {}&quot;, Boolean.valueOf(negotiateCheck));</span>
      +<span class="fc bfc" id="L91" title="All 2 branches covered.">        final boolean securityCheck = request.getParameter(&quot;j_security_check&quot;) != null;</span>
      +<span class="fc" id="L92">        this.log.debug(&quot;securityCheck: {}&quot;, Boolean.valueOf(securityCheck));</span>
      +
      +<span class="fc" id="L94">        final Principal principal = request.getUserPrincipal();</span>
      +
      +<span class="fc" id="L96">        final AuthorizationHeader authorizationHeader = new AuthorizationHeader(request);</span>
      +<span class="fc" id="L97">        final boolean ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();</span>
      +<span class="fc" id="L98">        this.log.debug(&quot;authorization: {}, ntlm post: {}&quot;, authorizationHeader, Boolean.valueOf(ntlmPost));</span>
      +
      +<span class="fc" id="L100">        final LoginConfig loginConfig = this.context.getLoginConfig();</span>
      +
      +<span class="pc bpc" id="L102" title="3 of 4 branches missed.">        if (principal != null &amp;&amp; !ntlmPost) {</span>
      +<span class="nc" id="L103">            this.log.debug(&quot;previously authenticated user: {}&quot;, principal.getName());</span>
      +<span class="nc" id="L104">            return true;</span>
      +<span class="fc bfc" id="L105" title="All 2 branches covered.">        } else if (negotiateCheck) {</span>
      +<span class="fc bfc" id="L106" title="All 2 branches covered.">            if (!authorizationHeader.isNull()) {</span>
      +<span class="fc" id="L107">                boolean negotiateResult = this.negotiate(request, response, authorizationHeader);</span>
      +<span class="fc bfc" id="L108" title="All 2 branches covered.">                if (!negotiateResult) {</span>
      +<span class="fc" id="L109">                    this.redirectTo(request, response, loginConfig.getErrorPage());</span>
      +                }
      +<span class="fc" id="L111">                return negotiateResult;</span>
      +            }
      +<span class="fc" id="L113">            this.log.debug(&quot;authorization required&quot;);</span>
      +<span class="fc" id="L114">            this.sendUnauthorized(response);</span>
      +<span class="fc" id="L115">            return false;</span>
      +<span class="fc bfc" id="L116" title="All 2 branches covered.">        } else if (securityCheck) {</span>
      +<span class="fc" id="L117">            final boolean postResult = this.post(request, response);</span>
      +<span class="fc bfc" id="L118" title="All 2 branches covered.">            if (!postResult) {</span>
      +<span class="fc" id="L119">                this.redirectTo(request, response, loginConfig.getErrorPage());</span>
      +            }
      +<span class="fc" id="L121">            return postResult;</span>
      +        } else {
      +<span class="fc" id="L123">            this.redirectTo(request, response, loginConfig.getLoginPage());</span>
      +<span class="fc" id="L124">            return false;</span>
      +        }
      +    }
      +
      +    /**
      +     * Negotiate.
      +     *
      +     * @param request
      +     *            the request
      +     * @param response
      +     *            the response
      +     * @param authorizationHeader
      +     *            the authorization header
      +     *
      +     * @return true, if successful
      +     */
      +    private boolean negotiate(final Request request, final HttpServletResponse response,
      +            final AuthorizationHeader authorizationHeader) {
      +
      +<span class="fc" id="L143">        final String securityPackage = authorizationHeader.getSecurityPackage();</span>
      +        // maintain a connection-based session for NTLM tokens
      +<span class="fc" id="L145">        final String connectionId = NtlmServletRequest.getConnectionId(request);</span>
      +
      +<span class="fc" id="L147">        this.log.debug(&quot;security package: {}, connection id: {}&quot;, securityPackage, connectionId);</span>
      +
      +<span class="fc" id="L149">        final boolean ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();</span>
      +
      +<span class="fc bfc" id="L151" title="All 2 branches covered.">        if (ntlmPost) {</span>
      +            // type 1 NTLM authentication message received
      +<span class="fc" id="L153">            this.auth.resetSecurityToken(connectionId);</span>
      +        }
      +
      +<span class="fc" id="L156">        final byte[] tokenBuffer = authorizationHeader.getTokenBytes();</span>
      +<span class="fc" id="L157">        this.log.debug(&quot;token buffer: {} byte(s)&quot;, Integer.valueOf(tokenBuffer.length));</span>
      +
      +        // log the user in using the token
      +        IWindowsSecurityContext securityContext;
      +        try {
      +<span class="fc" id="L162">            securityContext = this.auth.acceptSecurityToken(connectionId, tokenBuffer, securityPackage);</span>
      +<span class="nc" id="L163">        } catch (final Win32Exception e) {</span>
      +<span class="nc" id="L164">            this.log.warn(&quot;error logging in user: {}&quot;, e.getMessage());</span>
      +<span class="nc" id="L165">            this.log.trace(&quot;&quot;, e);</span>
      +<span class="nc" id="L166">            this.sendUnauthorized(response);</span>
      +<span class="nc" id="L167">            return false;</span>
      +<span class="fc" id="L168">        }</span>
      +<span class="fc" id="L169">        this.log.debug(&quot;continue required: {}&quot;, Boolean.valueOf(securityContext.isContinue()));</span>
      +
      +<span class="fc" id="L171">        final byte[] continueTokenBytes = securityContext.getToken();</span>
      +<span class="pc bpc" id="L172" title="1 of 4 branches missed.">        if (continueTokenBytes != null &amp;&amp; continueTokenBytes.length &gt; 0) {</span>
      +<span class="fc" id="L173">            final String continueToken = Base64.getEncoder().encodeToString(continueTokenBytes);</span>
      +<span class="fc" id="L174">            this.log.debug(&quot;continue token: {}&quot;, continueToken);</span>
      +<span class="fc" id="L175">            response.addHeader(&quot;WWW-Authenticate&quot;, securityPackage + &quot; &quot; + continueToken);</span>
      +        }
      +
      +        try {
      +<span class="pc bpc" id="L179" title="1 of 4 branches missed.">            if (securityContext.isContinue() || ntlmPost) {</span>
      +<span class="fc" id="L180">                response.setHeader(&quot;Connection&quot;, &quot;keep-alive&quot;);</span>
      +<span class="fc" id="L181">                response.sendError(HttpServletResponse.SC_UNAUTHORIZED);</span>
      +<span class="fc" id="L182">                response.flushBuffer();</span>
      +<span class="fc" id="L183">                return false;</span>
      +            }
      +<span class="nc" id="L185">        } catch (final IOException e) {</span>
      +<span class="nc" id="L186">            this.log.warn(&quot;error logging in user: {}&quot;, e.getMessage());</span>
      +<span class="nc" id="L187">            this.log.trace(&quot;&quot;, e);</span>
      +<span class="nc" id="L188">            this.sendUnauthorized(response);</span>
      +<span class="nc" id="L189">            return false;</span>
      +<span class="fc" id="L190">        }</span>
      +
      +        // create and register the user principal with the session
      +<span class="fc" id="L193">        final IWindowsIdentity windowsIdentity = securityContext.getIdentity();</span>
      +
      +        // disable guest login
      +<span class="pc bpc" id="L196" title="3 of 4 branches missed.">        if (!this.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {</span>
      +<span class="nc" id="L197">            this.log.warn(&quot;guest login disabled: {}&quot;, windowsIdentity.getFqn());</span>
      +<span class="nc" id="L198">            this.sendUnauthorized(response);</span>
      +<span class="nc" id="L199">            return false;</span>
      +        }
      +
      +        try {
      +
      +<span class="fc" id="L204">            this.log.debug(&quot;logged in user: {} ({})&quot;, windowsIdentity.getFqn(), windowsIdentity.getSidString());</span>
      +
      +<span class="fc" id="L206">            final GenericPrincipal genericPrincipal = this.createPrincipal(windowsIdentity);</span>
      +
      +<span class="pc bpc" id="L208" title="1 of 2 branches missed.">            if (this.log.isDebugEnabled()) {</span>
      +<span class="nc" id="L209">                this.log.debug(&quot;roles: {}&quot;, String.join(&quot;, &quot;, genericPrincipal.getRoles()));</span>
      +            }
      +
      +            // create a session associated with this request if there's none
      +<span class="fc" id="L213">            final HttpSession session = request.getSession(true);</span>
      +<span class="pc bpc" id="L214" title="1 of 2 branches missed.">            this.log.debug(&quot;session id: {}&quot;, session == null ? &quot;null&quot; : session.getId());</span>
      +
      +<span class="fc" id="L216">            this.register(request, response, genericPrincipal, securityPackage, genericPrincipal.getName(), null);</span>
      +<span class="fc" id="L217">            this.log.info(&quot;successfully logged in user: {}&quot;, genericPrincipal.getName());</span>
      +
      +        } finally {
      +<span class="fc" id="L220">            windowsIdentity.dispose();</span>
      +        }
      +
      +<span class="fc" id="L223">        return true;</span>
      +    }
      +
      +    /**
      +     * Post.
      +     *
      +     * @param request
      +     *            the request
      +     * @param response
      +     *            the response
      +     *
      +     * @return true, if successful
      +     */
      +    private boolean post(final Request request, final HttpServletResponse response) {
      +
      +<span class="fc" id="L238">        final String username = request.getParameter(&quot;j_username&quot;);</span>
      +<span class="fc" id="L239">        final String password = request.getParameter(&quot;j_password&quot;);</span>
      +
      +<span class="fc" id="L241">        this.log.debug(&quot;logging in: {}&quot;, username);</span>
      +
      +        IWindowsIdentity windowsIdentity;
      +        try {
      +<span class="fc" id="L245">            windowsIdentity = this.auth.logonUser(username, password);</span>
      +<span class="fc" id="L246">        } catch (final Exception e) {</span>
      +<span class="fc" id="L247">            this.log.error(e.getMessage());</span>
      +<span class="fc" id="L248">            this.log.trace(&quot;&quot;, e);</span>
      +<span class="fc" id="L249">            return false;</span>
      +<span class="fc" id="L250">        }</span>
      +
      +        // disable guest login
      +<span class="pc bpc" id="L253" title="3 of 4 branches missed.">        if (!this.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {</span>
      +<span class="nc" id="L254">            this.log.warn(&quot;guest login disabled: {}&quot;, windowsIdentity.getFqn());</span>
      +<span class="nc" id="L255">            return false;</span>
      +        }
      +
      +        try {
      +<span class="fc" id="L259">            this.log.debug(&quot;successfully logged in {} ({})&quot;, username, windowsIdentity.getSidString());</span>
      +
      +<span class="fc" id="L261">            final GenericPrincipal genericPrincipal = this.createPrincipal(windowsIdentity);</span>
      +
      +<span class="pc bpc" id="L263" title="1 of 2 branches missed.">            if (this.log.isDebugEnabled()) {</span>
      +<span class="nc" id="L264">                this.log.debug(&quot;roles: {}&quot;, String.join(&quot;, &quot;, genericPrincipal.getRoles()));</span>
      +            }
      +
      +            // create a session associated with this request if there's none
      +<span class="fc" id="L268">            final HttpSession session = request.getSession(true);</span>
      +<span class="pc bpc" id="L269" title="1 of 2 branches missed.">            this.log.debug(&quot;session id: {}&quot;, session == null ? &quot;null&quot; : session.getId());</span>
      +
      +<span class="fc" id="L271">            this.register(request, response, genericPrincipal, &quot;FORM&quot;, genericPrincipal.getName(), null);</span>
      +<span class="fc" id="L272">            this.log.info(&quot;successfully logged in user: {}&quot;, genericPrincipal.getName());</span>
      +        } finally {
      +<span class="fc" id="L274">            windowsIdentity.dispose();</span>
      +        }
      +
      +<span class="fc" id="L277">        return true;</span>
      +    }
      +
      +    /**
      +     * Redirect to.
      +     *
      +     * @param request
      +     *            the request
      +     * @param response
      +     *            the response
      +     * @param url
      +     *            the url
      +     */
      +    private void redirectTo(final Request request, final HttpServletResponse response, final String url) {
      +        try {
      +<span class="fc" id="L292">            this.log.debug(&quot;redirecting to: {}&quot;, url);</span>
      +<span class="fc" id="L293">            final ServletContext servletContext = this.context.getServletContext();</span>
      +<span class="fc" id="L294">            final RequestDispatcher disp = servletContext.getRequestDispatcher(url);</span>
      +<span class="fc" id="L295">            disp.forward(request.getRequest(), response);</span>
      +<span class="nc" id="L296">        } catch (final IOException | ServletException e) {</span>
      +<span class="nc" id="L297">            throw new RuntimeException(e);</span>
      +<span class="fc" id="L298">        }</span>
      +<span class="fc" id="L299">    }</span>
      +
      +    /**
      +     * XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours. In order to support old and
      +     * new at this time, we will continue to have both for time being.
      +     */
      +    @Override
      +    protected boolean doAuthenticate(final Request request, final HttpServletResponse response) throws IOException {
      +<span class="nc" id="L307">        return this.authenticate(request, response);</span>
      +    }
      +
      +}
      +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/NegotiateAuthenticator.html b/waffle-tomcat10/jacoco/waffle.apache/NegotiateAuthenticator.html
      new file mode 100644
      index 0000000000..4acb3f20e6
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/NegotiateAuthenticator.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NegotiateAuthenticator</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.html" class="el_package">waffle.apache</a> &gt; <span class="el_class">NegotiateAuthenticator</span></div><h1>NegotiateAuthenticator</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">83 of 311</td><td class="ctr2">73%</td><td class="bar">11 of 26</td><td class="ctr2">57%</td><td class="ctr1">10</td><td class="ctr2">18</td><td class="ctr1">20</td><td class="ctr2">77</td><td class="ctr1">1</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a0"><a href="NegotiateAuthenticator.java.html#L75" class="el_method">authenticate(Request, HttpServletResponse)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="33" height="10" title="78" alt="78"/><img src="../jacoco-resources/greenbar.gif" width="86" height="10" title="199" alt="199"/></td><td class="ctr2" id="c3">71%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="50" height="10" title="11" alt="11"/><img src="../jacoco-resources/greenbar.gif" width="69" height="10" title="15" alt="15"/></td><td class="ctr2" id="e0">57%</td><td class="ctr1" id="f0">9</td><td class="ctr2" id="g0">14</td><td class="ctr1" id="h0">19</td><td class="ctr2" id="i0">65</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="NegotiateAuthenticator.java.html#L194" class="el_method">doAuthenticate(Request, HttpServletResponse)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="5" alt="5"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="NegotiateAuthenticator.java.html#L54" class="el_method">NegotiateAuthenticator()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="15" alt="15"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i1">5</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a3"><a href="NegotiateAuthenticator.java.html#L62" class="el_method">startInternal()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a4"><a href="NegotiateAuthenticator.java.html#L68" class="el_method">stopInternal()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="7" alt="7"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i3">3</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/NegotiateAuthenticator.java.html b/waffle-tomcat10/jacoco/waffle.apache/NegotiateAuthenticator.java.html
      new file mode 100644
      index 0000000000..7e64d7c335
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/NegotiateAuthenticator.java.html
      @@ -0,0 +1,198 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NegotiateAuthenticator.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.source.html" class="el_package">waffle.apache</a> &gt; <span class="el_source">NegotiateAuthenticator.java</span></div><h1>NegotiateAuthenticator.java</h1><pre class="source lang-java linenums">/*
      + * MIT License
      + *
      + * Copyright (c) 2010-2024 The Waffle Project Contributors: https://github.com/Waffle/waffle/graphs/contributors
      + *
      + * Permission is hereby granted, free of charge, to any person obtaining a copy
      + * of this software and associated documentation files (the &quot;Software&quot;), to deal
      + * in the Software without restriction, including without limitation the rights
      + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      + * copies of the Software, and to permit persons to whom the Software is
      + * furnished to do so, subject to the following conditions:
      + *
      + * The above copyright notice and this permission notice shall be included in all
      + * copies or substantial portions of the Software.
      + *
      + * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      + * SOFTWARE.
      + */
      +package waffle.apache;
      +
      +import com.sun.jna.platform.win32.Win32Exception;
      +
      +import jakarta.servlet.http.HttpServletResponse;
      +import jakarta.servlet.http.HttpSession;
      +
      +import java.io.IOException;
      +import java.security.Principal;
      +import java.util.Base64;
      +
      +import org.apache.catalina.LifecycleException;
      +import org.apache.catalina.connector.Request;
      +import org.apache.catalina.realm.GenericPrincipal;
      +import org.slf4j.LoggerFactory;
      +
      +import waffle.util.AuthorizationHeader;
      +import waffle.util.NtlmServletRequest;
      +import waffle.windows.auth.IWindowsIdentity;
      +import waffle.windows.auth.IWindowsSecurityContext;
      +
      +/**
      + * An Apache Negotiate (NTLM, Kerberos) Authenticator.
      + */
      +public class NegotiateAuthenticator extends WaffleAuthenticatorBase {
      +
      +    /**
      +     * Instantiates a new negotiate authenticator.
      +     */
      +    public NegotiateAuthenticator() {
      +<span class="fc" id="L54">        super();</span>
      +<span class="fc" id="L55">        this.log = LoggerFactory.getLogger(NegotiateAuthenticator.class);</span>
      +<span class="fc" id="L56">        this.info = NegotiateAuthenticator.class.getSimpleName();</span>
      +<span class="fc" id="L57">        this.log.debug(&quot;[waffle.apache.NegotiateAuthenticator] loaded&quot;);</span>
      +<span class="fc" id="L58">    }</span>
      +
      +    @Override
      +    public synchronized void startInternal() throws LifecycleException {
      +<span class="fc" id="L62">        this.log.info(&quot;[waffle.apache.NegotiateAuthenticator] started&quot;);</span>
      +<span class="fc" id="L63">        super.startInternal();</span>
      +<span class="fc" id="L64">    }</span>
      +
      +    @Override
      +    public synchronized void stopInternal() throws LifecycleException {
      +<span class="fc" id="L68">        super.stopInternal();</span>
      +<span class="fc" id="L69">        this.log.info(&quot;[waffle.apache.NegotiateAuthenticator] stopped&quot;);</span>
      +<span class="fc" id="L70">    }</span>
      +
      +    @Override
      +    public boolean authenticate(final Request request, final HttpServletResponse response) {
      +
      +<span class="fc" id="L75">        Principal principal = request.getUserPrincipal();</span>
      +<span class="fc" id="L76">        final AuthorizationHeader authorizationHeader = new AuthorizationHeader(request);</span>
      +<span class="fc" id="L77">        final boolean ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();</span>
      +
      +<span class="fc" id="L79">        this.log.debug(&quot;{} {}, contentlength: {}&quot;, request.getMethod(), request.getRequestURI(),</span>
      +<span class="fc" id="L80">                Integer.valueOf(request.getContentLength()));</span>
      +<span class="fc" id="L81">        this.log.debug(&quot;authorization: {}, ntlm post: {}&quot;, authorizationHeader, Boolean.valueOf(ntlmPost));</span>
      +
      +<span class="pc bpc" id="L83" title="3 of 4 branches missed.">        if (principal != null &amp;&amp; !ntlmPost) {</span>
      +            // user already authenticated
      +<span class="nc" id="L85">            this.log.debug(&quot;previously authenticated user: {}&quot;, principal.getName());</span>
      +<span class="nc" id="L86">            return true;</span>
      +        }
      +
      +        // authenticate user
      +<span class="fc bfc" id="L90" title="All 2 branches covered.">        if (!authorizationHeader.isNull()) {</span>
      +
      +<span class="fc" id="L92">            final String securityPackage = authorizationHeader.getSecurityPackage();</span>
      +            // maintain a connection-based session for NTLM tokens
      +<span class="fc" id="L94">            final String connectionId = NtlmServletRequest.getConnectionId(request);</span>
      +
      +<span class="fc" id="L96">            this.log.debug(&quot;security package: {}, connection id: {}&quot;, securityPackage, connectionId);</span>
      +
      +<span class="fc bfc" id="L98" title="All 2 branches covered.">            if (ntlmPost) {</span>
      +                // type 1 NTLM authentication message received
      +<span class="fc" id="L100">                this.auth.resetSecurityToken(connectionId);</span>
      +            }
      +
      +<span class="fc" id="L103">            final byte[] tokenBuffer = authorizationHeader.getTokenBytes();</span>
      +<span class="fc" id="L104">            this.log.debug(&quot;token buffer: {} byte(s)&quot;, Integer.valueOf(tokenBuffer.length));</span>
      +
      +            // log the user in using the token
      +            IWindowsSecurityContext securityContext;
      +            try {
      +<span class="fc" id="L109">                securityContext = this.auth.acceptSecurityToken(connectionId, tokenBuffer, securityPackage);</span>
      +<span class="nc" id="L110">            } catch (final Win32Exception e) {</span>
      +<span class="nc" id="L111">                this.log.warn(&quot;error logging in user: {}&quot;, e.getMessage());</span>
      +<span class="nc" id="L112">                this.log.trace(&quot;&quot;, e);</span>
      +<span class="nc" id="L113">                this.sendUnauthorized(response);</span>
      +<span class="nc" id="L114">                return false;</span>
      +<span class="fc" id="L115">            }</span>
      +<span class="fc" id="L116">            this.log.debug(&quot;continue required: {}&quot;, Boolean.valueOf(securityContext.isContinue()));</span>
      +
      +<span class="fc" id="L118">            final byte[] continueTokenBytes = securityContext.getToken();</span>
      +<span class="pc bpc" id="L119" title="1 of 4 branches missed.">            if (continueTokenBytes != null &amp;&amp; continueTokenBytes.length &gt; 0) {</span>
      +<span class="fc" id="L120">                final String continueToken = Base64.getEncoder().encodeToString(continueTokenBytes);</span>
      +<span class="fc" id="L121">                this.log.debug(&quot;continue token: {}&quot;, continueToken);</span>
      +<span class="fc" id="L122">                response.addHeader(&quot;WWW-Authenticate&quot;, securityPackage + &quot; &quot; + continueToken);</span>
      +            }
      +
      +            try {
      +<span class="fc bfc" id="L126" title="All 2 branches covered.">                if (securityContext.isContinue()) {</span>
      +<span class="fc" id="L127">                    response.setHeader(&quot;Connection&quot;, &quot;keep-alive&quot;);</span>
      +<span class="fc" id="L128">                    response.sendError(HttpServletResponse.SC_UNAUTHORIZED);</span>
      +<span class="fc" id="L129">                    response.flushBuffer();</span>
      +<span class="fc" id="L130">                    return false;</span>
      +                }
      +<span class="nc" id="L132">            } catch (final IOException e) {</span>
      +<span class="nc" id="L133">                this.log.warn(&quot;error logging in user: {}&quot;, e.getMessage());</span>
      +<span class="nc" id="L134">                this.log.trace(&quot;&quot;, e);</span>
      +<span class="nc" id="L135">                this.sendUnauthorized(response);</span>
      +<span class="nc" id="L136">                return false;</span>
      +<span class="fc" id="L137">            }</span>
      +
      +            // realm: fail if no realm is configured
      +<span class="pc bpc" id="L140" title="2 of 4 branches missed.">            if (this.context == null || this.context.getRealm() == null) {</span>
      +<span class="nc" id="L141">                this.log.warn(&quot;missing context/realm&quot;);</span>
      +<span class="nc" id="L142">                this.sendError(response, HttpServletResponse.SC_SERVICE_UNAVAILABLE);</span>
      +<span class="nc" id="L143">                return false;</span>
      +            }
      +
      +            // create and register the user principal with the session
      +<span class="fc" id="L147">            final IWindowsIdentity windowsIdentity = securityContext.getIdentity();</span>
      +
      +            // disable guest login
      +<span class="pc bpc" id="L150" title="3 of 4 branches missed.">            if (!this.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {</span>
      +<span class="nc" id="L151">                this.log.warn(&quot;guest login disabled: {}&quot;, windowsIdentity.getFqn());</span>
      +<span class="nc" id="L152">                this.sendUnauthorized(response);</span>
      +<span class="nc" id="L153">                return false;</span>
      +            }
      +
      +            try {
      +<span class="fc" id="L157">                this.log.debug(&quot;logged in user: {} ({})&quot;, windowsIdentity.getFqn(), windowsIdentity.getSidString());</span>
      +
      +<span class="fc" id="L159">                final GenericPrincipal genericPrincipal = this.createPrincipal(windowsIdentity);</span>
      +
      +<span class="pc bpc" id="L161" title="1 of 2 branches missed.">                if (this.log.isDebugEnabled()) {</span>
      +<span class="nc" id="L162">                    this.log.debug(&quot;roles: {}&quot;, String.join(&quot;, &quot;, genericPrincipal.getRoles()));</span>
      +                }
      +
      +<span class="fc" id="L165">                principal = genericPrincipal;</span>
      +
      +                // create a session associated with this request if there's none
      +<span class="fc" id="L168">                final HttpSession session = request.getSession(true);</span>
      +<span class="pc bpc" id="L169" title="1 of 2 branches missed.">                this.log.debug(&quot;session id: {}&quot;, session == null ? &quot;null&quot; : session.getId());</span>
      +
      +                // register the authenticated principal
      +<span class="fc" id="L172">                this.register(request, response, principal, securityPackage, principal.getName(), null);</span>
      +<span class="fc" id="L173">                this.log.info(&quot;successfully logged in user: {}&quot;, principal.getName());</span>
      +
      +            } finally {
      +<span class="fc" id="L176">                windowsIdentity.dispose();</span>
      +<span class="fc" id="L177">                securityContext.dispose();</span>
      +            }
      +
      +<span class="fc" id="L180">            return true;</span>
      +        }
      +
      +<span class="fc" id="L183">        this.log.debug(&quot;authorization required&quot;);</span>
      +<span class="fc" id="L184">        this.sendUnauthorized(response);</span>
      +<span class="fc" id="L185">        return false;</span>
      +    }
      +
      +    /**
      +     * XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours. In order to support old and
      +     * new at this time, we will continue to have both for time being.
      +     */
      +    @Override
      +    protected boolean doAuthenticate(final Request request, final HttpServletResponse response) throws IOException {
      +<span class="nc" id="L194">        return this.authenticate(request, response);</span>
      +    }
      +
      +}
      +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/WaffleAuthenticatorBase.html b/waffle-tomcat10/jacoco/waffle.apache/WaffleAuthenticatorBase.html
      new file mode 100644
      index 0000000000..639bfcb8f3
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/WaffleAuthenticatorBase.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>WaffleAuthenticatorBase</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.html" class="el_package">waffle.apache</a> &gt; <span class="el_class">WaffleAuthenticatorBase</span></div><h1>WaffleAuthenticatorBase</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">102 of 297</td><td class="ctr2">65%</td><td class="bar">6 of 14</td><td class="ctr2">57%</td><td class="ctr1">8</td><td class="ctr2">27</td><td class="ctr1">27</td><td class="ctr2">74</td><td class="ctr1">5</td><td class="ctr2">20</td></tr></tfoot><tbody><tr><td id="a1"><a href="WaffleAuthenticatorBase.java.html#L252" class="el_method">doLogin(Request, String, String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="76" alt="76"/></td><td class="ctr2" id="c15">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="e2">0%</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">16</td><td class="ctr2" id="i0">16</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a9"><a href="WaffleAuthenticatorBase.java.html#L238" class="el_method">sendError(HttpServletResponse, int)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="17" height="10" title="11" alt="11"/></td><td class="ctr2" id="c16">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h1">5</td><td class="ctr2" id="i4">5</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a10"><a href="WaffleAuthenticatorBase.java.html#L217" class="el_method">sendUnauthorized(HttpServletResponse)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="42" height="10" title="27" alt="27"/></td><td class="ctr2" id="c14">81%</td><td class="bar" id="d2"><img src="../jacoco-resources/greenbar.gif" width="40" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g2">2</td><td class="ctr1" id="h2">2</td><td class="ctr2" id="i2">10</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a13"><a href="WaffleAuthenticatorBase.java.html#L95" class="el_method">setContinueContextsTimeout(int)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c17">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h3">2</td><td class="ctr2" id="i8">2</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a4"><a href="WaffleAuthenticatorBase.java.html#L85" class="el_method">getContinueContextsTimeout()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c18">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i11">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a3"><a href="WaffleAuthenticatorBase.java.html#L246" class="el_method">getAuthMethod()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="2" alt="2"/></td><td class="ctr2" id="c19">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i12">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a15"><a href="WaffleAuthenticatorBase.java.html#L193" class="el_method">setProtocols(String)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="93" height="10" title="59" alt="59"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d1"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i1">11</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a19"><a href="WaffleAuthenticatorBase.java.html#L50" class="el_method">WaffleAuthenticatorBase()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="28" height="10" title="18" alt="18"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i3">6</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a17"><a href="WaffleAuthenticatorBase.java.html#L299" class="el_method">startInternal()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="26" height="10" title="17" alt="17"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i5">5</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a18"><a href="WaffleAuthenticatorBase.java.html#L53" class="el_method">static {...}</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="25" height="10" title="16" alt="16"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i13">1</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a14"><a href="WaffleAuthenticatorBase.java.html#L133" class="el_method">setPrincipalFormat(String)</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="13" alt="13"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i6">3</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a16"><a href="WaffleAuthenticatorBase.java.html#L153" class="el_method">setRoleFormat(String)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="13" alt="13"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i7">3</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a0"><a href="WaffleAuthenticatorBase.java.html#L288" class="el_method">createPrincipal(IWindowsIdentity)</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i14">1</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a12"><a href="WaffleAuthenticatorBase.java.html#L114" class="el_method">setAuth(IWindowsAuthProvider)</a></td><td class="bar" id="b13"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">0</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" id="i9">2</td><td class="ctr1" id="j13">0</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a11"><a href="WaffleAuthenticatorBase.java.html#L183" class="el_method">setAllowGuestLogin(boolean)</a></td><td class="bar" id="b14"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h14">0</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a2"><a href="WaffleAuthenticatorBase.java.html#L104" class="el_method">getAuth()</a></td><td class="bar" id="b15"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c9">100%</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" id="i15">1</td><td class="ctr1" id="j15">0</td><td class="ctr2" id="k15">1</td></tr><tr><td id="a5"><a href="WaffleAuthenticatorBase.java.html#L123" class="el_method">getInfo()</a></td><td class="bar" id="b16"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c10">100%</td><td class="bar" id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f16">0</td><td class="ctr2" id="g16">1</td><td class="ctr1" id="h16">0</td><td class="ctr2" id="i16">1</td><td class="ctr1" id="j16">0</td><td class="ctr2" id="k16">1</td></tr><tr><td id="a6"><a href="WaffleAuthenticatorBase.java.html#L143" class="el_method">getPrincipalFormat()</a></td><td class="bar" id="b17"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c11">100%</td><td class="bar" id="d17"/><td class="ctr2" id="e17">n/a</td><td class="ctr1" id="f17">0</td><td class="ctr2" id="g17">1</td><td class="ctr1" id="h17">0</td><td class="ctr2" id="i17">1</td><td class="ctr1" id="j17">0</td><td class="ctr2" id="k17">1</td></tr><tr><td id="a7"><a href="WaffleAuthenticatorBase.java.html#L163" class="el_method">getRoleFormat()</a></td><td class="bar" id="b18"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c12">100%</td><td class="bar" id="d18"/><td class="ctr2" id="e18">n/a</td><td class="ctr1" id="f18">0</td><td class="ctr2" id="g18">1</td><td class="ctr1" id="h18">0</td><td class="ctr2" id="i18">1</td><td class="ctr1" id="j18">0</td><td class="ctr2" id="k18">1</td></tr><tr><td id="a8"><a href="WaffleAuthenticatorBase.java.html#L172" class="el_method">isAllowGuestLogin()</a></td><td class="bar" id="b19"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c13">100%</td><td class="bar" id="d19"/><td class="ctr2" id="e19">n/a</td><td class="ctr1" id="f19">0</td><td class="ctr2" id="g19">1</td><td class="ctr1" id="h19">0</td><td class="ctr2" id="i19">1</td><td class="ctr1" id="j19">0</td><td class="ctr2" id="k19">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/WaffleAuthenticatorBase.java.html b/waffle-tomcat10/jacoco/waffle.apache/WaffleAuthenticatorBase.java.html
      new file mode 100644
      index 0000000000..97fcc21d1d
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/WaffleAuthenticatorBase.java.html
      @@ -0,0 +1,306 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>WaffleAuthenticatorBase.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.source.html" class="el_package">waffle.apache</a> &gt; <span class="el_source">WaffleAuthenticatorBase.java</span></div><h1>WaffleAuthenticatorBase.java</h1><pre class="source lang-java linenums">/*
      + * MIT License
      + *
      + * Copyright (c) 2010-2024 The Waffle Project Contributors: https://github.com/Waffle/waffle/graphs/contributors
      + *
      + * Permission is hereby granted, free of charge, to any person obtaining a copy
      + * of this software and associated documentation files (the &quot;Software&quot;), to deal
      + * in the Software without restriction, including without limitation the rights
      + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      + * copies of the Software, and to permit persons to whom the Software is
      + * furnished to do so, subject to the following conditions:
      + *
      + * The above copyright notice and this permission notice shall be included in all
      + * copies or substantial portions of the Software.
      + *
      + * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      + * SOFTWARE.
      + */
      +package waffle.apache;
      +
      +import jakarta.servlet.ServletException;
      +import jakarta.servlet.http.HttpServletResponse;
      +
      +import java.io.IOException;
      +import java.security.Principal;
      +import java.util.Arrays;
      +import java.util.LinkedHashSet;
      +import java.util.Locale;
      +import java.util.Set;
      +
      +import org.apache.catalina.LifecycleException;
      +import org.apache.catalina.authenticator.AuthenticatorBase;
      +import org.apache.catalina.connector.Request;
      +import org.apache.catalina.realm.GenericPrincipal;
      +import org.slf4j.Logger;
      +
      +import waffle.windows.auth.IWindowsAuthProvider;
      +import waffle.windows.auth.IWindowsIdentity;
      +import waffle.windows.auth.PrincipalFormat;
      +import waffle.windows.auth.impl.WindowsAuthProviderImpl;
      +
      +/**
      + * The Class WaffleAuthenticatorBase.
      + */
      +<span class="fc" id="L50">abstract class WaffleAuthenticatorBase extends AuthenticatorBase {</span>
      +
      +    /** The Constant SUPPORTED_PROTOCOLS. */
      +<span class="fc" id="L53">    private static final Set&lt;String&gt; SUPPORTED_PROTOCOLS = new LinkedHashSet&lt;&gt;(Arrays.asList(&quot;Negotiate&quot;, &quot;NTLM&quot;));</span>
      +
      +    /** The info. */
      +    protected String info;
      +
      +    /** The log. */
      +    protected Logger log;
      +
      +    /** The principal format. */
      +<span class="fc" id="L62">    protected PrincipalFormat principalFormat = PrincipalFormat.FQN;</span>
      +
      +    /** The role format. */
      +<span class="fc" id="L65">    protected PrincipalFormat roleFormat = PrincipalFormat.FQN;</span>
      +
      +    /** The allow guest login. */
      +<span class="fc" id="L68">    protected boolean allowGuestLogin = true;</span>
      +
      +    /** The protocols. */
      +<span class="fc" id="L71">    protected Set&lt;String&gt; protocols = WaffleAuthenticatorBase.SUPPORTED_PROTOCOLS;</span>
      +
      +    /** The auth continueContextsTimeout configuration. */
      +<span class="fc" id="L74">    protected int continueContextsTimeout = WindowsAuthProviderImpl.CONTINUE_CONTEXT_TIMEOUT;</span>
      +
      +    /** The auth. */
      +    protected IWindowsAuthProvider auth;
      +
      +    /**
      +     * Gets the continue context time out configuration.
      +     *
      +     * @return the continue contexts timeout
      +     */
      +    public int getContinueContextsTimeout() {
      +<span class="nc" id="L85">        return this.continueContextsTimeout;</span>
      +    }
      +
      +    /**
      +     * Sets the continue context time out configuration.
      +     *
      +     * @param continueContextsTimeout
      +     *            the new continue contexts timeout
      +     */
      +    public void setContinueContextsTimeout(final int continueContextsTimeout) {
      +<span class="nc" id="L95">        this.continueContextsTimeout = continueContextsTimeout;</span>
      +<span class="nc" id="L96">    }</span>
      +
      +    /**
      +     * Windows authentication provider.
      +     *
      +     * @return IWindowsAuthProvider.
      +     */
      +    public IWindowsAuthProvider getAuth() {
      +<span class="fc" id="L104">        return this.auth;</span>
      +    }
      +
      +    /**
      +     * Set Windows auth provider.
      +     *
      +     * @param provider
      +     *            Class implements IWindowsAuthProvider.
      +     */
      +    public void setAuth(final IWindowsAuthProvider provider) {
      +<span class="fc" id="L114">        this.auth = provider;</span>
      +<span class="fc" id="L115">    }</span>
      +
      +    /**
      +     * Gets the info.
      +     *
      +     * @return the info
      +     */
      +    public String getInfo() {
      +<span class="fc" id="L123">        return this.info;</span>
      +    }
      +
      +    /**
      +     * Set the principal format.
      +     *
      +     * @param format
      +     *            Principal format.
      +     */
      +    public void setPrincipalFormat(final String format) {
      +<span class="fc" id="L133">        this.principalFormat = PrincipalFormat.valueOf(format.toUpperCase(Locale.ENGLISH));</span>
      +<span class="fc" id="L134">        this.log.debug(&quot;principal format: {}&quot;, this.principalFormat);</span>
      +<span class="fc" id="L135">    }</span>
      +
      +    /**
      +     * Principal format.
      +     *
      +     * @return Principal format.
      +     */
      +    public PrincipalFormat getPrincipalFormat() {
      +<span class="fc" id="L143">        return this.principalFormat;</span>
      +    }
      +
      +    /**
      +     * Set the principal format.
      +     *
      +     * @param format
      +     *            Role format.
      +     */
      +    public void setRoleFormat(final String format) {
      +<span class="fc" id="L153">        this.roleFormat = PrincipalFormat.valueOf(format.toUpperCase(Locale.ENGLISH));</span>
      +<span class="fc" id="L154">        this.log.debug(&quot;role format: {}&quot;, this.roleFormat);</span>
      +<span class="fc" id="L155">    }</span>
      +
      +    /**
      +     * Principal format.
      +     *
      +     * @return Role format.
      +     */
      +    public PrincipalFormat getRoleFormat() {
      +<span class="fc" id="L163">        return this.roleFormat;</span>
      +    }
      +
      +    /**
      +     * True if Guest login permitted.
      +     *
      +     * @return True if Guest login permitted, false otherwise.
      +     */
      +    public boolean isAllowGuestLogin() {
      +<span class="fc" id="L172">        return this.allowGuestLogin;</span>
      +    }
      +
      +    /**
      +     * Set whether Guest login is permitted. Default is true, if the Guest account is enabled, an invalid
      +     * username/password results in a Guest login.
      +     *
      +     * @param value
      +     *            True or false.
      +     */
      +    public void setAllowGuestLogin(final boolean value) {
      +<span class="fc" id="L183">        this.allowGuestLogin = value;</span>
      +<span class="fc" id="L184">    }</span>
      +
      +    /**
      +     * Set the authentication protocols. Default is &quot;Negotiate, NTLM&quot;.
      +     *
      +     * @param value
      +     *            Authentication protocols
      +     */
      +    public void setProtocols(final String value) {
      +<span class="fc" id="L193">        this.protocols = new LinkedHashSet&lt;&gt;();</span>
      +<span class="fc" id="L194">        final String[] protocolNames = value.split(&quot;,&quot;, -1);</span>
      +<span class="fc bfc" id="L195" title="All 2 branches covered.">        for (String protocolName : protocolNames) {</span>
      +<span class="fc" id="L196">            protocolName = protocolName.trim();</span>
      +<span class="fc bfc" id="L197" title="All 2 branches covered.">            if (!protocolName.isEmpty()) {</span>
      +<span class="fc" id="L198">                this.log.debug(&quot;init protocol: {}&quot;, protocolName);</span>
      +<span class="fc bfc" id="L199" title="All 2 branches covered.">                if (WaffleAuthenticatorBase.SUPPORTED_PROTOCOLS.contains(protocolName)) {</span>
      +<span class="fc" id="L200">                    this.protocols.add(protocolName);</span>
      +                } else {
      +<span class="fc" id="L202">                    this.log.error(&quot;unsupported protocol: {}&quot;, protocolName);</span>
      +<span class="fc" id="L203">                    throw new RuntimeException(&quot;Unsupported protocol: &quot; + protocolName);</span>
      +                }
      +            }
      +        }
      +<span class="fc" id="L207">    }</span>
      +
      +    /**
      +     * Send a 401 Unauthorized along with protocol authentication headers.
      +     *
      +     * @param response
      +     *            HTTP Response
      +     */
      +    protected void sendUnauthorized(final HttpServletResponse response) {
      +        try {
      +<span class="fc bfc" id="L217" title="All 2 branches covered.">            for (final String protocol : this.protocols) {</span>
      +<span class="fc" id="L218">                response.addHeader(&quot;WWW-Authenticate&quot;, protocol);</span>
      +<span class="fc" id="L219">            }</span>
      +<span class="fc" id="L220">            response.setHeader(&quot;Connection&quot;, &quot;close&quot;);</span>
      +<span class="fc" id="L221">            response.sendError(HttpServletResponse.SC_UNAUTHORIZED);</span>
      +<span class="fc" id="L222">            response.flushBuffer();</span>
      +<span class="nc" id="L223">        } catch (final IOException e) {</span>
      +<span class="nc" id="L224">            throw new RuntimeException(e);</span>
      +<span class="fc" id="L225">        }</span>
      +<span class="fc" id="L226">    }</span>
      +
      +    /**
      +     * Send an error code.
      +     *
      +     * @param response
      +     *            HTTP Response
      +     * @param code
      +     *            Error Code
      +     */
      +    protected void sendError(final HttpServletResponse response, final int code) {
      +        try {
      +<span class="nc" id="L238">            response.sendError(code);</span>
      +<span class="nc" id="L239">        } catch (final IOException e) {</span>
      +<span class="nc" id="L240">            throw new RuntimeException(e);</span>
      +<span class="nc" id="L241">        }</span>
      +<span class="nc" id="L242">    }</span>
      +
      +    @Override
      +    protected String getAuthMethod() {
      +<span class="nc" id="L246">        return null;</span>
      +    }
      +
      +    @Override
      +    protected Principal doLogin(final Request request, final String username, final String password)
      +            throws ServletException {
      +<span class="nc" id="L252">        this.log.debug(&quot;logging in: {}&quot;, username);</span>
      +        IWindowsIdentity windowsIdentity;
      +        try {
      +<span class="nc" id="L255">            windowsIdentity = this.auth.logonUser(username, password);</span>
      +<span class="nc" id="L256">        } catch (final Exception e) {</span>
      +<span class="nc" id="L257">            this.log.error(e.getMessage());</span>
      +<span class="nc" id="L258">            this.log.trace(&quot;&quot;, e);</span>
      +<span class="nc" id="L259">            return super.doLogin(request, username, password);</span>
      +<span class="nc" id="L260">        }</span>
      +        // disable guest login
      +<span class="nc bnc" id="L262" title="All 4 branches missed.">        if (!this.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {</span>
      +<span class="nc" id="L263">            this.log.warn(&quot;guest login disabled: {}&quot;, windowsIdentity.getFqn());</span>
      +<span class="nc" id="L264">            return super.doLogin(request, username, password);</span>
      +        }
      +        try {
      +<span class="nc" id="L267">            this.log.debug(&quot;successfully logged in {} ({})&quot;, username, windowsIdentity.getSidString());</span>
      +<span class="nc" id="L268">            final GenericPrincipal genericPrincipal = this.createPrincipal(windowsIdentity);</span>
      +<span class="nc bnc" id="L269" title="All 2 branches missed.">            if (this.log.isDebugEnabled()) {</span>
      +<span class="nc" id="L270">                this.log.debug(&quot;roles: {}&quot;, String.join(&quot;, &quot;, genericPrincipal.getRoles()));</span>
      +            }
      +<span class="nc" id="L272">            return genericPrincipal;</span>
      +        } finally {
      +<span class="nc" id="L274">            windowsIdentity.dispose();</span>
      +        }
      +    }
      +
      +    /**
      +     * This method will create an instance of a IWindowsIdentity based GenericPrincipal. It is used for creating custom
      +     * implementation within subclasses.
      +     *
      +     * @param windowsIdentity
      +     *            the windows identity to initialize the principal
      +     *
      +     * @return the Generic Principal
      +     */
      +    protected GenericPrincipal createPrincipal(final IWindowsIdentity windowsIdentity) {
      +<span class="fc" id="L288">        return new GenericWindowsPrincipal(windowsIdentity, this.principalFormat, this.roleFormat);</span>
      +    }
      +
      +    /**
      +     * Hook to the start and to set up the dependencies.
      +     *
      +     * @throws LifecycleException
      +     *             the lifecycle exception
      +     */
      +    @Override
      +    public synchronized void startInternal() throws LifecycleException {
      +<span class="fc" id="L299">        this.log.debug(&quot;Creating a windows authentication provider with continueContextsTimeout property set to: {}&quot;,</span>
      +<span class="fc" id="L300">                this.continueContextsTimeout);</span>
      +<span class="fc" id="L301">        this.auth = new WindowsAuthProviderImpl(this.continueContextsTimeout);</span>
      +<span class="fc" id="L302">        super.startInternal();</span>
      +<span class="fc" id="L303">    }</span>
      +
      +}
      +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/WindowsRealm.html b/waffle-tomcat10/jacoco/waffle.apache/WindowsRealm.html
      new file mode 100644
      index 0000000000..8b7e971206
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/WindowsRealm.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>WindowsRealm</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.html" class="el_package">waffle.apache</a> &gt; <span class="el_class">WindowsRealm</span></div><h1>WindowsRealm</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 7</td><td class="ctr2">100%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class="ctr2">3</td><td class="ctr1">0</td><td class="ctr2">3</td><td class="ctr1">0</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="WindowsRealm.java.html#L33" class="el_method">WindowsRealm()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="3" alt="3"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="WindowsRealm.java.html#L37" class="el_method">getPassword(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="80" height="10" title="2" alt="2"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="WindowsRealm.java.html#L42" class="el_method">getPrincipal(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="80" height="10" title="2" alt="2"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/WindowsRealm.java.html b/waffle-tomcat10/jacoco/waffle.apache/WindowsRealm.java.html
      new file mode 100644
      index 0000000000..c67969b48f
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/WindowsRealm.java.html
      @@ -0,0 +1,46 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>WindowsRealm.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <a href="index.source.html" class="el_package">waffle.apache</a> &gt; <span class="el_source">WindowsRealm.java</span></div><h1>WindowsRealm.java</h1><pre class="source lang-java linenums">/*
      + * MIT License
      + *
      + * Copyright (c) 2010-2024 The Waffle Project Contributors: https://github.com/Waffle/waffle/graphs/contributors
      + *
      + * Permission is hereby granted, free of charge, to any person obtaining a copy
      + * of this software and associated documentation files (the &quot;Software&quot;), to deal
      + * in the Software without restriction, including without limitation the rights
      + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      + * copies of the Software, and to permit persons to whom the Software is
      + * furnished to do so, subject to the following conditions:
      + *
      + * The above copyright notice and this permission notice shall be included in all
      + * copies or substantial portions of the Software.
      + *
      + * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      + * SOFTWARE.
      + */
      +package waffle.apache;
      +
      +import java.security.Principal;
      +
      +import org.apache.catalina.realm.RealmBase;
      +
      +/**
      + * A rudimentary Windows realm.
      + */
      +<span class="fc" id="L33">public class WindowsRealm extends RealmBase {</span>
      +
      +    @Override
      +    protected String getPassword(final String value) {
      +<span class="fc" id="L37">        return null;</span>
      +    }
      +
      +    @Override
      +    protected Principal getPrincipal(final String value) {
      +<span class="fc" id="L42">        return null;</span>
      +    }
      +
      +}
      +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/index.html b/waffle-tomcat10/jacoco/waffle.apache/index.html
      new file mode 100644
      index 0000000000..e694a63266
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/index.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>waffle.apache</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <span class="el_package">waffle.apache</span></div><h1>waffle.apache</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">317 of 1,303</td><td class="ctr2">75%</td><td class="bar">37 of 100</td><td class="ctr2">63%</td><td class="ctr1">37</td><td class="ctr2">97</td><td class="ctr1">78</td><td class="ctr2">315</td><td class="ctr1">8</td><td class="ctr2">45</td><td class="ctr1">0</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a1"><a href="MixedAuthenticator.html" class="el_class">MixedAuthenticator</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="25" height="10" title="110" alt="110"/><img src="../jacoco-resources/greenbar.gif" width="94" height="10" title="406" alt="406"/></td><td class="ctr2" id="c2">78%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="42" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="77" height="10" title="31" alt="31"/></td><td class="ctr2" id="e1">64%</td><td class="ctr1" id="f0">15</td><td class="ctr2" id="g0">32</td><td class="ctr1" id="h1">25</td><td class="ctr2" id="i0">123</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k2">8</td><td class="ctr1" id="l0">0</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a3"><a href="WaffleAuthenticatorBase.html" class="el_class">WaffleAuthenticatorBase</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="23" height="10" title="102" alt="102"/><img src="../jacoco-resources/greenbar.gif" width="45" height="10" title="195" alt="195"/></td><td class="ctr2" id="c4">65%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="15" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="8" alt="8"/></td><td class="ctr2" id="e3">57%</td><td class="ctr1" id="f2">8</td><td class="ctr2" id="g1">27</td><td class="ctr1" id="h0">27</td><td class="ctr2" id="i2">74</td><td class="ctr1" id="j0">5</td><td class="ctr2" id="k0">20</td><td class="ctr1" id="l1">0</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="NegotiateAuthenticator.html" class="el_class">NegotiateAuthenticator</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="19" height="10" title="83" alt="83"/><img src="../jacoco-resources/greenbar.gif" width="53" height="10" title="228" alt="228"/></td><td class="ctr2" id="c3">73%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="11" alt="11"/><img src="../jacoco-resources/greenbar.gif" width="37" height="10" title="15" alt="15"/></td><td class="ctr2" id="e2">57%</td><td class="ctr1" id="f1">10</td><td class="ctr2" id="g2">18</td><td class="ctr1" id="h2">20</td><td class="ctr2" id="i1">77</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k3">5</td><td class="ctr1" id="l2">0</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a0"><a href="GenericWindowsPrincipal.html" class="el_class">GenericWindowsPrincipal</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="22" alt="22"/><img src="../jacoco-resources/greenbar.gif" width="34" height="10" title="150" alt="150"/></td><td class="ctr2" id="c1">87%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="22" height="10" title="9" alt="9"/></td><td class="ctr2" id="e0">75%</td><td class="ctr1" id="f3">4</td><td class="ctr2" id="g3">17</td><td class="ctr1" id="h3">6</td><td class="ctr2" id="i3">38</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k1">9</td><td class="ctr1" id="l3">0</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a4"><a href="WindowsRealm.html" class="el_class">WindowsRealm</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i4">3</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">3</td><td class="ctr1" id="l4">0</td><td class="ctr2" id="m4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/jacoco/waffle.apache/index.source.html b/waffle-tomcat10/jacoco/waffle.apache/index.source.html
      new file mode 100644
      index 0000000000..d1f64b2bb4
      --- /dev/null
      +++ b/waffle-tomcat10/jacoco/waffle.apache/index.source.html
      @@ -0,0 +1 @@
      +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang=""><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>waffle.apache</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">waffle-tomcat10</a> &gt; <span class="el_package">waffle.apache</span></div><h1>waffle.apache</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">317 of 1,303</td><td class="ctr2">75%</td><td class="bar">37 of 100</td><td class="ctr2">63%</td><td class="ctr1">37</td><td class="ctr2">97</td><td class="ctr1">78</td><td class="ctr2">315</td><td class="ctr1">8</td><td class="ctr2">45</td><td class="ctr1">0</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a1"><a href="MixedAuthenticator.java.html" class="el_source">MixedAuthenticator.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="25" height="10" title="110" alt="110"/><img src="../jacoco-resources/greenbar.gif" width="94" height="10" title="406" alt="406"/></td><td class="ctr2" id="c2">78%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="42" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="77" height="10" title="31" alt="31"/></td><td class="ctr2" id="e1">64%</td><td class="ctr1" id="f0">15</td><td class="ctr2" id="g0">32</td><td class="ctr1" id="h1">25</td><td class="ctr2" id="i0">123</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k2">8</td><td class="ctr1" id="l0">0</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a3"><a href="WaffleAuthenticatorBase.java.html" class="el_source">WaffleAuthenticatorBase.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="23" height="10" title="102" alt="102"/><img src="../jacoco-resources/greenbar.gif" width="45" height="10" title="195" alt="195"/></td><td class="ctr2" id="c4">65%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="15" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="8" alt="8"/></td><td class="ctr2" id="e3">57%</td><td class="ctr1" id="f2">8</td><td class="ctr2" id="g1">27</td><td class="ctr1" id="h0">27</td><td class="ctr2" id="i2">74</td><td class="ctr1" id="j0">5</td><td class="ctr2" id="k0">20</td><td class="ctr1" id="l1">0</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="NegotiateAuthenticator.java.html" class="el_source">NegotiateAuthenticator.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="19" height="10" title="83" alt="83"/><img src="../jacoco-resources/greenbar.gif" width="53" height="10" title="228" alt="228"/></td><td class="ctr2" id="c3">73%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="11" alt="11"/><img src="../jacoco-resources/greenbar.gif" width="37" height="10" title="15" alt="15"/></td><td class="ctr2" id="e2">57%</td><td class="ctr1" id="f1">10</td><td class="ctr2" id="g2">18</td><td class="ctr1" id="h2">20</td><td class="ctr2" id="i1">77</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k3">5</td><td class="ctr1" id="l2">0</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a0"><a href="GenericWindowsPrincipal.java.html" class="el_source">GenericWindowsPrincipal.java</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="22" alt="22"/><img src="../jacoco-resources/greenbar.gif" width="34" height="10" title="150" alt="150"/></td><td class="ctr2" id="c1">87%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="22" height="10" title="9" alt="9"/></td><td class="ctr2" id="e0">75%</td><td class="ctr1" id="f3">4</td><td class="ctr2" id="g3">17</td><td class="ctr1" id="h3">6</td><td class="ctr2" id="i3">38</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k1">9</td><td class="ctr1" id="l3">0</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a4"><a href="WindowsRealm.java.html" class="el_source">WindowsRealm.java</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i4">3</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">3</td><td class="ctr1" id="l4">0</td><td class="ctr2" id="m4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/js/apache-maven-fluido-2.0.0-M10.min.js b/waffle-tomcat10/js/apache-maven-fluido-2.0.0-M10.min.js
      new file mode 100644
      index 0000000000..819716aba1
      --- /dev/null
      +++ b/waffle-tomcat10/js/apache-maven-fluido-2.0.0-M10.min.js
      @@ -0,0 +1,287 @@
      +(function(g,p){"object"===typeof module&&"object"===typeof module.exports?module.exports=g.document?p(g,!0):function(g){if(!g.document)throw Error("jQuery requires a window with a document");return p(g)}:p(g)})("undefined"!==typeof window?window:this,function(g,p){function x(a){var b=a.length,e=d.type(a);return"function"===e||d.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===e||0===b||"number"===typeof b&&0<b&&b-1 in a}function c(a,b,e){if(d.isFunction(b))return d.grep(a,function(a,d){return!!b.call(a,
      +d,a)!==e});if(b.nodeType)return d.grep(a,function(a){return a===b!==e});if("string"===typeof b){if(Gb.test(b))return d.filter(b,a,e);b=d.filter(b,a)}return d.grep(a,function(a){return 0<=d.inArray(a,b)!==e})}function f(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function h(a){var b=fb[a]={};d.each(a.match(Y)||[],function(a,d){b[d]=!0});return b}function m(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",n,!1),g.removeEventListener("load",n,!1)):(z.detachEvent("onreadystatechange",
      +n),g.detachEvent("onload",n))}function n(){if(z.addEventListener||"load"===event.type||"complete"===z.readyState)m(),d.ready()}function W(a,b,e){if(void 0===e&&1===a.nodeType)if(e="data-"+b.replace(Hb,"-$1").toLowerCase(),e=a.getAttribute(e),"string"===typeof e){try{e="true"===e?!0:"false"===e?!1:"null"===e?null:+e+""===e?+e:Ib.test(e)?d.parseJSON(e):e}catch(k){}d.data(a,b,e)}else e=void 0;return e}function r(a){for(var b in a)if(("data"!==b||!d.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}
      +function E(a,b,e,k){if(d.acceptData(a)){var l=d.expando,u=a.nodeType,c=u?d.cache:a,f=u?a[l]:a[l]&&l;if(f&&c[f]&&(k||c[f].data)||void 0!==e||"string"!==typeof b){f||(f=u?a[l]=Z.pop()||d.guid++:l);c[f]||(c[f]=u?{}:{toJSON:d.noop});if("object"===typeof b||"function"===typeof b)k?c[f]=d.extend(c[f],b):c[f].data=d.extend(c[f].data,b);a=c[f];k||(a.data||(a.data={}),a=a.data);void 0!==e&&(a[d.camelCase(b)]=e);"string"===typeof b?(e=a[b],null==e&&(e=a[d.camelCase(b)])):e=a;return e}}}function fa(a,b,e){if(d.acceptData(a)){var k,
      +l,u=a.nodeType,c=u?d.cache:a,f=u?a[d.expando]:d.expando;if(c[f]){if(b&&(k=e?c[f]:c[f].data)){d.isArray(b)?b=b.concat(d.map(b,d.camelCase)):b in k?b=[b]:(b=d.camelCase(b),b=b in k?[b]:b.split(" "));for(l=b.length;l--;)delete k[b[l]];if(e?!r(k):!d.isEmptyObject(k))return}if(!e&&(delete c[f].data,!r(c[f])))return;u?d.cleanData([a],!0):w.deleteExpando||c!=c.window?delete c[f]:c[f]=null}}}function aa(){return!0}function V(){return!1}function ha(){try{return z.activeElement}catch(a){}}function Aa(a){var b=
      +gb.split("|");a=a.createDocumentFragment();if(a.createElement)for(;b.length;)a.createElement(b.pop());return a}function N(a,b){var e,k,l=0,u="undefined"!==typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!==typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!u)for(u=[],e=a.childNodes||a;null!=(k=e[l]);l++)!b||d.nodeName(k,b)?u.push(k):d.merge(u,N(k,b));return void 0===b||b&&d.nodeName(a,b)?d.merge([a],u):u}function Ta(a){Ua.test(a.type)&&(a.defaultChecked=a.checked)}
      +function Ia(a,b){return d.nodeName(a,"table")&&d.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ia(a){a.type=(null!==d.find.attr(a,"type"))+"/"+a.type;return a}function A(a){var b=Jb.exec(a.type);b?a.type=b[1]:a.removeAttribute("type");return a}function R(a,b){for(var e,k=0;null!=(e=a[k]);k++)d._data(e,"globalEval",!b||d._data(b[k],"globalEval"))}function P(a,b){if(1===b.nodeType&&d.hasData(a)){var e,
      +k,l;k=d._data(a);a=d._data(b,k);var u=k.events;if(u)for(e in delete a.handle,a.events={},u)for(k=0,l=u[e].length;k<l;k++)d.event.add(b,e,u[e][k]);a.data&&(a.data=d.extend({},a.data))}}function I(a,b){var e;a=d(b.createElement(a)).appendTo(b.body);b=g.getDefaultComputedStyle&&(e=g.getDefaultComputedStyle(a[0]))?e.display:d.css(a[0],"display");a.detach();return b}function Ea(a){var b=z,e=hb[a];e||(e=I(a,b),"none"!==e&&e||(na=(na||d("\x3ciframe frameborder\x3d'0' width\x3d'0' height\x3d'0'/\x3e")).appendTo(b.documentElement),
      +b=(na[0].contentWindow||na[0].contentDocument).document,b.write(),b.close(),e=I(a,b),na.detach()),hb[a]=e);return e}function Fa(a,b){return{get:function(){var e=a();if(null!=e)if(e)delete this.get;else return(this.get=b).apply(this,arguments)}}}function Ba(a,b){if(b in a)return b;for(var e=b.charAt(0).toUpperCase()+b.slice(1),d=b,l=ib.length;l--;)if(b=ib[l]+e,b in a)return b;return d}function O(a,b){for(var e,k,l,u=[],c=0,f=a.length;c<f;c++)k=a[c],k.style&&(u[c]=d._data(k,"olddisplay"),e=k.style.display,
      +b?(u[c]||"none"!==e||(k.style.display=""),""===k.style.display&&Ca(k)&&(u[c]=d._data(k,"olddisplay",Ea(k.nodeName)))):(l=Ca(k),(e&&"none"!==e||!l)&&d._data(k,"olddisplay",l?e:d.css(k,"display"))));for(c=0;c<f;c++)k=a[c],!k.style||b&&"none"!==k.style.display&&""!==k.style.display||(k.style.display=b?u[c]||"":"none");return a}function va(a,b,e){return(a=Kb.exec(b))?Math.max(0,a[1]-(e||0))+(a[2]||"px"):b}function S(a,b,e,k,l){b=e===(k?"border":"content")?4:"width"===b?1:0;for(var u=0;4>b;b+=2)"margin"===
      +e&&(u+=d.css(a,e+oa[b],!0,l)),k?("content"===e&&(u-=d.css(a,"padding"+oa[b],!0,l)),"margin"!==e&&(u-=d.css(a,"border"+oa[b]+"Width",!0,l))):(u+=d.css(a,"padding"+oa[b],!0,l),"padding"!==e&&(u+=d.css(a,"border"+oa[b]+"Width",!0,l)));return u}function U(a,b,e){var k=!0,l="width"===b?a.offsetWidth:a.offsetHeight,u=ga(a),c=w.boxSizing&&"border-box"===d.css(a,"boxSizing",!1,u);if(0>=l||null==l){l=pa(a,b,u);if(0>l||null==l)l=a.style[b];if(Ja.test(l))return l;k=c&&(w.boxSizingReliable()||l===a.style[b]);
      +l=parseFloat(l)||0}return l+S(a,b,e||(c?"border":"content"),k,u)+"px"}function H(a,b,e,d,l){return new H.prototype.init(a,b,e,d,l)}function J(){setTimeout(function(){wa=void 0});return wa=d.now()}function v(a,b){var e,d={height:a},l=0;for(b=b?1:0;4>l;l+=2-b)e=oa[l],d["margin"+e]=d["padding"+e]=a;b&&(d.opacity=d.width=a);return d}function da(a,b,e){for(var d,l=(xa[b]||[]).concat(xa["*"]),c=0,f=l.length;c<f;c++)if(d=l[c].call(e,b,a))return d}function y(a,b){var e,k,l,c,f;for(e in a)if(k=d.camelCase(e),
      +l=b[k],c=a[e],d.isArray(c)&&(l=c[1],c=a[e]=c[0]),e!==k&&(a[k]=c,delete a[e]),(f=d.cssHooks[k])&&"expand"in f)for(e in c=f.expand(c),delete a[k],c)e in a||(a[e]=c[e],b[e]=l);else b[k]=l}function G(a,b,e){var k,l=0,c=Ka.length,f=d.Deferred().always(function(){delete g.elem}),g=function(){if(k)return!1;for(var b=wa||J(),b=Math.max(0,h.startTime+h.duration-b),e=1-(b/h.duration||0),d=0,l=h.tweens.length;d<l;d++)h.tweens[d].run(e);f.notifyWith(a,[h,e,b]);if(1>e&&l)return b;f.resolveWith(a,[h]);return!1},
      +h=f.promise({elem:a,props:d.extend({},b),opts:d.extend(!0,{specialEasing:{}},e),originalProperties:b,originalOptions:e,startTime:wa||J(),duration:e.duration,tweens:[],createTween:function(b,e){b=d.Tween(a,h.opts,b,e,h.opts.specialEasing[b]||h.opts.easing);h.tweens.push(b);return b},stop:function(b){var e=0,d=b?h.tweens.length:0;if(k)return this;for(k=!0;e<d;e++)h.tweens[e].run(1);b?f.resolveWith(a,[h,b]):f.rejectWith(a,[h,b]);return this}});e=h.props;for(y(e,h.opts.specialEasing);l<c;l++)if(b=Ka[l].call(h,
      +a,e,h.opts))return b;d.map(e,da,h);d.isFunction(h.opts.start)&&h.opts.start.call(a,h);d.fx.timer(d.extend(g,{elem:a,anim:h,queue:h.opts.queue}));return h.progress(h.opts.progress).done(h.opts.done,h.opts.complete).fail(h.opts.fail).always(h.opts.always)}function C(a){return function(b,e){"string"!==typeof b&&(e=b,b="*");var k=0,l=b.toLowerCase().match(Y)||[];if(d.isFunction(e))for(;b=l[k++];)"+"===b.charAt(0)?(b=b.slice(1)||"*",(a[b]=a[b]||[]).unshift(e)):(a[b]=a[b]||[]).push(e)}}function D(a,b,e,
      +k){function l(u){var g;c[u]=!0;d.each(a[u]||[],function(a,d){a=d(b,e,k);if("string"===typeof a&&!f&&!c[a])return b.dataTypes.unshift(a),l(a),!1;if(f)return!(g=a)});return g}var c={},f=a===Va;return l(b.dataTypes[0])||!c["*"]&&l("*")}function L(a,b){var e,k,l=d.ajaxSettings.flatOptions||{};for(k in b)void 0!==b[k]&&((l[k]?a:e||(e={}))[k]=b[k]);e&&d.extend(!0,a,e);return a}function ea(a,b,e,k){var l;if(d.isArray(b))d.each(b,function(b,d){e||Nb.test(a)?k(a,d):ea(a+"["+("object"===typeof d?b:"")+"]",
      +d,e,k)});else if(e||"object"!==d.type(b))k(a,b);else for(l in b)ea(a+"["+l+"]",b[l],e,k)}function La(){try{return new g.XMLHttpRequest}catch(a){}}function Ga(a){return d.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var Z=[],ba=Z.slice,jb=Z.concat,Wa=Z.push,kb=Z.indexOf,Ma={},Ob=Ma.toString,ja=Ma.hasOwnProperty,w={},d=function(a,b){return new d.fn.init(a,b)},Pb=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,Qb=/^-ms-/,Rb=/-([\da-z])/gi,Sb=function(a,b){return b.toUpperCase()};d.fn=d.prototype=
      +{jquery:"1.11.2",constructor:d,selector:"",length:0,toArray:function(){return ba.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:ba.call(this)},pushStack:function(a){a=d.merge(this.constructor(),a);a.prevObject=this;a.context=this.context;return a},each:function(a,b){return d.each(this,a,b)},map:function(a){return this.pushStack(d.map(this,function(b,e){return a.call(b,e,b)}))},slice:function(){return this.pushStack(ba.apply(this,arguments))},first:function(){return this.eq(0)},
      +last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&a<b?[this[a]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:Wa,sort:Z.sort,splice:Z.splice};d.extend=d.fn.extend=function(){var a,b,e,k,l,c=arguments[0]||{},f=1,g=arguments.length,h=!1;"boolean"===typeof c&&(h=c,c=arguments[f]||{},f++);"object"===typeof c||d.isFunction(c)||(c={});f===g&&(c=this,f--);for(;f<g;f++)if(null!=(l=arguments[f]))for(k in l)a=c[k],e=l[k],
      +c!==e&&(h&&e&&(d.isPlainObject(e)||(b=d.isArray(e)))?(b?(b=!1,a=a&&d.isArray(a)?a:[]):a=a&&d.isPlainObject(a)?a:{},c[k]=d.extend(h,a,e)):void 0!==e&&(c[k]=e));return c};d.extend({expando:"jQuery"+("1.11.2"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw Error(a);},noop:function(){},isFunction:function(a){return"function"===d.type(a)},isArray:Array.isArray||function(a){return"array"===d.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!d.isArray(a)&&
      +0<=a-parseFloat(a)+1},isEmptyObject:function(a){for(var b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==d.type(a)||a.nodeType||d.isWindow(a))return!1;try{if(a.constructor&&!ja.call(a,"constructor")&&!ja.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}if(w.ownLast)for(b in a)return ja.call(a,b);for(b in a);return void 0===b||ja.call(a,b)},type:function(a){return null==a?a+"":"object"===typeof a||"function"===typeof a?Ma[Ob.call(a)]||"object":typeof a},
      +globalEval:function(a){a&&d.trim(a)&&(g.execScript||function(a){g.eval.call(g,a)})(a)},camelCase:function(a){return a.replace(Qb,"ms-").replace(Rb,Sb)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,e){var d,l=0,c=a.length;d=x(a);if(e)if(d)for(;l<c&&(d=b.apply(a[l],e),!1!==d);l++);else for(l in a){if(d=b.apply(a[l],e),!1===d)break}else if(d)for(;l<c&&(d=b.call(a[l],l,a[l]),!1!==d);l++);else for(l in a)if(d=b.call(a[l],l,a[l]),!1===d)break;return a},
      +trim:function(a){return null==a?"":(a+"").replace(Pb,"")},makeArray:function(a,b){b=b||[];null!=a&&(x(Object(a))?d.merge(b,"string"===typeof a?[a]:a):Wa.call(b,a));return b},inArray:function(a,b,e){var d;if(b){if(kb)return kb.call(b,a,e);d=b.length;for(e=e?0>e?Math.max(0,d+e):e:0;e<d;e++)if(e in b&&b[e]===a)return e}return-1},merge:function(a,b){for(var e=+b.length,d=0,l=a.length;d<e;)a[l++]=b[d++];if(e!==e)for(;void 0!==b[d];)a[l++]=b[d++];a.length=l;return a},grep:function(a,b,d){for(var e=[],l=
      +0,c=a.length,f=!d;l<c;l++)d=!b(a[l],l),d!==f&&e.push(a[l]);return e},map:function(a,b,d){var e,l=0,c=a.length,f=[];if(x(a))for(;l<c;l++)e=b(a[l],l,d),null!=e&&f.push(e);else for(l in a)e=b(a[l],l,d),null!=e&&f.push(e);return jb.apply([],f)},guid:1,proxy:function(a,b){var e,k;"string"===typeof b&&(k=a[b],b=a,a=k);if(d.isFunction(a))return e=ba.call(arguments,2),k=function(){return a.apply(b||this,e.concat(ba.call(arguments)))},k.guid=a.guid=a.guid||d.guid++,k},now:function(){return+new Date},support:w});
      +d.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){Ma["[object "+b+"]"]=b.toLowerCase()});var ya=function(a){function b(a,b,d,e){var k,l,c,u,f;(b?b.ownerDocument||b:E)!==I&&R(b);b=b||I;d=d||[];u=b.nodeType;if("string"!==typeof a||!a||1!==u&&9!==u&&11!==u)return d;if(!e&&H){if(11!==u&&(k=Aa.exec(a)))if(c=k[1])if(9===u)if((l=b.getElementById(c))&&l.parentNode){if(l.id===c)return d.push(l),d}else return d;else{if(b.ownerDocument&&(l=b.ownerDocument.getElementById(c))&&
      +va(b,l)&&l.id===c)return d.push(l),d}else{if(k[2])return Y.apply(d,b.getElementsByTagName(a)),d;if((c=k[3])&&B.getElementsByClassName)return Y.apply(d,b.getElementsByClassName(c)),d}if(B.qsa&&(!r||!r.test(a))){l=k=Q;c=b;f=1!==u&&a;if(1===u&&"object"!==b.nodeName.toLowerCase()){u=L(a);(k=b.getAttribute("id"))?l=k.replace(Ca,"\\$\x26"):b.setAttribute("id",l);l="[id\x3d'"+l+"'] ";for(c=u.length;c--;)u[c]=l+v(u[c]);c=na.test(a)&&t(b.parentNode)||b;f=u.join(",")}if(f)try{return Y.apply(d,c.querySelectorAll(f)),
      +d}catch(Bc){}finally{k||b.removeAttribute("id")}}}return S(a.replace(ga,"$1"),b,d,e)}function d(){function a(d,e){b.push(d+" ")>F.cacheLength&&delete a[b.shift()];return a[d+" "]=e}var b=[];return a}function k(a){a[Q]=!0;return a}function l(a){var b=I.createElement("div");try{return!!a(b)}catch(ma){return!1}finally{b.parentNode&&b.parentNode.removeChild(b)}}function c(a,b){var d=a.split("|");for(a=a.length;a--;)F.attrHandle[d[a]]=b}function f(a,b){var d=b&&a,e=d&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||
      +-2147483648)-(~a.sourceIndex||-2147483648);if(e)return e;if(d)for(;d=d.nextSibling;)if(d===b)return-1;return a?1:-1}function g(a){return function(b){return"input"===b.nodeName.toLowerCase()&&b.type===a}}function h(a){return function(b){var d=b.nodeName.toLowerCase();return("input"===d||"button"===d)&&b.type===a}}function m(a){return k(function(b){b=+b;return k(function(d,e){for(var k,l=a([],d.length,b),c=l.length;c--;)d[k=l[c]]&&(d[k]=!(e[k]=d[k]))})})}function t(a){return a&&"undefined"!==typeof a.getElementsByTagName&&
      +a}function n(){}function v(a){for(var b=0,d=a.length,e="";b<d;b++)e+=a[b].value;return e}function p(a,b,d){var e=b.dir,k=d&&"parentNode"===e,l=Ea++;return b.first?function(b,d,l){for(;b=b[e];)if(1===b.nodeType||k)return a(b,d,l)}:function(b,d,c){var u,f,g=[ea,l];if(c)for(;b=b[e];){if((1===b.nodeType||k)&&a(b,d,c))return!0}else for(;b=b[e];)if(1===b.nodeType||k){f=b[Q]||(b[Q]={});if((u=f[e])&&u[0]===ea&&u[1]===l)return g[2]=u[2];f[e]=g;if(g[2]=a(b,d,c))return!0}}}function w(a){return 1<a.length?function(b,
      +d,e){for(var k=a.length;k--;)if(!a[k](b,d,e))return!1;return!0}:a[0]}function y(a,b,d,e,k){for(var l,c=[],u=0,f=a.length,g=null!=b;u<f;u++)if(l=a[u])if(!d||d(l,e,k))c.push(l),g&&b.push(u);return c}function C(a,d,e,l,c,u){l&&!l[Q]&&(l=C(l));c&&!c[Q]&&(c=C(c,u));return k(function(k,u,f,g){var T,h,K=[],ma=[],m=u.length,X;if(!(X=k)){X=d||"*";for(var M=f.nodeType?[f]:f,t=[],Da=0,n=M.length;Da<n;Da++)b(X,M[Da],t);X=t}X=!a||!k&&d?X:y(X,K,a,f,g);M=e?c||(k?a:m||l)?[]:u:X;e&&e(X,M,f,g);if(l)for(T=y(M,ma),l(T,
      +[],f,g),f=T.length;f--;)if(h=T[f])M[ma[f]]=!(X[ma[f]]=h);if(k){if(c||a){if(c){T=[];for(f=M.length;f--;)(h=M[f])&&T.push(X[f]=h);c(null,M=[],T,g)}for(f=M.length;f--;)(h=M[f])&&-1<(T=c?ba(k,h):K[f])&&(k[T]=!(u[T]=h))}}else M=y(M===u?M.splice(m,M.length):M),c?c(null,u,M,g):Y.apply(u,M)})}function A(a){var b,d,e,k=a.length,l=F.relative[a[0].type];d=l||F.relative[" "];for(var c=l?1:0,u=p(function(a){return a===b},d,!0),f=p(function(a){return-1<ba(b,a)},d,!0),g=[function(a,d,e){a=!l&&(e||d!==U)||((b=d).nodeType?
      +u(a,d,e):f(a,d,e));b=null;return a}];c<k;c++)if(d=F.relative[a[c].type])g=[p(w(g),d)];else{d=F.filter[a[c].type].apply(null,a[c].matches);if(d[Q]){for(e=++c;e<k&&!F.relative[a[e].type];e++);return C(1<c&&w(g),1<c&&v(a.slice(0,c-1).concat({value:" "===a[c-2].type?"*":""})).replace(ga,"$1"),d,c<e&&A(a.slice(c,e)),e<k&&A(a=a.slice(e)),e<k&&v(a))}g.push(d)}return w(g)}function z(a,d){var e=0<d.length,l=0<a.length,c=function(k,c,u,f,g){var T,h,K,ma=0,m="0",M=k&&[],X=[],t=U,n=k||l&&F.find.TAG("*",g),Da=
      +ea+=null==t?1:Math.random()||.1,Lb=n.length;for(g&&(U=c!==I&&c);m!==Lb&&null!=(T=n[m]);m++){if(l&&T){for(h=0;K=a[h++];)if(K(T,c,u)){f.push(T);break}g&&(ea=Da)}e&&((T=!K&&T)&&ma--,k&&M.push(T))}ma+=m;if(e&&m!==ma){for(h=0;K=d[h++];)K(M,X,c,u);if(k){if(0<ma)for(;m--;)M[m]||X[m]||(X[m]=fa.call(f));X=y(X)}Y.apply(f,X);g&&!k&&0<X.length&&1<ma+d.length&&b.uniqueSort(f)}g&&(ea=Da,U=t);return M};return e?k(c):c}var da,B,F,D,G,L,W,S,U,P,x,R,I,O,H,r,J,Ba,va,Q="sizzle"+1*new Date,E=a.document,ea=0,Ea=0,Fa=d(),
      +N=d(),Z=d(),ca=function(a,b){a===b&&(x=!0);return 0},aa={}.hasOwnProperty,V=[],fa=V.pop,La=V.push,Y=V.push,Ga=V.slice,ba=function(a,b){for(var d=0,e=a.length;d<e;d++)if(a[d]===b)return d;return-1},ka="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w#"),la="\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:[\\x20\\t\\r\\n\\f]*([*^$|!~]?\x3d)[\\x20\\t\\r\\n\\f]*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ka+"))|)[\\x20\\t\\r\\n\\f]*\\]",ia=":((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+
      +la+")*)|.*)\\)|)",oa=/[\x20\t\r\n\f]+/g,ga=/^[\x20\t\r\n\f]+|((?:^|[^\\])(?:\\.)*)[\x20\t\r\n\f]+$/g,pa=/^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/,sa=/^[\x20\t\r\n\f]*([>+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/,ta=/=[\x20\t\r\n\f]*([^\]'"]*?)[\x20\t\r\n\f]*\]/g,ua=new RegExp(ia),wa=new RegExp("^"+ka+"$"),ja={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,TAG:new RegExp("^("+"(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w*")+")"),ATTR:new RegExp("^"+la),PSEUDO:new RegExp("^"+ia),
      +CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,bool:/^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},ya=/^(?:input|select|textarea|button)$/i,za=/^h\d$/i,ha=
      +/^[^{]+\{\s*\[native \w/,Aa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,na=/[+~]/,Ca=/'|\\/g,qa=/\\([\da-f]{1,6}[\x20\t\r\n\f]?|([\x20\t\r\n\f])|.)/ig,ra=function(a,b,d){a="0x"+b-65536;return a!==a||d?b:0>a?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,a&1023|56320)},xa=function(){R()};try{Y.apply(V=Ga.call(E.childNodes),E.childNodes),V[E.childNodes.length].nodeType}catch(T){Y={apply:V.length?function(a,b){La.apply(a,Ga.call(b))}:function(a,b){for(var d=a.length,e=0;a[d++]=b[e++];);a.length=
      +d-1}}}B=b.support={};G=b.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?"HTML"!==a.nodeName:!1};R=b.setDocument=function(a){var b=a?a.ownerDocument||a:E;if(b===I||9!==b.nodeType||!b.documentElement)return I;I=b;O=b.documentElement;(a=b.defaultView)&&a!==a.top&&(a.addEventListener?a.addEventListener("unload",xa,!1):a.attachEvent&&a.attachEvent("onunload",xa));H=!G(b);B.attributes=l(function(a){a.className="i";return!a.getAttribute("className")});B.getElementsByTagName=l(function(a){a.appendChild(b.createComment(""));
      +return!a.getElementsByTagName("*").length});B.getElementsByClassName=ha.test(b.getElementsByClassName);B.getById=l(function(a){O.appendChild(a).id=Q;return!b.getElementsByName||!b.getElementsByName(Q).length});B.getById?(F.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&H)return(a=b.getElementById(a))&&a.parentNode?[a]:[]},F.filter.ID=function(a){var b=a.replace(qa,ra);return function(a){return a.getAttribute("id")===b}}):(delete F.find.ID,F.filter.ID=function(a){var b=a.replace(qa,
      +ra);return function(a){return(a="undefined"!==typeof a.getAttributeNode&&a.getAttributeNode("id"))&&a.value===b}});F.find.TAG=B.getElementsByTagName?function(a,b){if("undefined"!==typeof b.getElementsByTagName)return b.getElementsByTagName(a);if(B.qsa)return b.querySelectorAll(a)}:function(a,b){var d=[],e=0;b=b.getElementsByTagName(a);if("*"===a){for(;a=b[e++];)1===a.nodeType&&d.push(a);return d}return b};F.find.CLASS=B.getElementsByClassName&&function(a,b){if(H)return b.getElementsByClassName(a)};
      +J=[];r=[];if(B.qsa=ha.test(b.querySelectorAll))l(function(a){O.appendChild(a).innerHTML="\x3ca id\x3d'"+Q+"'\x3e\x3c/a\x3e\x3cselect id\x3d'"+Q+"-\f]' msallowcapture\x3d''\x3e\x3coption selected\x3d''\x3e\x3c/option\x3e\x3c/select\x3e";a.querySelectorAll("[msallowcapture^\x3d'']").length&&r.push("[*^$]\x3d[\\x20\\t\\r\\n\\f]*(?:''|\"\")");a.querySelectorAll("[selected]").length||r.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)");
      +a.querySelectorAll("[id~\x3d"+Q+"-]").length||r.push("~\x3d");a.querySelectorAll(":checked").length||r.push(":checked");a.querySelectorAll("a#"+Q+"+*").length||r.push(".#.+[+~]")}),l(function(a){var d=b.createElement("input");d.setAttribute("type","hidden");a.appendChild(d).setAttribute("name","D");a.querySelectorAll("[name\x3dd]").length&&r.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?\x3d");a.querySelectorAll(":enabled").length||r.push(":enabled",":disabled");a.querySelectorAll("*,:x");r.push(",.*:")});
      +(B.matchesSelector=ha.test(Ba=O.matches||O.webkitMatchesSelector||O.mozMatchesSelector||O.oMatchesSelector||O.msMatchesSelector))&&l(function(a){B.disconnectedMatch=Ba.call(a,"div");Ba.call(a,"[s!\x3d'']:x");J.push("!\x3d",ia)});r=r.length&&new RegExp(r.join("|"));J=J.length&&new RegExp(J.join("|"));va=(a=ha.test(O.compareDocumentPosition))||ha.test(O.contains)?function(a,b){var d=9===a.nodeType?a.documentElement:a;b=b&&b.parentNode;return a===b||!!(b&&1===b.nodeType&&(d.contains?d.contains(b):a.compareDocumentPosition&&
      +a.compareDocumentPosition(b)&16))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};ca=a?function(a,d){if(a===d)return x=!0,0;var e=!a.compareDocumentPosition-!d.compareDocumentPosition;if(e)return e;e=(a.ownerDocument||a)===(d.ownerDocument||d)?a.compareDocumentPosition(d):1;return e&1||!B.sortDetached&&d.compareDocumentPosition(a)===e?a===b||a.ownerDocument===E&&va(E,a)?-1:d===b||d.ownerDocument===E&&va(E,d)?1:P?ba(P,a)-ba(P,d):0:e&4?-1:1}:function(a,d){if(a===d)return x=!0,0;
      +var e=0,k=a.parentNode,l=d.parentNode,c=[a],u=[d];if(!k||!l)return a===b?-1:d===b?1:k?-1:l?1:P?ba(P,a)-ba(P,d):0;if(k===l)return f(a,d);for(;a=a.parentNode;)c.unshift(a);for(a=d;a=a.parentNode;)u.unshift(a);for(;c[e]===u[e];)e++;return e?f(c[e],u[e]):c[e]===E?-1:u[e]===E?1:0};return b};b.matches=function(a,d){return b(a,null,null,d)};b.matchesSelector=function(a,d){(a.ownerDocument||a)!==I&&R(a);d=d.replace(ta,"\x3d'$1']");if(!(!B.matchesSelector||!H||J&&J.test(d)||r&&r.test(d)))try{var e=Ba.call(a,
      +d);if(e||B.disconnectedMatch||a.document&&11!==a.document.nodeType)return e}catch(Da){}return 0<b(d,I,null,[a]).length};b.contains=function(a,b){(a.ownerDocument||a)!==I&&R(a);return va(a,b)};b.attr=function(a,b){(a.ownerDocument||a)!==I&&R(a);var d=F.attrHandle[b.toLowerCase()],d=d&&aa.call(F.attrHandle,b.toLowerCase())?d(a,b,!H):void 0;return void 0!==d?d:B.attributes||!H?a.getAttribute(b):(d=a.getAttributeNode(b))&&d.specified?d.value:null};b.error=function(a){throw Error("Syntax error, unrecognized expression: "+
      +a);};b.uniqueSort=function(a){var b,d=[],e=0,k=0;x=!B.detectDuplicates;P=!B.sortStable&&a.slice(0);a.sort(ca);if(x){for(;b=a[k++];)b===a[k]&&(e=d.push(k));for(;e--;)a.splice(d[e],1)}P=null;return a};D=b.getText=function(a){var b,d="",e=0;b=a.nodeType;if(!b)for(;b=a[e++];)d+=D(b);else if(1===b||9===b||11===b){if("string"===typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)d+=D(a)}else if(3===b||4===b)return a.nodeValue;return d};F=b.selectors={cacheLength:50,createPseudo:k,
      +match:ja,attrHandle:{},find:{},relative:{"\x3e":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace(qa,ra);a[3]=(a[3]||a[4]||a[5]||"").replace(qa,ra);"~\x3d"===a[2]&&(a[3]=" "+a[3]+" ");return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&
      +b.error(a[0]);return a},PSEUDO:function(a){var b,d=!a[6]&&a[2];if(ja.CHILD.test(a[0]))return null;a[3]?a[2]=a[4]||a[5]||"":d&&ua.test(d)&&(b=L(d,!0))&&(b=d.indexOf(")",d.length-b)-d.length)&&(a[0]=a[0].slice(0,b),a[2]=d.slice(0,b));return a.slice(0,3)}},filter:{TAG:function(a){var b=a.replace(qa,ra).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=Fa[a+" "];return b||(b=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"),
      +Fa(a,function(a){return b.test("string"===typeof a.className&&a.className||"undefined"!==typeof a.getAttribute&&a.getAttribute("class")||"")}))},ATTR:function(a,d,e){return function(k){k=b.attr(k,a);if(null==k)return"!\x3d"===d;if(!d)return!0;k+="";return"\x3d"===d?k===e:"!\x3d"===d?k!==e:"^\x3d"===d?e&&0===k.indexOf(e):"*\x3d"===d?e&&-1<k.indexOf(e):"$\x3d"===d?e&&k.slice(-e.length)===e:"~\x3d"===d?-1<(" "+k.replace(oa," ")+" ").indexOf(e):"|\x3d"===d?k===e||k.slice(0,e.length+1)===e+"-":!1}},CHILD:function(a,
      +b,d,e,k){var l="nth"!==a.slice(0,3),c="last"!==a.slice(-4),u="of-type"===b;return 1===e&&0===k?function(a){return!!a.parentNode}:function(b,d,f){var g,h,K,m,M;d=l!==c?"nextSibling":"previousSibling";var t=b.parentNode,T=u&&b.nodeName.toLowerCase();f=!f&&!u;if(t){if(l){for(;d;){for(h=b;h=h[d];)if(u?h.nodeName.toLowerCase()===T:1===h.nodeType)return!1;M=d="only"===a&&!M&&"nextSibling"}return!0}M=[c?t.firstChild:t.lastChild];if(c&&f)for(f=t[Q]||(t[Q]={}),g=f[a]||[],m=g[0]===ea&&g[1],K=g[0]===ea&&g[2],
      +h=m&&t.childNodes[m];h=++m&&h&&h[d]||(K=m=0)||M.pop();){if(1===h.nodeType&&++K&&h===b){f[a]=[ea,m,K];break}}else if(f&&(g=(b[Q]||(b[Q]={}))[a])&&g[0]===ea)K=g[1];else for(;(h=++m&&h&&h[d]||(K=m=0)||M.pop())&&((u?h.nodeName.toLowerCase()!==T:1!==h.nodeType)||!++K||(f&&((h[Q]||(h[Q]={}))[a]=[ea,K]),h!==b)););K-=k;return K===e||0===K%e&&0<=K/e}}},PSEUDO:function(a,d){var e,l=F.pseudos[a]||F.setFilters[a.toLowerCase()]||b.error("unsupported pseudo: "+a);return l[Q]?l(d):1<l.length?(e=[a,a,"",d],F.setFilters.hasOwnProperty(a.toLowerCase())?
      +k(function(a,b){for(var e,k=l(a,d),c=k.length;c--;)e=ba(a,k[c]),a[e]=!(b[e]=k[c])}):function(a){return l(a,0,e)}):l}},pseudos:{not:k(function(a){var b=[],d=[],e=W(a.replace(ga,"$1"));return e[Q]?k(function(a,b,d,k){k=e(a,null,k,[]);for(var l=a.length;l--;)if(d=k[l])a[l]=!(b[l]=d)}):function(a,k,l){b[0]=a;e(b,null,l,d);b[0]=null;return!d.pop()}}),has:k(function(a){return function(d){return 0<b(a,d).length}}),contains:k(function(a){a=a.replace(qa,ra);return function(b){return-1<(b.textContent||b.innerText||
      +D(b)).indexOf(a)}}),lang:k(function(a){wa.test(a||"")||b.error("unsupported lang: "+a);a=a.replace(qa,ra).toLowerCase();return function(b){var d;do if(d=H?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return d=d.toLowerCase(),d===a||0===d.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var d=a.location&&a.location.hash;return d&&d.slice(1)===b.id},root:function(a){return a===O},focus:function(a){return a===I.activeElement&&(!I.hasFocus||I.hasFocus())&&
      +!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return!1===a.disabled},disabled:function(a){return!0===a.disabled},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return!0===a.selected},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(6>a.nodeType)return!1;return!0},parent:function(a){return!F.pseudos.empty(a)},header:function(a){return za.test(a.nodeName)},input:function(a){return ya.test(a.nodeName)},
      +button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:m(function(){return[0]}),last:m(function(a,b){return[b-1]}),eq:m(function(a,b,d){return[0>d?d+b:d]}),even:m(function(a,b){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:m(function(a,b){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:m(function(a,b,d){for(b=
      +0>d?d+b:d;0<=--b;)a.push(b);return a}),gt:m(function(a,b,d){for(d=0>d?d+b:d;++d<b;)a.push(d);return a})}};F.pseudos.nth=F.pseudos.eq;for(da in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})F.pseudos[da]=g(da);for(da in{submit:!0,reset:!0})F.pseudos[da]=h(da);n.prototype=F.filters=F.pseudos;F.setFilters=new n;L=b.tokenize=function(a,d){var e,k,l,c,u,f,g;if(u=N[a+" "])return d?0:u.slice(0);u=a;f=[];for(g=F.preFilter;u;){if(!e||(k=pa.exec(u)))k&&(u=u.slice(k[0].length)||u),f.push(l=[]);e=!1;if(k=
      +sa.exec(u))e=k.shift(),l.push({value:e,type:k[0].replace(ga," ")}),u=u.slice(e.length);for(c in F.filter)!(k=ja[c].exec(u))||g[c]&&!(k=g[c](k))||(e=k.shift(),l.push({value:e,type:c,matches:k}),u=u.slice(e.length));if(!e)break}return d?u.length:u?b.error(a):N(a,f).slice(0)};W=b.compile=function(a,b){var d,e=[],k=[],l=Z[a+" "];if(!l){b||(b=L(a));for(d=b.length;d--;)l=A(b[d]),l[Q]?e.push(l):k.push(l);l=Z(a,z(k,e));l.selector=a}return l};S=b.select=function(a,b,d,e){var k,l,c,u,f="function"===typeof a&&
      +a,g=!e&&L(a=f.selector||a);d=d||[];if(1===g.length){l=g[0]=g[0].slice(0);if(2<l.length&&"ID"===(c=l[0]).type&&B.getById&&9===b.nodeType&&H&&F.relative[l[1].type]){b=(F.find.ID(c.matches[0].replace(qa,ra),b)||[])[0];if(!b)return d;f&&(b=b.parentNode);a=a.slice(l.shift().value.length)}for(k=ja.needsContext.test(a)?0:l.length;k--;){c=l[k];if(F.relative[u=c.type])break;if(u=F.find[u])if(e=u(c.matches[0].replace(qa,ra),na.test(l[0].type)&&t(b.parentNode)||b)){l.splice(k,1);a=e.length&&v(l);if(!a)return Y.apply(d,
      +e),d;break}}}(f||W(a,g))(e,b,!H,d,na.test(a)&&t(b.parentNode)||b);return d};B.sortStable=Q.split("").sort(ca).join("")===Q;B.detectDuplicates=!!x;R();B.sortDetached=l(function(a){return a.compareDocumentPosition(I.createElement("div"))&1});l(function(a){a.innerHTML="\x3ca href\x3d'#'\x3e\x3c/a\x3e";return"#"===a.firstChild.getAttribute("href")})||c("type|href|height|width",function(a,b,d){if(!d)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)});B.attributes&&l(function(a){a.innerHTML="\x3cinput/\x3e";
      +a.firstChild.setAttribute("value","");return""===a.firstChild.getAttribute("value")})||c("value",function(a,b,d){if(!d&&"input"===a.nodeName.toLowerCase())return a.defaultValue});l(function(a){return null==a.getAttribute("disabled")})||c("checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",function(a,b,d){var e;if(!d)return!0===a[b]?b.toLowerCase():(e=a.getAttributeNode(b))&&e.specified?e.value:null});return b}(g);d.find=ya;d.expr=
      +ya.selectors;d.expr[":"]=d.expr.pseudos;d.unique=ya.uniqueSort;d.text=ya.getText;d.isXMLDoc=ya.isXML;d.contains=ya.contains;var lb=d.expr.match.needsContext,mb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Gb=/^.[^:#\[\.,]*$/;d.filter=function(a,b,e){var k=b[0];e&&(a=":not("+a+")");return 1===b.length&&1===k.nodeType?d.find.matchesSelector(k,a)?[k]:[]:d.find.matches(a,d.grep(b,function(a){return 1===a.nodeType}))};d.fn.extend({find:function(a){var b,e=[],k=this,l=k.length;if("string"!==typeof a)return this.pushStack(d(a).filter(function(){for(b=
      +0;b<l;b++)if(d.contains(k[b],this))return!0}));for(b=0;b<l;b++)d.find(a,k[b],e);e=this.pushStack(1<l?d.unique(e):e);e.selector=this.selector?this.selector+" "+a:a;return e},filter:function(a){return this.pushStack(c(this,a||[],!1))},not:function(a){return this.pushStack(c(this,a||[],!0))},is:function(a){return!!c(this,"string"===typeof a&&lb.test(a)?d(a):a||[],!1).length}});var Ha,z=g.document,Vb=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(d.fn.init=function(a,b){var e;if(!a)return this;if("string"===
      +typeof a){e="\x3c"===a.charAt(0)&&"\x3e"===a.charAt(a.length-1)&&3<=a.length?[null,a,null]:Vb.exec(a);if(!e||!e[1]&&b)return!b||b.jquery?(b||Ha).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof d?b[0]:b,d.merge(this,d.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),mb.test(e[1])&&d.isPlainObject(b))for(e in b)if(d.isFunction(this[e]))this[e](b[e]);else this.attr(e,b[e])}else{if((b=z.getElementById(e[2]))&&b.parentNode){if(b.id!==e[2])return Ha.find(a);this.length=1;this[0]=b}this.context=
      +z;this.selector=a}return this}if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(d.isFunction(a))return"undefined"!==typeof Ha.ready?Ha.ready(a):a(d);void 0!==a.selector&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)}).prototype=d.fn;Ha=d(z);var Wb=/^(?:parents|prev(?:Until|All))/,Xb={children:!0,contents:!0,next:!0,prev:!0};d.extend({dir:function(a,b,e){var k=[];for(a=a[b];a&&9!==a.nodeType&&(void 0===e||1!==a.nodeType||!d(a).is(e));)1===a.nodeType&&
      +k.push(a),a=a[b];return k},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&d.push(a);return d}});d.fn.extend({has:function(a){var b,e=d(a,this),k=e.length;return this.filter(function(){for(b=0;b<k;b++)if(d.contains(this,e[b]))return!0})},closest:function(a,b){for(var e,k=0,l=this.length,c=[],f=lb.test(a)||"string"!==typeof a?d(a,b||this.context):0;k<l;k++)for(e=this[k];e&&e!==b;e=e.parentNode)if(11>e.nodeType&&(f?-1<f.index(e):1===e.nodeType&&d.find.matchesSelector(e,a))){c.push(e);
      +break}return this.pushStack(1<c.length?d.unique(c):c)},index:function(a){return a?"string"===typeof a?d.inArray(this[0],d(a)):d.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(d.unique(d.merge(this.get(),d(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});d.each({parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},parents:function(a){return d.dir(a,"parentNode")},
      +parentsUntil:function(a,b,e){return d.dir(a,"parentNode",e)},next:function(a){return f(a,"nextSibling")},prev:function(a){return f(a,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,e){return d.dir(a,"nextSibling",e)},prevUntil:function(a,b,e){return d.dir(a,"previousSibling",e)},siblings:function(a){return d.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return d.sibling(a.firstChild)},
      +contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.merge([],a.childNodes)}},function(a,b){d.fn[a]=function(e,k){var l=d.map(this,b,e);"Until"!==a.slice(-5)&&(k=e);k&&"string"===typeof k&&(l=d.filter(k,l));1<this.length&&(Xb[a]||(l=d.unique(l)),Wb.test(a)&&(l=l.reverse()));return this.pushStack(l)}});var Y=/\S+/g,fb={};d.Callbacks=function(a){a="string"===typeof a?fb[a]||h(a):d.extend({},a);var b,e,k,l,c,f,g=[],m=!a.once&&[],n=function(d){e=a.memory&&d;
      +k=!0;c=f||0;f=0;l=g.length;for(b=!0;g&&c<l;c++)if(!1===g[c].apply(d[0],d[1])&&a.stopOnFalse){e=!1;break}b=!1;g&&(m?m.length&&n(m.shift()):e?g=[]:t.disable())},t={add:function(){if(g){var k=g.length;(function Ub(b){d.each(b,function(b,e){b=d.type(e);"function"===b?a.unique&&t.has(e)||g.push(e):e&&e.length&&"string"!==b&&Ub(e)})})(arguments);b?l=g.length:e&&(f=k,n(e))}return this},remove:function(){g&&d.each(arguments,function(a,e){for(var k;-1<(k=d.inArray(e,g,k));)g.splice(k,1),b&&(k<=l&&l--,k<=c&&
      +c--)});return this},has:function(a){return a?-1<d.inArray(a,g):!(!g||!g.length)},empty:function(){g=[];l=0;return this},disable:function(){g=m=e=void 0;return this},disabled:function(){return!g},lock:function(){m=void 0;e||t.disable();return this},locked:function(){return!m},fireWith:function(a,d){!g||k&&!m||(d=d||[],d=[a,d.slice?d.slice():d],b?m.push(d):n(d));return this},fire:function(){t.fireWith(this,arguments);return this},fired:function(){return!!k}};return t};d.extend({Deferred:function(a){var b=
      +[["resolve","done",d.Callbacks("once memory"),"resolved"],["reject","fail",d.Callbacks("once memory"),"rejected"],["notify","progress",d.Callbacks("memory")]],e="pending",k={state:function(){return e},always:function(){l.done(arguments).fail(arguments);return this},then:function(){var a=arguments;return d.Deferred(function(e){d.each(b,function(b,c){var f=d.isFunction(a[b])&&a[b];l[c[1]](function(){var a=f&&f.apply(this,arguments);if(a&&d.isFunction(a.promise))a.promise().done(e.resolve).fail(e.reject).progress(e.notify);
      +else e[c[0]+"With"](this===k?e.promise():this,f?[a]:arguments)})});a=null}).promise()},promise:function(a){return null!=a?d.extend(a,k):k}},l={};k.pipe=k.then;d.each(b,function(a,d){var c=d[2],f=d[3];k[d[1]]=c.add;f&&c.add(function(){e=f},b[a^1][2].disable,b[2][2].lock);l[d[0]]=function(){l[d[0]+"With"](this===l?k:this,arguments);return this};l[d[0]+"With"]=c.fireWith});k.promise(l);a&&a.call(l,l);return l},when:function(a){var b=0,e=ba.call(arguments),k=e.length,l=1!==k||a&&d.isFunction(a.promise)?
      +k:0,c=1===l?a:d.Deferred(),f=function(a,b,d){return function(e){b[a]=this;d[a]=1<arguments.length?ba.call(arguments):e;d===g?c.notifyWith(b,d):--l||c.resolveWith(b,d)}},g,h,m;if(1<k)for(g=Array(k),h=Array(k),m=Array(k);b<k;b++)e[b]&&d.isFunction(e[b].promise)?e[b].promise().done(f(b,m,e)).fail(c.reject).progress(f(b,h,g)):--l;l||c.resolveWith(m,e);return c.promise()}});var Na;d.fn.ready=function(a){d.ready.promise().done(a);return this};d.extend({isReady:!1,readyWait:1,holdReady:function(a){a?d.readyWait++:
      +d.ready(!0)},ready:function(a){if(!0===a?!--d.readyWait:!d.isReady){if(!z.body)return setTimeout(d.ready);d.isReady=!0;!0!==a&&0<--d.readyWait||(Na.resolveWith(z,[d]),d.fn.triggerHandler&&(d(z).triggerHandler("ready"),d(z).off("ready")))}}});d.ready.promise=function(a){if(!Na)if(Na=d.Deferred(),"complete"===z.readyState)setTimeout(d.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",n,!1),g.addEventListener("load",n,!1);else{z.attachEvent("onreadystatechange",n);g.attachEvent("onload",
      +n);var b=!1;try{b=null==g.frameElement&&z.documentElement}catch(e){}b&&b.doScroll&&function k(){if(!d.isReady){try{b.doScroll("left")}catch(l){return setTimeout(k,50)}m();d.ready()}}()}return Na.promise(a)};for(var Yb in d(w))break;w.ownLast="0"!==Yb;w.inlineBlockNeedsLayout=!1;d(function(){var a,b,d;(b=z.getElementsByTagName("body")[0])&&b.style&&(a=z.createElement("div"),d=z.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",b.appendChild(d).appendChild(a),
      +"undefined"!==typeof a.style.zoom&&(a.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",w.inlineBlockNeedsLayout=a=3===a.offsetWidth)&&(b.style.zoom=1),b.removeChild(d))});(function(){var a=z.createElement("div");if(null==w.deleteExpando){w.deleteExpando=!0;try{delete a.test}catch(b){w.deleteExpando=!1}}})();d.acceptData=function(a){var b=d.noData[(a.nodeName+" ").toLowerCase()],e=+a.nodeType||1;return 1!==e&&9!==e?!1:!b||!0!==b&&a.getAttribute("classid")===b};var Ib=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
      +Hb=/([A-Z])/g;d.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!r(a)},data:function(a,b,d){return E(a,b,d)},removeData:function(a,b){return fa(a,b)},_data:function(a,b,d){return E(a,b,d,!0)},_removeData:function(a,b){return fa(a,b,!0)}});d.fn.extend({data:function(a,b){var e,k,c,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(c=d.data(f),1===f.nodeType&&
      +!d._data(f,"parsedAttrs"))){for(e=g.length;e--;)g[e]&&(k=g[e].name,0===k.indexOf("data-")&&(k=d.camelCase(k.slice(5)),W(f,k,c[k])));d._data(f,"parsedAttrs",!0)}return c}return"object"===typeof a?this.each(function(){d.data(this,a)}):1<arguments.length?this.each(function(){d.data(this,a,b)}):f?W(f,a,d.data(f,a)):void 0},removeData:function(a){return this.each(function(){d.removeData(this,a)})}});d.extend({queue:function(a,b,e){var k;if(a)return b=(b||"fx")+"queue",k=d._data(a,b),e&&(!k||d.isArray(e)?
      +k=d._data(a,b,d.makeArray(e)):k.push(e)),k||[]},dequeue:function(a,b){b=b||"fx";var e=d.queue(a,b),k=e.length,c=e.shift(),f=d._queueHooks(a,b),g=function(){d.dequeue(a,b)};"inprogress"===c&&(c=e.shift(),k--);c&&("fx"===b&&e.unshift("inprogress"),delete f.stop,c.call(a,g,f));!k&&f&&f.empty.fire()},_queueHooks:function(a,b){var e=b+"queueHooks";return d._data(a,e)||d._data(a,e,{empty:d.Callbacks("once memory").add(function(){d._removeData(a,b+"queue");d._removeData(a,e)})})}});d.fn.extend({queue:function(a,
      +b){var e=2;"string"!==typeof a&&(b=a,a="fx",e--);return arguments.length<e?d.queue(this[0],a):void 0===b?this:this.each(function(){var e=d.queue(this,a,b);d._queueHooks(this,a);"fx"===a&&"inprogress"!==e[0]&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var e,k=1,c=d.Deferred(),f=this,g=this.length,h=function(){--k||c.resolveWith(f,[f])};"string"!==typeof a&&(b=a,a=void 0);for(a=
      +a||"fx";g--;)(e=d._data(f[g],a+"queueHooks"))&&e.empty&&(k++,e.empty.add(h));h();return c.promise(b)}});var Oa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,oa=["Top","Right","Bottom","Left"],Ca=function(a,b){a=b||a;return"none"===d.css(a,"display")||!d.contains(a.ownerDocument,a)},sa=d.access=function(a,b,e,k,c,f,g){var l=0,u=a.length,h=null==e;if("object"===d.type(e))for(l in c=!0,e)d.access(a,b,l,e[l],!0,f,g);else if(void 0!==k&&(c=!0,d.isFunction(k)||(g=!0),h&&(g?(b.call(a,k),b=null):(h=b,b=function(a,
      +b,e){return h.call(d(a),e)})),b))for(;l<u;l++)b(a[l],e,g?k:k.call(a[l],l,b(a[l],e)));return c?a:h?b.call(a):u?b(a[0],e):f},Ua=/^(?:checkbox|radio)$/i;(function(){var a=z.createElement("input"),b=z.createElement("div"),d=z.createDocumentFragment();b.innerHTML="  \x3clink/\x3e\x3ctable\x3e\x3c/table\x3e\x3ca href\x3d'/a'\x3ea\x3c/a\x3e\x3cinput type\x3d'checkbox'/\x3e";w.leadingWhitespace=3===b.firstChild.nodeType;w.tbody=!b.getElementsByTagName("tbody").length;w.htmlSerialize=!!b.getElementsByTagName("link").length;
      +w.html5Clone="\x3c:nav\x3e\x3c/:nav\x3e"!==z.createElement("nav").cloneNode(!0).outerHTML;a.type="checkbox";a.checked=!0;d.appendChild(a);w.appendChecked=a.checked;b.innerHTML="\x3ctextarea\x3ex\x3c/textarea\x3e";w.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue;d.appendChild(b);b.innerHTML="\x3cinput type\x3d'radio' checked\x3d'checked' name\x3d't'/\x3e";w.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked;w.noCloneEvent=!0;b.attachEvent&&(b.attachEvent("onclick",function(){w.noCloneEvent=
      +!1}),b.cloneNode(!0).click());if(null==w.deleteExpando){w.deleteExpando=!0;try{delete b.test}catch(k){w.deleteExpando=!1}}})();(function(){var a,b,d=z.createElement("div");for(a in{submit:!0,change:!0,focusin:!0})b="on"+a,(w[a+"Bubbles"]=b in g)||(d.setAttribute(b,"t"),w[a+"Bubbles"]=!1===d.attributes[b].expando)})();var Xa=/^(?:input|select|textarea)$/i,Zb=/^key/,$b=/^(?:mouse|pointer|contextmenu)|click/,nb=/^(?:focusinfocus|focusoutblur)$/,ob=/^([^.]*)(?:\.(.+)|)$/;d.event={global:{},add:function(a,
      +b,e,k,c){var l,f,g,h,m,t,n,v,p;if(g=d._data(a)){e.handler&&(h=e,e=h.handler,c=h.selector);e.guid||(e.guid=d.guid++);(f=g.events)||(f=g.events={});(m=g.handle)||(m=g.handle=function(a){return"undefined"===typeof d||a&&d.event.triggered===a.type?void 0:d.event.dispatch.apply(m.elem,arguments)},m.elem=a);b=(b||"").match(Y)||[""];for(g=b.length;g--;)l=ob.exec(b[g])||[],v=t=l[1],p=(l[2]||"").split(".").sort(),v&&(l=d.event.special[v]||{},v=(c?l.delegateType:l.bindType)||v,l=d.event.special[v]||{},t=d.extend({type:v,
      +origType:t,data:k,handler:e,guid:e.guid,selector:c,needsContext:c&&d.expr.match.needsContext.test(c),namespace:p.join(".")},h),(n=f[v])||(n=f[v]=[],n.delegateCount=0,l.setup&&!1!==l.setup.call(a,k,p,m)||(a.addEventListener?a.addEventListener(v,m,!1):a.attachEvent&&a.attachEvent("on"+v,m))),l.add&&(l.add.call(a,t),t.handler.guid||(t.handler.guid=e.guid)),c?n.splice(n.delegateCount++,0,t):n.push(t),d.event.global[v]=!0);a=null}},remove:function(a,b,e,k,c){var l,f,g,h,m,t,n,v,p,y,w,C=d.hasData(a)&&d._data(a);
      +if(C&&(t=C.events)){b=(b||"").match(Y)||[""];for(m=b.length;m--;)if(g=ob.exec(b[m])||[],p=w=g[1],y=(g[2]||"").split(".").sort(),p){n=d.event.special[p]||{};p=(k?n.delegateType:n.bindType)||p;v=t[p]||[];g=g[2]&&new RegExp("(^|\\.)"+y.join("\\.(?:.*\\.|)")+"(\\.|$)");for(h=l=v.length;l--;)f=v[l],!c&&w!==f.origType||e&&e.guid!==f.guid||g&&!g.test(f.namespace)||k&&k!==f.selector&&("**"!==k||!f.selector)||(v.splice(l,1),f.selector&&v.delegateCount--,n.remove&&n.remove.call(a,f));h&&!v.length&&(n.teardown&&
      +!1!==n.teardown.call(a,y,C.handle)||d.removeEvent(a,p,C.handle),delete t[p])}else for(p in t)d.event.remove(a,p+b[m],e,k,!0);d.isEmptyObject(t)&&(delete C.handle,d._removeData(a,"events"))}},trigger:function(a,b,e,k){var c,f,h,m,n,v,t=[e||z],p=ja.call(a,"type")?a.type:a;n=ja.call(a,"namespace")?a.namespace.split("."):[];h=c=e=e||z;if(3!==e.nodeType&&8!==e.nodeType&&!nb.test(p+d.event.triggered)&&(0<=p.indexOf(".")&&(n=p.split("."),p=n.shift(),n.sort()),f=0>p.indexOf(":")&&"on"+p,a=a[d.expando]?a:
      +new d.Event(p,"object"===typeof a&&a),a.isTrigger=k?2:3,a.namespace=n.join("."),a.namespace_re=a.namespace?new RegExp("(^|\\.)"+n.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=void 0,a.target||(a.target=e),b=null==b?[a]:d.makeArray(b,[a]),n=d.event.special[p]||{},k||!n.trigger||!1!==n.trigger.apply(e,b))){if(!k&&!n.noBubble&&!d.isWindow(e)){m=n.delegateType||p;nb.test(m+p)||(h=h.parentNode);for(;h;h=h.parentNode)t.push(h),c=h;c===(e.ownerDocument||z)&&t.push(c.defaultView||c.parentWindow||g)}for(v=
      +0;(h=t[v++])&&!a.isPropagationStopped();)a.type=1<v?m:n.bindType||p,(c=(d._data(h,"events")||{})[a.type]&&d._data(h,"handle"))&&c.apply(h,b),(c=f&&h[f])&&c.apply&&d.acceptData(h)&&(a.result=c.apply(h,b),!1===a.result&&a.preventDefault());a.type=p;if(!(k||a.isDefaultPrevented()||n._default&&!1!==n._default.apply(t.pop(),b))&&d.acceptData(e)&&f&&e[p]&&!d.isWindow(e)){(c=e[f])&&(e[f]=null);d.event.triggered=p;try{e[p]()}catch(Mb){}d.event.triggered=void 0;c&&(e[f]=c)}return a.result}},dispatch:function(a){a=
      +d.event.fix(a);var b,e,k,c,f,g=ba.call(arguments);b=(d._data(this,"events")||{})[a.type]||[];var h=d.event.special[a.type]||{};g[0]=a;a.delegateTarget=this;if(!h.preDispatch||!1!==h.preDispatch.call(this,a)){f=d.event.handlers.call(this,a,b);for(b=0;(k=f[b++])&&!a.isPropagationStopped();)for(a.currentTarget=k.elem,c=0;(e=k.handlers[c++])&&!a.isImmediatePropagationStopped();)if(!a.namespace_re||a.namespace_re.test(e.namespace))a.handleObj=e,a.data=e.data,e=((d.event.special[e.origType]||{}).handle||
      +e.handler).apply(k.elem,g),void 0!==e&&!1===(a.result=e)&&(a.preventDefault(),a.stopPropagation());h.postDispatch&&h.postDispatch.call(this,a);return a.result}},handlers:function(a,b){var e,k,c,f,g=[],h=b.delegateCount,m=a.target;if(h&&m.nodeType&&(!a.button||"click"!==a.type))for(;m!=this;m=m.parentNode||this)if(1===m.nodeType&&(!0!==m.disabled||"click"!==a.type)){c=[];for(f=0;f<h;f++)k=b[f],e=k.selector+" ",void 0===c[e]&&(c[e]=k.needsContext?0<=d(e,this).index(m):d.find(e,this,null,[m]).length),
      +c[e]&&c.push(k);c.length&&g.push({elem:m,handlers:c})}h<b.length&&g.push({elem:this,handlers:b.slice(h)});return g},fix:function(a){if(a[d.expando])return a;var b,e,k;b=a.type;var c=a,f=this.fixHooks[b];f||(this.fixHooks[b]=f=$b.test(b)?this.mouseHooks:Zb.test(b)?this.keyHooks:{});k=f.props?this.props.concat(f.props):this.props;a=new d.Event(c);for(b=k.length;b--;)e=k[b],a[e]=c[e];a.target||(a.target=c.srcElement||z);3===a.target.nodeType&&(a.target=a.target.parentNode);a.metaKey=!!a.metaKey;return f.filter?
      +f.filter(a,c):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:["char","charCode","key","keyCode"],filter:function(a,b){null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var d,k,c=b.button,f=b.fromElement;null==
      +a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,k=d.documentElement,d=d.body,a.pageX=b.clientX+(k&&k.scrollLeft||d&&d.scrollLeft||0)-(k&&k.clientLeft||d&&d.clientLeft||0),a.pageY=b.clientY+(k&&k.scrollTop||d&&d.scrollTop||0)-(k&&k.clientTop||d&&d.clientTop||0));!a.relatedTarget&&f&&(a.relatedTarget=f===a.target?b.toElement:f);a.which||void 0===c||(a.which=c&1?1:c&2?3:c&4?2:0);return a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ha()&&this.focus)try{return this.focus(),
      +!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){if(this===ha()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if(d.nodeName(this,"input")&&"checkbox"===this.type&&this.click)return this.click(),!1},_default:function(a){return d.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,e,k){a=d.extend(new d.Event,e,{type:a,isSimulated:!0,originalEvent:{}});
      +k?d.event.trigger(a,null,b):d.event.dispatch.call(b,a);a.isDefaultPrevented()&&e.preventDefault()}};d.removeEvent=z.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,!1)}:function(a,b,d){b="on"+b;a.detachEvent&&("undefined"===typeof a[b]&&(a[b]=null),a.detachEvent(b,d))};d.Event=function(a,b){if(!(this instanceof d.Event))return new d.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&
      +!1===a.returnValue?aa:V):this.type=a;b&&d.extend(this,b);this.timeStamp=a&&a.timeStamp||d.now();this[d.expando]=!0};d.Event.prototype={isDefaultPrevented:V,isPropagationStopped:V,isImmediatePropagationStopped:V,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=
      +this.originalEvent;this.isImmediatePropagationStopped=aa;a&&a.stopImmediatePropagation&&a.stopImmediatePropagation();this.stopPropagation()}};d.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){d.event.special[a]={delegateType:b,bindType:b,handle:function(a){var e,c=a.relatedTarget,f=a.handleObj;if(!c||c!==this&&!d.contains(this,c))a.type=f.origType,e=f.handler.apply(this,arguments),a.type=b;return e}}});w.submitBubbles||(d.event.special.submit=
      +{setup:function(){if(d.nodeName(this,"form"))return!1;d.event.add(this,"click._submit keypress._submit",function(a){a=a.target;(a=d.nodeName(a,"input")||d.nodeName(a,"button")?a.form:void 0)&&!d._data(a,"submitBubbles")&&(d.event.add(a,"submit._submit",function(a){a._submit_bubble=!0}),d._data(a,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&d.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(d.nodeName(this,
      +"form"))return!1;d.event.remove(this,"._submit")}});w.changeBubbles||(d.event.special.change={setup:function(){if(Xa.test(this.nodeName)){if("checkbox"===this.type||"radio"===this.type)d.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),d.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1);d.event.simulate("change",this,a,!0)});return!1}d.event.add(this,"beforeactivate._change",function(a){a=
      +a.target;Xa.test(a.nodeName)&&!d._data(a,"changeBubbles")&&(d.event.add(a,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||d.event.simulate("change",this.parentNode,a,!0)}),d._data(a,"changeBubbles",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type)return a.handleObj.handler.apply(this,arguments)},teardown:function(){d.event.remove(this,"._change");return!Xa.test(this.nodeName)}});w.focusinBubbles||d.each({focus:"focusin",
      +blur:"focusout"},function(a,b){var e=function(a){d.event.simulate(b,a.target,d.event.fix(a),!0)};d.event.special[b]={setup:function(){var c=this.ownerDocument||this,l=d._data(c,b);l||c.addEventListener(a,e,!0);d._data(c,b,(l||0)+1)},teardown:function(){var c=this.ownerDocument||this,l=d._data(c,b)-1;l?d._data(c,b,l):(c.removeEventListener(a,e,!0),d._removeData(c,b))}}});d.fn.extend({on:function(a,b,e,c,l){var k,f;if("object"===typeof a){"string"!==typeof b&&(e=e||b,b=void 0);for(k in a)this.on(k,
      +b,e,a[k],l);return this}null==e&&null==c?(c=b,e=b=void 0):null==c&&("string"===typeof b?(c=e,e=void 0):(c=e,e=b,b=void 0));if(!1===c)c=V;else if(!c)return this;1===l&&(f=c,c=function(a){d().off(a);return f.apply(this,arguments)},c.guid=f.guid||(f.guid=d.guid++));return this.each(function(){d.event.add(this,a,c,e,b)})},one:function(a,b,d,c){return this.on(a,b,d,c,1)},off:function(a,b,e){var c;if(a&&a.preventDefault&&a.handleObj)return c=a.handleObj,d(a.delegateTarget).off(c.namespace?c.origType+"."+
      +c.namespace:c.origType,c.selector,c.handler),this;if("object"===typeof a){for(c in a)this.off(c,b,a[c]);return this}if(!1===b||"function"===typeof b)e=b,b=void 0;!1===e&&(e=V);return this.each(function(){d.event.remove(this,a,e,b)})},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){var e=this[0];if(e)return d.event.trigger(a,b,e,!0)}});var gb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
      +ac=/ jQuery\d+="(?:null|\d+)"/g,pb=new RegExp("\x3c(?:"+gb+")[\\s/\x3e]","i"),Ya=/^\s+/,qb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rb=/<([\w:]+)/,sb=/<tbody/i,bc=/<|&#?\w+;/,cc=/<(?:script|style|link)/i,dc=/checked\s*(?:[^=]|=\s*.checked.)/i,tb=/^$|\/(?:java|ecma)script/i,Jb=/^true\/(.*)/,ec=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ca={option:[1,"\x3cselect multiple\x3d'multiple'\x3e","\x3c/select\x3e"],legend:[1,"\x3cfieldset\x3e","\x3c/fieldset\x3e"],area:[1,
      +"\x3cmap\x3e","\x3c/map\x3e"],param:[1,"\x3cobject\x3e","\x3c/object\x3e"],thead:[1,"\x3ctable\x3e","\x3c/table\x3e"],tr:[2,"\x3ctable\x3e\x3ctbody\x3e","\x3c/tbody\x3e\x3c/table\x3e"],col:[2,"\x3ctable\x3e\x3ctbody\x3e\x3c/tbody\x3e\x3ccolgroup\x3e","\x3c/colgroup\x3e\x3c/table\x3e"],td:[3,"\x3ctable\x3e\x3ctbody\x3e\x3ctr\x3e","\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e"],_default:w.htmlSerialize?[0,"",""]:[1,"X\x3cdiv\x3e","\x3c/div\x3e"]},Za=Aa(z).appendChild(z.createElement("div"));ca.optgroup=
      +ca.option;ca.tbody=ca.tfoot=ca.colgroup=ca.caption=ca.thead;ca.th=ca.td;d.extend({clone:function(a,b,e){var c,l,f,g,h,m=d.contains(a.ownerDocument,a);w.html5Clone||d.isXMLDoc(a)||!pb.test("\x3c"+a.nodeName+"\x3e")?f=a.cloneNode(!0):(Za.innerHTML=a.outerHTML,Za.removeChild(f=Za.firstChild));if(!(w.noCloneEvent&&w.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||d.isXMLDoc(a)))for(c=N(f),h=N(a),g=0;null!=(l=h[g]);++g)if(c[g]){var n=c[g],t,p=void 0,v;if(1===n.nodeType){t=n.nodeName.toLowerCase();if(!w.noCloneEvent&&
      +n[d.expando]){v=d._data(n);for(p in v.events)d.removeEvent(n,p,v.handle);n.removeAttribute(d.expando)}if("script"===t&&n.text!==l.text)ia(n).text=l.text,A(n);else if("object"===t)n.parentNode&&(n.outerHTML=l.outerHTML),w.html5Clone&&l.innerHTML&&!d.trim(n.innerHTML)&&(n.innerHTML=l.innerHTML);else if("input"===t&&Ua.test(l.type))n.defaultChecked=n.checked=l.checked,n.value!==l.value&&(n.value=l.value);else if("option"===t)n.defaultSelected=n.selected=l.defaultSelected;else if("input"===t||"textarea"===
      +t)n.defaultValue=l.defaultValue}}if(b)if(e)for(h=h||N(a),c=c||N(f),g=0;null!=(l=h[g]);g++)P(l,c[g]);else P(a,f);c=N(f,"script");0<c.length&&R(c,!m&&N(a,"script"));return f},buildFragment:function(a,b,e,c){for(var k,f,g,h,m,n,t=a.length,p=Aa(b),v=[],y=0;y<t;y++)if((f=a[y])||0===f)if("object"===d.type(f))d.merge(v,f.nodeType?[f]:f);else if(bc.test(f)){g=g||p.appendChild(b.createElement("div"));h=(rb.exec(f)||["",""])[1].toLowerCase();n=ca[h]||ca._default;g.innerHTML=n[1]+f.replace(qb,"\x3c$1\x3e\x3c/$2\x3e")+
      +n[2];for(k=n[0];k--;)g=g.lastChild;!w.leadingWhitespace&&Ya.test(f)&&v.push(b.createTextNode(Ya.exec(f)[0]));if(!w.tbody)for(k=(f="table"!==h||sb.test(f)?"\x3ctable\x3e"!==n[1]||sb.test(f)?0:g:g.firstChild)&&f.childNodes.length;k--;)d.nodeName(m=f.childNodes[k],"tbody")&&!m.childNodes.length&&f.removeChild(m);d.merge(v,g.childNodes);for(g.textContent="";g.firstChild;)g.removeChild(g.firstChild);g=p.lastChild}else v.push(b.createTextNode(f));g&&p.removeChild(g);w.appendChecked||d.grep(N(v,"input"),
      +Ta);for(y=0;f=v[y++];)if(!c||-1===d.inArray(f,c))if(a=d.contains(f.ownerDocument,f),g=N(p.appendChild(f),"script"),a&&R(g),e)for(k=0;f=g[k++];)tb.test(f.type||"")&&e.push(f);return p},cleanData:function(a,b){for(var e,c,f,g,h=0,m=d.expando,n=d.cache,p=w.deleteExpando,t=d.event.special;null!=(e=a[h]);h++)if(b||d.acceptData(e))if(g=(f=e[m])&&n[f]){if(g.events)for(c in g.events)t[c]?d.event.remove(e,c):d.removeEvent(e,c,g.handle);n[f]&&(delete n[f],p?delete e[m]:"undefined"!==typeof e.removeAttribute?
      +e.removeAttribute(m):e[m]=null,Z.push(f))}}});d.fn.extend({text:function(a){return sa(this,function(a){return void 0===a?d.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ia(this,a).appendChild(a)})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=
      +Ia(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var e=a?d.filter(a,this):this,c=0;null!=(a=e[c]);c++)b||1!==a.nodeType||d.cleanData(N(a)),a.parentNode&&(b&&d.contains(a.ownerDocument,a)&&R(N(a,"script")),a.parentNode.removeChild(a));
      +return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&d.cleanData(N(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&d.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){a=null==a?!1:a;b=null==b?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){return sa(this,function(a){var b=this[0]||{},c=0,f=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ac,""):void 0;if(!("string"!==typeof a||cc.test(a)||
      +!w.htmlSerialize&&pb.test(a)||!w.leadingWhitespace&&Ya.test(a)||ca[(rb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(qb,"\x3c$1\x3e\x3c/$2\x3e");try{for(;c<f;c++)b=this[c]||{},1===b.nodeType&&(d.cleanData(N(b,!1)),b.innerHTML=a);b=0}catch(u){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];this.domManip(arguments,function(b){a=this.parentNode;d.cleanData(N(this));a&&a.replaceChild(b,this)});return a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,
      +!0)},domManip:function(a,b){a=jb.apply([],a);var e,c,f,g,h=0,m=this.length,n=this,p=m-1,t=a[0],v=d.isFunction(t);if(v||1<m&&"string"===typeof t&&!w.checkClone&&dc.test(t))return this.each(function(d){var e=n.eq(d);v&&(a[0]=t.call(this,d,e.html()));e.domManip(a,b)});if(m&&(g=d.buildFragment(a,this[0].ownerDocument,!1,this),e=g.firstChild,1===g.childNodes.length&&(g=e),e)){f=d.map(N(g,"script"),ia);for(c=f.length;h<m;h++)e=g,h!==p&&(e=d.clone(e,!0,!0),c&&d.merge(f,N(e,"script"))),b.call(this[h],e,h);
      +if(c)for(g=f[f.length-1].ownerDocument,d.map(f,A),h=0;h<c;h++)e=f[h],tb.test(e.type||"")&&!d._data(e,"globalEval")&&d.contains(g,e)&&(e.src?d._evalUrl&&d._evalUrl(e.src):d.globalEval((e.text||e.textContent||e.innerHTML||"").replace(ec,"")));g=e=null}return this}});d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(a){for(var e=0,c=[],f=d(a),g=f.length-1;e<=g;e++)a=e===g?this:this.clone(!0),d(f[e])[b](a),
      +Wa.apply(c,a.get());return this.pushStack(c)}});var na,hb={};(function(){var a;w.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,d,c;if((d=z.getElementsByTagName("body")[0])&&d.style)return b=z.createElement("div"),c=z.createElement("div"),c.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",d.appendChild(c).appendChild(b),"undefined"!==typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",
      +b.appendChild(z.createElement("div")).style.width="5px",a=3!==b.offsetWidth),d.removeChild(c),a}})();var ub=/^margin/,Ja=new RegExp("^("+Oa+")(?!px)[a-z%]+$","i"),ga,pa,fc=/^(top|right|bottom|left)$/;g.getComputedStyle?(ga=function(a){return a.ownerDocument.defaultView.opener?a.ownerDocument.defaultView.getComputedStyle(a,null):g.getComputedStyle(a,null)},pa=function(a,b,e){var c,f,g=a.style;f=(e=e||ga(a))?e.getPropertyValue(b)||e[b]:void 0;e&&(""!==f||d.contains(a.ownerDocument,a)||(f=d.style(a,
      +b)),Ja.test(f)&&ub.test(b)&&(a=g.width,b=g.minWidth,c=g.maxWidth,g.minWidth=g.maxWidth=g.width=f,f=e.width,g.width=a,g.minWidth=b,g.maxWidth=c));return void 0===f?f:f+""}):z.documentElement.currentStyle&&(ga=function(a){return a.currentStyle},pa=function(a,b,d){var e,c,f,g=a.style;f=(d=d||ga(a))?d[b]:void 0;null==f&&g&&g[b]&&(f=g[b]);if(Ja.test(f)&&!fc.test(b)){d=g.left;if(c=(e=a.runtimeStyle)&&e.left)e.left=a.currentStyle.left;g.left="fontSize"===b?"1em":f;f=g.pixelLeft+"px";g.left=d;c&&(e.left=
      +c)}return void 0===f?f:f+""||"auto"});(function(){function a(){var a,b,d,e;if((b=z.getElementsByTagName("body")[0])&&b.style){a=z.createElement("div");d=z.createElement("div");d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";b.appendChild(d).appendChild(a);a.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute";c=f=!1;m=!0;g.getComputedStyle&&
      +(c="1%"!==(g.getComputedStyle(a,null)||{}).top,f="4px"===(g.getComputedStyle(a,null)||{width:"4px"}).width,e=a.appendChild(z.createElement("div")),e.style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",m=!parseFloat((g.getComputedStyle(e,null)||{}).marginRight),a.removeChild(e));a.innerHTML="\x3ctable\x3e\x3ctr\x3e\x3ctd\x3e\x3c/td\x3e\x3ctd\x3et\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e";
      +e=a.getElementsByTagName("td");e[0].style.cssText="margin:0;border:0;padding:0;display:none";if(h=0===e[0].offsetHeight)e[0].style.display="",e[1].style.display="none",h=0===e[0].offsetHeight;b.removeChild(d)}}var b,e,c,f,h,m;b=z.createElement("div");b.innerHTML="  \x3clink/\x3e\x3ctable\x3e\x3c/table\x3e\x3ca href\x3d'/a'\x3ea\x3c/a\x3e\x3cinput type\x3d'checkbox'/\x3e";if(e=(e=b.getElementsByTagName("a")[0])&&e.style)e.cssText="float:left;opacity:.5",w.opacity="0.5"===e.opacity,w.cssFloat=!!e.cssFloat,
      +b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",w.clearCloneStyle="content-box"===b.style.backgroundClip,w.boxSizing=""===e.boxSizing||""===e.MozBoxSizing||""===e.WebkitBoxSizing,d.extend(w,{reliableHiddenOffsets:function(){null==h&&a();return h},boxSizingReliable:function(){null==f&&a();return f},pixelPosition:function(){null==c&&a();return c},reliableMarginRight:function(){null==m&&a();return m}})})();d.swap=function(a,b,d,c){var e,f={};for(e in b)f[e]=a.style[e],a.style[e]=
      +b[e];d=d.apply(a,c||[]);for(e in b)a.style[e]=f[e];return d};var $a=/alpha\([^)]*\)/i,gc=/opacity\s*=\s*([^)]*)/,hc=/^(none|table(?!-c[ea]).+)/,Kb=new RegExp("^("+Oa+")(.*)$","i"),ic=new RegExp("^([+-])\x3d("+Oa+")","i"),jc={position:"absolute",visibility:"hidden",display:"block"},vb={letterSpacing:"0",fontWeight:"400"},ib=["Webkit","O","Moz","ms"];d.extend({cssHooks:{opacity:{get:function(a,b){if(b)return a=pa(a,"opacity"),""===a?"1":a}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,
      +fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":w.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,e,c){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,k,g,h=d.camelCase(b),m=a.style;b=d.cssProps[h]||(d.cssProps[h]=Ba(m,h));g=d.cssHooks[b]||d.cssHooks[h];if(void 0!==e){if(k=typeof e,"string"===k&&(f=ic.exec(e))&&(e=(f[1]+1)*f[2]+parseFloat(d.css(a,b)),k="number"),null!=e&&e===e&&("number"!==k||d.cssNumber[h]||(e+="px"),w.clearCloneStyle||
      +""!==e||0!==b.indexOf("background")||(m[b]="inherit"),!(g&&"set"in g)||void 0!==(e=g.set(a,e,c))))try{m[b]=e}catch(Ac){}}else return g&&"get"in g&&void 0!==(f=g.get(a,!1,c))?f:m[b]}},css:function(a,b,e,c){var f,k;k=d.camelCase(b);b=d.cssProps[k]||(d.cssProps[k]=Ba(a.style,k));(k=d.cssHooks[b]||d.cssHooks[k])&&"get"in k&&(f=k.get(a,!0,e));void 0===f&&(f=pa(a,b,c));"normal"===f&&b in vb&&(f=vb[b]);return""===e||e?(a=parseFloat(f),!0===e||d.isNumeric(a)?a||0:f):f}});d.each(["height","width"],function(a,
      +b){d.cssHooks[b]={get:function(a,c,f){if(c)return hc.test(d.css(a,"display"))&&0===a.offsetWidth?d.swap(a,jc,function(){return U(a,b,f)}):U(a,b,f)},set:function(a,c,f){var e=f&&ga(a);return va(a,c,f?S(a,b,f,w.boxSizing&&"border-box"===d.css(a,"boxSizing",!1,e),e):0)}}});w.opacity||(d.cssHooks.opacity={get:function(a,b){return gc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var e=a.style;a=a.currentStyle;var c=d.isNumeric(b)?
      +"alpha(opacity\x3d"+100*b+")":"",f=a&&a.filter||e.filter||"";e.zoom=1;if((1<=b||""===b)&&""===d.trim(f.replace($a,""))&&e.removeAttribute&&(e.removeAttribute("filter"),""===b||a&&!a.filter))return;e.filter=$a.test(f)?f.replace($a,c):f+" "+c}});d.cssHooks.marginRight=Fa(w.reliableMarginRight,function(a,b){if(b)return d.swap(a,{display:"inline-block"},pa,[a,"marginRight"])});d.each({margin:"",padding:"",border:"Width"},function(a,b){d.cssHooks[a+b]={expand:function(d){var e=0,c={};for(d="string"===
      +typeof d?d.split(" "):[d];4>e;e++)c[a+oa[e]+b]=d[e]||d[e-2]||d[0];return c}};ub.test(a)||(d.cssHooks[a+b].set=va)});d.fn.extend({css:function(a,b){return sa(this,function(a,b,c){var e,f={},k=0;if(d.isArray(b)){c=ga(a);for(e=b.length;k<e;k++)f[b[k]]=d.css(a,b[k],!1,c);return f}return void 0!==c?d.style(a,b,c):d.css(a,b)},a,b,1<arguments.length)},show:function(){return O(this,!0)},hide:function(){return O(this)},toggle:function(a){return"boolean"===typeof a?a?this.show():this.hide():this.each(function(){Ca(this)?
      +d(this).show():d(this).hide()})}});d.Tween=H;H.prototype={constructor:H,init:function(a,b,e,c,f,g){this.elem=a;this.prop=e;this.easing=f||"swing";this.options=b;this.start=this.now=this.cur();this.end=c;this.unit=g||(d.cssNumber[e]?"":"px")},cur:function(){var a=H.propHooks[this.prop];return a&&a.get?a.get(this):H.propHooks._default.get(this)},run:function(a){var b,e=H.propHooks[this.prop];this.pos=this.options.duration?b=d.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):
      +b=a;this.now=(this.end-this.start)*b+this.start;this.options.step&&this.options.step.call(this.elem,this.now,this);e&&e.set?e.set(this):H.propHooks._default.set(this);return this}};H.prototype.init.prototype=H.prototype;H.propHooks={_default:{get:function(a){return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(a=d.css(a.elem,a.prop,""))&&"auto"!==a?a:0:a.elem[a.prop]},set:function(a){if(d.fx.step[a.prop])d.fx.step[a.prop](a);else a.elem.style&&(null!=a.elem.style[d.cssProps[a.prop]]||
      +d.cssHooks[a.prop])?d.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}};H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}};d.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}};d.fx=H.prototype.init;d.fx.step={};var wa,Pa,kc=/^(?:toggle|show|hide)$/,wb=new RegExp("^(?:([+-])\x3d|)("+Oa+")([a-z%]*)$","i"),lc=/queueHooks$/,Ka=[function(a,b,e){var c,f,g,h,m,n,p=this,t={},v=a.style,y=a.nodeType&&
      +Ca(a),C=d._data(a,"fxshow");e.queue||(h=d._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,m=h.empty.fire,h.empty.fire=function(){h.unqueued||m()}),h.unqueued++,p.always(function(){p.always(function(){h.unqueued--;d.queue(a,"fx").length||h.empty.fire()})}));1===a.nodeType&&("height"in b||"width"in b)&&(e.overflow=[v.overflow,v.overflowX,v.overflowY],n=d.css(a,"display"),f="none"===n?d._data(a,"olddisplay")||Ea(a.nodeName):n,"inline"===f&&"none"===d.css(a,"float")&&(w.inlineBlockNeedsLayout&&"inline"!==
      +Ea(a.nodeName)?v.zoom=1:v.display="inline-block"));e.overflow&&(v.overflow="hidden",w.shrinkWrapBlocks()||p.always(function(){v.overflow=e.overflow[0];v.overflowX=e.overflow[1];v.overflowY=e.overflow[2]}));for(c in b)if(f=b[c],kc.exec(f)){delete b[c];g=g||"toggle"===f;if(f===(y?"hide":"show"))if("show"===f&&C&&void 0!==C[c])y=!0;else continue;t[c]=C&&C[c]||d.style(a,c)}else n=void 0;if(d.isEmptyObject(t))"inline"===("none"===n?Ea(a.nodeName):n)&&(v.display=n);else for(c in C?"hidden"in C&&(y=C.hidden):
      +C=d._data(a,"fxshow",{}),g&&(C.hidden=!y),y?d(a).show():p.done(function(){d(a).hide()}),p.done(function(){var b;d._removeData(a,"fxshow");for(b in t)d.style(a,b,t[b])}),t)b=da(y?C[c]:0,c,p),c in C||(C[c]=b.start,y&&(b.end=b.start,b.start="width"===c||"height"===c?1:0))}],xa={"*":[function(a,b){var e=this.createTween(a,b),c=e.cur(),f=(b=wb.exec(b))&&b[3]||(d.cssNumber[a]?"":"px"),g=(d.cssNumber[a]||"px"!==f&&+c)&&wb.exec(d.css(e.elem,a)),h=1,m=20;if(g&&g[3]!==f){f=f||g[3];b=b||[];g=+c||1;do h=h||".5",
      +g/=h,d.style(e.elem,a,g+f);while(h!==(h=e.cur()/c)&&1!==h&&--m)}b&&(g=e.start=+g||+c||0,e.unit=f,e.end=b[1]?g+(b[1]+1)*b[2]:+b[2]);return e}]};d.Animation=d.extend(G,{tweener:function(a,b){d.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var e,c=0,f=a.length;c<f;c++)e=a[c],xa[e]=xa[e]||[],xa[e].unshift(b)},prefilter:function(a,b){b?Ka.unshift(a):Ka.push(a)}});d.speed=function(a,b,e){var c=a&&"object"===typeof a?d.extend({},a):{complete:e||!e&&b||d.isFunction(a)&&a,duration:a,easing:e&&b||b&&!d.isFunction(b)&&
      +b};c.duration=d.fx.off?0:"number"===typeof c.duration?c.duration:c.duration in d.fx.speeds?d.fx.speeds[c.duration]:d.fx.speeds._default;if(null==c.queue||!0===c.queue)c.queue="fx";c.old=c.complete;c.complete=function(){d.isFunction(c.old)&&c.old.call(this);c.queue&&d.dequeue(this,c.queue)};return c};d.fn.extend({fadeTo:function(a,b,d,c){return this.filter(Ca).css("opacity",0).show().end().animate({opacity:b},a,d,c)},animate:function(a,b,e,c){var f=d.isEmptyObject(a),g=d.speed(b,e,c);b=function(){var b=
      +G(this,d.extend({},a),g);(f||d._data(this,"finish"))&&b.stop(!0)};b.finish=b;return f||!1===g.queue?this.each(b):this.queue(g.queue,b)},stop:function(a,b,e){var c=function(a){var b=a.stop;delete a.stop;b(e)};"string"!==typeof a&&(e=b,b=a,a=void 0);b&&!1!==a&&this.queue(a||"fx",[]);return this.each(function(){var b=!0,f=null!=a&&a+"queueHooks",g=d.timers,k=d._data(this);if(f)k[f]&&k[f].stop&&c(k[f]);else for(f in k)k[f]&&k[f].stop&&lc.test(f)&&c(k[f]);for(f=g.length;f--;)g[f].elem!==this||null!=a&&
      +g[f].queue!==a||(g[f].anim.stop(e),b=!1,g.splice(f,1));!b&&e||d.dequeue(this,a)})},finish:function(a){!1!==a&&(a=a||"fx");return this.each(function(){var b,e=d._data(this),c=e[a+"queue"];b=e[a+"queueHooks"];var f=d.timers,g=c?c.length:0;e.finish=!0;d.queue(this,a,[]);b&&b.stop&&b.stop.call(this,!0);for(b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)c[b]&&c[b].finish&&c[b].finish.call(this);delete e.finish})}});d.each(["toggle","show","hide"],function(a,
      +b){var e=d.fn[b];d.fn[b]=function(a,d,c){return null==a||"boolean"===typeof a?e.apply(this,arguments):this.animate(v(b,!0),a,d,c)}});d.each({slideDown:v("show"),slideUp:v("hide"),slideToggle:v("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,d,c){return this.animate(b,a,d,c)}});d.timers=[];d.fx.tick=function(){var a,b=d.timers,e=0;for(wa=d.now();e<b.length;e++)a=b[e],a()||b[e]!==a||b.splice(e--,1);b.length||d.fx.stop();wa=void 0};
      +d.fx.timer=function(a){d.timers.push(a);a()?d.fx.start():d.timers.pop()};d.fx.interval=13;d.fx.start=function(){Pa||(Pa=setInterval(d.fx.tick,d.fx.interval))};d.fx.stop=function(){clearInterval(Pa);Pa=null};d.fx.speeds={slow:600,fast:200,_default:400};d.fn.delay=function(a,b){a=d.fx?d.fx.speeds[a]||a:a;return this.queue(b||"fx",function(b,d){var e=setTimeout(b,a);d.stop=function(){clearTimeout(e)}})};(function(){var a,b,d,c,f;b=z.createElement("div");b.setAttribute("className","t");b.innerHTML="  \x3clink/\x3e\x3ctable\x3e\x3c/table\x3e\x3ca href\x3d'/a'\x3ea\x3c/a\x3e\x3cinput type\x3d'checkbox'/\x3e";
      +c=b.getElementsByTagName("a")[0];d=z.createElement("select");f=d.appendChild(z.createElement("option"));a=b.getElementsByTagName("input")[0];c.style.cssText="top:1px";w.getSetAttribute="t"!==b.className;w.style=/top/.test(c.getAttribute("style"));w.hrefNormalized="/a"===c.getAttribute("href");w.checkOn=!!a.value;w.optSelected=f.selected;w.enctype=!!z.createElement("form").enctype;d.disabled=!0;w.optDisabled=!f.disabled;a=z.createElement("input");a.setAttribute("value","");w.input=""===a.getAttribute("value");
      +a.value="t";a.setAttribute("type","radio");w.radioValue="t"===a.value})();var mc=/\r/g;d.fn.extend({val:function(a){var b,e,c,f=this[0];if(arguments.length)return c=d.isFunction(a),this.each(function(e){1===this.nodeType&&(e=c?a.call(this,e,d(this).val()):a,null==e?e="":"number"===typeof e?e+="":d.isArray(e)&&(e=d.map(e,function(a){return null==a?"":a+""})),b=d.valHooks[this.type]||d.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(f){if((b=
      +d.valHooks[f.type]||d.valHooks[f.nodeName.toLowerCase()])&&"get"in b&&void 0!==(e=b.get(f,"value")))return e;e=f.value;return"string"===typeof e?e.replace(mc,""):null==e?"":e}}});d.extend({valHooks:{option:{get:function(a){var b=d.find.attr(a,"value");return null!=b?b:d.trim(d.text(a))}},select:{get:function(a){for(var b,e=a.options,c=a.selectedIndex,f=(a="select-one"===a.type||0>c)?null:[],g=a?c+1:e.length,h=0>c?g:a?c:0;h<g;h++)if(b=e[h],!(!b.selected&&h!==c||(w.optDisabled?b.disabled:null!==b.getAttribute("disabled"))||
      +b.parentNode.disabled&&d.nodeName(b.parentNode,"optgroup"))){b=d(b).val();if(a)return b;f.push(b)}return f},set:function(a,b){for(var e,c=a.options,f=d.makeArray(b),g=c.length;g--;)if(b=c[g],0<=d.inArray(d.valHooks.option.get(b),f))try{b.selected=e=!0}catch(K){b.scrollHeight}else b.selected=!1;e||(a.selectedIndex=-1);return c}}}});d.each(["radio","checkbox"],function(){d.valHooks[this]={set:function(a,b){if(d.isArray(b))return a.checked=0<=d.inArray(d(a).val(),b)}};w.checkOn||(d.valHooks[this].get=
      +function(a){return null===a.getAttribute("value")?"on":a.value})});var za,xb,ka=d.expr.attrHandle,ab=/^(?:checked|selected)$/i,ta=w.getSetAttribute,Qa=w.input;d.fn.extend({attr:function(a,b){return sa(this,d.attr,a,b,1<arguments.length)},removeAttr:function(a){return this.each(function(){d.removeAttr(this,a)})}});d.extend({attr:function(a,b,e){var c,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g){if("undefined"===typeof a.getAttribute)return d.prop(a,b,e);1===g&&d.isXMLDoc(a)||(b=b.toLowerCase(),c=d.attrHooks[b]||
      +(d.expr.match.bool.test(b)?xb:za));if(void 0!==e)if(null===e)d.removeAttr(a,b);else{if(c&&"set"in c&&void 0!==(f=c.set(a,e,b)))return f;a.setAttribute(b,e+"");return e}else{if(c&&"get"in c&&null!==(f=c.get(a,b)))return f;f=d.find.attr(a,b);return null==f?void 0:f}}},removeAttr:function(a,b){var e,c=0,f=b&&b.match(Y);if(f&&1===a.nodeType)for(;b=f[c++];)e=d.propFix[b]||b,d.expr.match.bool.test(b)?Qa&&ta||!ab.test(b)?a[e]=!1:a[d.camelCase("default-"+b)]=a[e]=!1:d.attr(a,b,""),a.removeAttribute(ta?b:
      +e)},attrHooks:{type:{set:function(a,b){if(!w.radioValue&&"radio"===b&&d.nodeName(a,"input")){var e=a.value;a.setAttribute("type",b);e&&(a.value=e);return b}}}}});xb={set:function(a,b,e){!1===b?d.removeAttr(a,e):Qa&&ta||!ab.test(e)?a.setAttribute(!ta&&d.propFix[e]||e,e):a[d.camelCase("default-"+e)]=a[e]=!0;return e}};d.each(d.expr.match.bool.source.match(/\w+/g),function(a,b){var e=ka[b]||d.find.attr;ka[b]=Qa&&ta||!ab.test(b)?function(a,b,d){var c,f;d||(f=ka[b],ka[b]=c,c=null!=e(a,b,d)?b.toLowerCase():
      +null,ka[b]=f);return c}:function(a,b,e){if(!e)return a[d.camelCase("default-"+b)]?b.toLowerCase():null}});Qa&&ta||(d.attrHooks.value={set:function(a,b,e){if(d.nodeName(a,"input"))a.defaultValue=b;else return za&&za.set(a,b,e)}});ta||(za={set:function(a,b,d){var e=a.getAttributeNode(d);e||a.setAttributeNode(e=a.ownerDocument.createAttribute(d));e.value=b+="";if("value"===d||b===a.getAttribute(d))return b}},ka.id=ka.name=ka.coords=function(a,b,d){var e;if(!d)return(e=a.getAttributeNode(b))&&""!==e.value?
      +e.value:null},d.valHooks.button={get:function(a,b){if((a=a.getAttributeNode(b))&&a.specified)return a.value},set:za.set},d.attrHooks.contenteditable={set:function(a,b,d){za.set(a,""===b?!1:b,d)}},d.each(["width","height"],function(a,b){d.attrHooks[b]={set:function(a,d){if(""===d)return a.setAttribute(b,"auto"),d}}}));w.style||(d.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var nc=/^(?:input|select|textarea|button|object)$/i,oc=/^(?:a|area)$/i;
      +d.fn.extend({prop:function(a,b){return sa(this,d.prop,a,b,1<arguments.length)},removeProp:function(a){a=d.propFix[a]||a;return this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}});d.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,e){var c,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return 1===g&&d.isXMLDoc(a)||(b=d.propFix[b]||b,f=d.propHooks[b]),void 0!==e?f&&"set"in f&&void 0!==(c=f.set(a,e,b))?c:a[b]=e:f&&"get"in f&&null!==(c=f.get(a,b))?c:a[b]},propHooks:{tabIndex:{get:function(a){var b=
      +d.find.attr(a,"tabindex");return b?parseInt(b,10):nc.test(a.nodeName)||oc.test(a.nodeName)&&a.href?0:-1}}}});w.hrefNormalized||d.each(["href","src"],function(a,b){d.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}});w.optSelected||(d.propHooks.selected={get:function(a){if(a=a.parentNode)a.selectedIndex,a.parentNode&&a.parentNode.selectedIndex;return null}});d.each("tabIndex readOnly maxLength cellSpacing cellPadding rowSpan colSpan useMap frameBorder contentEditable".split(" "),function(){d.propFix[this.toLowerCase()]=
      +this});w.enctype||(d.propFix.enctype="encoding");var bb=/[\t\r\n\f]/g;d.fn.extend({addClass:function(a){var b,e,c,f,g,h=0,m=this.length;b="string"===typeof a&&a;if(d.isFunction(a))return this.each(function(b){d(this).addClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(Y)||[];h<m;h++)if(e=this[h],c=1===e.nodeType&&(e.className?(" "+e.className+" ").replace(bb," "):" ")){for(g=0;f=b[g++];)0>c.indexOf(" "+f+" ")&&(c+=f+" ");c=d.trim(c);e.className!==c&&(e.className=c)}return this},removeClass:function(a){var b,
      +e,c,f,g,h=0,m=this.length;b=0===arguments.length||"string"===typeof a&&a;if(d.isFunction(a))return this.each(function(b){d(this).removeClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(Y)||[];h<m;h++)if(e=this[h],c=1===e.nodeType&&(e.className?(" "+e.className+" ").replace(bb," "):"")){for(g=0;f=b[g++];)for(;0<=c.indexOf(" "+f+" ");)c=c.replace(" "+f+" "," ");c=a?d.trim(c):"";e.className!==c&&(e.className=c)}return this},toggleClass:function(a,b){var e=typeof a;return"boolean"===typeof b&&
      +"string"===e?b?this.addClass(a):this.removeClass(a):d.isFunction(a)?this.each(function(e){d(this).toggleClass(a.call(this,e,this.className,b),b)}):this.each(function(){if("string"===e)for(var b,c=0,f=d(this),g=a.match(Y)||[];b=g[c++];)f.hasClass(b)?f.removeClass(b):f.addClass(b);else if("undefined"===e||"boolean"===e)this.className&&d._data(this,"__className__",this.className),this.className=this.className||!1===a?"":d._data(this,"__className__")||""})},hasClass:function(a){a=" "+a+" ";for(var b=
      +0,d=this.length;b<d;b++)if(1===this[b].nodeType&&0<=(" "+this[b].className+" ").replace(bb," ").indexOf(a))return!0;return!1}});d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){d.fn[b]=function(a,d){return 0<arguments.length?this.on(b,null,a,d):this.trigger(b)}});d.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||
      +a)},bind:function(a,b,d){return this.on(a,null,b,d)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,d,c){return this.on(b,a,d,c)},undelegate:function(a,b,d){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",d)}});var cb=d.now(),db=/\?/,pc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;d.parseJSON=function(a){if(g.JSON&&g.JSON.parse)return g.JSON.parse(a+"");var b,e=null,c=d.trim(a+
      +"");return c&&!d.trim(c.replace(pc,function(a,d,c,f){b&&d&&(e=0);if(0===e)return a;b=c||d;e+=!f-!c;return""}))?Function("return "+c)():d.error("Invalid JSON: "+a)};d.parseXML=function(a){var b,c;if(!a||"string"!==typeof a)return null;try{g.DOMParser?(c=new DOMParser,b=c.parseFromString(a,"text/xml")):(b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a))}catch(k){b=void 0}b&&b.documentElement&&!b.getElementsByTagName("parsererror").length||d.error("Invalid XML: "+a);return b};var ua,
      +la,qc=/#.*$/,yb=/([?&])_=[^&]*/,rc=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,sc=/^(?:GET|HEAD)$/,tc=/^\/\//,zb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ab={},Va={},Bb="*/".concat("*");try{la=location.href}catch(a){la=z.createElement("a"),la.href="",la=la.href}ua=zb.exec(la.toLowerCase())||[];d.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:la,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ua[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset\x3dUTF-8",
      +accepts:{"*":Bb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?L(L(a,d.ajaxSettings),b):L(d.ajaxSettings,a)},ajaxPrefilter:C(Ab),ajaxTransport:C(Va),ajax:function(a,
      +b){function c(a,b,c,e){var f,k,l,u;u=b;if(2!==L){L=2;m&&clearTimeout(m);v=void 0;h=e||"";B.readyState=0<a?4:0;e=200<=a&&300>a||304===a;if(c){l=t;for(var p=B,I,z,r,D,G=l.contents,K=l.dataTypes;"*"===K[0];)K.shift(),void 0===z&&(z=l.mimeType||p.getResponseHeader("Content-Type"));if(z)for(D in G)if(G[D]&&G[D].test(z)){K.unshift(D);break}if(K[0]in c)r=K[0];else{for(D in c){if(!K[0]||l.converters[D+" "+K[0]]){r=D;break}I||(I=D)}r=r||I}r?(r!==K[0]&&K.unshift(r),l=c[r]):l=void 0}a:{c=t;I=l;z=B;r=e;var P,
      +O,F,p={},G=c.dataTypes.slice();if(G[1])for(O in c.converters)p[O.toLowerCase()]=c.converters[O];for(D=G.shift();D;)if(c.responseFields[D]&&(z[c.responseFields[D]]=I),!F&&r&&c.dataFilter&&(I=c.dataFilter(I,c.dataType)),F=D,D=G.shift())if("*"===D)D=F;else if("*"!==F&&F!==D){O=p[F+" "+D]||p["* "+D];if(!O)for(P in p)if(l=P.split(" "),l[1]===D&&(O=p[F+" "+l[0]]||p["* "+l[0]])){!0===O?O=p[P]:!0!==p[P]&&(D=l[0],G.unshift(l[1]));break}if(!0!==O)if(O&&c["throws"])I=O(I);else try{I=O(I)}catch(Tb){l={state:"parsererror",
      +error:O?Tb:"No conversion from "+F+" to "+D};break a}}l={state:"success",data:I}}if(e)t.ifModified&&((u=B.getResponseHeader("Last-Modified"))&&(d.lastModified[g]=u),(u=B.getResponseHeader("etag"))&&(d.etag[g]=u)),204===a||"HEAD"===t.type?u="nocontent":304===a?u="notmodified":(u=l.state,f=l.data,k=l.error,e=!k);else if(k=u,a||!u)u="error",0>a&&(a=0);B.status=a;B.statusText=(b||u)+"";e?w.resolveWith(y,[f,u,B]):w.rejectWith(y,[B,u,k]);B.statusCode(da);da=void 0;n&&C.trigger(e?"ajaxSuccess":"ajaxError",
      +[B,t,e?f:k]);A.fireWith(y,[B,u]);n&&(C.trigger("ajaxComplete",[B,t]),--d.active||d.event.trigger("ajaxStop"))}}"object"===typeof a&&(b=a,a=void 0);b=b||{};var f,g,h,m,n,v,p,t=d.ajaxSetup({},b),y=t.context||t,C=t.context&&(y.nodeType||y.jquery)?d(y):d.event,w=d.Deferred(),A=d.Callbacks("once memory"),da=t.statusCode||{},I={},z={},L=0,r="canceled",B={readyState:0,getResponseHeader:function(a){var b;if(2===L){if(!p)for(p={};b=rc.exec(h);)p[b[1].toLowerCase()]=b[2];b=p[a.toLowerCase()]}return null==b?
      +null:b},getAllResponseHeaders:function(){return 2===L?h:null},setRequestHeader:function(a,b){var d=a.toLowerCase();L||(a=z[d]=z[d]||a,I[a]=b);return this},overrideMimeType:function(a){L||(t.mimeType=a);return this},statusCode:function(a){var b;if(a)if(2>L)for(b in a)da[b]=[da[b],a[b]];else B.always(a[B.status]);return this},abort:function(a){a=a||r;v&&v.abort(a);c(0,a);return this}};w.promise(B).complete=A.add;B.success=B.done;B.error=B.fail;t.url=((a||t.url||la)+"").replace(qc,"").replace(tc,ua[1]+
      +"//");t.type=b.method||b.type||t.method||t.type;t.dataTypes=d.trim(t.dataType||"*").toLowerCase().match(Y)||[""];null==t.crossDomain&&(a=zb.exec(t.url.toLowerCase()),t.crossDomain=!(!a||a[1]===ua[1]&&a[2]===ua[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(ua[3]||("http:"===ua[1]?"80":"443"))));t.data&&t.processData&&"string"!==typeof t.data&&(t.data=d.param(t.data,t.traditional));D(Ab,t,b,B);if(2===L)return B;(n=d.event&&t.global)&&0===d.active++&&d.event.trigger("ajaxStart");t.type=t.type.toUpperCase();
      +t.hasContent=!sc.test(t.type);g=t.url;t.hasContent||(t.data&&(g=t.url+=(db.test(g)?"\x26":"?")+t.data,delete t.data),!1===t.cache&&(t.url=yb.test(g)?g.replace(yb,"$1_\x3d"+cb++):g+(db.test(g)?"\x26":"?")+"_\x3d"+cb++));t.ifModified&&(d.lastModified[g]&&B.setRequestHeader("If-Modified-Since",d.lastModified[g]),d.etag[g]&&B.setRequestHeader("If-None-Match",d.etag[g]));(t.data&&t.hasContent&&!1!==t.contentType||b.contentType)&&B.setRequestHeader("Content-Type",t.contentType);B.setRequestHeader("Accept",
      +t.dataTypes[0]&&t.accepts[t.dataTypes[0]]?t.accepts[t.dataTypes[0]]+("*"!==t.dataTypes[0]?", "+Bb+"; q\x3d0.01":""):t.accepts["*"]);for(f in t.headers)B.setRequestHeader(f,t.headers[f]);if(t.beforeSend&&(!1===t.beforeSend.call(y,B,t)||2===L))return B.abort();r="abort";for(f in{success:1,error:1,complete:1})B[f](t[f]);if(v=D(Va,t,b,B)){B.readyState=1;n&&C.trigger("ajaxSend",[B,t]);t.async&&0<t.timeout&&(m=setTimeout(function(){B.abort("timeout")},t.timeout));try{L=1,v.send(I,c)}catch(F){if(2>L)c(-1,
      +F);else throw F;}}else c(-1,"No Transport");return B},getJSON:function(a,b,c){return d.get(a,b,c,"json")},getScript:function(a,b){return d.get(a,void 0,b,"script")}});d.each(["get","post"],function(a,b){d[b]=function(a,c,f,g){d.isFunction(c)&&(g=g||f,f=c,c=void 0);return d.ajax({url:a,type:b,dataType:g,data:c,success:f})}});d._evalUrl=function(a){return d.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})};d.fn.extend({wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,
      +b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return d.isFunction(a)?this.each(function(b){d(this).wrapInner(a.call(this,b))}):this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=d.isFunction(a);return this.each(function(c){d(this).wrapAll(b?
      +a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()}});d.expr.filters.hidden=function(a){return 0>=a.offsetWidth&&0>=a.offsetHeight||!w.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||d.css(a,"display"))};d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)};var uc=/%20/g,Nb=/\[\]$/,Cb=/\r?\n/g,vc=/^(?:submit|button|image|reset|file)$/i,wc=/^(?:input|select|textarea|keygen)/i;d.param=
      +function(a,b){var c,f=[],g=function(a,b){b=d.isFunction(b)?b():null==b?"":b;f[f.length]=encodeURIComponent(a)+"\x3d"+encodeURIComponent(b)};void 0===b&&(b=d.ajaxSettings&&d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){g(this.name,this.value)});else for(c in a)ea(c,a[c],b,g);return f.join("\x26").replace(uc,"+")};d.fn.extend({serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=d.prop(this,
      +"elements");return a?d.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!d(this).is(":disabled")&&wc.test(this.nodeName)&&!vc.test(a)&&(this.checked||!Ua.test(a))}).map(function(a,b){a=d(this).val();return null==a?null:d.isArray(a)?d.map(a,function(a){return{name:b.name,value:a.replace(Cb,"\r\n")}}):{name:b.name,value:a.replace(Cb,"\r\n")}}).get()}});d.ajaxSettings.xhr=void 0!==g.ActiveXObject?function(){var a;if(!(a=!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&
      +La()))a:{try{a=new g.ActiveXObject("Microsoft.XMLHTTP");break a}catch(b){}a=void 0}return a}:La;var xc=0,Ra={},Sa=d.ajaxSettings.xhr();g.attachEvent&&g.attachEvent("onunload",function(){for(var a in Ra)Ra[a](void 0,!0)});w.cors=!!Sa&&"withCredentials"in Sa;(Sa=w.ajax=!!Sa)&&d.ajaxTransport(function(a){if(!a.crossDomain||w.cors){var b;return{send:function(c,f){var e,g=a.xhr(),k=++xc;g.open(a.type,a.url,a.async,a.username,a.password);if(a.xhrFields)for(e in a.xhrFields)g[e]=a.xhrFields[e];a.mimeType&&
      +g.overrideMimeType&&g.overrideMimeType(a.mimeType);a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&g.setRequestHeader(e,c[e]+"");g.send(a.hasContent&&a.data||null);b=function(c,e){var h,l,m;if(b&&(e||4===g.readyState))if(delete Ra[k],b=void 0,g.onreadystatechange=d.noop,e)4!==g.readyState&&g.abort();else{m={};h=g.status;"string"===typeof g.responseText&&(m.text=g.responseText);try{l=g.statusText}catch(Mb){l=""}h||!a.isLocal||a.crossDomain?1223===
      +h&&(h=204):h=m.text?200:404}m&&f(h,l,m,g.getAllResponseHeaders())};a.async?4===g.readyState?setTimeout(b):g.onreadystatechange=Ra[k]=b:b()},abort:function(){b&&b(void 0,!0)}}}});d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){d.globalEval(a);return a}}});d.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1);a.crossDomain&&(a.type="GET",
      +a.global=!1)});d.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||d("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script");b.async=!0;a.scriptCharset&&(b.charset=a.scriptCharset);b.src=a.url;b.onload=b.onreadystatechange=function(a,d){if(d||!b.readyState||/loaded|complete/.test(b.readyState))b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,d||e(200,"success")};c.insertBefore(b,c.firstChild)},abort:function(){if(b)b.onload(void 0,
      +!0)}}}});var Db=[],eb=/(=)\?(?=&|$)|\?\?/;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Db.pop()||d.expando+"_"+cb++;this[a]=!0;return a}});d.ajaxPrefilter("json jsonp",function(a,b,c){var e,f,h,m=!1!==a.jsonp&&(eb.test(a.url)?"url":"string"===typeof a.data&&!(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&eb.test(a.data)&&"data");if(m||"jsonp"===a.dataTypes[0])return e=a.jsonpCallback=d.isFunction(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,m?a[m]=a[m].replace(eb,
      +"$1"+e):!1!==a.jsonp&&(a.url+=(db.test(a.url)?"\x26":"?")+a.jsonp+"\x3d"+e),a.converters["script json"]=function(){h||d.error(e+" was not called");return h[0]},a.dataTypes[0]="json",f=g[e],g[e]=function(){h=arguments},c.always(function(){g[e]=f;a[e]&&(a.jsonpCallback=b.jsonpCallback,Db.push(e));h&&d.isFunction(f)&&f(h[0]);h=f=void 0}),"script"});d.parseHTML=function(a,b,c){if(!a||"string"!==typeof a)return null;"boolean"===typeof b&&(c=b,b=!1);b=b||z;var e=mb.exec(a);c=!c&&[];if(e)return[b.createElement(e[1])];
      +e=d.buildFragment([a],b,c);c&&c.length&&d(c).remove();return d.merge([],e.childNodes)};var Eb=d.fn.load;d.fn.load=function(a,b,c){if("string"!==typeof a&&Eb)return Eb.apply(this,arguments);var e,f,g,h=this,m=a.indexOf(" ");0<=m&&(e=d.trim(a.slice(m,a.length)),a=a.slice(0,m));d.isFunction(b)?(c=b,b=void 0):b&&"object"===typeof b&&(g="POST");0<h.length&&d.ajax({url:a,type:g,dataType:"html",data:b}).done(function(a){f=arguments;h.html(e?d("\x3cdiv\x3e").append(d.parseHTML(a)).find(e):a)}).complete(c&&
      +function(a,b){h.each(c,f||[a.responseText,b,a])});return this};d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.on(b,a)}});d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length};var Fb=g.document.documentElement;d.offset={setOffset:function(a,b,c){var e,f,g,h=d.css(a,"position"),m=d(a),n={};"static"===h&&(a.style.position="relative");g=m.offset();f=d.css(a,"top");e=d.css(a,"left");
      +("absolute"===h||"fixed"===h)&&-1<d.inArray("auto",[f,e])?(e=m.position(),f=e.top,e=e.left):(f=parseFloat(f)||0,e=parseFloat(e)||0);d.isFunction(b)&&(b=b.call(a,c,g));null!=b.top&&(n.top=b.top-g.top+f);null!=b.left&&(n.left=b.left-g.left+e);"using"in b?b.using.call(a,n):m.css(n)}};d.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){d.offset.setOffset(this,a,b)});var b,c,f={top:0,left:0},g=(c=this[0])&&c.ownerDocument;if(g){b=g.documentElement;if(!d.contains(b,
      +c))return f;"undefined"!==typeof c.getBoundingClientRect&&(f=c.getBoundingClientRect());c=Ga(g);return{top:f.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:f.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}}},position:function(){if(this[0]){var a,b,c={top:0,left:0},f=this[0];"fixed"===d.css(f,"position")?b=f.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),d.nodeName(a[0],"html")||(c=a.offset()),c.top+=d.css(a[0],"borderTopWidth",!0),c.left+=d.css(a[0],"borderLeftWidth",
      +!0));return{top:b.top-c.top-d.css(f,"marginTop",!0),left:b.left-c.left-d.css(f,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||Fb;a&&!d.nodeName(a,"html")&&"static"===d.css(a,"position");)a=a.offsetParent;return a||Fb})}});d.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);d.fn[a]=function(e){return sa(this,function(a,e,f){var g=Ga(a);if(void 0===f)return g?b in g?g[b]:g.document.documentElement[e]:a[e];g?g.scrollTo(c?
      +d(g).scrollLeft():f,c?f:d(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}});d.each(["top","left"],function(a,b){d.cssHooks[b]=Fa(w.pixelPosition,function(a,c){if(c)return c=pa(a,b),Ja.test(c)?d(a).position()[b]+"px":c})});d.each({Height:"height",Width:"width"},function(a,b){d.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,f){d.fn[f]=function(e,f){var g=arguments.length&&(c||"boolean"!==typeof e),h=c||(!0===e||!0===f?"margin":"border");return sa(this,function(b,c,e){return d.isWindow(b)?
      +b.document.documentElement["client"+a]:9===b.nodeType?(c=b.documentElement,Math.max(b.body["scroll"+a],c["scroll"+a],b.body["offset"+a],c["offset"+a],c["client"+a])):void 0===e?d.css(b,c,h):d.style(b,c,e,h)},b,g?e:void 0,g,null)}})});d.fn.size=function(){return this.length};d.fn.andSelf=d.fn.addBack;"function"===typeof define&&define.amd&&define("jquery",[],function(){return d});var yc=g.jQuery,zc=g.$;d.noConflict=function(a){g.$===d&&(g.$=zc);a&&g.jQuery===d&&(g.jQuery=yc);return d};"undefined"===
      +typeof p&&(g.jQuery=g.$=d);return d});!function(g){g(function(){var p=g.support,x;a:{x=document.createElement("bootstrap");var c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},f;for(f in c)if(void 0!==x.style[f]){x=c[f];break a}x=void 0}p.transition=x&&{end:x}})}(window.jQuery);
      +!function(g){var p=function(c){g(c).on("click",'[data-dismiss\x3d"alert"]',this.close)};p.prototype.close=function(c){function f(){n.trigger("closed").remove()}var h=g(this),m=h.attr("data-target"),n;m||(m=(m=h.attr("href"))&&m.replace(/.*(?=#[^\s]*$)/,""));n=g(m);c&&c.preventDefault();n.length||(n=h.hasClass("alert")?h:h.parent());n.trigger(c=g.Event("close"));c.isDefaultPrevented()||(n.removeClass("in"),g.support.transition&&n.hasClass("fade")?n.on(g.support.transition.end,f):f())};var x=g.fn.alert;
      +g.fn.alert=function(c){return this.each(function(){var f=g(this),h=f.data("alert");h||f.data("alert",h=new p(this));"string"==typeof c&&h[c].call(f)})};g.fn.alert.Constructor=p;g.fn.alert.noConflict=function(){g.fn.alert=x;return this};g(document).on("click.alert.data-api",'[data-dismiss\x3d"alert"]',p.prototype.close)}(window.jQuery);
      +!function(g){var p=function(c,f){this.$element=g(c);this.options=g.extend({},g.fn.button.defaults,f)};p.prototype.setState=function(c){var f=this.$element,g=f.data(),m=f.is("input")?"val":"html";c+="Text";g.resetText||f.data("resetText",f[m]());f[m](g[c]||this.options[c]);setTimeout(function(){"loadingText"==c?f.addClass("disabled").attr("disabled","disabled"):f.removeClass("disabled").removeAttr("disabled")},0)};p.prototype.toggle=function(){var c=this.$element.closest('[data-toggle\x3d"buttons-radio"]');
      +c&&c.find(".active").removeClass("active");this.$element.toggleClass("active")};var x=g.fn.button;g.fn.button=function(c){return this.each(function(){var f=g(this),h=f.data("button"),m="object"==typeof c&&c;h||f.data("button",h=new p(this,m));"toggle"==c?h.toggle():c&&h.setState(c)})};g.fn.button.defaults={loadingText:"loading..."};g.fn.button.Constructor=p;g.fn.button.noConflict=function(){g.fn.button=x;return this};g(document).on("click.button.data-api","[data-toggle^\x3dbutton]",function(c){c=
      +g(c.target);c.hasClass("btn")||(c=c.closest(".btn"));c.button("toggle")})}(window.jQuery);
      +!function(g){var p=function(c,f){this.$element=g(c);this.$indicators=this.$element.find(".carousel-indicators");this.options=f;"hover"==this.options.pause&&this.$element.on("mouseenter",g.proxy(this.pause,this)).on("mouseleave",g.proxy(this.cycle,this))};p.prototype={cycle:function(c){c||(this.paused=!1);this.interval&&clearInterval(this.interval);this.options.interval&&!this.paused&&(this.interval=setInterval(g.proxy(this.next,this),this.options.interval));return this},getActiveIndex:function(){this.$active=
      +this.$element.find(".item.active");this.$items=this.$active.parent().children();return this.$items.index(this.$active)},to:function(c){var f=this.getActiveIndex(),h=this;if(!(c>this.$items.length-1||0>c))return this.sliding?this.$element.one("slid",function(){h.to(c)}):f==c?this.pause().cycle():this.slide(c>f?"next":"prev",g(this.$items[c]))},pause:function(c){c||(this.paused=!0);this.$element.find(".next, .prev").length&&g.support.transition.end&&(this.$element.trigger(g.support.transition.end),
      +this.cycle(!0));clearInterval(this.interval);this.interval=null;return this},next:function(){if(!this.sliding)return this.slide("next")},prev:function(){if(!this.sliding)return this.slide("prev")},slide:function(c,f){var h=this.$element.find(".item.active"),m=f||h[c]();f=this.interval;var n="next"==c?"left":"right",p="next"==c?"first":"last",r=this;this.sliding=!0;f&&this.pause();m=m.length?m:this.$element.find(".item")[p]();p=g.Event("slide",{relatedTarget:m[0],direction:n});if(!m.hasClass("active")){this.$indicators.length&&
      +(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var c=g(r.$indicators.children()[r.getActiveIndex()]);c&&c.addClass("active")}));if(g.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(p);if(p.isDefaultPrevented())return;m.addClass(c);m[0].offsetWidth;h.addClass(n);m.addClass(n);this.$element.one(g.support.transition.end,function(){m.removeClass([c,n].join(" ")).addClass("active");h.removeClass(["active",n].join(" "));r.sliding=!1;
      +setTimeout(function(){r.$element.trigger("slid")},0)})}else{this.$element.trigger(p);if(p.isDefaultPrevented())return;h.removeClass("active");m.addClass("active");this.sliding=!1;this.$element.trigger("slid")}f&&this.cycle();return this}}};var x=g.fn.carousel;g.fn.carousel=function(c){return this.each(function(){var f=g(this),h=f.data("carousel"),m=g.extend({},g.fn.carousel.defaults,"object"==typeof c&&c),n="string"==typeof c?c:m.slide;h||f.data("carousel",h=new p(this,m));if("number"==typeof c)h.to(c);
      +else if(n)h[n]();else m.interval&&h.pause().cycle()})};g.fn.carousel.defaults={interval:5E3,pause:"hover"};g.fn.carousel.Constructor=p;g.fn.carousel.noConflict=function(){g.fn.carousel=x;return this};g(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(c){var f=g(this),h,m=g(f.attr("data-target")||(h=f.attr("href"))&&h.replace(/.*(?=#[^\s]+$)/,""));h=g.extend({},m.data(),f.data());var n;m.carousel(h);(n=f.attr("data-slide-to"))&&m.data("carousel").pause().to(n).cycle();
      +c.preventDefault()})}(window.jQuery);
      +!function(g){var p=function(c,f){this.$element=g(c);this.options=g.extend({},g.fn.collapse.defaults,f);this.options.parent&&(this.$parent=g(this.options.parent));this.options.toggle&&this.toggle()};p.prototype={constructor:p,dimension:function(){return this.$element.hasClass("width")?"width":"height"},show:function(){var c,f,h,m;if(!this.transitioning&&!this.$element.hasClass("in")){c=this.dimension();f=g.camelCase(["scroll",c].join("-"));if((h=this.$parent&&this.$parent.find("\x3e .accordion-group \x3e .in"))&&h.length){if((m=
      +h.data("collapse"))&&m.transitioning)return;h.collapse("hide");m||h.data("collapse",null)}this.$element[c](0);this.transition("addClass",g.Event("show"),"shown");g.support.transition&&this.$element[c](this.$element[0][f])}},hide:function(){var c;!this.transitioning&&this.$element.hasClass("in")&&(c=this.dimension(),this.reset(this.$element[c]()),this.transition("removeClass",g.Event("hide"),"hidden"),this.$element[c](0))},reset:function(c){var f=this.dimension();this.$element.removeClass("collapse")[f](c||
      +"auto")[0].offsetWidth;this.$element[null!==c?"addClass":"removeClass"]("collapse");return this},transition:function(c,f,h){var m=this,n=function(){"show"==f.type&&m.reset();m.transitioning=0;m.$element.trigger(h)};this.$element.trigger(f);f.isDefaultPrevented()||(this.transitioning=1,this.$element[c]("in"),g.support.transition&&this.$element.hasClass("collapse")?this.$element.one(g.support.transition.end,n):n())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var x=g.fn.collapse;
      +g.fn.collapse=function(c){return this.each(function(){var f=g(this),h=f.data("collapse"),m=g.extend({},g.fn.collapse.defaults,f.data(),"object"==typeof c&&c);h||f.data("collapse",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.collapse.defaults={toggle:!0};g.fn.collapse.Constructor=p;g.fn.collapse.noConflict=function(){g.fn.collapse=x;return this};g(document).on("click.collapse.data-api","[data-toggle\x3dcollapse]",function(c){var f=g(this),h;c=f.attr("data-target")||c.preventDefault()||(h=
      +f.attr("href"))&&h.replace(/.*(?=#[^\s]+$)/,"");h=g(c).data("collapse")?"toggle":f.data();f[g(c).hasClass("in")?"addClass":"removeClass"]("collapsed");g(c).collapse(h)})}(window.jQuery);
      +!function(g){function p(){g(".dropdown-backdrop").remove();g("[data-toggle\x3ddropdown]").each(function(){x(g(this)).removeClass("open")})}function x(c){var f=c.attr("data-target");f||(f=(f=c.attr("href"))&&/#/.test(f)&&f.replace(/.*(?=#[^\s]*$)/,""));(f=f&&g(f))&&f.length||(f=c.parent());return f}var c=function(c){var f=g(c).on("click.dropdown.data-api",this.toggle);g("html").on("click.dropdown.data-api",function(){f.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(c){c=
      +g(this);var f,h;if(!c.is(".disabled, :disabled")){f=x(c);h=f.hasClass("open");p();if(!h){if("ontouchstart"in document.documentElement)g('\x3cdiv class\x3d"dropdown-backdrop"/\x3e').insertBefore(g(this)).on("click",p);f.toggleClass("open")}c.focus();return!1}},keydown:function(c){var f,h,p;if(/(38|40|27)/.test(c.keyCode)&&(f=g(this),c.preventDefault(),c.stopPropagation(),!f.is(".disabled, :disabled"))){h=x(f);p=h.hasClass("open");if(!p||p&&27==c.keyCode)return 27==c.which&&h.find("[data-toggle\x3ddropdown]").focus(),
      +f.click();f=g("[role\x3dmenu] li:not(.divider):visible a",h);f.length&&(h=f.index(f.filter(":focus")),38==c.keyCode&&0<h&&h--,40==c.keyCode&&h<f.length-1&&h++,~h||(h=0),f.eq(h).focus())}}};var f=g.fn.dropdown;g.fn.dropdown=function(f){return this.each(function(){var h=g(this),n=h.data("dropdown");n||h.data("dropdown",n=new c(this));"string"==typeof f&&n[f].call(h)})};g.fn.dropdown.Constructor=c;g.fn.dropdown.noConflict=function(){g.fn.dropdown=f;return this};g(document).on("click.dropdown.data-api",
      +p).on("click.dropdown.data-api",".dropdown form",function(c){c.stopPropagation()}).on("click.dropdown.data-api","[data-toggle\x3ddropdown]",c.prototype.toggle).on("keydown.dropdown.data-api","[data-toggle\x3ddropdown], [role\x3dmenu]",c.prototype.keydown)}(window.jQuery);
      +!function(g){var p=function(c,f){this.options=f;this.$element=g(c).delegate('[data-dismiss\x3d"modal"]',"click.dismiss.modal",g.proxy(this.hide,this));this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};p.prototype={constructor:p,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var c=this,f=g.Event("show");this.$element.trigger(f);this.isShown||f.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var f=g.support.transition&&
      +c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body);c.$element.show();f&&c.$element[0].offsetWidth;c.$element.addClass("in").attr("aria-hidden",!1);c.enforceFocus();f?c.$element.one(g.support.transition.end,function(){c.$element.focus().trigger("shown")}):c.$element.focus().trigger("shown")}))},hide:function(c){c&&c.preventDefault();c=g.Event("hide");this.$element.trigger(c);this.isShown&&!c.isDefaultPrevented()&&(this.isShown=!1,this.escape(),g(document).off("focusin.modal"),
      +this.$element.removeClass("in").attr("aria-hidden",!0),g.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var c=this;g(document).on("focusin.modal",function(f){c.$element[0]===f.target||c.$element.has(f.target).length||c.$element.focus()})},escape:function(){var c=this;if(this.isShown&&this.options.keyboard)this.$element.on("keyup.dismiss.modal",function(f){27==f.which&&c.hide()});else this.isShown||this.$element.off("keyup.dismiss.modal")},
      +hideWithTransition:function(){var c=this,f=setTimeout(function(){c.$element.off(g.support.transition.end);c.hideModal()},500);this.$element.one(g.support.transition.end,function(){clearTimeout(f);c.hideModal()})},hideModal:function(){var c=this;this.$element.hide();this.backdrop(function(){c.removeBackdrop();c.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove();this.$backdrop=null},backdrop:function(c){var f=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&
      +this.options.backdrop){var h=g.support.transition&&f;this.$backdrop=g('\x3cdiv class\x3d"modal-backdrop '+f+'" /\x3e').appendTo(document.body);this.$backdrop.click("static"==this.options.backdrop?g.proxy(this.$element[0].focus,this.$element[0]):g.proxy(this.hide,this));h&&this.$backdrop[0].offsetWidth;this.$backdrop.addClass("in");c&&(h?this.$backdrop.one(g.support.transition.end,c):c())}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),g.support.transition&&this.$element.hasClass("fade")?
      +this.$backdrop.one(g.support.transition.end,c):c()):c&&c()}};var x=g.fn.modal;g.fn.modal=function(c){return this.each(function(){var f=g(this),h=f.data("modal"),m=g.extend({},g.fn.modal.defaults,f.data(),"object"==typeof c&&c);h||f.data("modal",h=new p(this,m));if("string"==typeof c)h[c]();else m.show&&h.show()})};g.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0};g.fn.modal.Constructor=p;g.fn.modal.noConflict=function(){g.fn.modal=x;return this};g(document).on("click.modal.data-api",'[data-toggle\x3d"modal"]',
      +function(c){var f=g(this),h=f.attr("href"),m=g(f.attr("data-target")||h&&h.replace(/.*(?=#[^\s]+$)/,"")),h=m.data("modal")?"toggle":g.extend({remote:!/#/.test(h)&&h},m.data(),f.data());c.preventDefault();m.modal(h).one("hide",function(){f.focus()})})}(window.jQuery);
      +!function(g){var p=function(c,f){this.init("tooltip",c,f)};p.prototype={constructor:p,init:function(c,f,h){var m;this.type=c;this.$element=g(f);this.options=this.getOptions(h);this.enabled=!0;f=this.options.trigger.split(" ");for(h=f.length;h--;)if(m=f[h],"click"==m)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else"manual"!=m&&(c="hover"==m?"mouseenter":"focus",m="hover"==m?"mouseleave":"blur",this.$element.on(c+"."+this.type,this.options.selector,g.proxy(this.enter,
      +this)),this.$element.on(m+"."+this.type,this.options.selector,g.proxy(this.leave,this)));this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(c){c=g.extend({},g.fn[this.type].defaults,this.$element.data(),c);c.delay&&"number"==typeof c.delay&&(c.delay={show:c.delay,hide:c.delay});return c},enter:function(c){var f=g.fn[this.type].defaults,h={},m;this._options&&g.each(this._options,function(c,g){f[c]!=g&&(h[c]=g)},this);m=
      +g(c.currentTarget)[this.type](h).data(this.type);if(!m.options.delay||!m.options.delay.show)return m.show();clearTimeout(this.timeout);m.hoverState="in";this.timeout=setTimeout(function(){"in"==m.hoverState&&m.show()},m.options.delay.show)},leave:function(c){var f=g(c.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!f.options.delay||!f.options.delay.hide)return f.hide();f.hoverState="out";this.timeout=setTimeout(function(){"out"==f.hoverState&&
      +f.hide()},f.options.delay.hide)},show:function(){var c,f,h,m,n;f=g.Event("show");if(this.hasContent()&&this.enabled&&(this.$element.trigger(f),!f.isDefaultPrevented())){c=this.tip();this.setContent();this.options.animation&&c.addClass("fade");m="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement;c.detach().css({top:0,left:0,display:"block"});this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);f=
      +this.getPosition();h=c[0].offsetWidth;c=c[0].offsetHeight;switch(m){case "bottom":n={top:f.top+f.height,left:f.left+f.width/2-h/2};break;case "top":n={top:f.top-c,left:f.left+f.width/2-h/2};break;case "left":n={top:f.top+f.height/2-c/2,left:f.left-h};break;case "right":n={top:f.top+f.height/2-c/2,left:f.left+f.width}}this.applyPlacement(n,m);this.$element.trigger("shown")}},applyPlacement:function(c,f){var g=this.tip(),m=g[0].offsetWidth,n=g[0].offsetHeight,p,r,x;g.offset(c).addClass(f).addClass("in");
      +p=g[0].offsetWidth;r=g[0].offsetHeight;"top"==f&&r!=n&&(c.top=c.top+n-r,x=!0);"bottom"==f||"top"==f?(f=0,0>c.left&&(f=-2*c.left,c.left=0,g.offset(c),p=g[0].offsetWidth),this.replaceArrow(f-m+p,p,"left")):this.replaceArrow(r-n,r,"top");x&&g.offset(c)},replaceArrow:function(c,f,g){this.arrow().css(g,c?50*(1-c/f)+"%":"")},setContent:function(){var c=this.tip(),f=this.getTitle();c.find(".tooltip-inner")[this.options.html?"html":"text"](f);c.removeClass("fade in top bottom left right")},hide:function(){function c(){var c=
      +setTimeout(function(){f.off(g.support.transition.end).detach()},500);f.one(g.support.transition.end,function(){clearTimeout(c);f.detach()})}var f=this.tip(),h=g.Event("hide");this.$element.trigger(h);if(!h.isDefaultPrevented())return f.removeClass("in"),g.support.transition&&this.$tip.hasClass("fade")?c():f.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var c=this.$element;(c.attr("title")||"string"!=typeof c.attr("data-original-title"))&&c.attr("data-original-title",c.attr("title")||
      +"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var c=this.$element[0];return g.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():{width:c.offsetWidth,height:c.offsetHeight},this.$element.offset())},getTitle:function(){var c=this.$element,f=this.options;return c.attr("data-original-title")||("function"==typeof f.title?f.title.call(c[0]):f.title)},tip:function(){return this.$tip=this.$tip||g(this.options.template)},arrow:function(){return this.$arrow=
      +this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(c){c=c?g(c.currentTarget)[this.type](this._options).data(this.type):this;c.tip().hasClass("in")?c.hide():c.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var x=g.fn.tooltip;
      +g.fn.tooltip=function(c){return this.each(function(){var f=g(this),h=f.data("tooltip"),m="object"==typeof c&&c;h||f.data("tooltip",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.tooltip.Constructor=p;g.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'\x3cdiv class\x3d"tooltip"\x3e\x3cdiv class\x3d"tooltip-arrow"\x3e\x3c/div\x3e\x3cdiv class\x3d"tooltip-inner"\x3e\x3c/div\x3e\x3c/div\x3e',trigger:"hover focus",title:"",delay:0,html:!1,container:!1};g.fn.tooltip.noConflict=
      +function(){g.fn.tooltip=x;return this}}(window.jQuery);
      +!function(g){var p=function(c,f){this.init("popover",c,f)};p.prototype=g.extend({},g.fn.tooltip.Constructor.prototype,{constructor:p,setContent:function(){var c=this.tip(),f=this.getTitle(),g=this.getContent();c.find(".popover-title")[this.options.html?"html":"text"](f);c.find(".popover-content")[this.options.html?"html":"text"](g);c.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var c=this.$element,f=this.options;
      +return("function"==typeof f.content?f.content.call(c[0]):f.content)||c.attr("data-content")},tip:function(){this.$tip||(this.$tip=g(this.options.template));return this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var x=g.fn.popover;g.fn.popover=function(c){return this.each(function(){var f=g(this),h=f.data("popover"),m="object"==typeof c&&c;h||f.data("popover",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.popover.Constructor=p;g.fn.popover.defaults=
      +g.extend({},g.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'\x3cdiv class\x3d"popover"\x3e\x3cdiv class\x3d"arrow"\x3e\x3c/div\x3e\x3ch3 class\x3d"popover-title"\x3e\x3c/h3\x3e\x3cdiv class\x3d"popover-content"\x3e\x3c/div\x3e\x3c/div\x3e'});g.fn.popover.noConflict=function(){g.fn.popover=x;return this}}(window.jQuery);
      +!function(g){function p(c,f){var h=g.proxy(this.process,this),m=g(c).is("body")?g(window):g(c),n;this.options=g.extend({},g.fn.scrollspy.defaults,f);this.$scrollElement=m.on("scroll.scroll-spy.data-api",h);this.selector=(this.options.target||(n=g(c).attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li \x3e a";this.$body=g("body");this.refresh();this.process()}p.prototype={constructor:p,refresh:function(){var c=this;this.offsets=g([]);this.targets=g([]);this.$body.find(this.selector).map(function(){var f=
      +g(this),f=f.data("target")||f.attr("href"),h=/^#\w/.test(f)&&g(f);return h&&h.length&&[[h.position().top+(!g.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),f]]||null}).sort(function(c,g){return c[0]-g[0]}).each(function(){c.offsets.push(this[0]);c.targets.push(this[1])})},process:function(){var c=this.$scrollElement.scrollTop()+this.options.offset,f=(this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight)-this.$scrollElement.height(),g=this.offsets,m=this.targets,n=this.activeTarget,
      +p;if(c>=f)return n!=(p=m.last()[0])&&this.activate(p);for(p=g.length;p--;)n!=m[p]&&c>=g[p]&&(!g[p+1]||c<=g[p+1])&&this.activate(m[p])},activate:function(c){this.activeTarget=c;g(this.selector).parent(".active").removeClass("active");c=g(this.selector+'[data-target\x3d"'+c+'"],'+this.selector+'[href\x3d"'+c+'"]').parent("li").addClass("active");c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active"));c.trigger("activate")}};var x=g.fn.scrollspy;g.fn.scrollspy=function(c){return this.each(function(){var f=
      +g(this),h=f.data("scrollspy"),m="object"==typeof c&&c;h||f.data("scrollspy",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.scrollspy.Constructor=p;g.fn.scrollspy.defaults={offset:10};g.fn.scrollspy.noConflict=function(){g.fn.scrollspy=x;return this};g(window).on("load",function(){g('[data-spy\x3d"scroll"]').each(function(){var c=g(this);c.scrollspy(c.data())})})}(window.jQuery);
      +!function(g){var p=function(c){this.element=g(c)};p.prototype={constructor:p,show:function(){var c=this.element,f=c.closest("ul:not(.dropdown-menu)"),h=c.attr("data-target"),m,n;h||(h=(h=c.attr("href"))&&h.replace(/.*(?=#[^\s]*$)/,""));c.parent("li").hasClass("active")||(m=f.find(".active:last a")[0],n=g.Event("show",{relatedTarget:m}),c.trigger(n),n.isDefaultPrevented()||(h=g(h),this.activate(c.parent("li"),f),this.activate(h,h.parent(),function(){c.trigger({type:"shown",relatedTarget:m})})))},activate:function(c,
      +f,h){function m(){n.removeClass("active").find("\x3e .dropdown-menu \x3e .active").removeClass("active");c.addClass("active");p?(c[0].offsetWidth,c.addClass("in")):c.removeClass("fade");c.parent(".dropdown-menu")&&c.closest("li.dropdown").addClass("active");h&&h()}var n=f.find("\x3e .active"),p=h&&g.support.transition&&n.hasClass("fade");p?n.one(g.support.transition.end,m):m();n.removeClass("in")}};var x=g.fn.tab;g.fn.tab=function(c){return this.each(function(){var f=g(this),h=f.data("tab");h||f.data("tab",
      +h=new p(this));if("string"==typeof c)h[c]()})};g.fn.tab.Constructor=p;g.fn.tab.noConflict=function(){g.fn.tab=x;return this};g(document).on("click.tab.data-api",'[data-toggle\x3d"tab"], [data-toggle\x3d"pill"]',function(c){c.preventDefault();g(this).tab("show")})}(window.jQuery);
      +!function(g){var p=function(c,f){this.$element=g(c);this.options=g.extend({},g.fn.typeahead.defaults,f);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.source=this.options.source;this.$menu=g(this.options.menu);this.shown=!1;this.listen()};p.prototype={constructor:p,select:function(){var c=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(c)).change();
      +return this.hide()},updater:function(c){return c},show:function(){var c=g.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});this.$menu.insertAfter(this.$element).css({top:c.top+c.height,left:c.left}).show();this.shown=!0;return this},hide:function(){this.$menu.hide();this.shown=!1;return this},lookup:function(c){this.query=this.$element.val();return!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(c=g.isFunction(this.source)?this.source(this.query,
      +g.proxy(this.process,this)):this.source)?this.process(c):this},process:function(c){var f=this;c=g.grep(c,function(c){return f.matcher(c)});c=this.sorter(c);return c.length?this.render(c.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(c){return~c.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(c){for(var f=[],g=[],m=[],n;n=c.shift();)n.toLowerCase().indexOf(this.query.toLowerCase())?~n.indexOf(this.query)?g.push(n):m.push(n):f.push(n);return f.concat(g,
      +m)},highlighter:function(c){var f=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$\x26");return c.replace(new RegExp("("+f+")","ig"),function(c,f){return"\x3cstrong\x3e"+f+"\x3c/strong\x3e"})},render:function(c){var f=this;c=g(c).map(function(c,m){c=g(f.options.item).attr("data-value",m);c.find("a").html(f.highlighter(m));return c[0]});c.first().addClass("active");this.$menu.html(c);return this},next:function(c){c=this.$menu.find(".active").removeClass("active").next();c.length||(c=g(this.$menu.find("li")[0]));
      +c.addClass("active")},prev:function(c){c=this.$menu.find(".active").removeClass("active").prev();c.length||(c=this.$menu.find("li").last());c.addClass("active")},listen:function(){this.$element.on("focus",g.proxy(this.focus,this)).on("blur",g.proxy(this.blur,this)).on("keypress",g.proxy(this.keypress,this)).on("keyup",g.proxy(this.keyup,this));if(this.eventSupported("keydown"))this.$element.on("keydown",g.proxy(this.keydown,this));this.$menu.on("click",g.proxy(this.click,this)).on("mouseenter","li",
      +g.proxy(this.mouseenter,this)).on("mouseleave","li",g.proxy(this.mouseleave,this))},eventSupported:function(c){var f=c in this.$element;f||(this.$element.setAttribute(c,"return;"),f="function"===typeof this.$element[c]);return f},move:function(c){if(this.shown){switch(c.keyCode){case 9:case 13:case 27:c.preventDefault();break;case 38:c.preventDefault();this.prev();break;case 40:c.preventDefault(),this.next()}c.stopPropagation()}},keydown:function(c){this.suppressKeyPressRepeat=~g.inArray(c.keyCode,
      +[40,38,9,13,27]);this.move(c)},keypress:function(c){this.suppressKeyPressRepeat||this.move(c)},keyup:function(c){switch(c.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}c.stopPropagation();c.preventDefault()},focus:function(c){this.focused=!0},blur:function(c){this.focused=!1;!this.mousedover&&this.shown&&this.hide()},click:function(c){c.stopPropagation();c.preventDefault();
      +this.select();this.$element.focus()},mouseenter:function(c){this.mousedover=!0;this.$menu.find(".active").removeClass("active");g(c.currentTarget).addClass("active")},mouseleave:function(c){this.mousedover=!1;!this.focused&&this.shown&&this.hide()}};var x=g.fn.typeahead;g.fn.typeahead=function(c){return this.each(function(){var f=g(this),h=f.data("typeahead"),m="object"==typeof c&&c;h||f.data("typeahead",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.typeahead.defaults={source:[],items:8,menu:'\x3cul class\x3d"typeahead dropdown-menu"\x3e\x3c/ul\x3e',
      +item:'\x3cli\x3e\x3ca href\x3d"#"\x3e\x3c/a\x3e\x3c/li\x3e',minLength:1};g.fn.typeahead.Constructor=p;g.fn.typeahead.noConflict=function(){g.fn.typeahead=x;return this};g(document).on("focus.typeahead.data-api",'[data-provide\x3d"typeahead"]',function(c){c=g(this);c.data("typeahead")||c.typeahead(c.data())})}(window.jQuery);
      +!function(g){var p=function(c,f){this.options=g.extend({},g.fn.affix.defaults,f);this.$window=g(window).on("scroll.affix.data-api",g.proxy(this.checkPosition,this)).on("click.affix.data-api",g.proxy(function(){setTimeout(g.proxy(this.checkPosition,this),1)},this));this.$element=g(c);this.checkPosition()};p.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=g(document).height(),f=this.$window.scrollTop(),h=this.$element.offset(),m=this.options.offset,n=m.bottom,p=m.top;"object"!=
      +typeof m&&(n=p=m);"function"==typeof p&&(p=m.top());"function"==typeof n&&(n=m.bottom());c=null!=this.unpin&&f+this.unpin<=h.top?!1:null!=n&&h.top+this.$element.height()>=c-n?"bottom":null!=p&&f<=p?"top":!1;this.affixed!==c&&(this.affixed=c,this.unpin="bottom"==c?h.top-f:null,this.$element.removeClass("affix affix-top affix-bottom").addClass("affix"+(c?"-"+c:"")))}};var x=g.fn.affix;g.fn.affix=function(c){return this.each(function(){var f=g(this),h=f.data("affix"),m="object"==typeof c&&c;h||f.data("affix",
      +h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.affix.Constructor=p;g.fn.affix.defaults={offset:0};g.fn.affix.noConflict=function(){g.fn.affix=x;return this};g(window).on("load",function(){g('[data-spy\x3d"affix"]').each(function(){var c=g(this),f=c.data();f.offset=f.offset||{};f.offsetBottom&&(f.offset.bottom=f.offsetBottom);f.offsetTop&&(f.offset.top=f.offsetTop);c.affix(f)})})}(window.jQuery);var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
      +(function(){function g(c){function f(c){var f=c.charCodeAt(0);if(92!==f)return f;var g=c.charAt(1);return(f=H[g])?f:"0"<=g&&"7">=g?parseInt(c.substring(1),8):"u"===g||"x"===g?parseInt(c.substring(2),16):c.charCodeAt(1)}function g(c){if(32>c)return(16>c?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if("\\"===c||"-"===c||"["===c||"]"===c)c="\\"+c;return c}function h(c){var h=c.substring(1,c.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g);c=
      +[];for(var m=[],n="^"===h[0],p=n?1:0,v=h.length;p<v;++p){var A=h[p];if(/\\[bdsw]/i.test(A))c.push(A);else{var A=f(A),r;p+2<v&&"-"===h[p+1]?(r=f(h[p+2]),p+=2):r=A;m.push([A,r]);65>r||122<A||(65>r||90<A||m.push([Math.max(65,A)|32,Math.min(r,90)|32]),97>r||122<A||m.push([Math.max(97,A)&-33,Math.min(r,122)&-33]))}}m.sort(function(c,f){return c[0]-f[0]||f[1]-c[1]});h=[];A=[NaN,NaN];for(p=0;p<m.length;++p)v=m[p],v[0]<=A[1]+1?A[1]=Math.max(A[1],v[1]):h.push(A=v);m=["["];n&&m.push("^");m.push.apply(m,c);
      +for(p=0;p<h.length;++p)v=h[p],m.push(g(v[0])),v[1]>v[0]&&(v[1]+1>v[0]&&m.push("-"),m.push(g(v[1])));m.push("]");return m.join("")}function m(c){for(var f=c.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),g=f.length,m=[],v=0,A=0;v<g;++v){var r=f[v];"("===r?++A:"\\"===r.charAt(0)&&(r=+r.substring(1))&&r<=A&&(m[r]=-1)}for(v=1;v<m.length;++v)-1===m[v]&&(m[v]=++n);for(A=v=0;v<g;++v)r=f[v],"("===r?(++A,void 0===m[A]&&(f[v]="(?:")):"\\"===
      +r.charAt(0)&&(r=+r.substring(1))&&r<=A&&(f[v]="\\"+m[A]);for(A=v=0;v<g;++v)"^"===f[v]&&"^"!==f[v+1]&&(f[v]="");if(c.ignoreCase&&p)for(v=0;v<g;++v)r=f[v],c=r.charAt(0),2<=r.length&&"["===c?f[v]=h(r):"\\"!==c&&(f[v]=r.replace(/[A-Za-z]/g,function(c){c=c.charCodeAt(0);return"["+String.fromCharCode(c&-33,c|32)+"]"}));return f.join("")}for(var n=0,p=!1,r=!1,A=0,x=c.length;A<x;++A){var U=c[A];if(U.ignoreCase)r=!0;else if(/[a-z]/i.test(U.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){p=!0;
      +r=!1;break}}for(var H={b:8,t:9,n:10,v:11,f:12,r:13},J=[],A=0,x=c.length;A<x;++A){U=c[A];if(U.global||U.multiline)throw Error(""+U);J.push("(?:"+m(U)+")")}return RegExp(J.join("|"),r?"gi":"g")}function p(c){function f(c){switch(c.nodeType){case 1:if(g.test(c.className))break;for(var r=c.firstChild;r;r=r.nextSibling)f(r);r=c.nodeName;if("BR"===r||"LI"===r)h[n]="\n",p[n<<1]=m++,p[n++<<1|1]=c;break;case 3:case 4:r=c.nodeValue,r.length&&(r=A?r.replace(/\r\n?/g,"\n"):r.replace(/[\t\n\r ]+/g," "),h[n]=r,
      +p[n<<1]=m,m+=r.length,p[n++<<1|1]=c)}}var g=/(?:^|\s)nocode(?:\s|$)/,h=[],m=0,p=[],n=0,r;c.currentStyle?r=c.currentStyle.whiteSpace:window.getComputedStyle&&(r=document.defaultView.getComputedStyle(c,q).getPropertyValue("white-space"));var A=r&&"pre"===r.substring(0,3);f(c);return{a:h.join("").replace(/\n$/,""),c:p}}function x(c,f,g,h){f&&(c={a:f,d:c},g(c),h.push.apply(h,c.e))}function c(c,f){function h(c){for(var g=c.d,A=[g,"pln"],I=0,P=c.a.match(p)||[],H={},J=0,v=P.length;J<v;++J){var R=P[J],y=
      +H[R],G=void 0,C;if("string"===typeof y)C=!1;else{var D=m[R.charAt(0)];if(D)G=R.match(D[1]),y=D[0];else{for(C=0;C<r;++C)if(D=f[C],G=R.match(D[1])){y=D[0];break}G||(y="pln")}!(C=5<=y.length&&"lang-"===y.substring(0,5))||G&&"string"===typeof G[1]||(C=!1,y="src");C||(H[R]=y)}D=I;I+=R.length;if(C){C=G[1];var L=R.indexOf(C),E=L+C.length;G[2]&&(E=R.length-G[2].length,L=E-C.length);y=y.substring(5);x(g+D,R.substring(0,L),h,A);x(g+D+L,C,n(y,C),A);x(g+D+E,R.substring(E),h,A)}else A.push(g+D,y)}c.e=A}var m=
      +{},p;(function(){for(var h=c.concat(f),n=[],r={},A=0,I=h.length;A<I;++A){var x=h[A],P=x[3];if(P)for(var v=P.length;0<=--v;)m[P.charAt(v)]=x;x=x[1];P=""+x;r.hasOwnProperty(P)||(n.push(x),r[P]=q)}n.push(/[\S\s]/);p=g(n)})();var r=f.length;return h}function f(f){var g=[],h=[];f.tripleQuotedStrings?g.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):f.multiLineStrings?g.push(["str",
      +/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):g.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);f.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var m=f.hashComments;m&&(f.cStyleComments?(1<m?g.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):g.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
      +q])):g.push(["com",/^#[^\n\r]*/,q,"#"]));f.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,q]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));f.regexLiterals&&h.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(m=f.types)&&
      +h.push(["typ",m]);f=(""+f.keywords).replace(/^ | $/g,"");f.length&&h.push(["kwd",RegExp("^(?:"+f.replace(/[\s,]+/g,"|")+")\\b"),q]);g.push(["pln",/^\s+/,q," \r\n\t "]);h.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return c(g,h)}function h(c,f){function g(c){switch(c.nodeType){case 1:if(m.test(c.className))break;
      +if("BR"===c.nodeName)h(c),c.parentNode&&c.parentNode.removeChild(c);else for(c=c.firstChild;c;c=c.nextSibling)g(c);break;case 3:case 4:if(A){var f=c.nodeValue,r=f.match(p);if(r){var v=f.substring(0,r.index);c.nodeValue=v;(f=f.substring(r.index+r[0].length))&&c.parentNode.insertBefore(n.createTextNode(f),c.nextSibling);h(c);v||c.parentNode.removeChild(c)}}}}function h(c){function f(c,g){g=g?c.cloneNode(!1):c;var h=c.parentNode;if(h){h=f(h,1);c=c.nextSibling;h.appendChild(g);for(var m=c;m;m=c)c=m.nextSibling,
      +h.appendChild(m)}return g}for(;!c.nextSibling;)if(c=c.parentNode,!c)return;c=f(c.nextSibling,0);for(var g;(g=c.parentNode)&&1===g.nodeType;)c=g;x.push(c)}var m=/(?:^|\s)nocode(?:\s|$)/,p=/\r\n?|\n/,n=c.ownerDocument,r;c.currentStyle?r=c.currentStyle.whiteSpace:window.getComputedStyle&&(r=n.defaultView.getComputedStyle(c,q).getPropertyValue("white-space"));var A=r&&"pre"===r.substring(0,3);for(r=n.createElement("LI");c.firstChild;)r.appendChild(c.firstChild);for(var x=[r],E=0;E<x.length;++E)g(x[E]);
      +f===(f|0)&&x[0].setAttribute("value",f);var H=n.createElement("OL");H.className="linenums";f=Math.max(0,f-1|0)||0;for(var E=0,J=x.length;E<J;++E)r=x[E],r.className="L"+(E+f)%10,r.firstChild||r.appendChild(n.createTextNode(" ")),H.appendChild(r);c.appendChild(H)}function m(c,f){for(var g=f.length;0<=--g;){var h=f[g];ia.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):ia[h]=c}}function n(c,f){c&&ia.hasOwnProperty(c)||(c=/^\s*</.test(f)?"default-markup":"default-code");
      +return ia[c]}function W(c){var f=c.g;try{var g=p(c.h),h=g.a;c.a=h;c.c=g.c;c.d=0;n(f,h)(c);var m=/\bMSIE\b/.test(navigator.userAgent),f=/\n/g,r=c.a,x=r.length,g=0,A=c.c,E=A.length,h=0,S=c.e,U=S.length;c=0;S[U]=x;var H,J;for(J=H=0;J<U;)S[J]!==S[J+2]?(S[H++]=S[J++],S[H++]=S[J++]):J+=2;U=H;for(J=H=0;J<U;){for(var v=S[J],N=S[J+1],y=J+2;y+2<=U&&S[y+1]===N;)y+=2;S[H++]=v;S[H++]=N;J=y}for(S.length=H;h<E;){var G=A[h+2]||x,C=S[c+2]||x,y=Math.min(G,C),D=A[h+1],L;if(1!==D.nodeType&&(L=r.substring(g,y))){m&&(L=
      +L.replace(f,"\r"));D.nodeValue=L;var V=D.ownerDocument,W=V.createElement("SPAN");W.className=S[c+1];var aa=D.parentNode;aa.replaceChild(W,D);W.appendChild(D);g<G&&(A[h+1]=D=V.createTextNode(r.substring(y,G)),aa.insertBefore(D,W.nextSibling))}g=y;g>=G&&(h+=2);g>=C&&(c+=2)}}catch(Z){"console"in window&&console.log(Z&&Z.stack?Z.stack:Z)}}var r=["break,continue,do,else,for,if,return,while"],E=[[r,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
      +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],fa=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],aa=[E,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
      +V=[aa,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],ha=[r,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
      +Aa=[r,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],r=[r,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],N=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,Ta=/\S/,Ia=f({keywords:[fa,V,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
      +ha,Aa,r],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),ia={};m(Ia,["default-code"]);m(c([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
      +"default-markup htm html mxml xhtml xml xsl".split(" "));m(c([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
      +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);m(c([],[["atv",/^[\S\s]+/]]),["uq.val"]);m(f({keywords:fa,hashComments:!0,cStyleComments:!0,types:N}),"c cc cpp cxx cyc m".split(" "));m(f({keywords:"null,true,false"}),["json"]);m(f({keywords:V,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:N}),["cs"]);m(f({keywords:aa,cStyleComments:!0}),["java"]);m(f({keywords:r,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);m(f({keywords:ha,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
      +["cv","py"]);m(f({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);m(f({keywords:Aa,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);m(f({keywords:E,cStyleComments:!0,regexLiterals:!0}),["js"]);m(f({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
      +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);m(c([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(c,f,g){var m=document.createElement("PRE");m.innerHTML=c;g&&h(m,g);W({g:f,i:g,h:m});return m.innerHTML};window.prettyPrint=function(c){function f(){for(var g=window.PR_SHOULD_USE_CONTINUATION?x.now()+250:Infinity;A<m.length&&x.now()<g;A++){var n=m[A],p=n.className;if(0<=p.indexOf("prettyprint")){var p=p.match(N),r,y;if(y=
      +!p){y=n;for(var G=void 0,C=y.firstChild;C;C=C.nextSibling)var D=C.nodeType,G=1===D?G?y:C:3===D?Ta.test(C.nodeValue)?y:G:G;y=(r=G===y?void 0:G)&&"CODE"===r.tagName}y&&(p=r.className.match(N));p&&(p=p[1]);y=!1;for(G=n.parentNode;G;G=G.parentNode)if(("pre"===G.tagName||"code"===G.tagName||"xmp"===G.tagName)&&G.className&&0<=G.className.indexOf("prettyprint")){y=!0;break}y||((y=(y=n.className.match(/\blinenums\b(?::(\d+))?/))?y[1]&&y[1].length?+y[1]:!0:!1)&&h(n,y),E={g:p,h:n,i:y},W(E))}}A<m.length?setTimeout(f,
      +250):c&&c()}for(var g=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],m=[],n=0;n<g.length;++n)for(var p=0,r=g[n].length;p<r;++p)m.push(g[n][p]);var g=q,x=Date;x.now||(x={now:function(){return+new Date}});var A=0,E,N=/\blang(?:uage)?-([\w.]+)(?!\S)/;f()};window.PR={createSimpleLexer:c,registerLangHandler:m,sourceDecorator:f,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
      +PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();jQuery(document).ready(function(){$(".topbar").dropdown();prettyPrint()});function asyncJs(g){var p=document.createElement("script"),x=document.getElementsByTagName("script")[0];p.type="text/javascript";p.async=!0;p.src=g;x.parentNode.insertBefore(p,x)}
      +(function(g,p){"function"===typeof define&&define.amd?define([],p):"object"===typeof module&&module.exports?module.exports=p():(g.AnchorJS=p(),g.anchors=new g.AnchorJS)})(this,function(){return function(g){function p(c){c.icon=Object.prototype.hasOwnProperty.call(c,"icon")?c.icon:"";c.visible=Object.prototype.hasOwnProperty.call(c,"visible")?c.visible:"hover";c.placement=Object.prototype.hasOwnProperty.call(c,"placement")?c.placement:"right";c.ariaLabel=Object.prototype.hasOwnProperty.call(c,"ariaLabel")?
      +c.ariaLabel:"Anchor";c.class=Object.prototype.hasOwnProperty.call(c,"class")?c.class:"";c.base=Object.prototype.hasOwnProperty.call(c,"base")?c.base:"";c.truncate=Object.prototype.hasOwnProperty.call(c,"truncate")?Math.floor(c.truncate):64;c.titleText=Object.prototype.hasOwnProperty.call(c,"titleText")?c.titleText:""}function x(c){if("string"===typeof c||c instanceof String)c=[].slice.call(document.querySelectorAll(c));else if(Array.isArray(c)||c instanceof NodeList)c=[].slice.call(c);else throw new TypeError("The selector provided to AnchorJS was invalid.");
      +return c}function c(){if(null===document.head.querySelector("style.anchorjs")){var c=document.createElement("style"),g;c.className="anchorjs";c.appendChild(document.createTextNode(""));g=document.head.querySelector('[rel\x3d"stylesheet"],style');void 0===g?document.head.appendChild(c):document.head.insertBefore(c,g);c.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",c.sheet.cssRules.length);c.sheet.insertRule(":hover\x3e.anchorjs-link,.anchorjs-link:focus{opacity:1}",
      +c.sheet.cssRules.length);c.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",c.sheet.cssRules.length);c.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',
      +c.sheet.cssRules.length)}}this.options=g||{};this.elements=[];p(this.options);this.isTouchDevice=function(){return!!("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)};this.add=function(f){var g,m,n,W,r,E,fa,aa=[];p(this.options);fa=this.options.visible;"touch"===fa&&(fa=this.isTouchDevice()?"always":"hover");f||(f="h2, h3, h4, h5, h6");f=x(f);if(0===f.length)return this;c();g=document.querySelectorAll("[id]");g=[].map.call(g,function(c){return c.id});
      +for(n=0;n<f.length;n++)if(this.hasAnchorJSLink(f[n]))aa.push(n);else{if(f[n].hasAttribute("id"))m=f[n].getAttribute("id");else if(f[n].hasAttribute("data-anchor-id"))m=f[n].getAttribute("data-anchor-id");else{E=r=this.urlify(f[n].textContent);m=0;do void 0!==W&&(E=r+"-"+m),W=g.indexOf(E),m+=1;while(-1!==W);W=void 0;g.push(E);f[n].setAttribute("id",E);m=E}r=document.createElement("a");r.className="anchorjs-link "+this.options.class;r.setAttribute("aria-label",this.options.ariaLabel);r.setAttribute("data-anchorjs-icon",
      +this.options.icon);this.options.titleText&&(r.title=this.options.titleText);E=document.querySelector("base")?window.location.pathname+window.location.search:"";E=this.options.base||E;r.href=E+"#"+m;"always"===fa&&(r.style.opacity="1");""===this.options.icon&&(r.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(r.style.lineHeight="inherit"));"left"===this.options.placement?(r.style.position="absolute",r.style.marginLeft="-1em",r.style.paddingRight=".5em",f[n].insertBefore(r,f[n].firstChild)):
      +(r.style.paddingLeft=".375em",f[n].appendChild(r))}for(n=0;n<aa.length;n++)f.splice(aa[n]-n,1);this.elements=this.elements.concat(f);return this};this.remove=function(c){for(var f,g=x(c),n=0;n<g.length;n++)if(f=g[n].querySelector(".anchorjs-link"))c=this.elements.indexOf(g[n]),-1!==c&&this.elements.splice(c,1),g[n].removeChild(f);return this};this.removeAll=function(){this.remove(this.elements)};this.urlify=function(c){var f=document.createElement("textarea");f.innerHTML=c;c=f.value;this.options.truncate||
      +p(this.options);return c.trim().replace(/'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()};this.hasAnchorJSLink=function(c){var f=c.firstChild&&-1<(" "+c.firstChild.className+" ").indexOf(" anchorjs-link ");c=c.lastChild&&-1<(" "+c.lastChild.className+" ").indexOf(" anchorjs-link ");return f||c||!1}}});
      \ No newline at end of file
      diff --git a/waffle-tomcat10/licenses.html b/waffle-tomcat10/licenses.html
      new file mode 100644
      index 0000000000..98fe1c0760
      --- /dev/null
      +++ b/waffle-tomcat10/licenses.html
      @@ -0,0 +1,171 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.8.0:licenses at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Project Licenses – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a>Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li class="active"><a>Licenses</a></li>
      +      <li><a href="plugin-management.html">Plugin Management</a></li>
      +      <li><a href="plugins.html">Plugins</a></li>
      +      <li><a href="scm.html">Source Code Management</a></li>
      +      <li><a href="summary.html">Summary</a></li>
      +      <li><a href="team.html">Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Overview"></a>
      +<h1>Overview</h1>
      +<p>Typically the licenses listed for the project are that of the project itself, and not of dependencies.</p></section><section><a id="Project_Licenses"></a>
      +<h1>Project Licenses</h1><section><a id="MIT"></a>
      +<h2>MIT</h2>
      +<pre>MIT License
      +
      +Copyright (c) ${license.git.copyrightYears} The Waffle Project Contributors: https://github.com/Waffle/waffle/graphs/contributors
      +
      +Permission is hereby granted, free of charge, to any person obtaining a copy
      +of this software and associated documentation files (the &quot;Software&quot;), to deal
      +in the Software without restriction, including without limitation the rights
      +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      +copies of the Software, and to permit persons to whom the Software is
      +furnished to do so, subject to the following conditions:
      +
      +The above copyright notice and this permission notice shall be included in all
      +copies or substantial portions of the Software.
      +
      +THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      +SOFTWARE.
      +</pre></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/plugin-management.html b/waffle-tomcat10/plugin-management.html
      new file mode 100644
      index 0000000000..79f0e1fffa
      --- /dev/null
      +++ b/waffle-tomcat10/plugin-management.html
      @@ -0,0 +1,327 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.8.0:plugin-management at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Project Plugin Management – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a>Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li><a href="licenses.html">Licenses</a></li>
      +      <li class="active"><a>Plugin Management</a></li>
      +      <li><a href="plugins.html">Plugins</a></li>
      +      <li><a href="scm.html">Source Code Management</a></li>
      +      <li><a href="summary.html">Summary</a></li>
      +      <li><a href="team.html">Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Project_Plugin_Management"></a>
      +<h1>Project Plugin Management</h1>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>GroupId</th>
      +<th>ArtifactId</th>
      +<th>Version</th></tr>
      +<tr class="b">
      +<td>com.diffplug.spotless</td>
      +<td><a class="externalLink" href="https://github.com/diffplug/spotless">spotless-maven-plugin</a></td>
      +<td>2.43.0</td></tr>
      +<tr class="a">
      +<td>com.github.ekryd.sortpom</td>
      +<td><a class="externalLink" href="https://github.com/Ekryd/sortpom/sortpom-maven-plugin/">sortpom-maven-plugin</a></td>
      +<td>4.0.0</td></tr>
      +<tr class="b">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/trautonen/coveralls-maven-plugin">coveralls-maven-plugin</a></td>
      +<td>4.5.0-M5</td></tr>
      +<tr class="a">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/hazendaz/directory-maven-plugin">directory-maven-plugin</a></td>
      +<td>1.2.0</td></tr>
      +<tr class="b">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/alextunyk/htmlcompressor-maven-plugin">htmlcompressor-maven-plugin</a></td>
      +<td>1.10.0</td></tr>
      +<tr class="a">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/dantwining/whitespace-maven-plugin">whitespace-maven-plugin</a></td>
      +<td>1.4.0</td></tr>
      +<tr class="b">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/hazendaz/yuicompressor-maven-plugin">yuicompressor-maven-plugin</a></td>
      +<td>2.1.0</td></tr>
      +<tr class="a">
      +<td>com.github.spotbugs</td>
      +<td><a class="externalLink" href="https://spotbugs.github.io/spotbugs-maven-plugin/">spotbugs-maven-plugin</a></td>
      +<td>4.8.6.6</td></tr>
      +<tr class="b">
      +<td>com.mycila</td>
      +<td><a class="externalLink" href="https://oss.carbou.me/license-maven-plugin">license-maven-plugin</a></td>
      +<td>4.6</td></tr>
      +<tr class="a">
      +<td>io.github.git-commit-id</td>
      +<td><a class="externalLink" href="https://github.com/git-commit-id/git-commit-id-maven-plugin">git-commit-id-maven-plugin</a></td>
      +<td>9.0.1</td></tr>
      +<tr class="b">
      +<td>net.revelc.code</td>
      +<td><a class="externalLink" href="http://code.revelc.net/impsort-maven-plugin">impsort-maven-plugin</a></td>
      +<td>1.12.0</td></tr>
      +<tr class="a">
      +<td>net.revelc.code.formatter</td>
      +<td><a class="externalLink" href="https://code.revelc.net/revelc/formatter-maven-plugin">formatter-maven-plugin</a></td>
      +<td>2.24.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-antrun-plugin/">maven-antrun-plugin</a></td>
      +<td>3.1.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-assembly-plugin/">maven-assembly-plugin</a></td>
      +<td>3.7.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-checkstyle-plugin/">maven-checkstyle-plugin</a></td>
      +<td>3.6.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-clean-plugin/">maven-clean-plugin</a></td>
      +<td>3.4.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-compiler-plugin/">maven-compiler-plugin</a></td>
      +<td>3.13.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-dependency-plugin/">maven-dependency-plugin</a></td>
      +<td>3.8.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-deploy-plugin/">maven-deploy-plugin</a></td>
      +<td>3.1.3</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/enforcer/maven-enforcer-plugin/">maven-enforcer-plugin</a></td>
      +<td>3.5.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-gpg-plugin/">maven-gpg-plugin</a></td>
      +<td>3.2.7</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-install-plugin/">maven-install-plugin</a></td>
      +<td>3.1.3</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-jar-plugin/">maven-jar-plugin</a></td>
      +<td>3.4.2</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-javadoc-plugin/">maven-javadoc-plugin</a></td>
      +<td>3.11.2</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/jxr/maven-jxr-plugin/">maven-jxr-plugin</a></td>
      +<td>3.6.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-pmd-plugin/">maven-pmd-plugin</a></td>
      +<td>3.26.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-project-info-reports-plugin/">maven-project-info-reports-plugin</a></td>
      +<td>3.8.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/maven-release/maven-release-plugin/">maven-release-plugin</a></td>
      +<td>3.1.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-resources-plugin/">maven-resources-plugin</a></td>
      +<td>3.3.1</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/scm/maven-scm-plugin/">maven-scm-plugin</a></td>
      +<td>2.1.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-site-plugin/">maven-site-plugin</a></td>
      +<td>3.21.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-source-plugin/">maven-source-plugin</a></td>
      +<td>3.3.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/surefire/maven-surefire-plugin/">maven-surefire-plugin</a></td>
      +<td>3.5.2</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/surefire/maven-surefire-report-plugin/">maven-surefire-report-plugin</a></td>
      +<td>3.5.2</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-war-plugin/">maven-war-plugin</a></td>
      +<td>3.4.0</td></tr>
      +<tr class="a">
      +<td>org.codehaus.mojo</td>
      +<td><a class="externalLink" href="https://www.mojohaus.org/build-helper-maven-plugin/">build-helper-maven-plugin</a></td>
      +<td>3.6.0</td></tr>
      +<tr class="b">
      +<td>org.codehaus.mojo</td>
      +<td><a class="externalLink" href="https://www.mojohaus.org/taglist-maven-plugin/">taglist-maven-plugin</a></td>
      +<td>3.2.1</td></tr>
      +<tr class="a">
      +<td>org.codehaus.mojo</td>
      +<td><a class="externalLink" href="https://www.mojohaus.org/versions/versions-maven-plugin/">versions-maven-plugin</a></td>
      +<td>2.18.0</td></tr>
      +<tr class="b">
      +<td>org.codehaus.mojo</td>
      +<td><a class="externalLink" href="http://www.mojohaus.org/wagon-maven-plugin/">wagon-maven-plugin</a></td>
      +<td>2.0.2</td></tr>
      +<tr class="a">
      +<td>org.gaul</td>
      +<td><a class="externalLink" href="https://github.com/gaul/modernizer-maven-plugin">modernizer-maven-plugin</a></td>
      +<td>3.0.0</td></tr>
      +<tr class="b">
      +<td>org.jacoco</td>
      +<td><a class="externalLink" href="https://www.jacoco.org/jacoco/trunk/doc/maven.html">jacoco-maven-plugin</a></td>
      +<td>0.8.12</td></tr>
      +<tr class="a">
      +<td>org.openrewrite.maven</td>
      +<td><a class="externalLink" href="https://openrewrite.github.io/rewrite-maven-plugin/">rewrite-maven-plugin</a></td>
      +<td>5.47.3</td></tr>
      +<tr class="b">
      +<td>org.owasp</td>
      +<td><a class="externalLink" href="https://github.com/jeremylong/DependencyCheck.git/dependency-check-maven">dependency-check-maven</a></td>
      +<td>11.1.1</td></tr>
      +<tr class="a">
      +<td>org.sonarsource.scanner.maven</td>
      +<td><a class="externalLink" href="http://docs.sonarqube.org/display/PLUG/Plugin+Library/sonar-maven-plugin">sonar-maven-plugin</a></td>
      +<td>5.0.0.4389</td></tr></table></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/plugin-updates-report.html b/waffle-tomcat10/plugin-updates-report.html
      new file mode 100644
      index 0000000000..a90218c7fc
      --- /dev/null
      +++ b/waffle-tomcat10/plugin-updates-report.html
      @@ -0,0 +1,1972 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.codehaus.mojo:versions-maven-plugin:2.18.0:plugin-updates-report at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Plugin Updates Report – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a>Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li><a href="pmd.html">PMD</a></li>
      +      <li><a href="surefire.html">Surefire</a></li>
      +      <li><a href="spotbugs.html">SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li class="active"><a>Plugin Updates Report</a></li>
      +      <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +      <li><a href="taglist.html">Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Overview"></a>
      +<h1>Overview</h1>
      +<p>This report summarizes newer versions that may be available for your project's various plugins.</p>
      +<table class="table table-striped">
      +<tr class="a">
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td># of plugins using the latest version available</td>
      +<td>34</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td># of plugins where the next version available is smaller than an incremental version update</td>
      +<td>0</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td># of plugins where the next version available is an incremental version update</td>
      +<td>0</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td># of plugins where the next version available is a minor version update</td>
      +<td>1</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td># of plugins where the next version available is a major version update</td>
      +<td>9</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td># of plugins where a dependencies section containes a dependency with an updated version</td>
      +<td>2</td></tr></tr></table><section><a id="Plugin_Management"></a>
      +<h2>Plugin Management</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>com.diffplug.spotless</td>
      +<td>spotless-maven-plugin</td>
      +<td>2.43.0</td>
      +<td></td>
      +<td></td>
      +<td><b>2.44.0.BETA4</b></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.ekryd.sortpom</td>
      +<td>sortpom-maven-plugin</td>
      +<td><b>4.0.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.hazendaz.maven</td>
      +<td>coveralls-maven-plugin</td>
      +<td><b>4.5.0-M5</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.hazendaz.maven</td>
      +<td>directory-maven-plugin</td>
      +<td><b>1.2.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>com.github.hazendaz.maven</td>
      +<td>htmlcompressor-maven-plugin</td>
      +<td>1.10.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>2.1.0</b></td>
      +<td><img src="images/icon_warning_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.hazendaz.maven</td>
      +<td>whitespace-maven-plugin</td>
      +<td><b>1.4.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.hazendaz.maven</td>
      +<td>yuicompressor-maven-plugin</td>
      +<td><b>2.1.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.spotbugs</td>
      +<td>spotbugs-maven-plugin</td>
      +<td><b>4.8.6.6</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.mycila</td>
      +<td>license-maven-plugin</td>
      +<td><b>4.6</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>io.github.git-commit-id</td>
      +<td>git-commit-id-maven-plugin</td>
      +<td><b>9.0.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>net.revelc.code</td>
      +<td>impsort-maven-plugin</td>
      +<td><b>1.12.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>net.revelc.code.formatter</td>
      +<td>formatter-maven-plugin</td>
      +<td><b>2.24.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-antrun-plugin</td>
      +<td><b>3.1.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-assembly-plugin</td>
      +<td><b>3.7.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-checkstyle-plugin</td>
      +<td><b>3.6.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-clean-plugin</td>
      +<td>3.4.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-compiler-plugin</td>
      +<td>3.13.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-dependency-plugin</td>
      +<td><b>3.8.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-deploy-plugin</td>
      +<td>3.1.3</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-enforcer-plugin</td>
      +<td><b>3.5.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-gpg-plugin</td>
      +<td><b>3.2.7</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-install-plugin</td>
      +<td>3.1.3</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-jar-plugin</td>
      +<td>3.4.2</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-javadoc-plugin</td>
      +<td><b>3.11.2</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-jxr-plugin</td>
      +<td><b>3.6.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-pmd-plugin</td>
      +<td><b>3.26.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-project-info-reports-plugin</td>
      +<td><b>3.8.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-release-plugin</td>
      +<td><b>3.1.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-resources-plugin</td>
      +<td>3.3.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-scm-plugin</td>
      +<td><b>2.1.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-site-plugin</td>
      +<td>3.21.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-M16</b></td>
      +<td><img src="images/icon_warning_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-source-plugin</td>
      +<td>3.3.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-surefire-plugin</td>
      +<td><b>3.5.2</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-surefire-report-plugin</td>
      +<td><b>3.5.2</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.plugins</td>
      +<td>maven-war-plugin</td>
      +<td><b>3.4.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.codehaus.mojo</td>
      +<td>build-helper-maven-plugin</td>
      +<td><b>3.6.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.codehaus.mojo</td>
      +<td>taglist-maven-plugin</td>
      +<td><b>3.2.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.codehaus.mojo</td>
      +<td>versions-maven-plugin</td>
      +<td><b>2.18.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.codehaus.mojo</td>
      +<td>wagon-maven-plugin</td>
      +<td><b>2.0.2</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.gaul</td>
      +<td>modernizer-maven-plugin</td>
      +<td><b>3.0.0</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.jacoco</td>
      +<td>jacoco-maven-plugin</td>
      +<td><b>0.8.12</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.openrewrite.maven</td>
      +<td>rewrite-maven-plugin</td>
      +<td><b>5.47.3</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.owasp</td>
      +<td>dependency-check-maven</td>
      +<td><b>11.1.1</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.sonarsource.scanner.maven</td>
      +<td>sonar-maven-plugin</td>
      +<td><b>5.0.0.4389</b></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><img src="images/icon_success_sml.gif" /></td></tr>
      +<tr class="b">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Plugins"></a>
      +<h2>Plugins</h2>
      +<p>This project does not declare any plugins in a build/plugins section.</p></section></section><section><a id="Plugin_Updates"></a>
      +<h1>Plugin Updates</h1>
      +<p>-</p><section><a id="Plugin_com.diffplug.spotless.3Aspotless-maven-plugin"></a>
      +<h2>Plugin com.diffplug.spotless:spotless-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer minor version available. Minor updates are sometimes passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.diffplug.spotless</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">spotless-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.43.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.44.0.BETA1<br />2.44.0.BETA2<br />2.44.0.BETA3<br /><b>2.44.0.BETA4</b>&#160;<i>Latest Minor</i></td></tr></table></section><section><a id="Plugin_com.github.ekryd.sortpom.3Asortpom-maven-plugin"></a>
      +<h2>Plugin com.github.ekryd.sortpom:sortpom-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.ekryd.sortpom</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">sortpom-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.0.0</td></tr></table></section><section><a id="Plugin_com.github.hazendaz.maven.3Acoveralls-maven-plugin"></a>
      +<h2>Plugin com.github.hazendaz.maven:coveralls-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">coveralls-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.5.0-M5</td></tr></table></section><section><a id="Plugin_com.github.hazendaz.maven.3Adirectory-maven-plugin"></a>
      +<h2>Plugin com.github.hazendaz.maven:directory-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">directory-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.2.0</td></tr></table></section><section><a id="Plugin_com.github.hazendaz.maven.3Ahtmlcompressor-maven-plugin"></a>
      +<h2>Plugin com.github.hazendaz.maven:htmlcompressor-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">htmlcompressor-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.10.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.0.0<br />2.0.1<br />2.0.2<br /><b>2.1.0</b>&#160;<i>Latest Major</i></td></tr></table><section><a id="Dependencies_of_com.github.hazendaz.maven.3Ahtmlcompressor-maven-plugin"></a>
      +<h3>Dependencies of com.github.hazendaz.maven:htmlcompressor-maven-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>com.github.hazendaz</td>
      +<td>htmlcompressor</td>
      +<td>1.9.4</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>2.0.2</b></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.yahoo.platform.yui</td>
      +<td>yuicompressor</td>
      +<td>2.4.8</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_com.github.hazendaz.3Ahtmlcompressor"></a>
      +<h3>Dependency com.github.hazendaz:htmlcompressor</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">htmlcompressor</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.9.4</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.0.0<br />2.0.1<br /><b>2.0.2</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Dependency_com.yahoo.platform.yui.3Ayuicompressor"></a>
      +<h3>Dependency com.yahoo.platform.yui:yuicompressor</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.yahoo.platform.yui</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">yuicompressor</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.4.8</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section></section><section><a id="Plugin_com.github.hazendaz.maven.3Awhitespace-maven-plugin"></a>
      +<h2>Plugin com.github.hazendaz.maven:whitespace-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">whitespace-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.4.0</td></tr></table></section><section><a id="Plugin_com.github.hazendaz.maven.3Ayuicompressor-maven-plugin"></a>
      +<h2>Plugin com.github.hazendaz.maven:yuicompressor-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">yuicompressor-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr></table><section><a id="Dependencies_of_com.github.hazendaz.maven.3Ayuicompressor-maven-plugin"></a>
      +<h3>Dependencies of com.github.hazendaz.maven:yuicompressor-maven-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.yahoo.platform.yui</td>
      +<td>yuicompressor</td>
      +<td>2.4.8</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_com.yahoo.platform.yui.3Ayuicompressor"></a>
      +<h3>Dependency com.yahoo.platform.yui:yuicompressor</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.yahoo.platform.yui</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">yuicompressor</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.4.8</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section></section><section><a id="Plugin_com.github.spotbugs.3Aspotbugs-maven-plugin"></a>
      +<h2>Plugin com.github.spotbugs:spotbugs-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.spotbugs</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">spotbugs-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.8.6.6</td></tr></table></section><section><a id="Plugin_com.mycila.3Alicense-maven-plugin"></a>
      +<h2>Plugin com.mycila:license-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.mycila</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">license-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.6</td></tr></table><section><a id="Dependencies_of_com.mycila.3Alicense-maven-plugin"></a>
      +<h3>Dependencies of com.mycila:license-maven-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.mycila</td>
      +<td>license-maven-plugin-git</td>
      +<td>4.6</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_com.mycila.3Alicense-maven-plugin-git"></a>
      +<h3>Dependency com.mycila:license-maven-plugin-git</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.mycila</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">license-maven-plugin-git</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.6</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section></section><section><a id="Plugin_io.github.git-commit-id.3Agit-commit-id-maven-plugin"></a>
      +<h2>Plugin io.github.git-commit-id:git-commit-id-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">io.github.git-commit-id</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">git-commit-id-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">9.0.1</td></tr></table></section><section><a id="Plugin_net.revelc.code.3Aimpsort-maven-plugin"></a>
      +<h2>Plugin net.revelc.code:impsort-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">net.revelc.code</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">impsort-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.12.0</td></tr></table></section><section><a id="Plugin_net.revelc.code.formatter.3Aformatter-maven-plugin"></a>
      +<h2>Plugin net.revelc.code.formatter:formatter-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">net.revelc.code.formatter</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">formatter-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.24.1</td></tr></table><section><a id="Dependencies_of_net.revelc.code.formatter.3Aformatter-maven-plugin"></a>
      +<h3>Dependencies of net.revelc.code.formatter:formatter-maven-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>com.github.hazendaz</td>
      +<td>build-tools</td>
      +<td>1.4.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_com.github.hazendaz.3Abuild-tools"></a>
      +<h3>Dependency com.github.hazendaz:build-tools</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">com.github.hazendaz</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">build-tools</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.4.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-antrun-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-antrun-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-antrun-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.0</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-assembly-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-assembly-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-assembly-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.7.1</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-checkstyle-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-checkstyle-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-checkstyle-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.0</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-clean-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-clean-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-clean-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.4.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-compiler-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-compiler-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-compiler-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.13.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-dependency-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-dependency-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-dependency-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.8.1</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-deploy-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-deploy-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-deploy-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.3</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-enforcer-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-enforcer-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-enforcer-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.0</td></tr></table><section><a id="Dependencies_of_org.apache.maven.plugins.3Amaven-enforcer-plugin"></a>
      +<h3>Dependencies of org.apache.maven.plugins:maven-enforcer-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.codehaus.mojo</td>
      +<td>extra-enforcer-rules</td>
      +<td>1.9.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_org.codehaus.mojo.3Aextra-enforcer-rules"></a>
      +<h3>Dependency org.codehaus.mojo:extra-enforcer-rules</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.mojo</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">extra-enforcer-rules</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.9.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-gpg-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-gpg-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-gpg-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.2.7</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-install-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-install-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-install-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.3</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-jar-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-jar-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-jar-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.4.2</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-javadoc-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-javadoc-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-javadoc-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.11.2</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-jxr-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-jxr-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-jxr-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.0</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-pmd-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-pmd-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-pmd-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.26.0</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-project-info-reports-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-project-info-reports-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-project-info-reports-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.8.0</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-release-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-release-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-release-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.1</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-resources-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-resources-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-resources-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.3.1</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-scm-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-scm-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-scm-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr></table><section><a id="Dependencies_of_org.apache.maven.plugins.3Amaven-scm-plugin"></a>
      +<h3>Dependencies of org.apache.maven.plugins:maven-scm-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.scm</td>
      +<td>maven-scm-provider-jgit</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.eclipse.jgit</td>
      +<td>org.eclipse.jgit</td>
      +<td>7.1.0.202411261347-r</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_org.apache.maven.scm.3Amaven-scm-provider-jgit"></a>
      +<h3>Dependency org.apache.maven.scm:maven-scm-provider-jgit</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.scm</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-scm-provider-jgit</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.eclipse.jgit.3Aorg.eclipse.jgit"></a>
      +<h3>Dependency org.eclipse.jgit:org.eclipse.jgit</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.eclipse.jgit</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">org.eclipse.jgit</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">7.1.0.202411261347-r</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-site-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-site-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-site-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.21.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">4.0.0-M1<br />4.0.0-M2<br />4.0.0-M3<br />4.0.0-M4<br />4.0.0-M5<br />4.0.0-M6<br />4.0.0-M7<br />4.0.0-M8<br />4.0.0-M9<br />4.0.0-M10<br />4.0.0-M11<br />4.0.0-M12<br />4.0.0-M13<br />4.0.0-M14<br />4.0.0-M15<br /><b>4.0.0-M16</b>&#160;<i>Latest Major</i></td></tr></table><section><a id="Dependencies_of_org.apache.maven.plugins.3Amaven-site-plugin"></a>
      +<h3>Dependencies of org.apache.maven.plugins:maven-site-plugin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.doxia</td>
      +<td>doxia-module-markdown</td>
      +<td>2.0.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.scm</td>
      +<td>maven-scm-api</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.scm</td>
      +<td>maven-scm-manager-plexus</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.scm</td>
      +<td>maven-scm-provider-gitexe</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.skins</td>
      +<td>maven-fluido-skin</td>
      +<td>2.0.1</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.apache.maven.wagon</td>
      +<td>wagon-scm</td>
      +<td>3.5.3</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>org.codehaus.plexus</td>
      +<td>plexus-utils</td>
      +<td>4.0.2</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>org.codehaus.plexus</td>
      +<td>plexus-xml</td>
      +<td>3.0.1</td>
      +<td></td>
      +<td>jar</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.4</b></td></tr>
      +<tr class="b">
      +<th>Status</th>
      +<th>Group Id</th>
      +<th>Artifact Id</th>
      +<th>Current Version</th>
      +<th>Classifier</th>
      +<th>Type</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th>
      +<th>Dependency status</th></tr></table></section><section><a id="Dependency_org.apache.maven.doxia.3Adoxia-module-markdown"></a>
      +<h3>Dependency org.apache.maven.doxia:doxia-module-markdown</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.doxia</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">doxia-module-markdown</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.apache.maven.scm.3Amaven-scm-api"></a>
      +<h3>Dependency org.apache.maven.scm:maven-scm-api</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.scm</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-scm-api</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.apache.maven.scm.3Amaven-scm-manager-plexus"></a>
      +<h3>Dependency org.apache.maven.scm:maven-scm-manager-plexus</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.scm</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-scm-manager-plexus</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.apache.maven.scm.3Amaven-scm-provider-gitexe"></a>
      +<h3>Dependency org.apache.maven.scm:maven-scm-provider-gitexe</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.scm</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-scm-provider-gitexe</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.apache.maven.skins.3Amaven-fluido-skin"></a>
      +<h3>Dependency org.apache.maven.skins:maven-fluido-skin</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.skins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-fluido-skin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.1</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.apache.maven.wagon.3Awagon-scm"></a>
      +<h3>Dependency org.apache.maven.wagon:wagon-scm</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.wagon</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">wagon-scm</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.3</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.codehaus.plexus.3Aplexus-utils"></a>
      +<h3>Dependency org.codehaus.plexus:plexus-utils</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.plexus</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">plexus-utils</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.0.2</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr></table></section><section><a id="Dependency_org.codehaus.plexus.3Aplexus-xml"></a>
      +<h3>Dependency org.codehaus.plexus:plexus-xml</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.plexus</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">plexus-xml</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.0.1</td></tr>
      +<tr class="a">
      +<th>Classifier</th>
      +<td style="text-align: left;"></td></tr>
      +<tr class="b">
      +<th>Type</th>
      +<td style="text-align: left;">jar</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">4.0.0<br />4.0.1<br />4.0.2<br />4.0.3<br /><b>4.0.4</b>&#160;<i>Latest Major</i></td></tr></table></section></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-source-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-source-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-source-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.3.1</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-surefire-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-surefire-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-surefire-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.2</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-surefire-report-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-surefire-report-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-surefire-report-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.2</td></tr></table></section><section><a id="Plugin_org.apache.maven.plugins.3Amaven-war-plugin"></a>
      +<h2>Plugin org.apache.maven.plugins:maven-war-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.apache.maven.plugins</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">maven-war-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.4.0</td></tr></table></section><section><a id="Plugin_org.codehaus.mojo.3Abuild-helper-maven-plugin"></a>
      +<h2>Plugin org.codehaus.mojo:build-helper-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.mojo</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">build-helper-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.0</td></tr></table></section><section><a id="Plugin_org.codehaus.mojo.3Ataglist-maven-plugin"></a>
      +<h2>Plugin org.codehaus.mojo:taglist-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.mojo</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">taglist-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.2.1</td></tr></table></section><section><a id="Plugin_org.codehaus.mojo.3Aversions-maven-plugin"></a>
      +<h2>Plugin org.codehaus.mojo:versions-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.mojo</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">versions-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.18.0</td></tr></table></section><section><a id="Plugin_org.codehaus.mojo.3Awagon-maven-plugin"></a>
      +<h2>Plugin org.codehaus.mojo:wagon-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.codehaus.mojo</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">wagon-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.2</td></tr></table></section><section><a id="Plugin_org.gaul.3Amodernizer-maven-plugin"></a>
      +<h2>Plugin org.gaul:modernizer-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.gaul</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">modernizer-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.0.0</td></tr></table></section><section><a id="Plugin_org.jacoco.3Ajacoco-maven-plugin"></a>
      +<h2>Plugin org.jacoco:jacoco-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.jacoco</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">jacoco-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">0.8.12</td></tr></table></section><section><a id="Plugin_org.openrewrite.maven.3Arewrite-maven-plugin"></a>
      +<h2>Plugin org.openrewrite.maven:rewrite-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.openrewrite.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">rewrite-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">5.47.3</td></tr></table></section><section><a id="Plugin_org.owasp.3Adependency-check-maven"></a>
      +<h2>Plugin org.owasp:dependency-check-maven</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.owasp</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">dependency-check-maven</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">11.1.1</td></tr></table></section><section><a id="Plugin_org.sonarsource.scanner.maven.3Asonar-maven-plugin"></a>
      +<h2>Plugin org.sonarsource.scanner.maven:sonar-maven-plugin</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Group Id</th>
      +<td style="text-align: left;">org.sonarsource.scanner.maven</td></tr>
      +<tr class="a">
      +<th>Artifact Id</th>
      +<td style="text-align: left;">sonar-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">5.0.0.4389</td></tr></table></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/plugins.html b/waffle-tomcat10/plugins.html
      new file mode 100644
      index 0000000000..7b700c7c2e
      --- /dev/null
      +++ b/waffle-tomcat10/plugins.html
      @@ -0,0 +1,305 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.8.0:plugins at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Project Plugins – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a>Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li><a href="licenses.html">Licenses</a></li>
      +      <li><a href="plugin-management.html">Plugin Management</a></li>
      +      <li class="active"><a>Plugins</a></li>
      +      <li><a href="scm.html">Source Code Management</a></li>
      +      <li><a href="summary.html">Summary</a></li>
      +      <li><a href="team.html">Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Project_Build_Plugins"></a>
      +<h1>Project Build Plugins</h1>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>GroupId</th>
      +<th>ArtifactId</th>
      +<th>Version</th></tr>
      +<tr class="b">
      +<td>com.diffplug.spotless</td>
      +<td><a class="externalLink" href="https://github.com/diffplug/spotless">spotless-maven-plugin</a></td>
      +<td>2.43.0</td></tr>
      +<tr class="a">
      +<td>com.github.ekryd.sortpom</td>
      +<td><a class="externalLink" href="https://github.com/Ekryd/sortpom/sortpom-maven-plugin/">sortpom-maven-plugin</a></td>
      +<td>4.0.0</td></tr>
      +<tr class="b">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/hazendaz/directory-maven-plugin">directory-maven-plugin</a></td>
      +<td>1.2.0</td></tr>
      +<tr class="a">
      +<td>com.github.hazendaz.maven</td>
      +<td><a class="externalLink" href="https://github.com/dantwining/whitespace-maven-plugin">whitespace-maven-plugin</a></td>
      +<td>1.4.0</td></tr>
      +<tr class="b">
      +<td>com.github.spotbugs</td>
      +<td><a class="externalLink" href="https://spotbugs.github.io/spotbugs-maven-plugin/">spotbugs-maven-plugin</a></td>
      +<td>4.8.6.6</td></tr>
      +<tr class="a">
      +<td>com.mycila</td>
      +<td><a class="externalLink" href="https://oss.carbou.me/license-maven-plugin">license-maven-plugin</a></td>
      +<td>4.6</td></tr>
      +<tr class="b">
      +<td>io.github.git-commit-id</td>
      +<td><a class="externalLink" href="https://github.com/git-commit-id/git-commit-id-maven-plugin">git-commit-id-maven-plugin</a></td>
      +<td>9.0.1</td></tr>
      +<tr class="a">
      +<td>net.revelc.code</td>
      +<td><a class="externalLink" href="http://code.revelc.net/impsort-maven-plugin">impsort-maven-plugin</a></td>
      +<td>1.12.0</td></tr>
      +<tr class="b">
      +<td>net.revelc.code.formatter</td>
      +<td><a class="externalLink" href="https://code.revelc.net/revelc/formatter-maven-plugin">formatter-maven-plugin</a></td>
      +<td>2.24.1</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-checkstyle-plugin/">maven-checkstyle-plugin</a></td>
      +<td>3.6.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-clean-plugin/">maven-clean-plugin</a></td>
      +<td>3.4.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-compiler-plugin/">maven-compiler-plugin</a></td>
      +<td>3.13.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-deploy-plugin/">maven-deploy-plugin</a></td>
      +<td>3.1.3</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/enforcer/maven-enforcer-plugin/">maven-enforcer-plugin</a></td>
      +<td>3.5.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-gpg-plugin/">maven-gpg-plugin</a></td>
      +<td>3.2.7</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-install-plugin/">maven-install-plugin</a></td>
      +<td>3.1.3</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-jar-plugin/">maven-jar-plugin</a></td>
      +<td>3.4.2</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-javadoc-plugin/">maven-javadoc-plugin</a></td>
      +<td>3.11.2</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-pmd-plugin/">maven-pmd-plugin</a></td>
      +<td>3.26.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-resources-plugin/">maven-resources-plugin</a></td>
      +<td>3.3.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-site-plugin/">maven-site-plugin</a></td>
      +<td>3.21.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-source-plugin/">maven-source-plugin</a></td>
      +<td>3.3.1</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/surefire/maven-surefire-plugin/">maven-surefire-plugin</a></td>
      +<td>3.5.2</td></tr>
      +<tr class="a">
      +<td>org.gaul</td>
      +<td><a class="externalLink" href="https://github.com/gaul/modernizer-maven-plugin">modernizer-maven-plugin</a></td>
      +<td>3.0.0</td></tr>
      +<tr class="b">
      +<td>org.jacoco</td>
      +<td><a class="externalLink" href="https://www.jacoco.org/jacoco/trunk/doc/maven.html">jacoco-maven-plugin</a></td>
      +<td>0.8.12</td></tr>
      +<tr class="a">
      +<td>org.openrewrite.maven</td>
      +<td><a class="externalLink" href="https://openrewrite.github.io/rewrite-maven-plugin/">rewrite-maven-plugin</a></td>
      +<td>5.47.3</td></tr></table></section><section><a id="Project_Report_Plugins"></a>
      +<h1>Project Report Plugins</h1>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>GroupId</th>
      +<th>ArtifactId</th>
      +<th>Version</th></tr>
      +<tr class="b">
      +<td>com.github.spotbugs</td>
      +<td><a class="externalLink" href="https://spotbugs.github.io/spotbugs-maven-plugin/">spotbugs-maven-plugin</a></td>
      +<td>4.8.6.6</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-checkstyle-plugin/">maven-checkstyle-plugin</a></td>
      +<td>3.6.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-javadoc-plugin/">maven-javadoc-plugin</a></td>
      +<td>3.11.2</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/jxr/maven-jxr-plugin/">maven-jxr-plugin</a></td>
      +<td>3.6.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-pmd-plugin/">maven-pmd-plugin</a></td>
      +<td>3.26.0</td></tr>
      +<tr class="a">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/plugins/maven-project-info-reports-plugin/">maven-project-info-reports-plugin</a></td>
      +<td>3.8.0</td></tr>
      +<tr class="b">
      +<td>org.apache.maven.plugins</td>
      +<td><a class="externalLink" href="https://maven.apache.org/surefire/maven-surefire-report-plugin/">maven-surefire-report-plugin</a></td>
      +<td>3.5.2</td></tr>
      +<tr class="a">
      +<td>org.codehaus.mojo</td>
      +<td><a class="externalLink" href="https://www.mojohaus.org/taglist-maven-plugin/">taglist-maven-plugin</a></td>
      +<td>3.2.1</td></tr>
      +<tr class="b">
      +<td>org.codehaus.mojo</td>
      +<td><a class="externalLink" href="https://www.mojohaus.org/versions/versions-maven-plugin/">versions-maven-plugin</a></td>
      +<td>2.18.0</td></tr>
      +<tr class="a">
      +<td>org.jacoco</td>
      +<td><a class="externalLink" href="https://www.jacoco.org/jacoco/trunk/doc/maven.html">jacoco-maven-plugin</a></td>
      +<td>0.8.12</td></tr>
      +<tr class="b">
      +<td>org.owasp</td>
      +<td><a class="externalLink" href="https://github.com/jeremylong/DependencyCheck.git/dependency-check-maven">dependency-check-maven</a></td>
      +<td>11.1.1</td></tr></table></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/pmd.html b/waffle-tomcat10/pmd.html
      new file mode 100644
      index 0000000000..cb604c3bf0
      --- /dev/null
      +++ b/waffle-tomcat10/pmd.html
      @@ -0,0 +1,224 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-pmd-plugin:3.26.0:aggregate-pmd at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>PMD Results – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a>PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li class="active"><a>PMD</a></li>
      +      <li><a href="surefire.html">Surefire</a></li>
      +      <li><a href="spotbugs.html">SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +      <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +      <li><a href="taglist.html">Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="PMD_Results"></a>
      +<h1>PMD Results</h1>
      +<p>The following document contains the results of <a class="externalLink" href="https://pmd.github.io">PMD</a> 7.7.0.</p><section><a id="Violations_By_Priority"></a>
      +<h2>Violations By Priority</h2><section><a id="Priority_4"></a>
      +<h3>Priority 4</h3><section><a id="waffle-tomcat10_-_waffle.2Fapache.2FGenericWindowsPrincipal.java"></a>
      +<h4>waffle-tomcat10 - waffle/apache/GenericWindowsPrincipal.java</h4>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Rule</th>
      +<th>Violation</th>
      +<th>Line</th></tr>
      +<tr class="b">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'GenericWindowsPrincipal': 'getGroups' is already in scope</td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L70">70</a></td></tr>
      +<tr class="a">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'GenericWindowsPrincipal': 'getPrincipalNames' is already in scope</td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L88">88</a></td></tr>
      +<tr class="b">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'GenericWindowsPrincipal': 'getRoleNames' is already in scope</td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L90">90</a></td></tr></table></section><section><a id="waffle-tomcat10_-_waffle.2Fapache.2FWaffleAuthenticatorBase.java"></a>
      +<h4>waffle-tomcat10 - waffle/apache/WaffleAuthenticatorBase.java</h4>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Rule</th>
      +<th>Violation</th>
      +<th>Line</th></tr>
      +<tr class="b">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'WaffleAuthenticatorBase': 'SUPPORTED_PROTOCOLS' is already in scope because it is declared in an enclosing type</td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L71">71</a></td></tr>
      +<tr class="a">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'WaffleAuthenticatorBase': 'SUPPORTED_PROTOCOLS' is already in scope because it is declared in an enclosing type</td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L199">199</a></td></tr></table></section></section></section><section><a id="Files"></a>
      +<h2>Files</h2><section><a id="waffle-tomcat10_-_waffle.2Fapache.2FGenericWindowsPrincipal.java"></a>
      +<h3>waffle-tomcat10 - waffle/apache/GenericWindowsPrincipal.java</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Rule</th>
      +<th>Violation</th>
      +<th>Priority</th>
      +<th>Line</th></tr>
      +<tr class="b">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'GenericWindowsPrincipal': 'getGroups' is already in scope</td>
      +<td>4</td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L70">70</a></td></tr>
      +<tr class="a">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'GenericWindowsPrincipal': 'getPrincipalNames' is already in scope</td>
      +<td>4</td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L88">88</a></td></tr>
      +<tr class="b">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'GenericWindowsPrincipal': 'getRoleNames' is already in scope</td>
      +<td>4</td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L90">90</a></td></tr></table></section><section><a id="waffle-tomcat10_-_waffle.2Fapache.2FWaffleAuthenticatorBase.java"></a>
      +<h3>waffle-tomcat10 - waffle/apache/WaffleAuthenticatorBase.java</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Rule</th>
      +<th>Violation</th>
      +<th>Priority</th>
      +<th>Line</th></tr>
      +<tr class="b">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'WaffleAuthenticatorBase': 'SUPPORTED_PROTOCOLS' is already in scope because it is declared in an enclosing type</td>
      +<td>4</td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L71">71</a></td></tr>
      +<tr class="a">
      +<td><a class="externalLink" href="https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname">UnnecessaryFullyQualifiedName</a></td>
      +<td>Unnecessary qualifier 'WaffleAuthenticatorBase': 'SUPPORTED_PROTOCOLS' is already in scope because it is declared in an enclosing type</td>
      +<td>4</td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L199">199</a></td></tr></table></section></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/project-info.html b/waffle-tomcat10/project-info.html
      new file mode 100644
      index 0000000000..dd9a6f1b9b
      --- /dev/null
      +++ b/waffle-tomcat10/project-info.html
      @@ -0,0 +1,188 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Project Information – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a>Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li class="active"><a><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li><a href="licenses.html">Licenses</a></li>
      +      <li><a href="plugin-management.html">Plugin Management</a></li>
      +      <li><a href="plugins.html">Plugins</a></li>
      +      <li><a href="scm.html">Source Code Management</a></li>
      +      <li><a href="summary.html">Summary</a></li>
      +      <li><a href="team.html">Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section>
      +<h1>Project Information</h1>
      +<p>This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by <a class="externalLink" href="https://maven.apache.org">Maven</a> on behalf of the project.</p><section>
      +<h2>Overview</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Document</th>
      +<th>Description</th></tr>
      +<tr class="b">
      +<td><a href="ci-management.html">CI Management</a></td>
      +<td>This document lists the continuous integration management system of this project for building and testing code on a frequent, regular basis.</td></tr>
      +<tr class="a">
      +<td><a href="dependencies.html">Dependencies</a></td>
      +<td>This document lists the project's dependencies and provides information on each dependency.</td></tr>
      +<tr class="b">
      +<td><a href="dependency-info.html">Maven Coordinates</a></td>
      +<td>This document describes how to include this project as a dependency using various dependency management tools.</td></tr>
      +<tr class="a">
      +<td><a href="distribution-management.html">Distribution Management</a></td>
      +<td>This document provides informations on the distribution management of this project.</td></tr>
      +<tr class="b">
      +<td><a href="index.html">About</a></td>
      +<td>Tomcat 10 integration for WAFFLE</td></tr>
      +<tr class="a">
      +<td><a href="issue-management.html">Issue Management</a></td>
      +<td>This document provides information on the issue management system used in this project.</td></tr>
      +<tr class="b">
      +<td><a href="licenses.html">Licenses</a></td>
      +<td>This document lists the project license(s).</td></tr>
      +<tr class="a">
      +<td><a href="plugin-management.html">Plugin Management</a></td>
      +<td>This document lists the plugins that are defined through pluginManagement.</td></tr>
      +<tr class="b">
      +<td><a href="plugins.html">Plugins</a></td>
      +<td>This document lists the build plugins and the report plugins used by this project.</td></tr>
      +<tr class="a">
      +<td><a href="scm.html">Source Code Management</a></td>
      +<td>This document lists ways to access the online source repository.</td></tr>
      +<tr class="b">
      +<td><a href="summary.html">Summary</a></td>
      +<td>This document lists other related information of this project</td></tr>
      +<tr class="a">
      +<td><a href="team.html">Team</a></td>
      +<td>This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.</td></tr></table></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/project-reports.html b/waffle-tomcat10/project-reports.html
      new file mode 100644
      index 0000000000..23ceaf0709
      --- /dev/null
      +++ b/waffle-tomcat10/project-reports.html
      @@ -0,0 +1,200 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Generated Reports – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a>Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li class="active"><a><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li><a href="pmd.html">PMD</a></li>
      +      <li><a href="surefire.html">Surefire</a></li>
      +      <li><a href="spotbugs.html">SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +      <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +      <li><a href="taglist.html">Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section>
      +<h1>Generated Reports</h1>
      +<p>This document provides an overview of the various reports that are automatically generated by <a class="externalLink" href="https://maven.apache.org">Maven</a> . Each report is briefly described below.</p><section>
      +<h2>Overview</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Document</th>
      +<th>Description</th></tr>
      +<tr class="b">
      +<td><a href="checkstyle.html">Checkstyle</a></td>
      +<td>Report on coding style conventions.</td></tr>
      +<tr class="a">
      +<td><a href="apidocs/index.html">Javadoc</a></td>
      +<td>Javadoc API documentation.</td></tr>
      +<tr class="b">
      +<td><a href="testapidocs/index.html">Test Javadoc</a></td>
      +<td>Test Javadoc API documentation.</td></tr>
      +<tr class="a">
      +<td><a href="xref/index.html">Source Xref</a></td>
      +<td>HTML based, cross-reference version of Java source code.</td></tr>
      +<tr class="b">
      +<td><a href="xref-test/index.html">Test Source Xref</a></td>
      +<td>HTML based, cross-reference version of Java test source code.</td></tr>
      +<tr class="a">
      +<td><a href="cpd.html">CPD</a></td>
      +<td>Duplicate code detection.</td></tr>
      +<tr class="b">
      +<td><a href="pmd.html">PMD</a></td>
      +<td>Verification of coding rules.</td></tr>
      +<tr class="a">
      +<td><a href="surefire.html">Surefire</a></td>
      +<td>Report on the test results of the project.</td></tr>
      +<tr class="b">
      +<td><a href="spotbugs.html">SpotBugs</a></td>
      +<td>Generates a source code report with the SpotBugs Library.</td></tr>
      +<tr class="a">
      +<td><a href="jacoco/index.html">JaCoCo</a></td>
      +<td>JaCoCo Coverage Report.</td></tr>
      +<tr class="b">
      +<td><a href="dependency-updates-report.html">Dependency Updates Report</a></td>
      +<td>Provides details of the dependencies which have updated versions available.</td></tr>
      +<tr class="a">
      +<td><a href="plugin-updates-report.html">Plugin Updates Report</a></td>
      +<td>Provides details of the plugins used by this project which have newer versions available.</td></tr>
      +<tr class="b">
      +<td><a href="property-updates-report.html">Property Updates Report</a></td>
      +<td>Provides details of properties which control versions of dependencies and/or plugins, and indicates any newer versions which are available.</td></tr>
      +<tr class="a">
      +<td><a href="taglist.html">Tag List</a></td>
      +<td>Report on various tags found in the code.</td></tr>
      +<tr class="b">
      +<td><a href="dependency-check-report.html">dependency-check:aggregate</a></td>
      +<td>Generates an aggregate report of all child Maven projects providing details on any published vulnerabilities within project dependencies. This report is a best effort and may contain false positives and false negatives.</td></tr></table></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/property-updates-report.html b/waffle-tomcat10/property-updates-report.html
      new file mode 100644
      index 0000000000..5c2b7b308c
      --- /dev/null
      +++ b/waffle-tomcat10/property-updates-report.html
      @@ -0,0 +1,2716 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.codehaus.mojo:versions-maven-plugin:2.18.0:property-updates-report at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Property Updates Report – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a>Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li><a href="pmd.html">PMD</a></li>
      +      <li><a href="surefire.html">Surefire</a></li>
      +      <li><a href="spotbugs.html">SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +      <li class="active"><a>Property Updates Report</a></li>
      +      <li><a href="taglist.html">Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Overview"></a>
      +<h1>Overview</h1>
      +<p>This report summarizes newer versions that may be available for your project's various properties associated with artifacts.</p>
      +<table class="table table-striped">
      +<tr class="a">
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td># of properties using the latest version available</td>
      +<td>51</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td># of properties where the next version available is smaller than an incremental version update</td>
      +<td>0</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td># of properties where the next version available is an incremental version update</td>
      +<td>1</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td># of properties where the next version available is a minor version update</td>
      +<td>2</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td># of properties where the next version available is a major version update</td>
      +<td>13</td></tr></tr></table><section><a id="Summary_of_properties_associated_with_artifact_versions"></a>
      +<h2>Summary of properties associated with artifact versions</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<th>Property</th>
      +<th>Current Version</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${antrun.plugin}</td>
      +<td>3.1.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${assembly.plugin}</td>
      +<td>3.7.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${assertj.version}</td>
      +<td>3.27.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${build-helper.plugin}</td>
      +<td>3.6.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${build-tools.version}</td>
      +<td>1.4.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${byte-buddy.version}</td>
      +<td>1.15.11</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${checkstyle.plugin}</td>
      +<td>3.6.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${checkstyle.version}</td>
      +<td>10.21.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${clean.plugin}</td>
      +<td>3.4.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${commons-math.version}</td>
      +<td>3.6.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${compiler.plugin}</td>
      +<td>3.13.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${coveralls.plugin}</td>
      +<td>4.5.0-M5</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${dependency-check.plugin}</td>
      +<td>11.1.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${dependency.plugin}</td>
      +<td>3.8.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${deploy.plugin}</td>
      +<td>3.1.3</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${directory.plugin}</td>
      +<td>1.2.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${doxia.version}</td>
      +<td>2.0.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${enforcer.plugin}</td>
      +<td>3.5.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${error-prone.version}</td>
      +<td>2.36.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${extra-enforcer-rules.version}</td>
      +<td>1.9.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${fluido.version}</td>
      +<td>2.0.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${formatter.plugin}</td>
      +<td>2.24.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${git-commit-id.plugin}</td>
      +<td>9.0.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${gpg.plugin}</td>
      +<td>3.2.7</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${htmlcompressor.plugin}</td>
      +<td>1.10.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>2.1.0</b></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${htmlcompressor.version}</td>
      +<td>1.9.4</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>2.0.2</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${impsort.plugin}</td>
      +<td>1.12.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${install.plugin}</td>
      +<td>3.1.3</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${j2objc.version}</td>
      +<td>3.0.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${jacoco.plugin}</td>
      +<td>0.8.12</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${jar.plugin}</td>
      +<td>3.4.2</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${javadoc.plugin}</td>
      +<td>3.11.2</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${jgit.version}</td>
      +<td>7.1.0.202411261347-r</td>
      +<td></td>
      +<td><b>7.1.0.202411261347-r</b></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${jmh.version}</td>
      +<td>1.37</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${jmockit.version}</td>
      +<td>1.55.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${jopt-simple.version}</td>
      +<td>5.0.4</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>6.0-alpha-3</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${junit.version}</td>
      +<td>5.11.4</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${jxr.plugin}</td>
      +<td>3.6.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${license.plugin}</td>
      +<td>4.6</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${modernizer.plugin}</td>
      +<td>3.0.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${plexus-utils.version}</td>
      +<td>4.0.2</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${plexus-xml.version}</td>
      +<td>3.0.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.4</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${pmd.plugin}</td>
      +<td>3.26.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${project-info-reports.plugin}</td>
      +<td>3.8.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${release.plugin}</td>
      +<td>3.1.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${resources.plugin}</td>
      +<td>3.3.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${rewrite.plugin}</td>
      +<td>5.47.3</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${scm.plugin}</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${scm.version}</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${site.plugin}</td>
      +<td>3.21.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-M16</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${slf4j.version}</td>
      +<td>2.0.16</td>
      +<td></td>
      +<td></td>
      +<td><b>2.1.0-alpha1</b></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${sonar.plugin}</td>
      +<td>5.0.0.4389</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${sortpom.plugin}</td>
      +<td>4.0.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${source.plugin}</td>
      +<td>3.3.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>4.0.0-beta-1</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${spotbugs.plugin}</td>
      +<td>4.8.6.6</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${spotbugs.version}</td>
      +<td>4.8.6</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${spotless.plugin}</td>
      +<td>2.43.0</td>
      +<td></td>
      +<td></td>
      +<td><b>2.44.0.BETA4</b></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${surefire.plugin}</td>
      +<td>3.5.2</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${taglist.plugin}</td>
      +<td>3.2.1</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_warning_sml.gif" /></td>
      +<td>${tomcat.version}</td>
      +<td>10.1.34</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td><b>11.0.2</b></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${versions.plugin}</td>
      +<td>2.18.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${wagon.plugin}</td>
      +<td>2.0.2</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${wagon.version}</td>
      +<td>3.5.3</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${war.plugin}</td>
      +<td>3.4.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${whitespace.plugin}</td>
      +<td>1.4.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${yuicompressor.plugin}</td>
      +<td>2.1.0</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td>${yuicompressor.version}</td>
      +<td>2.4.8</td>
      +<td></td>
      +<td></td>
      +<td></td>
      +<td></td></tr>
      +<tr class="a">
      +<th>Status</th>
      +<th>Property</th>
      +<th>Current Version</th>
      +<th>Latest Subincremental</th>
      +<th>Latest Incremental</th>
      +<th>Latest Minor</th>
      +<th>Latest Major</th></tr></table></section></section><section><a id="Properties_associated_with_artifact_versions"></a>
      +<h1>Properties associated with artifact versions</h1>
      +<p>-</p><section><a id="a.24.7Bantrun.plugin.7D"></a>
      +<h2>${antrun.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${antrun.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-antrun-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.1.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bassembly.plugin.7D"></a>
      +<h2>${assembly.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${assembly.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-assembly-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.7.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.7.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bassertj.version.7D"></a>
      +<h2>${assertj.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${assertj.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.assertj:assertj-core</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.27.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.27.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bbuild-helper.plugin.7D"></a>
      +<h2>${build-helper.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${build-helper.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.mojo:build-helper-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.6.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bbuild-tools.version.7D"></a>
      +<h2>${build-tools.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${build-tools.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz:build-tools</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.4.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.4.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bbyte-buddy.version.7D"></a>
      +<h2>${byte-buddy.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${byte-buddy.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">net.bytebuddy:byte-buddy<br />net.bytebuddy:byte-buddy-agent</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.15.11</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.15.11</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bcheckstyle.plugin.7D"></a>
      +<h2>${checkstyle.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${checkstyle.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-checkstyle-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.6.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bcheckstyle.version.7D"></a>
      +<h2>${checkstyle.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${checkstyle.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.puppycrawl.tools:checkstyle</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">10.21.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">10.21.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bclean.plugin.7D"></a>
      +<h2>${clean.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${clean.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-clean-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.4.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.4.0</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bcommons-math.version.7D"></a>
      +<h2>${commons-math.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${commons-math.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.commons:commons-math3</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.6.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bcompiler.plugin.7D"></a>
      +<h2>${compiler.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${compiler.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-compiler-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.13.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.13.0</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bcoveralls.plugin.7D"></a>
      +<h2>${coveralls.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${coveralls.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz.maven:coveralls-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.5.0-M5</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">4.5.0-M5</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bdependency-check.plugin.7D"></a>
      +<h2>${dependency-check.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${dependency-check.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.owasp:dependency-check-maven</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">11.1.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">11.1.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bdependency.plugin.7D"></a>
      +<h2>${dependency.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${dependency.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-dependency-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.8.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.8.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bdeploy.plugin.7D"></a>
      +<h2>${deploy.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${deploy.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-deploy-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.3</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.1.3</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bdirectory.plugin.7D"></a>
      +<h2>${directory.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${directory.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz.maven:directory-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.2.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.2.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bdoxia.version.7D"></a>
      +<h2>${doxia.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${doxia.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.doxia:doxia-module-markdown</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.0.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Benforcer.plugin.7D"></a>
      +<h2>${enforcer.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${enforcer.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-enforcer-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.5.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Berror-prone.version.7D"></a>
      +<h2>${error-prone.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${error-prone.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.google.errorprone:error_prone_annotations</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.36.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.36.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bextra-enforcer-rules.version.7D"></a>
      +<h2>${extra-enforcer-rules.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${extra-enforcer-rules.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.mojo:extra-enforcer-rules</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.9.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.9.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bfluido.version.7D"></a>
      +<h2>${fluido.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${fluido.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.skins:maven-fluido-skin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.0.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bformatter.plugin.7D"></a>
      +<h2>${formatter.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${formatter.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">net.revelc.code.formatter:formatter-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.24.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.24.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bgit-commit-id.plugin.7D"></a>
      +<h2>${git-commit-id.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${git-commit-id.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">io.github.git-commit-id:git-commit-id-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">9.0.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">9.0.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bgpg.plugin.7D"></a>
      +<h2>${gpg.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${gpg.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-gpg-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.2.7</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.2.7</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bhtmlcompressor.plugin.7D"></a>
      +<h2>${htmlcompressor.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${htmlcompressor.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz.maven:htmlcompressor-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.10.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.0.0<br />2.0.1<br />2.0.2<br /><b>2.1.0</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.10.0</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bhtmlcompressor.version.7D"></a>
      +<h2>${htmlcompressor.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${htmlcompressor.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz:htmlcompressor</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.9.4</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.0.0<br />2.0.1<br /><b>2.0.2</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.9.4</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bimpsort.plugin.7D"></a>
      +<h2>${impsort.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${impsort.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">net.revelc.code:impsort-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.12.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.12.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Binstall.plugin.7D"></a>
      +<h2>${install.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${install.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-install-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.3</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.1.3</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bj2objc.version.7D"></a>
      +<h2>${j2objc.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${j2objc.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.google.j2objc:j2objc-annotations</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.0.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.0.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjacoco.plugin.7D"></a>
      +<h2>${jacoco.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jacoco.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.jacoco:jacoco-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">0.8.12</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">0.8.12</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjar.plugin.7D"></a>
      +<h2>${jar.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jar.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-jar-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.4.2</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.4.2</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjavadoc.plugin.7D"></a>
      +<h2>${javadoc.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${javadoc.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-javadoc-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.11.2</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.11.2</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjgit.version.7D"></a>
      +<h2>${jgit.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer incremental version available. Incremental updates are typically passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jgit.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.eclipse.jgit:org.eclipse.jgit</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">7.1.0.202411261347-r</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">7.1.0.202411261347-r</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjmh.version.7D"></a>
      +<h2>${jmh.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jmh.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.openjdk.jmh:jmh-core<br />org.openjdk.jmh:jmh-generator-annprocess</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.37</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.37</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjmockit.version.7D"></a>
      +<h2>${jmockit.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jmockit.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz.jmockit:jmockit</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.55.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.55.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjopt-simple.version.7D"></a>
      +<h2>${jopt-simple.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jopt-simple.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">net.sf.jopt-simple:jopt-simple</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">5.0.4</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">6.0-alpha-1<br />6.0-alpha-2<br /><b>6.0-alpha-3</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">5.0.4</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjunit.version.7D"></a>
      +<h2>${junit.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${junit.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.junit.jupiter:junit-jupiter-engine</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">5.11.4</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">5.11.4</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bjxr.plugin.7D"></a>
      +<h2>${jxr.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${jxr.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-jxr-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.6.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.6.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Blicense.plugin.7D"></a>
      +<h2>${license.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${license.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.mycila:license-maven-plugin<br />com.mycila:license-maven-plugin-git</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.6</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">4.6</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bmodernizer.plugin.7D"></a>
      +<h2>${modernizer.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${modernizer.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.gaul:modernizer-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.0.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.0.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bplexus-utils.version.7D"></a>
      +<h2>${plexus-utils.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${plexus-utils.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.plexus:plexus-utils</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.0.2</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">4.0.2</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bplexus-xml.version.7D"></a>
      +<h2>${plexus-xml.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${plexus-xml.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.plexus:plexus-xml</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.0.1</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">4.0.0<br />4.0.1<br />4.0.2<br />4.0.3<br /><b>4.0.4</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.0.1</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bpmd.plugin.7D"></a>
      +<h2>${pmd.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${pmd.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-pmd-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.26.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.26.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bproject-info-reports.plugin.7D"></a>
      +<h2>${project-info-reports.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${project-info-reports.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-project-info-reports-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.8.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.8.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Brelease.plugin.7D"></a>
      +<h2>${release.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${release.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-release-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.1.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.1.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bresources.plugin.7D"></a>
      +<h2>${resources.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${resources.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-resources-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.3.1</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.3.1</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Brewrite.plugin.7D"></a>
      +<h2>${rewrite.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${rewrite.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.openrewrite.maven:rewrite-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">5.47.3</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">5.47.3</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bscm.plugin.7D"></a>
      +<h2>${scm.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${scm.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-scm-plugin<br />org.apache.maven.scm:maven-scm-provider-jgit</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bscm.version.7D"></a>
      +<h2>${scm.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${scm.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.scm:maven-scm-api<br />org.apache.maven.scm:maven-scm-manager-plexus<br />org.apache.maven.scm:maven-scm-provider-gitexe</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bsite.plugin.7D"></a>
      +<h2>${site.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${site.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-site-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.21.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">4.0.0-M1<br />4.0.0-M2<br />4.0.0-M3<br />4.0.0-M4<br />4.0.0-M5<br />4.0.0-M6<br />4.0.0-M7<br />4.0.0-M8<br />4.0.0-M9<br />4.0.0-M10<br />4.0.0-M11<br />4.0.0-M12<br />4.0.0-M13<br />4.0.0-M14<br />4.0.0-M15<br /><b>4.0.0-M16</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.21.0</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bslf4j.version.7D"></a>
      +<h2>${slf4j.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer minor version available. Minor updates are sometimes passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${slf4j.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.slf4j:slf4j-simple</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.16</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.1.0-alpha0<br /><b>2.1.0-alpha1</b>&#160;<i>Latest Minor</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.0.16</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bsonar.plugin.7D"></a>
      +<h2>${sonar.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${sonar.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.sonarsource.scanner.maven:sonar-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">5.0.0.4389</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">5.0.0.4389</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bsortpom.plugin.7D"></a>
      +<h2>${sortpom.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${sortpom.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.ekryd.sortpom:sortpom-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.0.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">4.0.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bsource.plugin.7D"></a>
      +<h2>${source.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${source.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-source-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.3.1</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;"><b>4.0.0-beta-1</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.3.1</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bspotbugs.plugin.7D"></a>
      +<h2>${spotbugs.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${spotbugs.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.spotbugs:spotbugs-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.8.6.6</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">4.8.6.6</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bspotbugs.version.7D"></a>
      +<h2>${spotbugs.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${spotbugs.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.spotbugs:spotbugs-annotations</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">4.8.6</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">4.8.6</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bspotless.plugin.7D"></a>
      +<h2>${spotless.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer minor version available. Minor updates are sometimes passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${spotless.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.diffplug.spotless:spotless-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.43.0</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">2.44.0.BETA1<br />2.44.0.BETA2<br />2.44.0.BETA3<br /><b>2.44.0.BETA4</b>&#160;<i>Latest Minor</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.43.0</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bsurefire.plugin.7D"></a>
      +<h2>${surefire.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${surefire.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-surefire-plugin<br />org.apache.maven.plugins:maven-surefire-report-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.2</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.5.2</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Btaglist.plugin.7D"></a>
      +<h2>${taglist.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${taglist.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.mojo:taglist-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.2.1</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.2.1</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Btomcat.version.7D"></a>
      +<h2>${tomcat.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_warning_sml.gif" />&#160;There is at least one newer major version available. Major updates are rarely passive.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${tomcat.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.tomcat:tomcat-api<br />org.apache.tomcat:tomcat-catalina<br />org.apache.tomcat:tomcat-coyote<br />org.apache.tomcat:tomcat-jaspic-api<br />org.apache.tomcat:tomcat-juli<br />org.apache.tomcat:tomcat-servlet-api<br />org.apache.tomcat:tomcat-util</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">10.1.34</td></tr>
      +<tr class="a">
      +<th>Newer versions</th>
      +<td style="text-align: left;">11.0.0-M1<br />11.0.0-M3<br />11.0.0-M4<br />11.0.0-M5<br />11.0.0-M6<br />11.0.0-M7<br />11.0.0-M9<br />11.0.0-M10<br />11.0.0-M11<br />11.0.0-M12<br />11.0.0-M13<br />11.0.0-M14<br />11.0.0-M15<br />11.0.0-M16<br />11.0.0-M17<br />11.0.0-M18<br />11.0.0-M19<br />11.0.0-M20<br />11.0.0-M21<br />11.0.0-M22<br />11.0.0-M24<br />11.0.0-M25<br />11.0.0-M26<br />11.0.0<br />11.0.1<br /><b>11.0.2</b>&#160;<i>Latest Major</i></td></tr>
      +<tr class="b">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">10.1.34</td></tr>
      +<tr class="a">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="a">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="b">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bversions.plugin.7D"></a>
      +<h2>${versions.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${versions.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.mojo:versions-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.18.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.18.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bwagon.plugin.7D"></a>
      +<h2>${wagon.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${wagon.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.codehaus.mojo:wagon-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.0.2</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.0.2</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bwagon.version.7D"></a>
      +<h2>${wagon.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${wagon.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.wagon:wagon-scm</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.5.3</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.5.3</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bwar.plugin.7D"></a>
      +<h2>${war.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${war.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">org.apache.maven.plugins:maven-war-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">3.4.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">3.4.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Bwhitespace.plugin.7D"></a>
      +<h2>${whitespace.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${whitespace.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz.maven:whitespace-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">1.4.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">1.4.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Byuicompressor.plugin.7D"></a>
      +<h2>${yuicompressor.plugin}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${yuicompressor.plugin}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.github.hazendaz.maven:yuicompressor-maven-plugin</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.1.0</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section><section><a id="a.24.7Byuicompressor.version.7D"></a>
      +<h2>${yuicompressor.version}</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Status</th>
      +<td style="text-align: left;"><img src="images/icon_success_sml.gif" />&#160;No newer versions available.</td></tr>
      +<tr class="b">
      +<th>Property</th>
      +<td style="text-align: left;">${yuicompressor.version}</td></tr>
      +<tr class="a">
      +<th>Associated artifacts</th>
      +<td style="text-align: left;">com.yahoo.platform.yui:yuicompressor</td></tr>
      +<tr class="b">
      +<th>Current Version</th>
      +<td style="text-align: left;">2.4.8</td></tr>
      +<tr class="a">
      +<th>Allowed version range</th>
      +<td style="text-align: left;">2.4.8</td></tr>
      +<tr class="b">
      +<th>Infer associations from project</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Only use release versions</th>
      +<td style="text-align: left;">No</td></tr>
      +<tr class="b">
      +<th>Include projects from reactor</th>
      +<td style="text-align: left;">Yes</td></tr>
      +<tr class="a">
      +<th>Always use reactor projects (even if older or -SNAPSHOT)</th>
      +<td style="text-align: left;">Yes</td></tr></table></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/scm.html b/waffle-tomcat10/scm.html
      new file mode 100644
      index 0000000000..3c5f9b2477
      --- /dev/null
      +++ b/waffle-tomcat10/scm.html
      @@ -0,0 +1,158 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.8.0:scm at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Source Code Management – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a>Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li><a href="licenses.html">Licenses</a></li>
      +      <li><a href="plugin-management.html">Plugin Management</a></li>
      +      <li><a href="plugins.html">Plugins</a></li>
      +      <li class="active"><a>Source Code Management</a></li>
      +      <li><a href="summary.html">Summary</a></li>
      +      <li><a href="team.html">Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Overview"></a>
      +<h1>Overview</h1>
      +<p>This project uses <a class="externalLink" href="https://git-scm.com/">Git</a> to manage its source code. Instructions on Git use can be found at <a class="externalLink" href="https://git-scm.com/doc">https://git-scm.com/doc</a>.</p></section><section><a id="Web_Browser_Access"></a>
      +<h1>Web Browser Access</h1>
      +<p>The following is a link to a browsable version of the source repository:</p>
      +<pre><a class="externalLink" href="https://github.com/Waffle/waffle">https://github.com/Waffle/waffle</a></pre></section><section><a id="Anonymous_Access"></a>
      +<h1>Anonymous Access</h1>
      +<p>The source can be checked out anonymously from Git with this command (See <a class="externalLink" href="https://git-scm.com/docs/git-clone">https://git-scm.com/docs/git-clone</a>):</p>
      +<pre>$ git clone --branch waffle-3.5.1 ssh://git@github.com/waffle/waffle.git</pre></section><section><a id="Developer_Access"></a>
      +<h1>Developer Access</h1>
      +<p>Only project developers can access the Git tree via this method (See <a class="externalLink" href="https://git-scm.com/docs/git-clone">https://git-scm.com/docs/git-clone</a>).</p>
      +<pre>$ git clone --branch waffle-3.5.1 ssh://git@github.com/waffle/waffle.git</pre></section><section><a id="Access_from_Behind_a_Firewall"></a>
      +<h1>Access from Behind a Firewall</h1>
      +<p>Refer to the documentation of the SCM used for more information about access behind a firewall.</p></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/spotbugs.html b/waffle-tomcat10/spotbugs.html
      new file mode 100644
      index 0000000000..4c496f432f
      --- /dev/null
      +++ b/waffle-tomcat10/spotbugs.html
      @@ -0,0 +1,464 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from com.github.spotbugs:spotbugs-maven-plugin:4.8.6.6:spotbugs at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>SpotBugs Bug Detector Report – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a>SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li><a href="pmd.html">PMD</a></li>
      +      <li><a href="surefire.html">Surefire</a></li>
      +      <li class="active"><a>SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +      <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +      <li><a href="taglist.html">Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section>
      +<h1>SpotBugs Bug Detector Report</h1>
      +<p>The following document contains the results of <a class="externalLink" href="https://spotbugs.github.io/">SpotBugs</a></p>
      +<p>SpotBugs Version is <i>4.8.6</i></p>
      +<p>Threshold is <i>medium</i></p>
      +<p>Effort is <i></i></p></section><section>
      +<h1>Summary</h1>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Classes</th>
      +<th>Bugs</th>
      +<th>Errors</th>
      +<th>Missing Classes</th></tr>
      +<tr class="b">
      +<td>20</td>
      +<td>32</td>
      +<td>0</td>
      +<td>2</td></tr></table></section><section>
      +<h1>Files</h1>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Class</th>
      +<th>Bugs</th></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.GenericWindowsPrincipal">waffle.apache.GenericWindowsPrincipal</a></td>
      +<td>3</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.MixedAuthenticator">waffle.apache.MixedAuthenticator</a></td>
      +<td>8</td></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.MixedAuthenticatorTest">waffle.apache.MixedAuthenticatorTest</a></td>
      +<td>1</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.NegotiateAuthenticator">waffle.apache.NegotiateAuthenticator</a></td>
      +<td>3</td></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.NegotiateAuthenticatorTest">waffle.apache.NegotiateAuthenticatorTest</a></td>
      +<td>1</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.WaffleAuthenticatorBase">waffle.apache.WaffleAuthenticatorBase</a></td>
      +<td>7</td></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.WaffleAuthenticatorBaseTest$1">waffle.apache.WaffleAuthenticatorBaseTest$1</a></td>
      +<td>2</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.WindowsAccountTest">waffle.apache.WindowsAccountTest</a></td>
      +<td>1</td></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.catalina.SimpleHttpRequest">waffle.apache.catalina.SimpleHttpRequest</a></td>
      +<td>3</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.catalina.SimpleHttpResponse">waffle.apache.catalina.SimpleHttpResponse</a></td>
      +<td>3</td></tr></table></section><a name="waffle.apache.GenericWindowsPrincipal"></a><section>
      +<h2>waffle.apache.GenericWindowsPrincipal</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>waffle.apache.GenericWindowsPrincipal.getGroups() may expose internal representation by returning GenericWindowsPrincipal.groups</td>
      +<td>MALICIOUS_CODE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EI_EXPOSE_REP">EI_EXPOSE_REP</a></td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L117">117</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>Class waffle.apache.GenericWindowsPrincipal 'overloads' a method with both instance and static versions</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#MOM_MISLEADING_OVERLOAD_MODEL">MOM_MISLEADING_OVERLOAD_MODEL</a></td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L117">117</a></td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>Method waffle.apache.GenericWindowsPrincipal.getGroups(IWindowsAccount[]) does not presize the allocation of a collection</td>
      +<td>PERFORMANCE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#PSC_PRESIZE_COLLECTIONS">PSC_PRESIZE_COLLECTIONS</a></td>
      +<td><a href="./xref/waffle/apache/GenericWindowsPrincipal.html#L106">106</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.MixedAuthenticator"></a><section>
      +<h2>waffle.apache.MixedAuthenticator</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>Unconstrained method waffle.apache.MixedAuthenticator.redirectTo(Request, HttpServletResponse, String) converts checked exception to unchecked</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS">EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L297">297</a></td>
      +<td>High</td></tr>
      +<tr class="a">
      +<td>method waffle.apache.MixedAuthenticator.negotiate(Request, HttpServletResponse, AuthorizationHeader) converts an exception into a boolean 'error code' value</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EXS_EXCEPTION_SOFTENING_RETURN_FALSE">EXS_EXCEPTION_SOFTENING_RETURN_FALSE</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L167">167</a></td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>method waffle.apache.MixedAuthenticator.post(Request, HttpServletResponse) converts an exception into a boolean 'error code' value</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EXS_EXCEPTION_SOFTENING_RETURN_FALSE">EXS_EXCEPTION_SOFTENING_RETURN_FALSE</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L249">249</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>Format should be constant. Use placeholder to reduce the needless cost of parameter construction. see http://www.slf4j.org/faq.html#logging_performance</td>
      +<td>CORRECTNESS</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_FORMAT_SHOULD_BE_CONST">SLF4J_FORMAT_SHOULD_BE_CONST</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L247">247</a></td>
      +<td>High</td></tr>
      +<tr class="b">
      +<td>To make log readable, log format () should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L165">165</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>To make log readable, log format () should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L187">187</a></td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>To make log readable, log format () should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref/waffle/apache/MixedAuthenticator.html#L248">248</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.MixedAuthenticatorTest"></a><section>
      +<h2>waffle.apache.MixedAuthenticatorTest</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>Method waffle.apache.MixedAuthenticatorTest.testChallengeGET() accesses list or array with constant index</td>
      +<td>CORRECTNESS</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#CLI_CONSTANT_LIST_INDEX">CLI_CONSTANT_LIST_INDEX</a></td>
      +<td><a href="./xref-test/waffle/apache/MixedAuthenticatorTest.html#L120">120</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.NegotiateAuthenticator"></a><section>
      +<h2>waffle.apache.NegotiateAuthenticator</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>method waffle.apache.NegotiateAuthenticator.authenticate(Request, HttpServletResponse) converts an exception into a boolean 'error code' value</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EXS_EXCEPTION_SOFTENING_RETURN_FALSE">EXS_EXCEPTION_SOFTENING_RETURN_FALSE</a></td>
      +<td><a href="./xref/waffle/apache/NegotiateAuthenticator.html#L114">114</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>To make log readable, log format () should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref/waffle/apache/NegotiateAuthenticator.html#L112">112</a></td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>To make log readable, log format () should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref/waffle/apache/NegotiateAuthenticator.html#L134">134</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.NegotiateAuthenticatorTest"></a><section>
      +<h2>waffle.apache.NegotiateAuthenticatorTest</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>Method waffle.apache.NegotiateAuthenticatorTest.testChallengeGET() accesses list or array with constant index</td>
      +<td>CORRECTNESS</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#CLI_CONSTANT_LIST_INDEX">CLI_CONSTANT_LIST_INDEX</a></td>
      +<td><a href="./xref-test/waffle/apache/NegotiateAuthenticatorTest.html#L122">122</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.WaffleAuthenticatorBase"></a><section>
      +<h2>waffle.apache.WaffleAuthenticatorBase</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>Unconstrained method waffle.apache.WaffleAuthenticatorBase.sendError(HttpServletResponse, int) converts checked exception to unchecked</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS">EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS</a></td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L240">240</a></td>
      +<td>High</td></tr>
      +<tr class="a">
      +<td>Unconstrained method waffle.apache.WaffleAuthenticatorBase.sendUnauthorized(HttpServletResponse) converts checked exception to unchecked</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS">EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS</a></td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L224">224</a></td>
      +<td>High</td></tr>
      +<tr class="b">
      +<td>Format should be constant. Use placeholder to reduce the needless cost of parameter construction. see http://www.slf4j.org/faq.html#logging_performance</td>
      +<td>CORRECTNESS</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_FORMAT_SHOULD_BE_CONST">SLF4J_FORMAT_SHOULD_BE_CONST</a></td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L257">257</a></td>
      +<td>High</td></tr>
      +<tr class="a">
      +<td>
      +      Logger should be final field. Change this field (log) to final field.
      +    </td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_LOGGER_SHOULD_BE_FINAL">SLF4J_LOGGER_SHOULD_BE_FINAL</a></td>
      +<td>Not available</td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>
      +      To prevent illegal usage, logger should be private field. Change this field (log) to private field.
      +    </td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_LOGGER_SHOULD_BE_PRIVATE">SLF4J_LOGGER_SHOULD_BE_PRIVATE</a></td>
      +<td>Not available</td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>To make log readable, log format () should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref/waffle/apache/WaffleAuthenticatorBase.html#L258">258</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.WaffleAuthenticatorBaseTest$1"></a><section>
      +<h2>waffle.apache.WaffleAuthenticatorBaseTest$1</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>Non derivable method waffle.apache.WaffleAuthenticatorBaseTest$1.authenticate(Request, HttpServletResponse) declares throwing an exception that isn't thrown</td>
      +<td>CORRECTNESS</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#BED_BOGUS_EXCEPTION_DECLARATION">BED_BOGUS_EXCEPTION_DECLARATION</a></td>
      +<td><a href="./xref-test/waffle/apache/WaffleAuthenticatorBaseTest.html#L56">56</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>Non derivable method waffle.apache.WaffleAuthenticatorBaseTest$1.doAuthenticate(Request, HttpServletResponse) declares throwing an exception that isn't thrown</td>
      +<td>CORRECTNESS</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#BED_BOGUS_EXCEPTION_DECLARATION">BED_BOGUS_EXCEPTION_DECLARATION</a></td>
      +<td><a href="./xref-test/waffle/apache/WaffleAuthenticatorBaseTest.html#L62">62</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.WindowsAccountTest"></a><section>
      +<h2>waffle.apache.WindowsAccountTest</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>Object deserialization is used in waffle.apache.WindowsAccountTest.testIsSerializable()</td>
      +<td>SECURITY</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#OBJECT_DESERIALIZATION">OBJECT_DESERIALIZATION</a></td>
      +<td><a href="./xref-test/waffle/apache/WindowsAccountTest.html#L90">90</a></td>
      +<td>High</td></tr></table></section><a name="waffle.apache.catalina.SimpleHttpRequest"></a><section>
      +<h2>waffle.apache.catalina.SimpleHttpRequest</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>waffle.apache.catalina.SimpleHttpRequest.getSession() may expose internal representation by returning SimpleHttpRequest.httpSession</td>
      +<td>MALICIOUS_CODE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EI_EXPOSE_REP">EI_EXPOSE_REP</a></td>
      +<td><a href="./xref-test/waffle/apache/catalina/SimpleHttpRequest.html#L173">173</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>waffle.apache.catalina.SimpleHttpRequest.getSession(boolean) may expose internal representation by returning SimpleHttpRequest.httpSession</td>
      +<td>MALICIOUS_CODE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#EI_EXPOSE_REP">EI_EXPOSE_REP</a></td>
      +<td><a href="./xref-test/waffle/apache/catalina/SimpleHttpRequest.html#L178">178</a></td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>This method waffle.apache.catalina.SimpleHttpRequest.setQueryString(String) parses a String that is a field</td>
      +<td>STYLE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#STT_STRING_PARSING_A_FIELD">STT_STRING_PARSING_A_FIELD</a></td>
      +<td><a href="./xref-test/waffle/apache/catalina/SimpleHttpRequest.html#L215">215</a></td>
      +<td>Medium</td></tr></table></section><a name="waffle.apache.catalina.SimpleHttpResponse"></a><section>
      +<h2>waffle.apache.catalina.SimpleHttpResponse</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Bug</th>
      +<th>Category</th>
      +<th>Details</th>
      +<th>Line</th>
      +<th>Priority</th></tr>
      +<tr class="b">
      +<td>To make log readable, log format ({} {}) should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref-test/waffle/apache/catalina/SimpleHttpResponse.html#L62">62</a></td>
      +<td>Medium</td></tr>
      +<tr class="a">
      +<td>To make log readable, log format ({}: {}) should contain non-sign character.</td>
      +<td>BAD_PRACTICE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#SLF4J_SIGN_ONLY_FORMAT">SLF4J_SIGN_ONLY_FORMAT</a></td>
      +<td><a href="./xref-test/waffle/apache/catalina/SimpleHttpResponse.html#L65">65</a></td>
      +<td>Medium</td></tr>
      +<tr class="b">
      +<td>waffle.apache.catalina.SimpleHttpResponse.flushBuffer() makes inefficient use of keySet iterator instead of entrySet iterator</td>
      +<td>PERFORMANCE</td>
      +<td><a class="externalLink" href="https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#WMI_WRONG_MAP_ITERATOR">WMI_WRONG_MAP_ITERATOR</a></td>
      +<td><a href="./xref-test/waffle/apache/catalina/SimpleHttpResponse.html#L64">64</a></td>
      +<td>Medium</td></tr></table></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/summary.html b/waffle-tomcat10/summary.html
      new file mode 100644
      index 0000000000..4f40f4aec8
      --- /dev/null
      +++ b/waffle-tomcat10/summary.html
      @@ -0,0 +1,191 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.8.0:summary at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Project Summary – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a>Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li><a href="licenses.html">Licenses</a></li>
      +      <li><a href="plugin-management.html">Plugin Management</a></li>
      +      <li><a href="plugins.html">Plugins</a></li>
      +      <li><a href="scm.html">Source Code Management</a></li>
      +      <li class="active"><a>Summary</a></li>
      +      <li><a href="team.html">Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Project_Summary"></a>
      +<h1>Project Summary</h1><section><a id="Project_Information"></a>
      +<h2>Project Information</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Field</th>
      +<th>Value</th></tr>
      +<tr class="b">
      +<td>Name</td>
      +<td>waffle-tomcat10</td></tr>
      +<tr class="a">
      +<td>Description</td>
      +<td>Tomcat 10 integration for WAFFLE</td></tr>
      +<tr class="b">
      +<td>Homepage</td>
      +<td><a class="externalLink" href="https://waffle.github.io/waffle/">https://waffle.github.io/waffle/</a></td></tr></table></section><section><a id="Project_Organization"></a>
      +<h2>Project Organization</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Field</th>
      +<th>Value</th></tr>
      +<tr class="b">
      +<td>Name</td>
      +<td>com.github.waffle</td></tr>
      +<tr class="a">
      +<td>URL</td>
      +<td><a class="externalLink" href="https://github.com/waffle/">https://github.com/waffle/</a></td></tr></table></section><section><a id="Build_Information"></a>
      +<h2>Build Information</h2>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Field</th>
      +<th>Value</th></tr>
      +<tr class="b">
      +<td>GroupId</td>
      +<td>com.github.waffle</td></tr>
      +<tr class="a">
      +<td>ArtifactId</td>
      +<td>waffle-tomcat10</td></tr>
      +<tr class="b">
      +<td>Version</td>
      +<td>3.5.1</td></tr>
      +<tr class="a">
      +<td>Type</td>
      +<td>jar</td></tr>
      +<tr class="b">
      +<td>Java Version</td>
      +<td>11</td></tr></table></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/surefire.html b/waffle-tomcat10/surefire.html
      new file mode 100644
      index 0000000000..330967c040
      --- /dev/null
      +++ b/waffle-tomcat10/surefire.html
      @@ -0,0 +1,386 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-surefire-report-plugin:3.5.2:report at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Surefire Report – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a>Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li><a href="pmd.html">PMD</a></li>
      +      <li class="active"><a>Surefire</a></li>
      +      <li><a href="spotbugs.html">SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +      <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +      <li><a href="taglist.html">Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +
      +<script>
      +function toggleDisplay(elementId) {
      + var elm = document.getElementById(elementId + '-error');
      + if (elm == null) {
      +  elm = document.getElementById(elementId + '-failure');
      + }
      + if (elm && typeof elm.style != "undefined") {
      +  if (elm.style.display == "none") {
      +   elm.style.display = "";
      +   document.getElementById(elementId + '-off').style.display = "none";
      +   document.getElementById(elementId + '-on').style.display = "inline";
      +  } else if (elm.style.display == "") {   elm.style.display = "none";
      +   document.getElementById(elementId + '-off').style.display = "inline";
      +   document.getElementById(elementId + '-on').style.display = "none";
      +  }
      + }
      + }
      +</script>
      +<section><a id="Surefire_Report"></a>
      +<h1>Surefire Report</h1><section><a id="Summary"></a>
      +<h2>Summary</h2>
      +<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><br />
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Tests</th>
      +<th>Errors</th>
      +<th>Failures</th>
      +<th>Skipped</th>
      +<th>Success Rate</th>
      +<th>Time</th></tr>
      +<tr class="b">
      +<td>28</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>1.806 s</td></tr></table><br />
      +<p>Note: failures are anticipated and checked for with assertions while errors are unanticipated.</p><br /></section><section><a id="Package_List"></a>
      +<h2>Package List</h2>
      +<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><br />
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Package</th>
      +<th>Tests</th>
      +<th>Errors</th>
      +<th>Failures</th>
      +<th>Skipped</th>
      +<th>Success Rate</th>
      +<th>Time</th></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache">waffle.apache</a></td>
      +<td>28</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>1.806 s</td></tr></table><br />
      +<p>Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.</p><section><a id="waffle.apache"></a>
      +<h3>waffle.apache</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>-</th>
      +<th>Class</th>
      +<th>Tests</th>
      +<th>Errors</th>
      +<th>Failures</th>
      +<th>Skipped</th>
      +<th>Success Rate</th>
      +<th>Time</th></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.MixedAuthenticatorTest"><img src="images/icon_success_sml.gif" /></a></td>
      +<td><a href="#waffle.apache.MixedAuthenticatorTest">MixedAuthenticatorTest</a></td>
      +<td>12</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>1.640 s</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.NegotiateAuthenticatorTest"><img src="images/icon_success_sml.gif" /></a></td>
      +<td><a href="#waffle.apache.NegotiateAuthenticatorTest">NegotiateAuthenticatorTest</a></td>
      +<td>8</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>0.138 s</td></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.WaffleAuthenticatorBaseTest"><img src="images/icon_success_sml.gif" /></a></td>
      +<td><a href="#waffle.apache.WaffleAuthenticatorBaseTest">WaffleAuthenticatorBaseTest</a></td>
      +<td>4</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>0.008 s</td></tr>
      +<tr class="a">
      +<td><a href="#waffle.apache.WindowsAccountTest"><img src="images/icon_success_sml.gif" /></a></td>
      +<td><a href="#waffle.apache.WindowsAccountTest">WindowsAccountTest</a></td>
      +<td>3</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>0.010 s</td></tr>
      +<tr class="b">
      +<td><a href="#waffle.apache.WindowsRealmTest"><img src="images/icon_success_sml.gif" /></a></td>
      +<td><a href="#waffle.apache.WindowsRealmTest">WindowsRealmTest</a></td>
      +<td>1</td>
      +<td>0</td>
      +<td>0</td>
      +<td>0</td>
      +<td>100%</td>
      +<td>0.010 s</td></tr></table></section><br /></section><section><a id="Test_Cases"></a>
      +<h2>Test Cases</h2>
      +<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><section><a id="waffle.apache.MixedAuthenticatorTest"></a>
      +<h3>MixedAuthenticatorTest</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testSecurityCheckParameters"></a>testSecurityCheckParameters</td>
      +<td>0.766 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testGet"></a>testGet</td>
      +<td>0.048 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testGetInfo"></a>testGetInfo</td>
      +<td>0.119 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testNegotiate"></a>testNegotiate</td>
      +<td>0.259 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testProgrammaticSecurityBoth.28IWindowsIdentity.29"></a>testProgrammaticSecurityBoth(IWindowsIdentity)</td>
      +<td>0.028 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testProgrammaticSecurityNone.28IWindowsIdentity.29"></a>testProgrammaticSecurityNone(IWindowsIdentity)</td>
      +<td>0.004 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testSecurityCheckQueryString"></a>testSecurityCheckQueryString</td>
      +<td>0.042 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testCustomPrincipal"></a>testCustomPrincipal</td>
      +<td>0.046 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testChallengePOST"></a>testChallengePOST</td>
      +<td>0.045 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testChallengeGET"></a>testChallengeGET</td>
      +<td>0.039 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testPostSecurityCheck"></a>testPostSecurityCheck</td>
      +<td>0.042 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.MixedAuthenticatorTest.testProgrammaticSecuritySID.28IWindowsIdentity.29"></a>testProgrammaticSecuritySID(IWindowsIdentity)</td>
      +<td>0.004 s</td></tr></table></section><section><a id="waffle.apache.NegotiateAuthenticatorTest"></a>
      +<h3>NegotiateAuthenticatorTest</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testAllowGuestLogin"></a>testAllowGuestLogin</td>
      +<td>0.005 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testPrincipalFormat"></a>testPrincipalFormat</td>
      +<td>0.003 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testPOSTEmpty"></a>testPOSTEmpty</td>
      +<td>0.031 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testGetInfo"></a>testGetInfo</td>
      +<td>0.003 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testNegotiate"></a>testNegotiate</td>
      +<td>0.034 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testRoleFormat"></a>testRoleFormat</td>
      +<td>0.002 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testChallengePOST"></a>testChallengePOST</td>
      +<td>0.006 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.NegotiateAuthenticatorTest.testChallengeGET"></a>testChallengeGET</td>
      +<td>0.003 s</td></tr></table></section><section><a id="waffle.apache.WaffleAuthenticatorBaseTest"></a>
      +<h3>WaffleAuthenticatorBaseTest</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WaffleAuthenticatorBaseTest.should_accept_NTLM_protocol"></a>should_accept_NTLM_protocol</td>
      +<td>0.002 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WaffleAuthenticatorBaseTest.should_accept_both_protocols"></a>should_accept_both_protocols</td>
      +<td>0.001 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WaffleAuthenticatorBaseTest.should_refuse_other_protocol"></a>should_refuse_other_protocol</td>
      +<td>0.002 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WaffleAuthenticatorBaseTest.should_accept_Negotiate_protocol"></a>should_accept_Negotiate_protocol</td>
      +<td>0.002 s</td></tr></table></section><section><a id="waffle.apache.WindowsAccountTest"></a>
      +<h3>WindowsAccountTest</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WindowsAccountTest.testProperties"></a>testProperties</td>
      +<td>0.001 s</td></tr>
      +<tr class="b">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WindowsAccountTest.testIsSerializable"></a>testIsSerializable</td>
      +<td>0.006 s</td></tr>
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WindowsAccountTest.testEquals"></a>testEquals</td>
      +<td>0.002 s</td></tr></table></section><section><a id="waffle.apache.WindowsRealmTest"></a>
      +<h3>WindowsRealmTest</h3>
      +<table class="table table-striped">
      +<tr class="a">
      +<td><img src="images/icon_success_sml.gif" /></td>
      +<td><a id="TC_waffle.apache.WindowsRealmTest.testProperties"></a>testProperties</td>
      +<td>0.008 s</td></tr></table></section><br /></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/taglist.html b/waffle-tomcat10/taglist.html
      new file mode 100644
      index 0000000000..5bf88dbf77
      --- /dev/null
      +++ b/waffle-tomcat10/taglist.html
      @@ -0,0 +1,168 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.codehaus.mojo:taglist-maven-plugin:3.2.1:taglist at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Tag List report – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a href="team.html">Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a>Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
      +     <ul class="nav nav-list">
      +      <li><a href="checkstyle.html">Checkstyle</a></li>
      +      <li><a href="apidocs/index.html">Javadoc</a></li>
      +      <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +      <li><a href="xref/index.html">Source Xref</a></li>
      +      <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +      <li><a href="cpd.html">CPD</a></li>
      +      <li><a href="pmd.html">PMD</a></li>
      +      <li><a href="surefire.html">Surefire</a></li>
      +      <li><a href="spotbugs.html">SpotBugs</a></li>
      +      <li><a href="jacoco/index.html">JaCoCo</a></li>
      +      <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +      <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +      <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +      <li class="active"><a>Tag List</a></li>
      +      <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +     </ul></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Tag_List_Report"></a>
      +<h1>Tag List Report</h1>
      +<p>The following document contains the listing of user tags found in the code. Below is the summary of the occurrences per tag.</p>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Tag Class</th>
      +<th>Total number of occurrences</th>
      +<th>Tag strings used by tag class</th></tr>
      +<tr class="b">
      +<td>Deprecated Work</td>
      +<td>0</td>
      +<td>@deprecated</td></tr>
      +<tr class="a">
      +<td>FIXME Work</td>
      +<td>0</td>
      +<td>fixme, @fixme</td></tr>
      +<tr class="b">
      +<td>Todo Work</td>
      +<td>0</td>
      +<td>todo, @todo</td></tr></table>
      +<p>Each tag is detailed below:</p></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/team.html b/waffle-tomcat10/team.html
      new file mode 100644
      index 0000000000..341700197c
      --- /dev/null
      +++ b/waffle-tomcat10/team.html
      @@ -0,0 +1,192 @@
      +<!DOCTYPE html>
      +
      +
      +<!--
      + | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.8.0:team at 2025-01-01
      + | Rendered using Apache Maven Fluido Skin 2.0.0-M10
      +-->
      +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <meta name="viewport" content="width=device-width, initial-scale=1" />
      +    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
      +    <title>Project Team – waffle-tomcat10</title>
      +    <link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M10.min.css" />
      +    <link rel="stylesheet" href="./css/site.css" />
      +    <link rel="stylesheet" href="./css/print.css" media="print" />
      +    <script src="./js/apache-maven-fluido-2.0.0-M10.min.js"></script>
      +  </head>
      +  <body class="topBarEnabled">
      +    <header id="topbar" class="navbar navbar-fixed-top ">
      +      <div class="navbar-inner">
      +        <div class="container-fluid">
      +        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +          <span class="icon-bar"></span>
      +        </a>
      +            <ul class="nav">
      +      <li class="dropdown">
      +        <a class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
      +        <ul class="dropdown-menu">
      +            <li class="dropdown-submenu">
      +<a href="project-info.html">Project Information</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="ci-management.html">CI Management</a></li>
      +                  <li><a href="dependencies.html">Dependencies</a></li>
      +                  <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +                  <li><a href="distribution-management.html">Distribution Management</a></li>
      +                  <li><a href="index.html">About</a></li>
      +                  <li><a href="issue-management.html">Issue Management</a></li>
      +                  <li><a href="licenses.html">Licenses</a></li>
      +                  <li><a href="plugin-management.html">Plugin Management</a></li>
      +                  <li><a href="plugins.html">Plugins</a></li>
      +                  <li><a href="scm.html">Source Code Management</a></li>
      +                  <li><a href="summary.html">Summary</a></li>
      +                  <li><a>Team</a></li>
      +              </ul>
      +            </li>
      +            <li class="dropdown-submenu">
      +<a href="project-reports.html">Project Reports</a>
      +              <ul class="dropdown-menu">
      +                  <li><a href="checkstyle.html">Checkstyle</a></li>
      +                  <li><a href="apidocs/index.html">Javadoc</a></li>
      +                  <li><a href="testapidocs/index.html">Test Javadoc</a></li>
      +                  <li><a href="xref/index.html">Source Xref</a></li>
      +                  <li><a href="xref-test/index.html">Test Source Xref</a></li>
      +                  <li><a href="cpd.html">CPD</a></li>
      +                  <li><a href="pmd.html">PMD</a></li>
      +                  <li><a href="surefire.html">Surefire</a></li>
      +                  <li><a href="spotbugs.html">SpotBugs</a></li>
      +                  <li><a href="jacoco/index.html">JaCoCo</a></li>
      +                  <li><a href="dependency-updates-report.html">Dependency Updates Report</a></li>
      +                  <li><a href="plugin-updates-report.html">Plugin Updates Report</a></li>
      +                  <li><a href="property-updates-report.html">Property Updates Report</a></li>
      +                  <li><a href="taglist.html">Tag List</a></li>
      +                  <li><a href="dependency-check-report.html">dependency-check:aggregate</a></li>
      +              </ul>
      +            </li>
      +        </ul>
      +      </li>
      +            </ul>
      +            <ul class="nav pull-right">
      +              <li class="dropdown">
      +                <a class="dropdown-toggle" data-toggle="dropdown">External Links <b class="caret"></b></a>
      +                <ul class="dropdown-menu">
      +    <li><a href="https://github.com/Waffle/waffle" class="externalLink">waffle</a></li>
      +                </ul>
      +              </li>
      +            </ul>
      +        </div>
      +      </div>
      +    </header>
      +    <div class="container-fluid container-fluid-top">
      +      <header>
      +        <div id="banner">
      +          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="pull-right"><div id="bannerRight"><h1><a href="https://github.com/Waffle/waffle" class="externalLink"><img class="imageLink" src="images/waffle.jpg" /></a></h1></div></div>
      +          <div class="clear"><hr/></div>
      +        </div>
      +
      +        <div id="breadcrumbs">
      +          <ul class="breadcrumb">
      +        <li id="publishDate">Last Published: 2025-01-01<span class="divider">|</span>
      +</li>
      +          <li id="projectVersion">Version: 3.5.1</li>
      +          </ul>
      +        </div>
      +      </header>
      +      <div class="row-fluid">
      +        <header id="leftColumn" class="span2">
      +          <nav class="well sidebar-nav">
      +  <ul class="nav nav-list">
      +   <li class="nav-header">Project Documentation</li>
      +    <li><a href="project-info.html"><span class="icon-chevron-down"></span>Project Information</a>
      +     <ul class="nav nav-list">
      +      <li><a href="ci-management.html">CI Management</a></li>
      +      <li><a href="dependencies.html">Dependencies</a></li>
      +      <li><a href="dependency-info.html">Maven Coordinates</a></li>
      +      <li><a href="distribution-management.html">Distribution Management</a></li>
      +      <li><a href="index.html">About</a></li>
      +      <li><a href="issue-management.html">Issue Management</a></li>
      +      <li><a href="licenses.html">Licenses</a></li>
      +      <li><a href="plugin-management.html">Plugin Management</a></li>
      +      <li><a href="plugins.html">Plugins</a></li>
      +      <li><a href="scm.html">Source Code Management</a></li>
      +      <li><a href="summary.html">Summary</a></li>
      +      <li class="active"><a>Team</a></li>
      +     </ul></li>
      +    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
      +  </ul>
      +          </nav>
      +          <div class="well sidebar-nav">
      +            <div id="poweredBy">
      +              <div class="clear"></div>
      +              <div class="clear"></div>
      +<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
      +            </div>
      +          </div>
      +        </header>
      +        <main id="bodyColumn" class="span10">
      +<section><a id="Project_Team"></a>
      +<h1>Project Team</h1>
      +<p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p>
      +<p>The project team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p><section><a id="Members"></a>
      +<h2>Members</h2>
      +<p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Image</th>
      +<th>Id</th>
      +<th>Name</th>
      +<th>Email</th>
      +<th>URL</th>
      +<th>Organization</th>
      +<th>Organization URL</th>
      +<th>Roles</th>
      +<th>Time Zone</th></tr>
      +<tr class="b">
      +<td><figure><img src="https://avatars3.githubusercontent.com/u/542335?s=400" /></figure></td>
      +<td><a id="dblock"></a>dblock</td>
      +<td>Daniel Doubrovkine</td>
      +<td><a class="externalLink" href="mailto:dblock@dblock.org">dblock@dblock.org</a></td>
      +<td><a class="externalLink" href="https://github.com/dblock/">https://github.com/dblock/</a></td>
      +<td>dblock</td>
      +<td><a class="externalLink" href="http://code.dblock.org">http://code.dblock.org</a></td>
      +<td>Architect, Developer</td>
      +<td>-5</td></tr></table></section><section><a id="Contributors"></a>
      +<h2>Contributors</h2>
      +<p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p>
      +<table class="table table-striped">
      +<tr class="a">
      +<th>Image</th>
      +<th>Name</th>
      +<th>Email</th>
      +<th>URL</th>
      +<th>Organization</th>
      +<th>Organization URL</th>
      +<th>Roles</th>
      +<th>Time Zone</th></tr>
      +<tr class="b">
      +<td><figure><img src="https://avatars0.githubusercontent.com/u/975267" /></figure></td>
      +<td>Jeremy Landis</td>
      +<td><a class="externalLink" href="mailto:jeremylandis@hotmail.com">jeremylandis@hotmail.com</a></td>
      +<td><a class="externalLink" href="https://www.linkedin.com/in/jeremy-landis-548b2719">https://www.linkedin.com/in/jeremy-landis-548b2719</a></td>
      +<td>hazendaz</td>
      +<td><a class="externalLink" href="https://github.com/hazendaz">https://github.com/hazendaz</a></td>
      +<td>Developer</td>
      +<td>-5</td></tr></table></section></section>        </main>
      +      </div>
      +    </div>
      +    <hr/>
      +    <footer>
      +      <div class="container-fluid">
      +        <div class="row-fluid">
      +            <p>©      2010–2025
      +<a href="https://github.com/waffle/">com.github.waffle</a>
      +</p>
      +        </div>
      +      </div>
      +    </footer>
      +  </body>
      +</html>
      diff --git a/waffle-tomcat10/testapidocs/javadoc.bat b/waffle-tomcat10/testapidocs/javadoc.bat
      new file mode 100644
      index 0000000000..19fe07c825
      --- /dev/null
      +++ b/waffle-tomcat10/testapidocs/javadoc.bat
      @@ -0,0 +1 @@
      +cmd.exe /X /D /C "D:\jdk\jdk-21.0.5\bin\javadoc.exe -J-Duser.language= -J-Duser.country= @options @packages"
      \ No newline at end of file
      diff --git a/waffle-tomcat10/testapidocs/options b/waffle-tomcat10/testapidocs/options
      new file mode 100644
      index 0000000000..9c115b455c
      --- /dev/null
      +++ b/waffle-tomcat10/testapidocs/options
      @@ -0,0 +1,33 @@
      +--add-modules
      +ALL-MODULE-PATH
      +--module-path
      +'C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/target/waffle-tomcat10-3.5.1.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-jni/10.1.34/tomcat-jni-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/assertj/assertj-core/3.27.0/assertj-core-3.27.0.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-coyote/10.1.34/tomcat-coyote-10.1.34.jar;C:/Users/Jeremy/.m2/repository/com/google/errorprone/error_prone_annotations/2.36.0/error_prone_annotations-2.36.0.jar;C:/Users/Jeremy/.m2/repository/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar;C:/Users/Jeremy/.m2/repository/org/slf4j/slf4j-simple/2.0.16/slf4j-simple-2.0.16.jar;C:/Users/Jeremy/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar;C:/Users/Jeremy/.m2/repository/net/bytebuddy/byte-buddy-agent/1.15.11/byte-buddy-agent-1.15.11.jar;C:/Users/Jeremy/.m2/repository/com/github/ben-manes/caffeine/caffeine/3.1.8/caffeine-3.1.8.jar;C:/Users/Jeremy/.m2/repository/org/checkerframework/checker-qual/3.48.3/checker-qual-3.48.3.jar;C:/Users/Jeremy/.m2/repository/org/junit/platform/junit-platform-commons/1.11.4/junit-platform-commons-1.11.4.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-jaspic-api/10.1.34/tomcat-jaspic-api-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.11.4/junit-jupiter-api-5.11.4.jar;C:/Users/Jeremy/.m2/repository/org/slf4j/jcl-over-slf4j/2.0.16/jcl-over-slf4j-2.0.16.jar;C:/Users/Jeremy/.m2/repository/net/bytebuddy/byte-buddy/1.15.11/byte-buddy-1.15.11.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-api/10.1.34/tomcat-api-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-util-scan/10.1.34/tomcat-util-scan-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-util/10.1.34/tomcat-util-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-servlet-api/10.1.34/tomcat-servlet-api-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-catalina/10.1.34/tomcat-catalina-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.11.4/junit-jupiter-engine-5.11.4.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-jsp-api/10.1.34/tomcat-jsp-api-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-el-api/10.1.34/tomcat-el-api-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-annotations-api/10.1.34/tomcat-annotations-api-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/apache/tomcat/tomcat-juli/10.1.34/tomcat-juli-10.1.34.jar;C:/Users/Jeremy/.m2/repository/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar;C:/Users/Jeremy/.m2/repository/com/google/j2objc/j2objc-annotations/3.0.0/j2objc-annotations-3.0.0.jar;C:/Users/Jeremy/.m2/repository/org/junit/platform/junit-platform-engine/1.11.4/junit-platform-engine-1.11.4.jar'
      +--patch-module
      +waffle.tomcat10='C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/src/test/java;C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/target/generated-test-sources/test-annotations;C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/target/classes;C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/target/test-classes;C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-jna-jakarta/target/waffle-jna-jakarta-3.5.1.jar;C:/Users/Jeremy/.m2/repository/net/java/dev/jna/jna/5.16.0/jna-5.16.0.jar;C:/Users/Jeremy/.m2/repository/net/java/dev/jna/jna-platform/5.16.0/jna-platform-5.16.0.jar;C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tests-jakarta/target/waffle-tests-jakarta-3.5.1.jar;C:/Users/Jeremy/.m2/repository/org/mockito/mockito-core/5.14.2/mockito-core-5.14.2.jar;C:/Users/Jeremy/.m2/repository/org/objenesis/objenesis/3.4/objenesis-3.4.jar;C:/Users/Jeremy/.m2/repository/com/github/spotbugs/spotbugs-annotations/4.8.6/spotbugs-annotations-4.8.6.jar;C:/Users/Jeremy/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar;C:/Users/Jeremy/.m2/repository/com/github/hazendaz/jmockit/jmockit/1.55.0/jmockit-1.55.0.jar;C:/Users/Jeremy/.m2/repository/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar;C:/Users/Jeremy/.m2/repository/org/openjdk/jmh/jmh-generator-annprocess/1.37/jmh-generator-annprocess-1.37.jar;C:/Users/Jeremy/.m2/repository/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar;C:/Users/Jeremy/.m2/repository/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar'
      +-encoding
      +'UTF-8'
      +-protected
      +-quiet
      +--release
      +11
      +-html5
      +-author
      +-bottom
      +'Copyright &#169; 2010&#x2013;2025 <a href="https://github.com/waffle/">com.github.waffle</a>. All rights reserved.'
      +-charset
      +'UTF-8'
      +-d
      +'C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/target/site/testapidocs'
      +-docencoding
      +'UTF-8'
      +-doctitle
      +'waffle-tomcat10 3.5.1 Test API'
      +-link
      +'../apidocs'
      +-linkoffline
      +'https://docs.oracle.com/en/java/javase/11/docs/api' 'C:/Users/Jeremy/GitHub/waffle/Source/JNA/target/checkout/Source/JNA/waffle-tomcat10/target/javadoc-bundle-options'
      +-notimestamp
      +-use
      +-version
      +-windowtitle
      +'waffle-tomcat10 3.5.1 Test API'
      diff --git a/waffle-tomcat10/testapidocs/packages b/waffle-tomcat10/testapidocs/packages
      new file mode 100644
      index 0000000000..1fa9af3d05
      --- /dev/null
      +++ b/waffle-tomcat10/testapidocs/packages
      @@ -0,0 +1,2 @@
      +waffle.apache.catalina
      +waffle.apache
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref-test/allclasses-frame.html b/waffle-tomcat10/xref-test/allclasses-frame.html
      new file mode 100644
      index 0000000000..5cabe83251
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/allclasses-frame.html
      @@ -0,0 +1,24 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>All Classes</title>
      +        <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 class="bar">All Classes</h1>
      +        <div class="indexContainer">
      +            <ul>
      +                <li><a href="waffle/apache/MixedAuthenticatorTest.html#MixedAuthenticatorTest" target="classFrame">MixedAuthenticatorTest</a></li>
      +                <li><a href="waffle/apache/NegotiateAuthenticatorTest.html#NegotiateAuthenticatorTest" target="classFrame">NegotiateAuthenticatorTest</a></li>
      +                <li><a href="waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest" target="classFrame">SimpleHttpRequest</a></li>
      +                <li><a href="waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse" target="classFrame">SimpleHttpResponse</a></li>
      +                <li><a href="waffle/apache/WaffleAuthenticatorBaseTest.html#WaffleAuthenticatorBaseTest" target="classFrame">WaffleAuthenticatorBaseTest</a></li>
      +                <li><a href="waffle/apache/WindowsAccountTest.html#WindowsAccountTest" target="classFrame">WindowsAccountTest</a></li>
      +                <li><a href="waffle/apache/WindowsRealmTest.html#WindowsRealmTest" target="classFrame">WindowsRealmTest</a></li>
      +            </ul>
      +        </div>
      +    </body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/index.html b/waffle-tomcat10/xref-test/index.html
      new file mode 100644
      index 0000000000..0a42c9e361
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/index.html
      @@ -0,0 +1,75 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- this is a JXR report set (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference</title>
      +        <script type="text/javascript">
      +            tmpTargetPage = "" + window.location.search;
      +            if (tmpTargetPage != "" && tmpTargetPage != "undefined")
      +                tmpTargetPage = tmpTargetPage.substring(1);
      +            if (tmpTargetPage.indexOf(":") != -1 || (tmpTargetPage != "" && !validURL(tmpTargetPage)))
      +                tmpTargetPage = "undefined";
      +            targetPage = tmpTargetPage;
      +            function validURL(url) {
      +                try {
      +                    url = decodeURIComponent(url);
      +                }
      +                catch (error) {
      +                    return false;
      +                }
      +                var pos = url.indexOf(".html");
      +                if (pos == -1 || pos != url.length - 5)
      +                    return false;
      +                var allowNumber = false;
      +                var allowSep = false;
      +                var seenDot = false;
      +                for (var i = 0; i < url.length - 5; i++) {
      +                    var ch = url.charAt(i);
      +                    if ('a' <= ch && ch <= 'z' ||
      +                            'A' <= ch && ch <= 'Z' ||
      +                            ch == '$' ||
      +                            ch == '_' ||
      +                            ch.charCodeAt(0) > 127) {
      +                        allowNumber = true;
      +                        allowSep = true;
      +                    } else if ('0' <= ch && ch <= '9'
      +                            || ch == '-') {
      +                        if (!allowNumber)
      +                            return false;
      +                    } else if (ch == '/' || ch == '.') {
      +                        if (!allowSep)
      +                            return false;
      +                        allowNumber = false;
      +                        allowSep = false;
      +                        if (ch == '.')
      +                            seenDot = true;
      +                        if (ch == '/' && seenDot)
      +                            return false;
      +                    } else {
      +                        return false;
      +                    }
      +                }
      +                return true;
      +            }
      +            function loadFrames() {
      +                if (targetPage != "" && targetPage != "undefined")
      +                    top.classFrame.location = top.targetPage;
      +            }
      +        </script>
      +    </head>
      +    <frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
      +        <frameset rows="30%,70%" title="Left frames" onload="top.loadFrames()">
      +            <frame src="overview-frame.html" name="packageListFrame" title="All Packages"/>
      +            <frame src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)"/>
      +        </frameset>
      +        <frame src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes"/>
      +        <noframes>
      +            <h1>Frame Alert</h1>
      +            <p>
      +                You don't have frames. Go <a href="overview-summary.html">here</a>
      +            </p>
      +        </noframes>
      +    </frameset>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/overview-frame.html b/waffle-tomcat10/xref-test/overview-frame.html
      new file mode 100644
      index 0000000000..0880aac7fe
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/overview-frame.html
      @@ -0,0 +1,27 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference</title>
      +        <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 title="waffle-tomcat10 3.5.1 Reference" class="bar"><strong>waffle-tomcat10 3.5.1 Reference</strong></h1>
      +        <div class="indexHeader"><span><a href="allclasses-frame.html" target="packageFrame">All&nbsp;Classes</a></span></div>
      +        <div class="indexContainer">
      +            <h2 title="Packages">Packages</h2>
      +            <ul title="Packages">
      +                <li>
      +                    <a href="waffle/apache/package-frame.html" target="packageFrame">waffle.apache</a>
      +                </li>
      +                <li>
      +                    <a href="waffle/apache/catalina/package-frame.html" target="packageFrame">waffle.apache.catalina</a>
      +                </li>
      +            </ul>
      +        </div>
      +        <p>&nbsp;</p>
      +    </body>
      +</html>
      +
      diff --git a/waffle-tomcat10/xref-test/overview-summary.html b/waffle-tomcat10/xref-test/overview-summary.html
      new file mode 100644
      index 0000000000..802115e0f0
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/overview-summary.html
      @@ -0,0 +1,97 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk7) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference</title>
      +        <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +                <div class="topNav">
      +            <a name="navbar_top"><!--   --></a>
      +            <a href="#skip-navbar_top" title="Skip navigation links"></a>
      +            <a name="navbar_top_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li class="navBarCell1Rev">Overview</li>
      +                <li>Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="overview-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <a name="skip-navbar_top"><!--   --></a>
      +        </div>
      +        
      +                <div class="header">
      +            <h1 class="title">waffle-tomcat10 3.5.1 Reference</h1>
      +        </div>
      +        <div class="contentContainer">
      +            <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Packages table, listing packages">
      +                <caption><span>Packages</span><span class="tabEnd">&nbsp;</span></caption>
      +                <thead>
      +                    <tr>
      +                        <th class="colFirst colLast" scope="col">Package</th>
      +                    </tr>
      +                </thead>
      +                <tbody>
      +                    <tr class="altColor">
      +                        <td class="colFirst colLast">
      +                            <a href="waffle/apache/package-summary.html">waffle.apache</a>
      +                        </td>
      +                    </tr>
      +                    <tr class="rowColor">
      +                        <td class="colFirst colLast">
      +                            <a href="waffle/apache/catalina/package-summary.html">waffle.apache.catalina</a>
      +                        </td>
      +                    </tr>
      +                </tbody>
      +            </table>
      +        </div>
      +        
      +                <div class="bottomNav">
      +            <a name="navbar_bottom"><!--   --></a>
      +            <a href="#skip-navbar_bottom" title="Skip navigation links"></a>
      +            <a name="navbar_bottom_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li class="navBarCell1Rev">Overview</li>
      +                <li>Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="overview-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <a name="skip-navbar_bottom"><!--   --></a>
      +        </div>
      +        
      +        <div id="footer">
      +            © 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref-test/stylesheet.css b/waffle-tomcat10/xref-test/stylesheet.css
      new file mode 100644
      index 0000000000..84d4b28eda
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/stylesheet.css
      @@ -0,0 +1,626 @@
      +/* Javadoc style sheet */
      +/*
      +Overall document style
      +*/
      +
      +@import url('resources/fonts/dejavu.css');
      +
      +body {
      +    background-color:#ffffff;
      +    color:#353833;
      +    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
      +    font-size:14px;
      +    margin:0;
      +}
      +a:link, a:visited {
      +    text-decoration:none;
      +    color:#4A6782;
      +}
      +a:hover, a:focus {
      +    text-decoration:none;
      +    color:#bb7a2a;
      +}
      +a:active {
      +    text-decoration:none;
      +    color:#4A6782;
      +}
      +a[name] {
      +    color:#353833;
      +}
      +a[name]:hover {
      +    text-decoration:none;
      +    color:#353833;
      +}
      +pre {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +}
      +h1 {
      +    font-size:20px;
      +}
      +h2 {
      +    font-size:18px;
      +}
      +h3 {
      +    font-size:16px;
      +    font-style:italic;
      +}
      +h4 {
      +    font-size:13px;
      +}
      +h5 {
      +    font-size:12px;
      +}
      +h6 {
      +    font-size:11px;
      +}
      +ul {
      +    list-style-type:disc;
      +}
      +code, tt {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +    padding-top:4px;
      +    margin-top:8px;
      +    line-height:1.4em;
      +}
      +dt code {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +    padding-top:4px;
      +}
      +table tr td dt code {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +    vertical-align:top;
      +    padding-top:4px;
      +}
      +sup {
      +    font-size:8px;
      +}
      +/*
      +Document title and Copyright styles
      +*/
      +.clear {
      +    clear:both;
      +    height:0px;
      +    overflow:hidden;
      +}
      +.aboutLanguage {
      +    float:right;
      +    padding:0px 21px;
      +    font-size:11px;
      +    z-index:200;
      +    margin-top:-9px;
      +}
      +.legalCopy {
      +    margin-left:.5em;
      +}
      +.bar a, .bar a:link, .bar a:visited, .bar a:active {
      +    color:#FFFFFF;
      +    text-decoration:none;
      +}
      +.bar a:hover, .bar a:focus {
      +    color:#bb7a2a;
      +}
      +.tab {
      +    background-color:#0066FF;
      +    color:#ffffff;
      +    padding:8px;
      +    width:5em;
      +    font-weight:bold;
      +}
      +/*
      +Navigation bar styles
      +*/
      +.bar {
      +    background-color:#4D7A97;
      +    color:#FFFFFF;
      +    padding:.8em .5em .4em .8em;
      +    height:auto;/*height:1.8em;*/
      +    font-size:11px;
      +    margin:0;
      +}
      +.topNav {
      +    background-color:#4D7A97;
      +    color:#FFFFFF;
      +    float:left;
      +    padding:0;
      +    width:100%;
      +    clear:right;
      +    height:2.8em;
      +    padding-top:10px;
      +    overflow:hidden;
      +    font-size:12px; 
      +}
      +.bottomNav {
      +    margin-top:10px;
      +    background-color:#4D7A97;
      +    color:#FFFFFF;
      +    float:left;
      +    padding:0;
      +    width:100%;
      +    clear:right;
      +    height:2.8em;
      +    padding-top:10px;
      +    overflow:hidden;
      +    font-size:12px;
      +}
      +.subNav {
      +    background-color:#dee3e9;
      +    float:left;
      +    width:100%;
      +    overflow:hidden;
      +    font-size:12px;
      +}
      +.subNav div {
      +    clear:left;
      +    float:left;
      +    padding:0 0 5px 6px;
      +    text-transform:uppercase;
      +}
      +ul.navList, ul.subNavList {
      +    float:left;
      +    margin:0 25px 0 0;
      +    padding:0;
      +}
      +ul.navList li{
      +    list-style:none;
      +    float:left;
      +    padding: 5px 6px;
      +    text-transform:uppercase;
      +}
      +ul.subNavList li{
      +    list-style:none;
      +    float:left;
      +}
      +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
      +    color:#FFFFFF;
      +    text-decoration:none;
      +    text-transform:uppercase;
      +}
      +.topNav a:hover, .bottomNav a:hover {
      +    text-decoration:none;
      +    color:#bb7a2a;
      +    text-transform:uppercase;
      +}
      +.navBarCell1Rev {
      +    background-color:#F8981D;
      +    color:#253441;
      +    margin: auto 5px;
      +}
      +.skipNav {
      +    position:absolute;
      +    top:auto;
      +    left:-9999px;
      +    overflow:hidden;
      +}
      +/*
      +Page header and footer styles
      +*/
      +.header, .footer {
      +    clear:both;
      +    margin:0 20px;
      +    padding:5px 0 0 0;
      +}
      +.indexHeader {
      +    margin:10px;
      +    position:relative;
      +}
      +.indexHeader span{
      +    margin-right:15px;
      +}
      +.indexHeader h1 {
      +    font-size:13px;
      +}
      +.title {
      +    color:#2c4557;
      +    margin:10px 0;
      +}
      +.subTitle {
      +    margin:5px 0 0 0;
      +}
      +.header ul {
      +    margin:0 0 15px 0;
      +    padding:0;
      +}
      +.footer ul {
      +    margin:20px 0 5px 0;
      +}
      +.header ul li, .footer ul li {
      +    list-style:none;
      +    font-size:13px;
      +}
      +/*
      +Heading styles
      +*/
      +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
      +    background-color:#dee3e9;
      +    border:1px solid #d0d9e0;
      +    margin:0 0 6px -8px;
      +    padding:7px 5px;
      +}
      +ul.blockList ul.blockList ul.blockList li.blockList h3 {
      +    background-color:#dee3e9;
      +    border:1px solid #d0d9e0;
      +    margin:0 0 6px -8px;
      +    padding:7px 5px;
      +}
      +ul.blockList ul.blockList li.blockList h3 {
      +    padding:0;
      +    margin:15px 0;
      +}
      +ul.blockList li.blockList h2 {
      +    padding:0px 0 20px 0;
      +}
      +/*
      +Page layout container styles
      +*/
      +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
      +    clear:both;
      +    padding:10px 20px;
      +    position:relative;
      +}
      +.indexContainer {
      +    margin:10px;
      +    position:relative;
      +    font-size:12px;
      +}
      +.indexContainer h2 {
      +    font-size:13px;
      +    padding:0 0 3px 0;
      +}
      +.indexContainer ul {
      +    margin:0;
      +    padding:0;
      +}
      +.indexContainer ul li {
      +    list-style:none;
      +    padding-top:2px;
      +}
      +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
      +    font-size:12px;
      +    font-weight:bold;
      +    margin:10px 0 0 0;
      +    color:#4E4E4E;
      +}
      +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
      +    margin:5px 0 10px 0px;
      +    font-size:14px;
      +    font-family:'DejaVu Sans Mono',monospace;
      +}
      +.serializedFormContainer dl.nameValue dt {
      +    margin-left:1px;
      +    font-size:1.1em;
      +    display:inline;
      +    font-weight:bold;
      +}
      +.serializedFormContainer dl.nameValue dd {
      +    margin:0 0 0 1px;
      +    font-size:1.1em;
      +    display:inline;
      +}
      +/*
      +List styles
      +*/
      +ul.horizontal li {
      +    display:inline;
      +    font-size:0.9em;
      +}
      +ul.inheritance {
      +    margin:0;
      +    padding:0;
      +}
      +ul.inheritance li {
      +    display:inline;
      +    list-style:none;
      +}
      +ul.inheritance li ul.inheritance {
      +    margin-left:15px;
      +    padding-left:15px;
      +    padding-top:1px;
      +}
      +ul.blockList, ul.blockListLast {
      +    margin:10px 0 10px 0;
      +    padding:0;
      +}
      +ul.blockList li.blockList, ul.blockListLast li.blockList {
      +    list-style:none;
      +    margin-bottom:15px;
      +    line-height:1.4;
      +}
      +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
      +    padding:0px 20px 5px 10px;
      +    border:1px solid #ededed; 
      +    background-color:#f8f8f8;
      +}
      +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
      +    padding:0 0 5px 8px;
      +    background-color:#ffffff;
      +    border:none;
      +}
      +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
      +    margin-left:0;
      +    padding-left:0;
      +    padding-bottom:15px;
      +    border:none;
      +}
      +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
      +    list-style:none;
      +    border-bottom:none;
      +    padding-bottom:0;
      +}
      +table tr td dl, table tr td dl dt, table tr td dl dd {
      +    margin-top:0;
      +    margin-bottom:1px;
      +}
      +/*
      +Table styles
      +*/
      +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
      +    width:100%;
      +    border-left:1px solid #EEE; 
      +    border-right:1px solid #EEE; 
      +    border-bottom:1px solid #EEE; 
      +}
      +.overviewSummary, .memberSummary  {
      +    padding:0px;
      +}
      +.overviewSummary caption, .memberSummary caption, .typeSummary caption,
      +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
      +    position:relative;
      +    text-align:left;
      +    background-repeat:no-repeat;
      +    color:#253441;
      +    font-weight:bold;
      +    clear:none;
      +    overflow:hidden;
      +    padding:0px;
      +    padding-top:10px;
      +    padding-left:1px;
      +    margin:0px;
      +    white-space:pre;
      +}
      +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
      +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
      +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
      +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
      +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
      +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
      +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
      +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
      +    color:#FFFFFF;
      +}
      +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
      +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
      +    white-space:nowrap;
      +    padding-top:5px;
      +    padding-left:12px;
      +    padding-right:12px;
      +    padding-bottom:7px;
      +    display:inline-block;
      +    float:left;
      +    background-color:#F8981D;
      +    border: none;
      +    height:16px;
      +}
      +.memberSummary caption span.activeTableTab span {
      +    white-space:nowrap;
      +    padding-top:5px;
      +    padding-left:12px;
      +    padding-right:12px;
      +    margin-right:3px;
      +    display:inline-block;
      +    float:left;
      +    background-color:#F8981D;
      +    height:16px;
      +}
      +.memberSummary caption span.tableTab span {
      +    white-space:nowrap;
      +    padding-top:5px;
      +    padding-left:12px;
      +    padding-right:12px;
      +    margin-right:3px;
      +    display:inline-block;
      +    float:left;
      +    background-color:#4D7A97;
      +    height:16px;
      +}
      +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
      +    padding-top:0px;
      +    padding-left:0px;
      +    padding-right:0px;
      +    background-image:none;
      +    float:none;
      +    display:inline;
      +}
      +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
      +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
      +    display:none;
      +    width:5px;
      +    position:relative;
      +    float:left;
      +    background-color:#F8981D;
      +}
      +.memberSummary .activeTableTab .tabEnd {
      +    display:none;
      +    width:5px;
      +    margin-right:3px;
      +    position:relative; 
      +    float:left;
      +    background-color:#F8981D;
      +}
      +.memberSummary .tableTab .tabEnd {
      +    display:none;
      +    width:5px;
      +    margin-right:3px;
      +    position:relative;
      +    background-color:#4D7A97;
      +    float:left;
      +
      +}
      +.overviewSummary td, .memberSummary td, .typeSummary td,
      +.useSummary td, .constantsSummary td, .deprecatedSummary td {
      +    text-align:left;
      +    padding:0px 0px 12px 10px;
      +}
      +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
      +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
      +    vertical-align:top;
      +    padding-right:0px;
      +    padding-top:8px;
      +    padding-bottom:3px;
      +}
      +th.colFirst, th.colLast, th.colOne, .constantsSummary th {
      +    background:#dee3e9;
      +    text-align:left;
      +    padding:8px 3px 3px 7px;
      +}
      +td.colFirst, th.colFirst {
      +    white-space:nowrap;
      +    font-size:13px;
      +}
      +td.colLast, th.colLast {
      +    font-size:13px;
      +}
      +td.colOne, th.colOne {
      +    font-size:13px;
      +}
      +.overviewSummary td.colFirst, .overviewSummary th.colFirst,
      +.useSummary td.colFirst, .useSummary th.colFirst,
      +.overviewSummary td.colOne, .overviewSummary th.colOne,
      +.memberSummary td.colFirst, .memberSummary th.colFirst,
      +.memberSummary td.colOne, .memberSummary th.colOne,
      +.typeSummary td.colFirst{
      +    width:25%;
      +    vertical-align:top;
      +}
      +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
      +    font-weight:bold;
      +}
      +.tableSubHeadingColor {
      +    background-color:#EEEEFF;
      +}
      +.altColor {
      +    background-color:#FFFFFF;
      +}
      +.rowColor {
      +    background-color:#EEEEEF;
      +}
      +/*
      +Content styles
      +*/
      +.description pre {
      +    margin-top:0;
      +}
      +.deprecatedContent {
      +    margin:0;
      +    padding:10px 0;
      +}
      +.docSummary {
      +    padding:0;
      +}
      +
      +ul.blockList ul.blockList ul.blockList li.blockList h3 {
      +    font-style:normal;
      +}
      +
      +div.block {
      +    font-size:14px;
      +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
      +}
      +
      +td.colLast div {
      +    padding-top:0px;
      +}
      +
      +
      +td.colLast a {
      +    padding-bottom:3px;
      +}
      +/*
      +Formatting effect styles
      +*/
      +.sourceLineNo {
      +    color:green;
      +    padding:0 30px 0 0;
      +}
      +h1.hidden {
      +    visibility:hidden;
      +    overflow:hidden;
      +    font-size:10px;
      +}
      +.block {
      +    display:block;
      +    margin:3px 10px 2px 0px;
      +    color:#474747;
      +}
      +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
      +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
      +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
      +    font-weight:bold;
      +}
      +.deprecationComment, .emphasizedPhrase, .interfaceName {
      +    font-style:italic;
      +}
      +
      +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
      +div.block div.block span.interfaceName {
      +    font-style:normal;
      +}
      +
      +div.contentContainer ul.blockList li.blockList h2{
      +    padding-bottom:0px;
      +}
      +
      +/* JXR style sheet */
      +a.jxr_linenumber:link {
      +    color: #00f;
      +}
      +
      +a.jxr_linenumber:visited {
      +    color: #00a;
      +}
      +
      +a.jxr_linenumber:active, a.jxr_linenumber:hover {
      +    color: #f30 !important;
      +}
      +
      +em.comment {
      +    color: #390;
      +}
      +
      +.string {
      +    color: #009;
      +}
      +
      +#overview {
      +    padding: 2px;
      +    font-size: 90%;
      +    font-family: Helvetica, Arial, sans-serif;
      +}
      +
      +hr {
      +    color: #000;
      +}
      +
      +.jxr_comment
      +{
      +    color: #390;
      +}
      +
      +.jxr_javadoccomment
      +{
      +    color: #A00;
      +}
      +
      +.jxr_string
      +{
      +    color: #009;
      +}
      +
      +.jxr_keyword
      +{
      +    color: #000;
      +}
      +
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/MixedAuthenticatorTest.html b/waffle-tomcat10/xref-test/waffle/apache/MixedAuthenticatorTest.html
      new file mode 100644
      index 0000000000..9757030ce7
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/MixedAuthenticatorTest.html
      @@ -0,0 +1,412 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>MixedAuthenticatorTest xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../testapidocs/waffle/apache/MixedAuthenticatorTest.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.assertj.core.api.Assertions.assertThat;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> com.sun.jna.platform.win32.Sspi;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> com.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.ServletException;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Base64;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> mockit.Expectations;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> mockit.Mocked;
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.Context;
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.Engine;
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.LifecycleException;
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.realm.GenericPrincipal;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.AfterEach;
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Assertions;
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>  
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <strong class="jxr_keyword">import</strong> waffle.apache.catalina.SimpleHttpRequest;
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <strong class="jxr_keyword">import</strong> waffle.apache.catalina.SimpleHttpResponse;
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">import</strong> waffle.mock.MockWindowsAuthProvider;
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsCredentialsHandle;
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsIdentity;
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.PrincipalFormat;
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsAccountImpl;
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsCredentialsHandleImpl;
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsSecurityContextImpl;
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>  
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment"> * Waffle Tomcat Mixed Authenticator Test.</em>
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <strong class="jxr_keyword">class</strong> <a name="MixedAuthenticatorTest" href="../../waffle/apache/MixedAuthenticatorTest.html#MixedAuthenticatorTest">MixedAuthenticatorTest</a> {
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>  
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <em class="jxr_javadoccomment">/** The authenticator. */</em>
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      MixedAuthenticator authenticator;
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>      <em class="jxr_javadoccomment">/** The context. */</em>
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>      @Mocked
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">private</strong> Context context;
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>  
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <em class="jxr_javadoccomment">/** The engine. */</em>
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      @Mocked
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>      <strong class="jxr_keyword">private</strong> Engine engine;
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>  
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment">     * Sets the up.</em>
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">     * @throws LifecycleException</em>
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">     *             the lifecycle exception</em>
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>      @BeforeEach
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>      <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>          <strong class="jxr_keyword">this</strong>.authenticator = <strong class="jxr_keyword">new</strong> MixedAuthenticator();
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <strong class="jxr_keyword">this</strong>.authenticator.setContainer(<strong class="jxr_keyword">this</strong>.context);
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>          Assertions.assertNotNull(<strong class="jxr_keyword">new</strong> Expectations() {
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>              {
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>                  MixedAuthenticatorTest.<strong class="jxr_keyword">this</strong>.context.getParent();
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>                  <strong class="jxr_keyword">this</strong>.result = MixedAuthenticatorTest.<strong class="jxr_keyword">this</strong>.engine;
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>                  MixedAuthenticatorTest.<strong class="jxr_keyword">this</strong>.context.getParent();
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>                  <strong class="jxr_keyword">this</strong>.result = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>              }
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>          });
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">this</strong>.authenticator.start();
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>      }
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>  
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>  <em class="jxr_javadoccomment">     * Tear down.</em>
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>  <em class="jxr_javadoccomment">     * @throws LifecycleException</em>
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">     *             the lifecycle exception</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a>     @AfterEach
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a>     <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>         <strong class="jxr_keyword">this</strong>.authenticator.stop();
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>     }
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a> <em class="jxr_javadoccomment">     * Test challenge get.</em>
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>     @Test
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a>     <strong class="jxr_keyword">void</strong> testChallengeGET() {
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a>         request.setMethod(<span class="jxr_string">"GET"</span>);
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a>         request.setQueryString(<span class="jxr_string">"j_negotiate_check"</span>);
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a>         <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a>         <strong class="jxr_keyword">final</strong> String[] wwwAuthenticates = response.getHeaderValues(<span class="jxr_string">"WWW-Authenticate"</span>);
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a>         Assertions.assertNotNull(wwwAuthenticates);
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>         Assertions.assertEquals(2, wwwAuthenticates.length);
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a>         Assertions.assertEquals(<span class="jxr_string">"Negotiate"</span>, wwwAuthenticates[0]);
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a>         Assertions.assertEquals(<span class="jxr_string">"NTLM"</span>, wwwAuthenticates[1]);
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a>         Assertions.assertEquals(<span class="jxr_string">"close"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>         Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>         Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a>     }
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a> 
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">     * Test challenge post.</em>
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a>     @Test
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a>     <strong class="jxr_keyword">void</strong> testChallengePOST() {
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a>         <strong class="jxr_keyword">final</strong> String securityPackage = <span class="jxr_string">"Negotiate"</span>;
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a>         IWindowsCredentialsHandle clientCredentials = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a>         WindowsSecurityContextImpl clientContext = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a>             <em class="jxr_comment">// client credentials handle</em>
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a>             clientCredentials = WindowsCredentialsHandleImpl.getCurrent(securityPackage);
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a>             clientCredentials.initialize();
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a>             <em class="jxr_comment">// initial client security context</em>
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a>             clientContext = <strong class="jxr_keyword">new</strong> WindowsSecurityContextImpl();
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a>             clientContext.setPrincipalName(WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a>             clientContext.setCredentialsHandle(clientCredentials);
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a>             clientContext.setSecurityPackage(securityPackage);
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a>             clientContext.initialize(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a>             request.setQueryString(<span class="jxr_string">"j_negotiate_check"</span>);
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a>             request.setMethod(<span class="jxr_string">"POST"</span>);
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a>             request.setContentLength(0);
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a>             <strong class="jxr_keyword">final</strong> String clientToken = Base64.getEncoder().encodeToString(clientContext.getToken());
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a>             request.addHeader(<span class="jxr_string">"Authorization"</span>, securityPackage + <span class="jxr_string">" "</span> + clientToken);
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a>             <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>             Assertions.assertTrue(response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).startsWith(securityPackage + <span class="jxr_string">" "</span>));
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>             Assertions.assertEquals(<span class="jxr_string">"keep-alive"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>             Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a>             Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>             <strong class="jxr_keyword">if</strong> (clientContext != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a>                 clientContext.dispose();
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a>             }
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a>             <strong class="jxr_keyword">if</strong> (clientCredentials != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a>                 clientCredentials.dispose();
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>             }
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>         }
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a>     }
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a> 
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a> <em class="jxr_javadoccomment">     * Test get.</em>
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a>     @Test
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a>     <strong class="jxr_keyword">void</strong> testGet() {
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a>         Assertions.assertFalse(<strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response));
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a>     }
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a> 
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a> <em class="jxr_javadoccomment">     * Test get info.</em>
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a>     @Test
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a>     <strong class="jxr_keyword">void</strong> testGetInfo() {
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a>         assertThat(<strong class="jxr_keyword">this</strong>.authenticator.getInfo()).isNotEmpty();
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a>     }
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a> 
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a> <em class="jxr_javadoccomment">     * Test negotiate.</em>
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a>     @Test
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a>     <strong class="jxr_keyword">void</strong> testNegotiate() {
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a>         <strong class="jxr_keyword">final</strong> String securityPackage = <span class="jxr_string">"Negotiate"</span>;
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a>         IWindowsCredentialsHandle clientCredentials = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a>         WindowsSecurityContextImpl clientContext = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>             <em class="jxr_comment">// client credentials handle</em>
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a>             clientCredentials = WindowsCredentialsHandleImpl.getCurrent(securityPackage);
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a>             clientCredentials.initialize();
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a>             <em class="jxr_comment">// initial client security context</em>
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a>             clientContext = <strong class="jxr_keyword">new</strong> WindowsSecurityContextImpl();
      +<a class="jxr_linenumber" name="L198" href="#L198">198</a>             clientContext.setPrincipalName(WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L199" href="#L199">199</a>             clientContext.setCredentialsHandle(clientCredentials);
      +<a class="jxr_linenumber" name="L200" href="#L200">200</a>             clientContext.setSecurityPackage(securityPackage);
      +<a class="jxr_linenumber" name="L201" href="#L201">201</a>             clientContext.initialize(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L202" href="#L202">202</a>             <em class="jxr_comment">// negotiate</em>
      +<a class="jxr_linenumber" name="L203" href="#L203">203</a>             <strong class="jxr_keyword">boolean</strong> authenticated = false;
      +<a class="jxr_linenumber" name="L204" href="#L204">204</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L205" href="#L205">205</a>             request.setQueryString(<span class="jxr_string">"j_negotiate_check"</span>);
      +<a class="jxr_linenumber" name="L206" href="#L206">206</a>             String clientToken;
      +<a class="jxr_linenumber" name="L207" href="#L207">207</a>             <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
      +<a class="jxr_linenumber" name="L208" href="#L208">208</a>                 clientToken = Base64.getEncoder().encodeToString(clientContext.getToken());
      +<a class="jxr_linenumber" name="L209" href="#L209">209</a>                 request.addHeader(<span class="jxr_string">"Authorization"</span>, securityPackage + <span class="jxr_string">" "</span> + clientToken);
      +<a class="jxr_linenumber" name="L210" href="#L210">210</a> 
      +<a class="jxr_linenumber" name="L211" href="#L211">211</a>                 <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L212" href="#L212">212</a>                 authenticated = <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L213" href="#L213">213</a> 
      +<a class="jxr_linenumber" name="L214" href="#L214">214</a>                 <strong class="jxr_keyword">if</strong> (authenticated) {
      +<a class="jxr_linenumber" name="L215" href="#L215">215</a>                     assertThat(response.getHeaderNames().size()).isNotNegative();
      +<a class="jxr_linenumber" name="L216" href="#L216">216</a>                     <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L217" href="#L217">217</a>                 }
      +<a class="jxr_linenumber" name="L218" href="#L218">218</a> 
      +<a class="jxr_linenumber" name="L219" href="#L219">219</a>                 Assertions.assertTrue(response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).startsWith(securityPackage + <span class="jxr_string">" "</span>));
      +<a class="jxr_linenumber" name="L220" href="#L220">220</a>                 Assertions.assertEquals(<span class="jxr_string">"keep-alive"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L221" href="#L221">221</a>                 Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L222" href="#L222">222</a>                 Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L223" href="#L223">223</a>                 <strong class="jxr_keyword">final</strong> String continueToken = response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>)
      +<a class="jxr_linenumber" name="L224" href="#L224">224</a>                         .substring(securityPackage.length() + 1);
      +<a class="jxr_linenumber" name="L225" href="#L225">225</a>                 <strong class="jxr_keyword">final</strong> byte[] continueTokenBytes = Base64.getDecoder().decode(continueToken);
      +<a class="jxr_linenumber" name="L226" href="#L226">226</a>                 assertThat(continueTokenBytes).isNotEmpty();
      +<a class="jxr_linenumber" name="L227" href="#L227">227</a>                 <strong class="jxr_keyword">final</strong> ManagedSecBufferDesc continueTokenBuffer = <strong class="jxr_keyword">new</strong> ManagedSecBufferDesc(Sspi.SECBUFFER_TOKEN,
      +<a class="jxr_linenumber" name="L228" href="#L228">228</a>                         continueTokenBytes);
      +<a class="jxr_linenumber" name="L229" href="#L229">229</a>                 clientContext.initialize(clientContext.getHandle(), continueTokenBuffer,
      +<a class="jxr_linenumber" name="L230" href="#L230">230</a>                         WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L231" href="#L231">231</a>             }
      +<a class="jxr_linenumber" name="L232" href="#L232">232</a>             Assertions.assertTrue(authenticated);
      +<a class="jxr_linenumber" name="L233" href="#L233">233</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L234" href="#L234">234</a>             <strong class="jxr_keyword">if</strong> (clientContext != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L235" href="#L235">235</a>                 clientContext.dispose();
      +<a class="jxr_linenumber" name="L236" href="#L236">236</a>             }
      +<a class="jxr_linenumber" name="L237" href="#L237">237</a>             <strong class="jxr_keyword">if</strong> (clientCredentials != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L238" href="#L238">238</a>                 clientCredentials.dispose();
      +<a class="jxr_linenumber" name="L239" href="#L239">239</a>             }
      +<a class="jxr_linenumber" name="L240" href="#L240">240</a>         }
      +<a class="jxr_linenumber" name="L241" href="#L241">241</a>     }
      +<a class="jxr_linenumber" name="L242" href="#L242">242</a> 
      +<a class="jxr_linenumber" name="L243" href="#L243">243</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">     * Test post security check.</em>
      +<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L246" href="#L246">246</a>     @Test
      +<a class="jxr_linenumber" name="L247" href="#L247">247</a>     <strong class="jxr_keyword">void</strong> testPostSecurityCheck() {
      +<a class="jxr_linenumber" name="L248" href="#L248">248</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L249" href="#L249">249</a>         request.setQueryString(<span class="jxr_string">"j_security_check"</span>);
      +<a class="jxr_linenumber" name="L250" href="#L250">250</a>         request.addParameter(<span class="jxr_string">"j_username"</span>, <span class="jxr_string">"username"</span>);
      +<a class="jxr_linenumber" name="L251" href="#L251">251</a>         request.addParameter(<span class="jxr_string">"j_password"</span>, <span class="jxr_string">"password"</span>);
      +<a class="jxr_linenumber" name="L252" href="#L252">252</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L253" href="#L253">253</a>         Assertions.assertFalse(<strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response));
      +<a class="jxr_linenumber" name="L254" href="#L254">254</a>     }
      +<a class="jxr_linenumber" name="L255" href="#L255">255</a> 
      +<a class="jxr_linenumber" name="L256" href="#L256">256</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L257" href="#L257">257</a> <em class="jxr_javadoccomment">     * Test programmatic security BOTH.</em>
      +<a class="jxr_linenumber" name="L258" href="#L258">258</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L259" href="#L259">259</a> <em class="jxr_javadoccomment">     * @param identity</em>
      +<a class="jxr_linenumber" name="L260" href="#L260">260</a> <em class="jxr_javadoccomment">     *            the identity</em>
      +<a class="jxr_linenumber" name="L261" href="#L261">261</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L262" href="#L262">262</a> <em class="jxr_javadoccomment">     * @throws ServletException</em>
      +<a class="jxr_linenumber" name="L263" href="#L263">263</a> <em class="jxr_javadoccomment">     *             the servlet exception</em>
      +<a class="jxr_linenumber" name="L264" href="#L264">264</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L265" href="#L265">265</a>     @Test
      +<a class="jxr_linenumber" name="L266" href="#L266">266</a>     <strong class="jxr_keyword">void</strong> testProgrammaticSecurityBoth(@Mocked <strong class="jxr_keyword">final</strong> IWindowsIdentity identity) <strong class="jxr_keyword">throws</strong> ServletException {
      +<a class="jxr_linenumber" name="L267" href="#L267">267</a>         <strong class="jxr_keyword">this</strong>.authenticator.setAuth(<strong class="jxr_keyword">new</strong> MockWindowsAuthProvider());
      +<a class="jxr_linenumber" name="L268" href="#L268">268</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L269" href="#L269">269</a>         request.getMappingData().context = (Context) <strong class="jxr_keyword">this</strong>.authenticator.getContainer();
      +<a class="jxr_linenumber" name="L270" href="#L270">270</a> 
      +<a class="jxr_linenumber" name="L271" href="#L271">271</a>         request.login(WindowsAccountImpl.getCurrentUsername(), <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L272" href="#L272">272</a> 
      +<a class="jxr_linenumber" name="L273" href="#L273">273</a>         Assertions.assertNotNull(<strong class="jxr_keyword">new</strong> Expectations() {
      +<a class="jxr_linenumber" name="L274" href="#L274">274</a>             {
      +<a class="jxr_linenumber" name="L275" href="#L275">275</a>                 identity.getFqn();
      +<a class="jxr_linenumber" name="L276" href="#L276">276</a>                 <strong class="jxr_keyword">this</strong>.result = <span class="jxr_string">"fqn"</span>;
      +<a class="jxr_linenumber" name="L277" href="#L277">277</a>                 identity.getSidString();
      +<a class="jxr_linenumber" name="L278" href="#L278">278</a>                 <strong class="jxr_keyword">this</strong>.result = <span class="jxr_string">"S-1234"</span>;
      +<a class="jxr_linenumber" name="L279" href="#L279">279</a>             }
      +<a class="jxr_linenumber" name="L280" href="#L280">280</a>         });
      +<a class="jxr_linenumber" name="L281" href="#L281">281</a>         request.setUserPrincipal(<strong class="jxr_keyword">new</strong> GenericWindowsPrincipal(identity, PrincipalFormat.BOTH, PrincipalFormat.BOTH));
      +<a class="jxr_linenumber" name="L282" href="#L282">282</a> 
      +<a class="jxr_linenumber" name="L283" href="#L283">283</a>         Assertions.assertTrue(request.getUserPrincipal() instanceof GenericWindowsPrincipal);
      +<a class="jxr_linenumber" name="L284" href="#L284">284</a>         <strong class="jxr_keyword">final</strong> GenericWindowsPrincipal windowsPrincipal = (GenericWindowsPrincipal) request.getUserPrincipal();
      +<a class="jxr_linenumber" name="L285" href="#L285">285</a>         Assertions.assertTrue(windowsPrincipal.getSidString().startsWith(<span class="jxr_string">"S-"</span>));
      +<a class="jxr_linenumber" name="L286" href="#L286">286</a>     }
      +<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
      +<a class="jxr_linenumber" name="L288" href="#L288">288</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L289" href="#L289">289</a> <em class="jxr_javadoccomment">     * Test programmatic security SID.</em>
      +<a class="jxr_linenumber" name="L290" href="#L290">290</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L291" href="#L291">291</a> <em class="jxr_javadoccomment">     * @param identity</em>
      +<a class="jxr_linenumber" name="L292" href="#L292">292</a> <em class="jxr_javadoccomment">     *            the identity</em>
      +<a class="jxr_linenumber" name="L293" href="#L293">293</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L294" href="#L294">294</a> <em class="jxr_javadoccomment">     * @throws ServletException</em>
      +<a class="jxr_linenumber" name="L295" href="#L295">295</a> <em class="jxr_javadoccomment">     *             the servlet exception</em>
      +<a class="jxr_linenumber" name="L296" href="#L296">296</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L297" href="#L297">297</a>     @Test
      +<a class="jxr_linenumber" name="L298" href="#L298">298</a>     <strong class="jxr_keyword">void</strong> testProgrammaticSecuritySID(@Mocked <strong class="jxr_keyword">final</strong> IWindowsIdentity identity) <strong class="jxr_keyword">throws</strong> ServletException {
      +<a class="jxr_linenumber" name="L299" href="#L299">299</a>         <strong class="jxr_keyword">this</strong>.authenticator.setAuth(<strong class="jxr_keyword">new</strong> MockWindowsAuthProvider());
      +<a class="jxr_linenumber" name="L300" href="#L300">300</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L301" href="#L301">301</a>         request.getMappingData().context = (Context) <strong class="jxr_keyword">this</strong>.authenticator.getContainer();
      +<a class="jxr_linenumber" name="L302" href="#L302">302</a> 
      +<a class="jxr_linenumber" name="L303" href="#L303">303</a>         request.login(WindowsAccountImpl.getCurrentUsername(), <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L304" href="#L304">304</a> 
      +<a class="jxr_linenumber" name="L305" href="#L305">305</a>         Assertions.assertNotNull(<strong class="jxr_keyword">new</strong> Expectations() {
      +<a class="jxr_linenumber" name="L306" href="#L306">306</a>             {
      +<a class="jxr_linenumber" name="L307" href="#L307">307</a>                 identity.getSidString();
      +<a class="jxr_linenumber" name="L308" href="#L308">308</a>                 <strong class="jxr_keyword">this</strong>.result = <span class="jxr_string">"S-1234"</span>;
      +<a class="jxr_linenumber" name="L309" href="#L309">309</a>             }
      +<a class="jxr_linenumber" name="L310" href="#L310">310</a>         });
      +<a class="jxr_linenumber" name="L311" href="#L311">311</a>         request.setUserPrincipal(<strong class="jxr_keyword">new</strong> GenericWindowsPrincipal(identity, PrincipalFormat.SID, PrincipalFormat.SID));
      +<a class="jxr_linenumber" name="L312" href="#L312">312</a> 
      +<a class="jxr_linenumber" name="L313" href="#L313">313</a>         Assertions.assertTrue(request.getUserPrincipal() instanceof GenericWindowsPrincipal);
      +<a class="jxr_linenumber" name="L314" href="#L314">314</a>         <strong class="jxr_keyword">final</strong> GenericWindowsPrincipal windowsPrincipal = (GenericWindowsPrincipal) request.getUserPrincipal();
      +<a class="jxr_linenumber" name="L315" href="#L315">315</a>         Assertions.assertTrue(windowsPrincipal.getSidString().startsWith(<span class="jxr_string">"S-"</span>));
      +<a class="jxr_linenumber" name="L316" href="#L316">316</a>     }
      +<a class="jxr_linenumber" name="L317" href="#L317">317</a> 
      +<a class="jxr_linenumber" name="L318" href="#L318">318</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L319" href="#L319">319</a> <em class="jxr_javadoccomment">     * Test programmatic security NONE.</em>
      +<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">     * @param identity</em>
      +<a class="jxr_linenumber" name="L322" href="#L322">322</a> <em class="jxr_javadoccomment">     *            the identity</em>
      +<a class="jxr_linenumber" name="L323" href="#L323">323</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L324" href="#L324">324</a> <em class="jxr_javadoccomment">     * @throws ServletException</em>
      +<a class="jxr_linenumber" name="L325" href="#L325">325</a> <em class="jxr_javadoccomment">     *             the servlet exception</em>
      +<a class="jxr_linenumber" name="L326" href="#L326">326</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L327" href="#L327">327</a>     @Test
      +<a class="jxr_linenumber" name="L328" href="#L328">328</a>     <strong class="jxr_keyword">void</strong> testProgrammaticSecurityNone(@Mocked <strong class="jxr_keyword">final</strong> IWindowsIdentity identity) <strong class="jxr_keyword">throws</strong> ServletException {
      +<a class="jxr_linenumber" name="L329" href="#L329">329</a>         <strong class="jxr_keyword">this</strong>.authenticator.setAuth(<strong class="jxr_keyword">new</strong> MockWindowsAuthProvider());
      +<a class="jxr_linenumber" name="L330" href="#L330">330</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L331" href="#L331">331</a>         request.getMappingData().context = (Context) <strong class="jxr_keyword">this</strong>.authenticator.getContainer();
      +<a class="jxr_linenumber" name="L332" href="#L332">332</a> 
      +<a class="jxr_linenumber" name="L333" href="#L333">333</a>         request.login(WindowsAccountImpl.getCurrentUsername(), <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L334" href="#L334">334</a> 
      +<a class="jxr_linenumber" name="L335" href="#L335">335</a>         request.setUserPrincipal(<strong class="jxr_keyword">new</strong> GenericWindowsPrincipal(identity, PrincipalFormat.NONE, PrincipalFormat.NONE));
      +<a class="jxr_linenumber" name="L336" href="#L336">336</a> 
      +<a class="jxr_linenumber" name="L337" href="#L337">337</a>         Assertions.assertTrue(request.getUserPrincipal() instanceof GenericWindowsPrincipal);
      +<a class="jxr_linenumber" name="L338" href="#L338">338</a>         <strong class="jxr_keyword">final</strong> GenericWindowsPrincipal windowsPrincipal = (GenericWindowsPrincipal) request.getUserPrincipal();
      +<a class="jxr_linenumber" name="L339" href="#L339">339</a>         Assertions.assertNull(windowsPrincipal.getSidString());
      +<a class="jxr_linenumber" name="L340" href="#L340">340</a>     }
      +<a class="jxr_linenumber" name="L341" href="#L341">341</a> 
      +<a class="jxr_linenumber" name="L342" href="#L342">342</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em class="jxr_javadoccomment">     * Test security check parameters.</em>
      +<a class="jxr_linenumber" name="L344" href="#L344">344</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L345" href="#L345">345</a>     @Test
      +<a class="jxr_linenumber" name="L346" href="#L346">346</a>     <strong class="jxr_keyword">void</strong> testSecurityCheckParameters() {
      +<a class="jxr_linenumber" name="L347" href="#L347">347</a>         <strong class="jxr_keyword">this</strong>.authenticator.setAuth(<strong class="jxr_keyword">new</strong> MockWindowsAuthProvider());
      +<a class="jxr_linenumber" name="L348" href="#L348">348</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L349" href="#L349">349</a>         request.addParameter(<span class="jxr_string">"j_security_check"</span>, <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L350" href="#L350">350</a>         request.addParameter(<span class="jxr_string">"j_username"</span>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L351" href="#L351">351</a>         request.addParameter(<span class="jxr_string">"j_password"</span>, <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L352" href="#L352">352</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L353" href="#L353">353</a>         Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response));
      +<a class="jxr_linenumber" name="L354" href="#L354">354</a>     }
      +<a class="jxr_linenumber" name="L355" href="#L355">355</a> 
      +<a class="jxr_linenumber" name="L356" href="#L356">356</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L357" href="#L357">357</a> <em class="jxr_javadoccomment">     * Test security check query string.</em>
      +<a class="jxr_linenumber" name="L358" href="#L358">358</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L359" href="#L359">359</a>     @Test
      +<a class="jxr_linenumber" name="L360" href="#L360">360</a>     <strong class="jxr_keyword">void</strong> testSecurityCheckQueryString() {
      +<a class="jxr_linenumber" name="L361" href="#L361">361</a>         <strong class="jxr_keyword">this</strong>.authenticator.setAuth(<strong class="jxr_keyword">new</strong> MockWindowsAuthProvider());
      +<a class="jxr_linenumber" name="L362" href="#L362">362</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L363" href="#L363">363</a>         request.setQueryString(<span class="jxr_string">"j_security_check"</span>);
      +<a class="jxr_linenumber" name="L364" href="#L364">364</a>         request.addParameter(<span class="jxr_string">"j_username"</span>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L365" href="#L365">365</a>         request.addParameter(<span class="jxr_string">"j_password"</span>, <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L366" href="#L366">366</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L367" href="#L367">367</a>         Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response));
      +<a class="jxr_linenumber" name="L368" href="#L368">368</a>     }
      +<a class="jxr_linenumber" name="L369" href="#L369">369</a> 
      +<a class="jxr_linenumber" name="L370" href="#L370">370</a>     @Test
      +<a class="jxr_linenumber" name="L371" href="#L371">371</a>     <strong class="jxr_keyword">void</strong> testCustomPrincipal() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L372" href="#L372">372</a>         <strong class="jxr_keyword">final</strong> GenericPrincipal genericPrincipal = <strong class="jxr_keyword">new</strong> GenericPrincipal(<span class="jxr_string">"my-principal"</span>, Collections.emptyList());
      +<a class="jxr_linenumber" name="L373" href="#L373">373</a>         <strong class="jxr_keyword">final</strong> MixedAuthenticator customAuthenticator = <strong class="jxr_keyword">new</strong> MixedAuthenticator() {
      +<a class="jxr_linenumber" name="L374" href="#L374">374</a>             @Override
      +<a class="jxr_linenumber" name="L375" href="#L375">375</a>             <strong class="jxr_keyword">protected</strong> GenericPrincipal createPrincipal(<strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity) {
      +<a class="jxr_linenumber" name="L376" href="#L376">376</a>                 <strong class="jxr_keyword">return</strong> genericPrincipal;
      +<a class="jxr_linenumber" name="L377" href="#L377">377</a>             }
      +<a class="jxr_linenumber" name="L378" href="#L378">378</a>         };
      +<a class="jxr_linenumber" name="L379" href="#L379">379</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L380" href="#L380">380</a>             customAuthenticator.setContainer(<strong class="jxr_keyword">this</strong>.context);
      +<a class="jxr_linenumber" name="L381" href="#L381">381</a>             customAuthenticator.setAlwaysUseSession(<strong class="jxr_keyword">true</strong>);
      +<a class="jxr_linenumber" name="L382" href="#L382">382</a>             customAuthenticator.start();
      +<a class="jxr_linenumber" name="L383" href="#L383">383</a> 
      +<a class="jxr_linenumber" name="L384" href="#L384">384</a>             customAuthenticator.setAuth(<strong class="jxr_keyword">new</strong> MockWindowsAuthProvider());
      +<a class="jxr_linenumber" name="L385" href="#L385">385</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L386" href="#L386">386</a>             request.addParameter(<span class="jxr_string">"j_security_check"</span>, <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L387" href="#L387">387</a>             request.addParameter(<span class="jxr_string">"j_username"</span>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L388" href="#L388">388</a>             request.addParameter(<span class="jxr_string">"j_password"</span>, <span class="jxr_string">""</span>);
      +<a class="jxr_linenumber" name="L389" href="#L389">389</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L390" href="#L390">390</a>             Assertions.assertTrue(customAuthenticator.authenticate(request, response));
      +<a class="jxr_linenumber" name="L391" href="#L391">391</a> 
      +<a class="jxr_linenumber" name="L392" href="#L392">392</a>             Assertions.assertEquals(genericPrincipal, request.getUserPrincipal());
      +<a class="jxr_linenumber" name="L393" href="#L393">393</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L394" href="#L394">394</a>             customAuthenticator.stop();
      +<a class="jxr_linenumber" name="L395" href="#L395">395</a>         }
      +<a class="jxr_linenumber" name="L396" href="#L396">396</a> 
      +<a class="jxr_linenumber" name="L397" href="#L397">397</a>     }
      +<a class="jxr_linenumber" name="L398" href="#L398">398</a> 
      +<a class="jxr_linenumber" name="L399" href="#L399">399</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/NegotiateAuthenticatorTest.html b/waffle-tomcat10/xref-test/waffle/apache/NegotiateAuthenticatorTest.html
      new file mode 100644
      index 0000000000..2f99905f48
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/NegotiateAuthenticatorTest.html
      @@ -0,0 +1,342 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>NegotiateAuthenticatorTest xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../testapidocs/waffle/apache/NegotiateAuthenticatorTest.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.assertj.core.api.Assertions.assertThat;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> com.sun.jna.platform.win32.Sspi;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> com.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Base64;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> mockit.Expectations;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> mockit.Mocked;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.Context;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.Engine;
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.LifecycleException;
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.AfterEach;
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Assertions;
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> waffle.apache.catalina.SimpleHttpRequest;
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> waffle.apache.catalina.SimpleHttpResponse;
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsCredentialsHandle;
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.PrincipalFormat;
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsAccountImpl;
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsAuthProviderImpl;
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsCredentialsHandleImpl;
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsSecurityContextImpl;
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment"> * Waffle Tomcat Authenticator Test.</em>
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <strong class="jxr_keyword">class</strong> <a name="NegotiateAuthenticatorTest" href="../../waffle/apache/NegotiateAuthenticatorTest.html#NegotiateAuthenticatorTest">NegotiateAuthenticatorTest</a> {
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>  
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>      <em class="jxr_javadoccomment">/** The authenticator. */</em>
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">private</strong> NegotiateAuthenticator authenticator;
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>  
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>      @Mocked
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>      Context context;
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>  
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      @Mocked
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>      Engine engine;
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">     * Sets the up.</em>
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">     * @throws LifecycleException</em>
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment">     *             the lifecycle exception</em>
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>      @BeforeEach
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>      <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>          <strong class="jxr_keyword">this</strong>.authenticator = <strong class="jxr_keyword">new</strong> NegotiateAuthenticator();
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>          <strong class="jxr_keyword">this</strong>.authenticator.setContainer(<strong class="jxr_keyword">this</strong>.context);
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>          Assertions.assertNotNull(<strong class="jxr_keyword">new</strong> Expectations() {
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>              {
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>                  NegotiateAuthenticatorTest.<strong class="jxr_keyword">this</strong>.context.getParent();
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>                  <strong class="jxr_keyword">this</strong>.result = NegotiateAuthenticatorTest.<strong class="jxr_keyword">this</strong>.engine;
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>                  NegotiateAuthenticatorTest.<strong class="jxr_keyword">this</strong>.context.getParent();
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>                  <strong class="jxr_keyword">this</strong>.result = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>              }
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>          });
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>          <strong class="jxr_keyword">this</strong>.authenticator.start();
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>      }
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>  <em class="jxr_javadoccomment">     * Tear down.</em>
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>  <em class="jxr_javadoccomment">     * @throws LifecycleException</em>
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>  <em class="jxr_javadoccomment">     *             the lifecycle exception</em>
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>      @AfterEach
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>      <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <strong class="jxr_keyword">this</strong>.authenticator.stop();
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>      }
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     * Test allow guest login.</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a>     @Test
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>     <strong class="jxr_keyword">void</strong> testAllowGuestLogin() {
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>         Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.authenticator.isAllowGuestLogin());
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>         <strong class="jxr_keyword">this</strong>.authenticator.setAllowGuestLogin(false);
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>         Assertions.assertFalse(<strong class="jxr_keyword">this</strong>.authenticator.isAllowGuestLogin());
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>     }
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">     * Test challenge get.</em>
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a>     @Test
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a>     <strong class="jxr_keyword">void</strong> testChallengeGET() {
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a>         request.setMethod(<span class="jxr_string">"GET"</span>);
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a>         <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a>         <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>         <strong class="jxr_keyword">final</strong> String[] wwwAuthenticates = response.getHeaderValues(<span class="jxr_string">"WWW-Authenticate"</span>);
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a>         Assertions.assertNotNull(wwwAuthenticates);
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a>         Assertions.assertEquals(2, wwwAuthenticates.length);
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a>         Assertions.assertEquals(<span class="jxr_string">"Negotiate"</span>, wwwAuthenticates[0]);
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>         Assertions.assertEquals(<span class="jxr_string">"NTLM"</span>, wwwAuthenticates[1]);
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>         Assertions.assertEquals(<span class="jxr_string">"close"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a>         Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a>         Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>     }
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a> 
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em class="jxr_javadoccomment">     * Test challenge post.</em>
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a>     @Test
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a>     <strong class="jxr_keyword">void</strong> testChallengePOST() {
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a>         <strong class="jxr_keyword">final</strong> String securityPackage = <span class="jxr_string">"Negotiate"</span>;
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a>         IWindowsCredentialsHandle clientCredentials = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a>         WindowsSecurityContextImpl clientContext = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a>             <em class="jxr_comment">// client credentials handle</em>
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a>             clientCredentials = WindowsCredentialsHandleImpl.getCurrent(securityPackage);
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a>             clientCredentials.initialize();
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a>             <em class="jxr_comment">// initial client security context</em>
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a>             clientContext = <strong class="jxr_keyword">new</strong> WindowsSecurityContextImpl();
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a>             clientContext.setPrincipalName(WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a>             clientContext.setCredentialsHandle(clientCredentials);
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a>             clientContext.setSecurityPackage(securityPackage);
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a>             clientContext.initialize(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a>             request.setMethod(<span class="jxr_string">"POST"</span>);
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a>             request.setContentLength(0);
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a>             <strong class="jxr_keyword">final</strong> String clientToken = Base64.getEncoder().encodeToString(clientContext.getToken());
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a>             request.addHeader(<span class="jxr_string">"Authorization"</span>, securityPackage + <span class="jxr_string">" "</span> + clientToken);
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>             <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>             Assertions.assertTrue(response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).startsWith(securityPackage + <span class="jxr_string">" "</span>));
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>             Assertions.assertEquals(<span class="jxr_string">"keep-alive"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a>             Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a>             Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a>             <strong class="jxr_keyword">if</strong> (clientContext != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a>                 clientContext.dispose();
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a>             }
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a>             <strong class="jxr_keyword">if</strong> (clientCredentials != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>                 clientCredentials.dispose();
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>             }
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a>         }
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a>     }
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a> 
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a> <em class="jxr_javadoccomment">     * Test get info.</em>
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a>     @Test
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a>     <strong class="jxr_keyword">void</strong> testGetInfo() {
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a>         assertThat(<strong class="jxr_keyword">this</strong>.authenticator.getInfo()).isNotEmpty();
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a>         Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.authenticator.getAuth() instanceof WindowsAuthProviderImpl);
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a>     }
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a> 
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a> <em class="jxr_javadoccomment">     * Test negotiate.</em>
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a>     @Test
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a>     <strong class="jxr_keyword">void</strong> testNegotiate() {
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a>         <strong class="jxr_keyword">final</strong> String securityPackage = <span class="jxr_string">"Negotiate"</span>;
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a>         IWindowsCredentialsHandle clientCredentials = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a>         WindowsSecurityContextImpl clientContext = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a>             <em class="jxr_comment">// client credentials handle</em>
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a>             clientCredentials = WindowsCredentialsHandleImpl.getCurrent(securityPackage);
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a>             clientCredentials.initialize();
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a>             <em class="jxr_comment">// initial client security context</em>
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a>             clientContext = <strong class="jxr_keyword">new</strong> WindowsSecurityContextImpl();
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a>             clientContext.setPrincipalName(WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a>             clientContext.setCredentialsHandle(clientCredentials);
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>             clientContext.setSecurityPackage(securityPackage);
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>             clientContext.initialize(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a>             <em class="jxr_comment">// negotiate</em>
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a>             <strong class="jxr_keyword">boolean</strong> authenticated = false;
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a>             <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
      +<a class="jxr_linenumber" name="L198" href="#L198">198</a>                 <strong class="jxr_keyword">final</strong> String clientToken = Base64.getEncoder().encodeToString(clientContext.getToken());
      +<a class="jxr_linenumber" name="L199" href="#L199">199</a>                 request.addHeader(<span class="jxr_string">"Authorization"</span>, securityPackage + <span class="jxr_string">" "</span> + clientToken);
      +<a class="jxr_linenumber" name="L200" href="#L200">200</a> 
      +<a class="jxr_linenumber" name="L201" href="#L201">201</a>                 <strong class="jxr_keyword">final</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L202" href="#L202">202</a>                 authenticated = <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L203" href="#L203">203</a> 
      +<a class="jxr_linenumber" name="L204" href="#L204">204</a>                 <strong class="jxr_keyword">if</strong> (authenticated) {
      +<a class="jxr_linenumber" name="L205" href="#L205">205</a>                     Assertions.assertNotNull(request.getUserPrincipal());
      +<a class="jxr_linenumber" name="L206" href="#L206">206</a>                     Assertions.assertTrue(request.getUserPrincipal() instanceof GenericWindowsPrincipal);
      +<a class="jxr_linenumber" name="L207" href="#L207">207</a>                     <strong class="jxr_keyword">final</strong> GenericWindowsPrincipal windowsPrincipal = (GenericWindowsPrincipal) request
      +<a class="jxr_linenumber" name="L208" href="#L208">208</a>                             .getUserPrincipal();
      +<a class="jxr_linenumber" name="L209" href="#L209">209</a>                     Assertions.assertTrue(windowsPrincipal.getSidString().startsWith(<span class="jxr_string">"S-"</span>));
      +<a class="jxr_linenumber" name="L210" href="#L210">210</a>                     assertThat(windowsPrincipal.getSid()).isNotEmpty();
      +<a class="jxr_linenumber" name="L211" href="#L211">211</a>                     Assertions.assertTrue(windowsPrincipal.getGroups().containsKey(<span class="jxr_string">"Everyone"</span>));
      +<a class="jxr_linenumber" name="L212" href="#L212">212</a>                     assertThat(response.getHeaderNames()).hasSizeLessThanOrEqualTo(1);
      +<a class="jxr_linenumber" name="L213" href="#L213">213</a>                     <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L214" href="#L214">214</a>                 }
      +<a class="jxr_linenumber" name="L215" href="#L215">215</a> 
      +<a class="jxr_linenumber" name="L216" href="#L216">216</a>                 Assertions.assertTrue(response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).startsWith(securityPackage + <span class="jxr_string">" "</span>));
      +<a class="jxr_linenumber" name="L217" href="#L217">217</a>                 Assertions.assertEquals(<span class="jxr_string">"keep-alive"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L218" href="#L218">218</a>                 Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L219" href="#L219">219</a>                 Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L220" href="#L220">220</a>                 <strong class="jxr_keyword">final</strong> String continueToken = response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>)
      +<a class="jxr_linenumber" name="L221" href="#L221">221</a>                         .substring(securityPackage.length() + 1);
      +<a class="jxr_linenumber" name="L222" href="#L222">222</a>                 <strong class="jxr_keyword">final</strong> byte[] continueTokenBytes = Base64.getDecoder().decode(continueToken);
      +<a class="jxr_linenumber" name="L223" href="#L223">223</a>                 assertThat(continueTokenBytes).isNotEmpty();
      +<a class="jxr_linenumber" name="L224" href="#L224">224</a>                 <strong class="jxr_keyword">final</strong> ManagedSecBufferDesc continueTokenBuffer = <strong class="jxr_keyword">new</strong> ManagedSecBufferDesc(Sspi.SECBUFFER_TOKEN,
      +<a class="jxr_linenumber" name="L225" href="#L225">225</a>                         continueTokenBytes);
      +<a class="jxr_linenumber" name="L226" href="#L226">226</a>                 clientContext.initialize(clientContext.getHandle(), continueTokenBuffer,
      +<a class="jxr_linenumber" name="L227" href="#L227">227</a>                         WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L228" href="#L228">228</a>             }
      +<a class="jxr_linenumber" name="L229" href="#L229">229</a>             Assertions.assertTrue(authenticated);
      +<a class="jxr_linenumber" name="L230" href="#L230">230</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L231" href="#L231">231</a>             <strong class="jxr_keyword">if</strong> (clientContext != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L232" href="#L232">232</a>                 clientContext.dispose();
      +<a class="jxr_linenumber" name="L233" href="#L233">233</a>             }
      +<a class="jxr_linenumber" name="L234" href="#L234">234</a>             <strong class="jxr_keyword">if</strong> (clientCredentials != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L235" href="#L235">235</a>                 clientCredentials.dispose();
      +<a class="jxr_linenumber" name="L236" href="#L236">236</a>             }
      +<a class="jxr_linenumber" name="L237" href="#L237">237</a>         }
      +<a class="jxr_linenumber" name="L238" href="#L238">238</a>     }
      +<a class="jxr_linenumber" name="L239" href="#L239">239</a> 
      +<a class="jxr_linenumber" name="L240" href="#L240">240</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L241" href="#L241">241</a> <em class="jxr_javadoccomment">     * Test post empty.</em>
      +<a class="jxr_linenumber" name="L242" href="#L242">242</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L243" href="#L243">243</a>     @Test
      +<a class="jxr_linenumber" name="L244" href="#L244">244</a>     <strong class="jxr_keyword">void</strong> testPOSTEmpty() {
      +<a class="jxr_linenumber" name="L245" href="#L245">245</a>         <strong class="jxr_keyword">final</strong> String securityPackage = <span class="jxr_string">"Negotiate"</span>;
      +<a class="jxr_linenumber" name="L246" href="#L246">246</a>         IWindowsCredentialsHandle clientCredentials = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L247" href="#L247">247</a>         WindowsSecurityContextImpl clientContext = <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L248" href="#L248">248</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L249" href="#L249">249</a>             <em class="jxr_comment">// client credentials handle</em>
      +<a class="jxr_linenumber" name="L250" href="#L250">250</a>             clientCredentials = WindowsCredentialsHandleImpl.getCurrent(securityPackage);
      +<a class="jxr_linenumber" name="L251" href="#L251">251</a>             clientCredentials.initialize();
      +<a class="jxr_linenumber" name="L252" href="#L252">252</a>             <em class="jxr_comment">// initial client security context</em>
      +<a class="jxr_linenumber" name="L253" href="#L253">253</a>             clientContext = <strong class="jxr_keyword">new</strong> WindowsSecurityContextImpl();
      +<a class="jxr_linenumber" name="L254" href="#L254">254</a>             clientContext.setPrincipalName(WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L255" href="#L255">255</a>             clientContext.setCredentialsHandle(clientCredentials);
      +<a class="jxr_linenumber" name="L256" href="#L256">256</a>             clientContext.setSecurityPackage(securityPackage);
      +<a class="jxr_linenumber" name="L257" href="#L257">257</a>             clientContext.initialize(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L258" href="#L258">258</a>             <em class="jxr_comment">// negotiate</em>
      +<a class="jxr_linenumber" name="L259" href="#L259">259</a>             <strong class="jxr_keyword">boolean</strong> authenticated = false;
      +<a class="jxr_linenumber" name="L260" href="#L260">260</a>             <strong class="jxr_keyword">final</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> request = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpRequest" href="../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>();
      +<a class="jxr_linenumber" name="L261" href="#L261">261</a>             request.setMethod(<span class="jxr_string">"POST"</span>);
      +<a class="jxr_linenumber" name="L262" href="#L262">262</a>             request.setContentLength(0);
      +<a class="jxr_linenumber" name="L263" href="#L263">263</a>             String clientToken;
      +<a class="jxr_linenumber" name="L264" href="#L264">264</a>             String continueToken;
      +<a class="jxr_linenumber" name="L265" href="#L265">265</a>             byte[] continueTokenBytes;
      +<a class="jxr_linenumber" name="L266" href="#L266">266</a>             <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> response;
      +<a class="jxr_linenumber" name="L267" href="#L267">267</a>             ManagedSecBufferDesc continueTokenBuffer;
      +<a class="jxr_linenumber" name="L268" href="#L268">268</a>             <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
      +<a class="jxr_linenumber" name="L269" href="#L269">269</a>                 clientToken = Base64.getEncoder().encodeToString(clientContext.getToken());
      +<a class="jxr_linenumber" name="L270" href="#L270">270</a>                 request.addHeader(<span class="jxr_string">"Authorization"</span>, securityPackage + <span class="jxr_string">" "</span> + clientToken);
      +<a class="jxr_linenumber" name="L271" href="#L271">271</a> 
      +<a class="jxr_linenumber" name="L272" href="#L272">272</a>                 response = <strong class="jxr_keyword">new</strong> <a name="SimpleHttpResponse" href="../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a>();
      +<a class="jxr_linenumber" name="L273" href="#L273">273</a>                 authenticated = <strong class="jxr_keyword">this</strong>.authenticator.authenticate(request, response);
      +<a class="jxr_linenumber" name="L274" href="#L274">274</a> 
      +<a class="jxr_linenumber" name="L275" href="#L275">275</a>                 <strong class="jxr_keyword">if</strong> (authenticated) {
      +<a class="jxr_linenumber" name="L276" href="#L276">276</a>                     assertThat(response.getHeaderNames().size()).isNotNegative();
      +<a class="jxr_linenumber" name="L277" href="#L277">277</a>                     <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L278" href="#L278">278</a>                 }
      +<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
      +<a class="jxr_linenumber" name="L280" href="#L280">280</a>                 <strong class="jxr_keyword">if</strong> (response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).startsWith(securityPackage + <span class="jxr_string">","</span>)) {
      +<a class="jxr_linenumber" name="L281" href="#L281">281</a>                     Assertions.assertEquals(<span class="jxr_string">"close"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L282" href="#L282">282</a>                     Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L283" href="#L283">283</a>                     Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L284" href="#L284">284</a>                     <strong class="jxr_keyword">return</strong>;
      +<a class="jxr_linenumber" name="L285" href="#L285">285</a>                 }
      +<a class="jxr_linenumber" name="L286" href="#L286">286</a> 
      +<a class="jxr_linenumber" name="L287" href="#L287">287</a>                 Assertions.assertTrue(response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).startsWith(securityPackage + <span class="jxr_string">" "</span>));
      +<a class="jxr_linenumber" name="L288" href="#L288">288</a>                 Assertions.assertEquals(<span class="jxr_string">"keep-alive"</span>, response.getHeader(<span class="jxr_string">"Connection"</span>));
      +<a class="jxr_linenumber" name="L289" href="#L289">289</a>                 Assertions.assertEquals(2, response.getHeaderNames().size());
      +<a class="jxr_linenumber" name="L290" href="#L290">290</a>                 Assertions.assertEquals(401, response.getStatus());
      +<a class="jxr_linenumber" name="L291" href="#L291">291</a>                 continueToken = response.getHeader(<span class="jxr_string">"WWW-Authenticate"</span>).substring(securityPackage.length() + 1);
      +<a class="jxr_linenumber" name="L292" href="#L292">292</a>                 continueTokenBytes = Base64.getDecoder().decode(continueToken);
      +<a class="jxr_linenumber" name="L293" href="#L293">293</a>                 assertThat(continueTokenBytes).isNotEmpty();
      +<a class="jxr_linenumber" name="L294" href="#L294">294</a>                 continueTokenBuffer = <strong class="jxr_keyword">new</strong> ManagedSecBufferDesc(Sspi.SECBUFFER_TOKEN, continueTokenBytes);
      +<a class="jxr_linenumber" name="L295" href="#L295">295</a>                 clientContext.initialize(clientContext.getHandle(), continueTokenBuffer,
      +<a class="jxr_linenumber" name="L296" href="#L296">296</a>                         WindowsAccountImpl.getCurrentUsername());
      +<a class="jxr_linenumber" name="L297" href="#L297">297</a>             }
      +<a class="jxr_linenumber" name="L298" href="#L298">298</a>             Assertions.assertTrue(authenticated);
      +<a class="jxr_linenumber" name="L299" href="#L299">299</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L300" href="#L300">300</a>             <strong class="jxr_keyword">if</strong> (clientContext != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L301" href="#L301">301</a>                 clientContext.dispose();
      +<a class="jxr_linenumber" name="L302" href="#L302">302</a>             }
      +<a class="jxr_linenumber" name="L303" href="#L303">303</a>             <strong class="jxr_keyword">if</strong> (clientCredentials != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L304" href="#L304">304</a>                 clientCredentials.dispose();
      +<a class="jxr_linenumber" name="L305" href="#L305">305</a>             }
      +<a class="jxr_linenumber" name="L306" href="#L306">306</a>         }
      +<a class="jxr_linenumber" name="L307" href="#L307">307</a>     }
      +<a class="jxr_linenumber" name="L308" href="#L308">308</a> 
      +<a class="jxr_linenumber" name="L309" href="#L309">309</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L310" href="#L310">310</a> <em class="jxr_javadoccomment">     * Test principal format.</em>
      +<a class="jxr_linenumber" name="L311" href="#L311">311</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L312" href="#L312">312</a>     @Test
      +<a class="jxr_linenumber" name="L313" href="#L313">313</a>     <strong class="jxr_keyword">void</strong> testPrincipalFormat() {
      +<a class="jxr_linenumber" name="L314" href="#L314">314</a>         Assertions.assertEquals(PrincipalFormat.FQN, <strong class="jxr_keyword">this</strong>.authenticator.getPrincipalFormat());
      +<a class="jxr_linenumber" name="L315" href="#L315">315</a>         <strong class="jxr_keyword">this</strong>.authenticator.setPrincipalFormat(<span class="jxr_string">"both"</span>);
      +<a class="jxr_linenumber" name="L316" href="#L316">316</a>         Assertions.assertEquals(PrincipalFormat.BOTH, <strong class="jxr_keyword">this</strong>.authenticator.getPrincipalFormat());
      +<a class="jxr_linenumber" name="L317" href="#L317">317</a>     }
      +<a class="jxr_linenumber" name="L318" href="#L318">318</a> 
      +<a class="jxr_linenumber" name="L319" href="#L319">319</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">     * Test role format.</em>
      +<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L322" href="#L322">322</a>     @Test
      +<a class="jxr_linenumber" name="L323" href="#L323">323</a>     <strong class="jxr_keyword">void</strong> testRoleFormat() {
      +<a class="jxr_linenumber" name="L324" href="#L324">324</a>         Assertions.assertEquals(PrincipalFormat.FQN, <strong class="jxr_keyword">this</strong>.authenticator.getRoleFormat());
      +<a class="jxr_linenumber" name="L325" href="#L325">325</a>         <strong class="jxr_keyword">this</strong>.authenticator.setRoleFormat(<span class="jxr_string">"both"</span>);
      +<a class="jxr_linenumber" name="L326" href="#L326">326</a>         Assertions.assertEquals(PrincipalFormat.BOTH, <strong class="jxr_keyword">this</strong>.authenticator.getRoleFormat());
      +<a class="jxr_linenumber" name="L327" href="#L327">327</a>     }
      +<a class="jxr_linenumber" name="L328" href="#L328">328</a> 
      +<a class="jxr_linenumber" name="L329" href="#L329">329</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/WaffleAuthenticatorBaseTest.html b/waffle-tomcat10/xref-test/waffle/apache/WaffleAuthenticatorBaseTest.html
      new file mode 100644
      index 0000000000..abe522a6dc
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/WaffleAuthenticatorBaseTest.html
      @@ -0,0 +1,124 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>WaffleAuthenticatorBaseTest xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../testapidocs/waffle/apache/WaffleAuthenticatorBaseTest.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpServletResponse;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.connector.Request;
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Assertions;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * Waffle Authenticator Base Test.</em>
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">class</strong> <a name="WaffleAuthenticatorBaseTest" href="../../waffle/apache/WaffleAuthenticatorBaseTest.html#WaffleAuthenticatorBaseTest">WaffleAuthenticatorBaseTest</a> {
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <em class="jxr_javadoccomment">/** The waffle authenticator base. */</em>
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> WaffleAuthenticatorBase waffleAuthenticatorBase;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     * Inits the.</em>
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>      @BeforeEach
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">void</strong> init() {
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>          <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase = <strong class="jxr_keyword">new</strong> WaffleAuthenticatorBase() {
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>              {
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>                  <strong class="jxr_keyword">this</strong>.log = LoggerFactory.getLogger(WaffleAuthenticatorBaseTest.<strong class="jxr_keyword">class</strong>);
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>              }
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>              @Override
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> authenticate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response) <strong class="jxr_keyword">throws</strong> IOException {
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>                  <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>              }
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>              @Override
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>              <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> doAuthenticate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response)
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>                      <strong class="jxr_keyword">throws</strong> IOException {
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>                  <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>              }
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>          };
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>      }
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">     * Should_accept_both_protocols.</em>
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      @Test
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">void</strong> should_accept_both_protocols() {
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.setProtocols(<span class="jxr_string">"  NTLM , , Negotiate   "</span>);
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>  
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>          Assertions.assertEquals(2, <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.size(), <span class="jxr_string">"Two protocols added"</span>);
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>          Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.contains(<span class="jxr_string">"NTLM"</span>), <span class="jxr_string">"NTLM has been added"</span>);
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>          Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.contains(<span class="jxr_string">"Negotiate"</span>), <span class="jxr_string">"Negotiate has been added"</span>);
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>      }
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">     * Should_accept_ negotiate_protocol.</em>
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>      @Test
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>      <strong class="jxr_keyword">void</strong> should_accept_Negotiate_protocol() {
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>          <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.setProtocols(<span class="jxr_string">" Negotiate  "</span>);
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>  
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>          Assertions.assertEquals(1, <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.size(), <span class="jxr_string">"One protocol added"</span>);
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>          Assertions.assertEquals(<span class="jxr_string">"Negotiate"</span>, <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.iterator().next());
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>      }
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>  
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>  <em class="jxr_javadoccomment">     * Should_accept_ ntl m_protocol.</em>
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>      @Test
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>      <strong class="jxr_keyword">void</strong> should_accept_NTLM_protocol() {
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>          <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.setProtocols(<span class="jxr_string">"  NTLM "</span>);
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>          Assertions.assertEquals(1, <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.size(), <span class="jxr_string">"One protocol added"</span>);
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>          Assertions.assertEquals(<span class="jxr_string">"NTLM"</span>, <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.protocols.iterator().next());
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>      }
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> 
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">     * Should_refuse_other_protocol.</em>
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>     @Test
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>     <strong class="jxr_keyword">void</strong> should_refuse_other_protocol() {
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>         Assertions.assertThrows(RuntimeException.<strong class="jxr_keyword">class</strong>, () -&gt; {
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>             <strong class="jxr_keyword">this</strong>.waffleAuthenticatorBase.setProtocols(<span class="jxr_string">"  NTLM , OTHER, Negotiate   "</span>);
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a>         });
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>     }
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a> 
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/WindowsAccountTest.html b/waffle-tomcat10/xref-test/waffle/apache/WindowsAccountTest.html
      new file mode 100644
      index 0000000000..87578907a4
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/WindowsAccountTest.html
      @@ -0,0 +1,123 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>WindowsAccountTest xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../testapidocs/waffle/apache/WindowsAccountTest.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.assertj.core.api.Assertions.assertThat;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayInputStream;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayOutputStream;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.io.ObjectInputStream;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.io.ObjectOutputStream;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Assertions;
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> waffle.mock.MockWindowsAccount;
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.WindowsAccount;
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment"> * Windows Account Test.</em>
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">class</strong> <a name="WindowsAccountTest" href="../../waffle/apache/WindowsAccountTest.html#WindowsAccountTest">WindowsAccountTest</a> {
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <em class="jxr_javadoccomment">/** The mock windows account. */</em>
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> MockWindowsAccount mockWindowsAccount = <strong class="jxr_keyword">new</strong> MockWindowsAccount(<span class="jxr_string">"localhost&#92;&#92;Administrator"</span>);
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <em class="jxr_javadoccomment">/** The windows account. */</em>
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>      <strong class="jxr_keyword">private</strong> WindowsAccount windowsAccount;
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">     * Sets the up.</em>
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>      @BeforeEach
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">void</strong> setUp() {
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>          <strong class="jxr_keyword">this</strong>.windowsAccount = <strong class="jxr_keyword">new</strong> WindowsAccount(<strong class="jxr_keyword">this</strong>.mockWindowsAccount);
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>      }
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>  
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <em class="jxr_javadoccomment">     * Test equals.</em>
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      @Test
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">void</strong> testEquals() {
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>          Assertions.assertEquals(<strong class="jxr_keyword">this</strong>.windowsAccount, <strong class="jxr_keyword">new</strong> WindowsAccount(<strong class="jxr_keyword">this</strong>.mockWindowsAccount));
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>          <strong class="jxr_keyword">final</strong> MockWindowsAccount mockWindowsAccount2 = <strong class="jxr_keyword">new</strong> MockWindowsAccount(<span class="jxr_string">"localhost&#92;&#92;Administrator2"</span>);
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>          Assertions.assertNotEquals(<strong class="jxr_keyword">this</strong>.windowsAccount, <strong class="jxr_keyword">new</strong> WindowsAccount(mockWindowsAccount2));
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>      }
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>  
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment">     * Test is serializable.</em>
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment">     * @throws IOException</em>
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment">     *             Signals that an I/O exception has occurred.</em>
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">     * @throws ClassNotFoundException</em>
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">     *             the class not found exception</em>
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>      @Test
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>      <strong class="jxr_keyword">void</strong> testIsSerializable() <strong class="jxr_keyword">throws</strong> IOException, ClassNotFoundException {
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>          <em class="jxr_comment">// serialize</em>
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>          <strong class="jxr_keyword">final</strong> ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <strong class="jxr_keyword">try</strong> (ObjectOutputStream oos = <strong class="jxr_keyword">new</strong> ObjectOutputStream(out)) {
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>              oos.writeObject(<strong class="jxr_keyword">this</strong>.windowsAccount);
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>          }
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>          assertThat(out.toByteArray()).isNotEmpty();
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>          <em class="jxr_comment">// deserialize</em>
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>          <strong class="jxr_keyword">final</strong> InputStream in = <strong class="jxr_keyword">new</strong> ByteArrayInputStream(out.toByteArray());
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">final</strong> ObjectInputStream ois = <strong class="jxr_keyword">new</strong> ObjectInputStream(in);
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>          <strong class="jxr_keyword">final</strong> WindowsAccount copy = (WindowsAccount) ois.readObject();
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <em class="jxr_comment">// test</em>
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>          Assertions.assertEquals(<strong class="jxr_keyword">this</strong>.windowsAccount, copy);
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>          Assertions.assertEquals(<strong class="jxr_keyword">this</strong>.windowsAccount.getDomain(), copy.getDomain());
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>          Assertions.assertEquals(<strong class="jxr_keyword">this</strong>.windowsAccount.getFqn(), copy.getFqn());
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>          Assertions.assertEquals(<strong class="jxr_keyword">this</strong>.windowsAccount.getName(), copy.getName());
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>          Assertions.assertEquals(<strong class="jxr_keyword">this</strong>.windowsAccount.getSidString(), copy.getSidString());
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>      }
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     * Test properties.</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a>     @Test
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>     <strong class="jxr_keyword">void</strong> testProperties() {
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>         Assertions.assertEquals(<span class="jxr_string">"localhost"</span>, <strong class="jxr_keyword">this</strong>.windowsAccount.getDomain());
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>         Assertions.assertEquals(<span class="jxr_string">"localhost&#92;&#92;Administrator"</span>, <strong class="jxr_keyword">this</strong>.windowsAccount.getFqn());
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>         Assertions.assertEquals(<span class="jxr_string">"Administrator"</span>, <strong class="jxr_keyword">this</strong>.windowsAccount.getName());
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>         Assertions.assertTrue(<strong class="jxr_keyword">this</strong>.windowsAccount.getSidString().startsWith(<span class="jxr_string">"S-"</span>));
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a>     }
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a> 
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/WindowsRealmTest.html b/waffle-tomcat10/xref-test/waffle/apache/WindowsRealmTest.html
      new file mode 100644
      index 0000000000..ce47c75dd3
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/WindowsRealmTest.html
      @@ -0,0 +1,58 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>WindowsRealmTest xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../testapidocs/waffle/apache/WindowsRealmTest.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Assertions;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * Windows Realm Test.</em>
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">class</strong> <a name="WindowsRealmTest" href="../../waffle/apache/WindowsRealmTest.html#WindowsRealmTest">WindowsRealmTest</a> {
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">     * Test properties.</em>
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>      @Test
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>      <strong class="jxr_keyword">void</strong> testProperties() {
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>          <strong class="jxr_keyword">final</strong> WindowsRealm realm = <strong class="jxr_keyword">new</strong> WindowsRealm();
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>          Assertions.assertNull(realm.getPassword(<strong class="jxr_keyword">null</strong>));
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>          Assertions.assertNull(realm.getPrincipal(<strong class="jxr_keyword">null</strong>));
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>          Assertions.assertEquals(<span class="jxr_string">"WindowsRealm"</span>, realm.getClass().getSimpleName());
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>      }
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/catalina/SimpleHttpRequest.html b/waffle-tomcat10/xref-test/waffle/apache/catalina/SimpleHttpRequest.html
      new file mode 100644
      index 0000000000..54cf5ccaf0
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/catalina/SimpleHttpRequest.html
      @@ -0,0 +1,271 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>SimpleHttpRequest xref</title>
      +<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../../testapidocs/waffle/apache/catalina/SimpleHttpRequest.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache.catalina;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpSession;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.security.Principal;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> mockit.Mocked;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.connector.Request;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * Simple HTTP Request.</em>
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="SimpleHttpRequest" href="../../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a> <strong class="jxr_keyword">extends</strong> Request {
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <em class="jxr_javadoccomment">/** The remote port s. */</em>
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> remotePortS;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     * Next remote port.</em>
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">     * @return the int</em>
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">int</strong> nextRemotePort() {
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">return</strong> ++SimpleHttpRequest.remotePortS;
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>      }
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">     * Reset remote port.</em>
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> resetRemotePort() {
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>          SimpleHttpRequest.remotePortS = 0;
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>      }
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <em class="jxr_javadoccomment">/** The request uri. */</em>
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">private</strong> String requestURI;
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>  
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <em class="jxr_javadoccomment">/** The query string. */</em>
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <strong class="jxr_keyword">private</strong> String queryString;
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>      <em class="jxr_javadoccomment">/** The remote user. */</em>
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">private</strong> String remoteUser;
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>  
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <em class="jxr_javadoccomment">/** The method. */</em>
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <strong class="jxr_keyword">private</strong> String method = <span class="jxr_string">"GET"</span>;
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>  
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>      <em class="jxr_javadoccomment">/** The headers. */</em>
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String, String&gt; headers = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>  
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>      <em class="jxr_javadoccomment">/** The parameters. */</em>
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String, String&gt; parameters = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>  
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>      <em class="jxr_javadoccomment">/** The content. */</em>
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>      <strong class="jxr_keyword">private</strong> byte[] content;
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>  
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>      <em class="jxr_javadoccomment">/** The http session. */</em>
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>      @Mocked
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>      <strong class="jxr_keyword">private</strong> HttpSession httpSession;
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>  
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>      <em class="jxr_javadoccomment">/** The principal. */</em>
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>      <strong class="jxr_keyword">private</strong> Principal principal;
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>  <em class="jxr_javadoccomment">     * Instantiates a new simple http request.</em>
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>      <strong class="jxr_keyword">public</strong> <a name="SimpleHttpRequest" href="../../../waffle/apache/catalina/SimpleHttpRequest.html#SimpleHttpRequest">SimpleHttpRequest</a>() {
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <em class="jxr_comment">// Tomcat notes that null on connector here may be ok for testing</em>
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>          <strong class="jxr_keyword">super</strong>(<strong class="jxr_keyword">null</strong>);
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">this</strong>.remotePort = SimpleHttpRequest.nextRemotePort();
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>      }
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>  <em class="jxr_javadoccomment">     * Adds the header.</em>
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     * @param headerName</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">     *            the header name</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">     * @param headerValue</em>
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a> <em class="jxr_javadoccomment">     *            the header value</em>
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addHeader(<strong class="jxr_keyword">final</strong> String headerName, <strong class="jxr_keyword">final</strong> String headerValue) {
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>         <strong class="jxr_keyword">this</strong>.headers.put(headerName, headerValue);
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>     }
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">     * Adds the parameter.</em>
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a> <em class="jxr_javadoccomment">     * @param parameterName</em>
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a> <em class="jxr_javadoccomment">     *            the parameter name</em>
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a> <em class="jxr_javadoccomment">     * @param parameterValue</em>
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a> <em class="jxr_javadoccomment">     *            the parameter value</em>
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addParameter(<strong class="jxr_keyword">final</strong> String parameterName, <strong class="jxr_keyword">final</strong> String parameterValue) {
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>         <strong class="jxr_keyword">this</strong>.parameters.put(parameterName, parameterValue);
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a>     }
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a> 
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a>     @Override
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getContentLength() {
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.content == <strong class="jxr_keyword">null</strong> ? -1 : <strong class="jxr_keyword">this</strong>.content.length;
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a>     }
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a> 
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>     @Override
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a>     <strong class="jxr_keyword">public</strong> String getHeader(<strong class="jxr_keyword">final</strong> String headerName) {
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.headers.get(headerName);
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a>     }
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a> 
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a>     @Override
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a>     <strong class="jxr_keyword">public</strong> String getMethod() {
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.method;
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a>     }
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a> 
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a>     @Override
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a>     <strong class="jxr_keyword">public</strong> String getParameter(<strong class="jxr_keyword">final</strong> String parameterName) {
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.parameters.get(parameterName);
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a>     }
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a> 
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a>     @Override
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a>     <strong class="jxr_keyword">public</strong> String getQueryString() {
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.queryString;
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a>     }
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a>     @Override
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a>     <strong class="jxr_keyword">public</strong> String getRemoteAddr() {
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.remoteAddr;
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a>     }
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a> 
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a>     @Override
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>     <strong class="jxr_keyword">public</strong> String getRemoteHost() {
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.remoteHost;
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>     }
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a> 
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a>     @Override
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRemotePort() {
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.remotePort;
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a>     }
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a> 
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a>     @Override
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>     <strong class="jxr_keyword">public</strong> String getRemoteUser() {
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.remoteUser;
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a>     }
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a> 
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a>     @Override
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a>     <strong class="jxr_keyword">public</strong> String getRequestURI() {
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.requestURI;
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a>     }
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a> 
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a>     @Override
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a>     <strong class="jxr_keyword">public</strong> HttpSession getSession() {
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.httpSession;
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a>     }
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a> 
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a>     @Override
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a>     <strong class="jxr_keyword">public</strong> HttpSession getSession(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> create) {
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.httpSession;
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a>     }
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a> 
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a>     @Override
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a>     <strong class="jxr_keyword">public</strong> Principal getUserPrincipal() {
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.principal;
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>     }
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a> 
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a> <em class="jxr_javadoccomment">     * Sets the content length.</em>
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a> <em class="jxr_javadoccomment">     * @param length</em>
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a> <em class="jxr_javadoccomment">     *            the new content length</em>
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setContentLength(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> length) {
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>         <strong class="jxr_keyword">this</strong>.content = <strong class="jxr_keyword">new</strong> byte[length];
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a>     }
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a> 
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a> <em class="jxr_javadoccomment">     * Sets the method.</em>
      +<a class="jxr_linenumber" name="L198" href="#L198">198</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L199" href="#L199">199</a> <em class="jxr_javadoccomment">     * @param value</em>
      +<a class="jxr_linenumber" name="L200" href="#L200">200</a> <em class="jxr_javadoccomment">     *            the new method</em>
      +<a class="jxr_linenumber" name="L201" href="#L201">201</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L202" href="#L202">202</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMethod(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L203" href="#L203">203</a>         <strong class="jxr_keyword">this</strong>.method = value;
      +<a class="jxr_linenumber" name="L204" href="#L204">204</a>     }
      +<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
      +<a class="jxr_linenumber" name="L206" href="#L206">206</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L207" href="#L207">207</a> <em class="jxr_javadoccomment">     * Sets the query string.</em>
      +<a class="jxr_linenumber" name="L208" href="#L208">208</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L209" href="#L209">209</a> <em class="jxr_javadoccomment">     * @param queryValue</em>
      +<a class="jxr_linenumber" name="L210" href="#L210">210</a> <em class="jxr_javadoccomment">     *            the new query string</em>
      +<a class="jxr_linenumber" name="L211" href="#L211">211</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L212" href="#L212">212</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setQueryString(<strong class="jxr_keyword">final</strong> String queryValue) {
      +<a class="jxr_linenumber" name="L213" href="#L213">213</a>         <strong class="jxr_keyword">this</strong>.queryString = queryValue;
      +<a class="jxr_linenumber" name="L214" href="#L214">214</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.queryString != <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L215" href="#L215">215</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> String eachParameter : <strong class="jxr_keyword">this</strong>.queryString.split(<span class="jxr_string">"[&amp;]"</span>, -1)) {
      +<a class="jxr_linenumber" name="L216" href="#L216">216</a>                 <strong class="jxr_keyword">final</strong> String[] pair = eachParameter.split(<span class="jxr_string">"="</span>, -1);
      +<a class="jxr_linenumber" name="L217" href="#L217">217</a>                 <strong class="jxr_keyword">final</strong> String value = pair.length == 2 ? pair[1] : <span class="jxr_string">""</span>;
      +<a class="jxr_linenumber" name="L218" href="#L218">218</a>                 <strong class="jxr_keyword">this</strong>.addParameter(pair[0], value);
      +<a class="jxr_linenumber" name="L219" href="#L219">219</a>             }
      +<a class="jxr_linenumber" name="L220" href="#L220">220</a>         }
      +<a class="jxr_linenumber" name="L221" href="#L221">221</a>     }
      +<a class="jxr_linenumber" name="L222" href="#L222">222</a> 
      +<a class="jxr_linenumber" name="L223" href="#L223">223</a>     @Override
      +<a class="jxr_linenumber" name="L224" href="#L224">224</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRemoteAddr(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L225" href="#L225">225</a>         <strong class="jxr_keyword">this</strong>.remoteAddr = value;
      +<a class="jxr_linenumber" name="L226" href="#L226">226</a>     }
      +<a class="jxr_linenumber" name="L227" href="#L227">227</a> 
      +<a class="jxr_linenumber" name="L228" href="#L228">228</a>     @Override
      +<a class="jxr_linenumber" name="L229" href="#L229">229</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRemoteHost(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L230" href="#L230">230</a>         <strong class="jxr_keyword">this</strong>.remoteHost = value;
      +<a class="jxr_linenumber" name="L231" href="#L231">231</a>     }
      +<a class="jxr_linenumber" name="L232" href="#L232">232</a> 
      +<a class="jxr_linenumber" name="L233" href="#L233">233</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L234" href="#L234">234</a> <em class="jxr_javadoccomment">     * Sets the remote user.</em>
      +<a class="jxr_linenumber" name="L235" href="#L235">235</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L236" href="#L236">236</a> <em class="jxr_javadoccomment">     * @param value</em>
      +<a class="jxr_linenumber" name="L237" href="#L237">237</a> <em class="jxr_javadoccomment">     *            the new remote user</em>
      +<a class="jxr_linenumber" name="L238" href="#L238">238</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L239" href="#L239">239</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRemoteUser(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L240" href="#L240">240</a>         <strong class="jxr_keyword">this</strong>.remoteUser = value;
      +<a class="jxr_linenumber" name="L241" href="#L241">241</a>     }
      +<a class="jxr_linenumber" name="L242" href="#L242">242</a> 
      +<a class="jxr_linenumber" name="L243" href="#L243">243</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">     * Sets the request uri.</em>
      +<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L246" href="#L246">246</a> <em class="jxr_javadoccomment">     * @param value</em>
      +<a class="jxr_linenumber" name="L247" href="#L247">247</a> <em class="jxr_javadoccomment">     *            the new request uri</em>
      +<a class="jxr_linenumber" name="L248" href="#L248">248</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L249" href="#L249">249</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRequestURI(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L250" href="#L250">250</a>         <strong class="jxr_keyword">this</strong>.requestURI = value;
      +<a class="jxr_linenumber" name="L251" href="#L251">251</a>     }
      +<a class="jxr_linenumber" name="L252" href="#L252">252</a> 
      +<a class="jxr_linenumber" name="L253" href="#L253">253</a>     @Override
      +<a class="jxr_linenumber" name="L254" href="#L254">254</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUserPrincipal(<strong class="jxr_keyword">final</strong> Principal value) {
      +<a class="jxr_linenumber" name="L255" href="#L255">255</a>         <strong class="jxr_keyword">this</strong>.principal = value;
      +<a class="jxr_linenumber" name="L256" href="#L256">256</a>     }
      +<a class="jxr_linenumber" name="L257" href="#L257">257</a> 
      +<a class="jxr_linenumber" name="L258" href="#L258">258</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/catalina/SimpleHttpResponse.html b/waffle-tomcat10/xref-test/waffle/apache/catalina/SimpleHttpResponse.html
      new file mode 100644
      index 0000000000..a1350def7b
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/catalina/SimpleHttpResponse.html
      @@ -0,0 +1,148 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>SimpleHttpResponse xref</title>
      +<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../../testapidocs/waffle/apache/catalina/SimpleHttpResponse.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache.catalina;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.util.List;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.connector.Response;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * Simple HTTP Response.</em>
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="SimpleHttpResponse" href="../../../waffle/apache/catalina/SimpleHttpResponse.html#SimpleHttpResponse">SimpleHttpResponse</a> <strong class="jxr_keyword">extends</strong> Response {
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <em class="jxr_javadoccomment">/** The Constant LOGGER. */</em>
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOGGER = LoggerFactory.getLogger(SimpleHttpResponse.<strong class="jxr_keyword">class</strong>);
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <em class="jxr_javadoccomment">/** The status. */</em>
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> status = 500;
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <em class="jxr_javadoccomment">/** The headers. */</em>
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String, List&lt;String&gt;&gt; headers = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>      @Override
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addHeader(<strong class="jxr_keyword">final</strong> String headerName, <strong class="jxr_keyword">final</strong> String headerValue) {
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>          List&lt;String&gt; current = <strong class="jxr_keyword">this</strong>.headers.get(headerName);
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>          <strong class="jxr_keyword">if</strong> (current == <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>              current = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>          }
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>          current.add(headerValue);
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <strong class="jxr_keyword">this</strong>.headers.put(headerName, current);
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>      }
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>      @Override
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flushBuffer() {
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>          SimpleHttpResponse.LOGGER.info(<span class="jxr_string">"{} {}"</span>, Integer.valueOf(<strong class="jxr_keyword">this</strong>.status), <strong class="jxr_keyword">this</strong>.getStatusString());
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> String header : <strong class="jxr_keyword">this</strong>.headers.keySet()) {
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>              <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> String headerValue : <strong class="jxr_keyword">this</strong>.headers.get(header)) {
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>                  SimpleHttpResponse.LOGGER.info(<span class="jxr_string">"{}: {}"</span>, header, headerValue);
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>              }
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>          }
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>      }
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>  
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      @Override
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">public</strong> String getHeader(<strong class="jxr_keyword">final</strong> String headerName) {
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <strong class="jxr_keyword">final</strong> List&lt;String&gt; headerValues = <strong class="jxr_keyword">this</strong>.headers.get(headerName);
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>          <strong class="jxr_keyword">return</strong> headerValues == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : String.join(<span class="jxr_string">", "</span>, headerValues);
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>      }
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>      @Override
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>      <strong class="jxr_keyword">public</strong> Collection&lt;String&gt; getHeaderNames() {
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.headers.keySet();
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>      }
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>  
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>  <em class="jxr_javadoccomment">     * Gets the header values.</em>
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>  <em class="jxr_javadoccomment">     * @param headerName</em>
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment">     *            the header name</em>
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>  <em class="jxr_javadoccomment">     * @return the header values</em>
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>      <strong class="jxr_keyword">public</strong> String[] getHeaderValues(<strong class="jxr_keyword">final</strong> String headerName) {
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>          <strong class="jxr_keyword">final</strong> List&lt;String&gt; headerValues = <strong class="jxr_keyword">this</strong>.headers.get(headerName);
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">return</strong> headerValues == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : headerValues.toArray(<strong class="jxr_keyword">new</strong> String[0]);
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>      }
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>  
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>      @Override
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getStatus() {
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.status;
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>      }
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     * Gets the status string.</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">     * @return the status string</em>
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>     <strong class="jxr_keyword">public</strong> String getStatusString() {
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.status == 401 ? <span class="jxr_string">"Unauthorized"</span> : <span class="jxr_string">"Unknown"</span>;
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>     }
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a> 
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a>     @Override
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendError(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> rc) {
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a>         <strong class="jxr_keyword">this</strong>.status = rc;
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a>     }
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a>     @Override
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendError(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> rc, <strong class="jxr_keyword">final</strong> String message) {
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a>         <strong class="jxr_keyword">this</strong>.status = rc;
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a>     }
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a> 
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>     @Override
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setHeader(<strong class="jxr_keyword">final</strong> String headerName, <strong class="jxr_keyword">final</strong> String headerValue) {
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a>         List&lt;String&gt; current = <strong class="jxr_keyword">this</strong>.headers.get(headerName);
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a>         <strong class="jxr_keyword">if</strong> (current == <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>             current = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>         } <strong class="jxr_keyword">else</strong> {
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a>             current.clear();
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a>         }
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>         current.add(headerValue);
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a>         <strong class="jxr_keyword">this</strong>.headers.put(headerName, current);
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a>     }
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a> 
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a>     @Override
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setStatus(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> value) {
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a>         <strong class="jxr_keyword">this</strong>.status = value;
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a>     }
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a> 
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/catalina/package-frame.html b/waffle-tomcat10/xref-test/waffle/apache/catalina/package-frame.html
      new file mode 100644
      index 0000000000..c249e7c5f4
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/catalina/package-frame.html
      @@ -0,0 +1,24 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference Package waffle.apache.catalina</title>
      +        <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 class="bar"><a href="package-summary.html" target="classFrame">waffle.apache.catalina</a></h1>
      +        <div class="indexContainer">
      +            <h2 title="Classes">Classes</h2>
      +            <ul title="Classes">
      +                <li>
      +                    <a href="SimpleHttpRequest.html#SimpleHttpRequest" target="classFrame">SimpleHttpRequest</a>
      +                </li>
      +                <li>
      +                    <a href="SimpleHttpResponse.html#SimpleHttpResponse" target="classFrame">SimpleHttpResponse</a>
      +                </li>
      +            </ul>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/catalina/package-summary.html b/waffle-tomcat10/xref-test/waffle/apache/catalina/package-summary.html
      new file mode 100644
      index 0000000000..e8d0ca4af0
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/catalina/package-summary.html
      @@ -0,0 +1,112 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference Package waffle.apache.catalina</title>
      +        <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
      +    </head>
      +
      +    <body>
      +                <div class="topNav">
      +            <a name="navbar_top"><!--   --></a>
      +            <a href="#skip-navbar_top" title="Skip navigation links"></a>
      +            <a name="navbar_top_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li><a href="../../../overview-summary.html">Overview</a></li>
      +                <li class="navBarCell1Rev">Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="../../../index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="package-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <ul class="navList" id="allclasses_navbar_top">
      +                <li>All Classes</li>
      +            </ul>
      +            <div>
      +            </div>
      +            <a name="skip-navbar_top"><!--   --></a>
      +        </div>
      +        
      +                <div class="header">
      +            <h1 title="Package" class="title">Package waffle.apache.catalina</h1>
      +        </div>
      +        <div class="contentContainer">
      +            <ul class="blockList">
      +                <li class="blockList">
      +                    <table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
      +                        <caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
      +                        <thead>
      +                            <tr>
      +                                <th class="colFirst colLast" scope="col">Class</th>
      +                            </tr>
      +                        </thead>
      +                        <tbody>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="SimpleHttpRequest.html#SimpleHttpRequest" target="classFrame" title="class in waffle.apache.catalina">SimpleHttpRequest</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="rowColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="SimpleHttpResponse.html#SimpleHttpResponse" target="classFrame" title="class in waffle.apache.catalina">SimpleHttpResponse</a>
      +                                </td>
      +                            </tr>
      +                        </tbody>
      +                    </table>
      +                </li>
      +            </ul>
      +        </div>
      +        
      +                <div class="bottomNav">
      +            <a name="navbar_bottom"><!--   --></a>
      +            <a href="#skip-navbar_bottom" title="Skip navigation links"></a>
      +            <a name="navbar_bottom_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li><a href="../../../overview-summary.html">Overview</a></li>
      +                <li class="navBarCell1Rev">Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="../../../index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="package-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <ul class="navList" id="allclasses_navbar_bottom">
      +                <li>All Classes</li>
      +            </ul>
      +            <div>
      +            </div>
      +            <a name="skip-navbar_bottom"><!--   --></a>
      +        </div>
      +        
      +        <div id="footer">
      +            © 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/package-frame.html b/waffle-tomcat10/xref-test/waffle/apache/package-frame.html
      new file mode 100644
      index 0000000000..05c9a301ae
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/package-frame.html
      @@ -0,0 +1,33 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference Package waffle.apache</title>
      +        <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 class="bar"><a href="package-summary.html" target="classFrame">waffle.apache</a></h1>
      +        <div class="indexContainer">
      +            <h2 title="Classes">Classes</h2>
      +            <ul title="Classes">
      +                <li>
      +                    <a href="MixedAuthenticatorTest.html#MixedAuthenticatorTest" target="classFrame">MixedAuthenticatorTest</a>
      +                </li>
      +                <li>
      +                    <a href="NegotiateAuthenticatorTest.html#NegotiateAuthenticatorTest" target="classFrame">NegotiateAuthenticatorTest</a>
      +                </li>
      +                <li>
      +                    <a href="WaffleAuthenticatorBaseTest.html#WaffleAuthenticatorBaseTest" target="classFrame">WaffleAuthenticatorBaseTest</a>
      +                </li>
      +                <li>
      +                    <a href="WindowsAccountTest.html#WindowsAccountTest" target="classFrame">WindowsAccountTest</a>
      +                </li>
      +                <li>
      +                    <a href="WindowsRealmTest.html#WindowsRealmTest" target="classFrame">WindowsRealmTest</a>
      +                </li>
      +            </ul>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref-test/waffle/apache/package-summary.html b/waffle-tomcat10/xref-test/waffle/apache/package-summary.html
      new file mode 100644
      index 0000000000..bda29499cf
      --- /dev/null
      +++ b/waffle-tomcat10/xref-test/waffle/apache/package-summary.html
      @@ -0,0 +1,127 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference Package waffle.apache</title>
      +        <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="style" />
      +    </head>
      +
      +    <body>
      +                <div class="topNav">
      +            <a name="navbar_top"><!--   --></a>
      +            <a href="#skip-navbar_top" title="Skip navigation links"></a>
      +            <a name="navbar_top_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li><a href="../../overview-summary.html">Overview</a></li>
      +                <li class="navBarCell1Rev">Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="../../index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="package-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <ul class="navList" id="allclasses_navbar_top">
      +                <li>All Classes</li>
      +            </ul>
      +            <div>
      +            </div>
      +            <a name="skip-navbar_top"><!--   --></a>
      +        </div>
      +        
      +                <div class="header">
      +            <h1 title="Package" class="title">Package waffle.apache</h1>
      +        </div>
      +        <div class="contentContainer">
      +            <ul class="blockList">
      +                <li class="blockList">
      +                    <table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
      +                        <caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
      +                        <thead>
      +                            <tr>
      +                                <th class="colFirst colLast" scope="col">Class</th>
      +                            </tr>
      +                        </thead>
      +                        <tbody>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="MixedAuthenticatorTest.html#MixedAuthenticatorTest" target="classFrame" title="class in waffle.apache">MixedAuthenticatorTest</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="rowColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="NegotiateAuthenticatorTest.html#NegotiateAuthenticatorTest" target="classFrame" title="class in waffle.apache">NegotiateAuthenticatorTest</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="WaffleAuthenticatorBaseTest.html#WaffleAuthenticatorBaseTest" target="classFrame" title="class in waffle.apache">WaffleAuthenticatorBaseTest</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="rowColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="WindowsAccountTest.html#WindowsAccountTest" target="classFrame" title="class in waffle.apache">WindowsAccountTest</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="WindowsRealmTest.html#WindowsRealmTest" target="classFrame" title="class in waffle.apache">WindowsRealmTest</a>
      +                                </td>
      +                            </tr>
      +                        </tbody>
      +                    </table>
      +                </li>
      +            </ul>
      +        </div>
      +        
      +                <div class="bottomNav">
      +            <a name="navbar_bottom"><!--   --></a>
      +            <a href="#skip-navbar_bottom" title="Skip navigation links"></a>
      +            <a name="navbar_bottom_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li><a href="../../overview-summary.html">Overview</a></li>
      +                <li class="navBarCell1Rev">Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="../../index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="package-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <ul class="navList" id="allclasses_navbar_bottom">
      +                <li>All Classes</li>
      +            </ul>
      +            <div>
      +            </div>
      +            <a name="skip-navbar_bottom"><!--   --></a>
      +        </div>
      +        
      +        <div id="footer">
      +            © 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref/allclasses-frame.html b/waffle-tomcat10/xref/allclasses-frame.html
      new file mode 100644
      index 0000000000..365055d25c
      --- /dev/null
      +++ b/waffle-tomcat10/xref/allclasses-frame.html
      @@ -0,0 +1,22 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>All Classes</title>
      +        <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 class="bar">All Classes</h1>
      +        <div class="indexContainer">
      +            <ul>
      +                <li><a href="waffle/apache/GenericWindowsPrincipal.html#GenericWindowsPrincipal" target="classFrame">GenericWindowsPrincipal</a></li>
      +                <li><a href="waffle/apache/MixedAuthenticator.html#MixedAuthenticator" target="classFrame">MixedAuthenticator</a></li>
      +                <li><a href="waffle/apache/NegotiateAuthenticator.html#NegotiateAuthenticator" target="classFrame">NegotiateAuthenticator</a></li>
      +                <li><a href="waffle/apache/WaffleAuthenticatorBase.html#WaffleAuthenticatorBase" target="classFrame">WaffleAuthenticatorBase</a></li>
      +                <li><a href="waffle/apache/WindowsRealm.html#WindowsRealm" target="classFrame">WindowsRealm</a></li>
      +            </ul>
      +        </div>
      +    </body>
      +</html>
      diff --git a/waffle-tomcat10/xref/index.html b/waffle-tomcat10/xref/index.html
      new file mode 100644
      index 0000000000..0a42c9e361
      --- /dev/null
      +++ b/waffle-tomcat10/xref/index.html
      @@ -0,0 +1,75 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- this is a JXR report set (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference</title>
      +        <script type="text/javascript">
      +            tmpTargetPage = "" + window.location.search;
      +            if (tmpTargetPage != "" && tmpTargetPage != "undefined")
      +                tmpTargetPage = tmpTargetPage.substring(1);
      +            if (tmpTargetPage.indexOf(":") != -1 || (tmpTargetPage != "" && !validURL(tmpTargetPage)))
      +                tmpTargetPage = "undefined";
      +            targetPage = tmpTargetPage;
      +            function validURL(url) {
      +                try {
      +                    url = decodeURIComponent(url);
      +                }
      +                catch (error) {
      +                    return false;
      +                }
      +                var pos = url.indexOf(".html");
      +                if (pos == -1 || pos != url.length - 5)
      +                    return false;
      +                var allowNumber = false;
      +                var allowSep = false;
      +                var seenDot = false;
      +                for (var i = 0; i < url.length - 5; i++) {
      +                    var ch = url.charAt(i);
      +                    if ('a' <= ch && ch <= 'z' ||
      +                            'A' <= ch && ch <= 'Z' ||
      +                            ch == '$' ||
      +                            ch == '_' ||
      +                            ch.charCodeAt(0) > 127) {
      +                        allowNumber = true;
      +                        allowSep = true;
      +                    } else if ('0' <= ch && ch <= '9'
      +                            || ch == '-') {
      +                        if (!allowNumber)
      +                            return false;
      +                    } else if (ch == '/' || ch == '.') {
      +                        if (!allowSep)
      +                            return false;
      +                        allowNumber = false;
      +                        allowSep = false;
      +                        if (ch == '.')
      +                            seenDot = true;
      +                        if (ch == '/' && seenDot)
      +                            return false;
      +                    } else {
      +                        return false;
      +                    }
      +                }
      +                return true;
      +            }
      +            function loadFrames() {
      +                if (targetPage != "" && targetPage != "undefined")
      +                    top.classFrame.location = top.targetPage;
      +            }
      +        </script>
      +    </head>
      +    <frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
      +        <frameset rows="30%,70%" title="Left frames" onload="top.loadFrames()">
      +            <frame src="overview-frame.html" name="packageListFrame" title="All Packages"/>
      +            <frame src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)"/>
      +        </frameset>
      +        <frame src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes"/>
      +        <noframes>
      +            <h1>Frame Alert</h1>
      +            <p>
      +                You don't have frames. Go <a href="overview-summary.html">here</a>
      +            </p>
      +        </noframes>
      +    </frameset>
      +</html>
      diff --git a/waffle-tomcat10/xref/overview-frame.html b/waffle-tomcat10/xref/overview-frame.html
      new file mode 100644
      index 0000000000..367ff1ef58
      --- /dev/null
      +++ b/waffle-tomcat10/xref/overview-frame.html
      @@ -0,0 +1,24 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference</title>
      +        <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 title="waffle-tomcat10 3.5.1 Reference" class="bar"><strong>waffle-tomcat10 3.5.1 Reference</strong></h1>
      +        <div class="indexHeader"><span><a href="allclasses-frame.html" target="packageFrame">All&nbsp;Classes</a></span></div>
      +        <div class="indexContainer">
      +            <h2 title="Packages">Packages</h2>
      +            <ul title="Packages">
      +                <li>
      +                    <a href="waffle/apache/package-frame.html" target="packageFrame">waffle.apache</a>
      +                </li>
      +            </ul>
      +        </div>
      +        <p>&nbsp;</p>
      +    </body>
      +</html>
      +
      diff --git a/waffle-tomcat10/xref/overview-summary.html b/waffle-tomcat10/xref/overview-summary.html
      new file mode 100644
      index 0000000000..59fc583b00
      --- /dev/null
      +++ b/waffle-tomcat10/xref/overview-summary.html
      @@ -0,0 +1,92 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk7) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference</title>
      +        <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +                <div class="topNav">
      +            <a name="navbar_top"><!--   --></a>
      +            <a href="#skip-navbar_top" title="Skip navigation links"></a>
      +            <a name="navbar_top_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li class="navBarCell1Rev">Overview</li>
      +                <li>Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="overview-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <a name="skip-navbar_top"><!--   --></a>
      +        </div>
      +        
      +                <div class="header">
      +            <h1 class="title">waffle-tomcat10 3.5.1 Reference</h1>
      +        </div>
      +        <div class="contentContainer">
      +            <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Packages table, listing packages">
      +                <caption><span>Packages</span><span class="tabEnd">&nbsp;</span></caption>
      +                <thead>
      +                    <tr>
      +                        <th class="colFirst colLast" scope="col">Package</th>
      +                    </tr>
      +                </thead>
      +                <tbody>
      +                    <tr class="altColor">
      +                        <td class="colFirst colLast">
      +                            <a href="waffle/apache/package-summary.html">waffle.apache</a>
      +                        </td>
      +                    </tr>
      +                </tbody>
      +            </table>
      +        </div>
      +        
      +                <div class="bottomNav">
      +            <a name="navbar_bottom"><!--   --></a>
      +            <a href="#skip-navbar_bottom" title="Skip navigation links"></a>
      +            <a name="navbar_bottom_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li class="navBarCell1Rev">Overview</li>
      +                <li>Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="overview-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <a name="skip-navbar_bottom"><!--   --></a>
      +        </div>
      +        
      +        <div id="footer">
      +            © 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref/stylesheet.css b/waffle-tomcat10/xref/stylesheet.css
      new file mode 100644
      index 0000000000..84d4b28eda
      --- /dev/null
      +++ b/waffle-tomcat10/xref/stylesheet.css
      @@ -0,0 +1,626 @@
      +/* Javadoc style sheet */
      +/*
      +Overall document style
      +*/
      +
      +@import url('resources/fonts/dejavu.css');
      +
      +body {
      +    background-color:#ffffff;
      +    color:#353833;
      +    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
      +    font-size:14px;
      +    margin:0;
      +}
      +a:link, a:visited {
      +    text-decoration:none;
      +    color:#4A6782;
      +}
      +a:hover, a:focus {
      +    text-decoration:none;
      +    color:#bb7a2a;
      +}
      +a:active {
      +    text-decoration:none;
      +    color:#4A6782;
      +}
      +a[name] {
      +    color:#353833;
      +}
      +a[name]:hover {
      +    text-decoration:none;
      +    color:#353833;
      +}
      +pre {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +}
      +h1 {
      +    font-size:20px;
      +}
      +h2 {
      +    font-size:18px;
      +}
      +h3 {
      +    font-size:16px;
      +    font-style:italic;
      +}
      +h4 {
      +    font-size:13px;
      +}
      +h5 {
      +    font-size:12px;
      +}
      +h6 {
      +    font-size:11px;
      +}
      +ul {
      +    list-style-type:disc;
      +}
      +code, tt {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +    padding-top:4px;
      +    margin-top:8px;
      +    line-height:1.4em;
      +}
      +dt code {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +    padding-top:4px;
      +}
      +table tr td dt code {
      +    font-family:'DejaVu Sans Mono', monospace;
      +    font-size:14px;
      +    vertical-align:top;
      +    padding-top:4px;
      +}
      +sup {
      +    font-size:8px;
      +}
      +/*
      +Document title and Copyright styles
      +*/
      +.clear {
      +    clear:both;
      +    height:0px;
      +    overflow:hidden;
      +}
      +.aboutLanguage {
      +    float:right;
      +    padding:0px 21px;
      +    font-size:11px;
      +    z-index:200;
      +    margin-top:-9px;
      +}
      +.legalCopy {
      +    margin-left:.5em;
      +}
      +.bar a, .bar a:link, .bar a:visited, .bar a:active {
      +    color:#FFFFFF;
      +    text-decoration:none;
      +}
      +.bar a:hover, .bar a:focus {
      +    color:#bb7a2a;
      +}
      +.tab {
      +    background-color:#0066FF;
      +    color:#ffffff;
      +    padding:8px;
      +    width:5em;
      +    font-weight:bold;
      +}
      +/*
      +Navigation bar styles
      +*/
      +.bar {
      +    background-color:#4D7A97;
      +    color:#FFFFFF;
      +    padding:.8em .5em .4em .8em;
      +    height:auto;/*height:1.8em;*/
      +    font-size:11px;
      +    margin:0;
      +}
      +.topNav {
      +    background-color:#4D7A97;
      +    color:#FFFFFF;
      +    float:left;
      +    padding:0;
      +    width:100%;
      +    clear:right;
      +    height:2.8em;
      +    padding-top:10px;
      +    overflow:hidden;
      +    font-size:12px; 
      +}
      +.bottomNav {
      +    margin-top:10px;
      +    background-color:#4D7A97;
      +    color:#FFFFFF;
      +    float:left;
      +    padding:0;
      +    width:100%;
      +    clear:right;
      +    height:2.8em;
      +    padding-top:10px;
      +    overflow:hidden;
      +    font-size:12px;
      +}
      +.subNav {
      +    background-color:#dee3e9;
      +    float:left;
      +    width:100%;
      +    overflow:hidden;
      +    font-size:12px;
      +}
      +.subNav div {
      +    clear:left;
      +    float:left;
      +    padding:0 0 5px 6px;
      +    text-transform:uppercase;
      +}
      +ul.navList, ul.subNavList {
      +    float:left;
      +    margin:0 25px 0 0;
      +    padding:0;
      +}
      +ul.navList li{
      +    list-style:none;
      +    float:left;
      +    padding: 5px 6px;
      +    text-transform:uppercase;
      +}
      +ul.subNavList li{
      +    list-style:none;
      +    float:left;
      +}
      +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
      +    color:#FFFFFF;
      +    text-decoration:none;
      +    text-transform:uppercase;
      +}
      +.topNav a:hover, .bottomNav a:hover {
      +    text-decoration:none;
      +    color:#bb7a2a;
      +    text-transform:uppercase;
      +}
      +.navBarCell1Rev {
      +    background-color:#F8981D;
      +    color:#253441;
      +    margin: auto 5px;
      +}
      +.skipNav {
      +    position:absolute;
      +    top:auto;
      +    left:-9999px;
      +    overflow:hidden;
      +}
      +/*
      +Page header and footer styles
      +*/
      +.header, .footer {
      +    clear:both;
      +    margin:0 20px;
      +    padding:5px 0 0 0;
      +}
      +.indexHeader {
      +    margin:10px;
      +    position:relative;
      +}
      +.indexHeader span{
      +    margin-right:15px;
      +}
      +.indexHeader h1 {
      +    font-size:13px;
      +}
      +.title {
      +    color:#2c4557;
      +    margin:10px 0;
      +}
      +.subTitle {
      +    margin:5px 0 0 0;
      +}
      +.header ul {
      +    margin:0 0 15px 0;
      +    padding:0;
      +}
      +.footer ul {
      +    margin:20px 0 5px 0;
      +}
      +.header ul li, .footer ul li {
      +    list-style:none;
      +    font-size:13px;
      +}
      +/*
      +Heading styles
      +*/
      +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
      +    background-color:#dee3e9;
      +    border:1px solid #d0d9e0;
      +    margin:0 0 6px -8px;
      +    padding:7px 5px;
      +}
      +ul.blockList ul.blockList ul.blockList li.blockList h3 {
      +    background-color:#dee3e9;
      +    border:1px solid #d0d9e0;
      +    margin:0 0 6px -8px;
      +    padding:7px 5px;
      +}
      +ul.blockList ul.blockList li.blockList h3 {
      +    padding:0;
      +    margin:15px 0;
      +}
      +ul.blockList li.blockList h2 {
      +    padding:0px 0 20px 0;
      +}
      +/*
      +Page layout container styles
      +*/
      +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
      +    clear:both;
      +    padding:10px 20px;
      +    position:relative;
      +}
      +.indexContainer {
      +    margin:10px;
      +    position:relative;
      +    font-size:12px;
      +}
      +.indexContainer h2 {
      +    font-size:13px;
      +    padding:0 0 3px 0;
      +}
      +.indexContainer ul {
      +    margin:0;
      +    padding:0;
      +}
      +.indexContainer ul li {
      +    list-style:none;
      +    padding-top:2px;
      +}
      +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
      +    font-size:12px;
      +    font-weight:bold;
      +    margin:10px 0 0 0;
      +    color:#4E4E4E;
      +}
      +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
      +    margin:5px 0 10px 0px;
      +    font-size:14px;
      +    font-family:'DejaVu Sans Mono',monospace;
      +}
      +.serializedFormContainer dl.nameValue dt {
      +    margin-left:1px;
      +    font-size:1.1em;
      +    display:inline;
      +    font-weight:bold;
      +}
      +.serializedFormContainer dl.nameValue dd {
      +    margin:0 0 0 1px;
      +    font-size:1.1em;
      +    display:inline;
      +}
      +/*
      +List styles
      +*/
      +ul.horizontal li {
      +    display:inline;
      +    font-size:0.9em;
      +}
      +ul.inheritance {
      +    margin:0;
      +    padding:0;
      +}
      +ul.inheritance li {
      +    display:inline;
      +    list-style:none;
      +}
      +ul.inheritance li ul.inheritance {
      +    margin-left:15px;
      +    padding-left:15px;
      +    padding-top:1px;
      +}
      +ul.blockList, ul.blockListLast {
      +    margin:10px 0 10px 0;
      +    padding:0;
      +}
      +ul.blockList li.blockList, ul.blockListLast li.blockList {
      +    list-style:none;
      +    margin-bottom:15px;
      +    line-height:1.4;
      +}
      +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
      +    padding:0px 20px 5px 10px;
      +    border:1px solid #ededed; 
      +    background-color:#f8f8f8;
      +}
      +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
      +    padding:0 0 5px 8px;
      +    background-color:#ffffff;
      +    border:none;
      +}
      +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
      +    margin-left:0;
      +    padding-left:0;
      +    padding-bottom:15px;
      +    border:none;
      +}
      +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
      +    list-style:none;
      +    border-bottom:none;
      +    padding-bottom:0;
      +}
      +table tr td dl, table tr td dl dt, table tr td dl dd {
      +    margin-top:0;
      +    margin-bottom:1px;
      +}
      +/*
      +Table styles
      +*/
      +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
      +    width:100%;
      +    border-left:1px solid #EEE; 
      +    border-right:1px solid #EEE; 
      +    border-bottom:1px solid #EEE; 
      +}
      +.overviewSummary, .memberSummary  {
      +    padding:0px;
      +}
      +.overviewSummary caption, .memberSummary caption, .typeSummary caption,
      +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
      +    position:relative;
      +    text-align:left;
      +    background-repeat:no-repeat;
      +    color:#253441;
      +    font-weight:bold;
      +    clear:none;
      +    overflow:hidden;
      +    padding:0px;
      +    padding-top:10px;
      +    padding-left:1px;
      +    margin:0px;
      +    white-space:pre;
      +}
      +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
      +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
      +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
      +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
      +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
      +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
      +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
      +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
      +    color:#FFFFFF;
      +}
      +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
      +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
      +    white-space:nowrap;
      +    padding-top:5px;
      +    padding-left:12px;
      +    padding-right:12px;
      +    padding-bottom:7px;
      +    display:inline-block;
      +    float:left;
      +    background-color:#F8981D;
      +    border: none;
      +    height:16px;
      +}
      +.memberSummary caption span.activeTableTab span {
      +    white-space:nowrap;
      +    padding-top:5px;
      +    padding-left:12px;
      +    padding-right:12px;
      +    margin-right:3px;
      +    display:inline-block;
      +    float:left;
      +    background-color:#F8981D;
      +    height:16px;
      +}
      +.memberSummary caption span.tableTab span {
      +    white-space:nowrap;
      +    padding-top:5px;
      +    padding-left:12px;
      +    padding-right:12px;
      +    margin-right:3px;
      +    display:inline-block;
      +    float:left;
      +    background-color:#4D7A97;
      +    height:16px;
      +}
      +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
      +    padding-top:0px;
      +    padding-left:0px;
      +    padding-right:0px;
      +    background-image:none;
      +    float:none;
      +    display:inline;
      +}
      +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
      +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
      +    display:none;
      +    width:5px;
      +    position:relative;
      +    float:left;
      +    background-color:#F8981D;
      +}
      +.memberSummary .activeTableTab .tabEnd {
      +    display:none;
      +    width:5px;
      +    margin-right:3px;
      +    position:relative; 
      +    float:left;
      +    background-color:#F8981D;
      +}
      +.memberSummary .tableTab .tabEnd {
      +    display:none;
      +    width:5px;
      +    margin-right:3px;
      +    position:relative;
      +    background-color:#4D7A97;
      +    float:left;
      +
      +}
      +.overviewSummary td, .memberSummary td, .typeSummary td,
      +.useSummary td, .constantsSummary td, .deprecatedSummary td {
      +    text-align:left;
      +    padding:0px 0px 12px 10px;
      +}
      +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
      +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
      +    vertical-align:top;
      +    padding-right:0px;
      +    padding-top:8px;
      +    padding-bottom:3px;
      +}
      +th.colFirst, th.colLast, th.colOne, .constantsSummary th {
      +    background:#dee3e9;
      +    text-align:left;
      +    padding:8px 3px 3px 7px;
      +}
      +td.colFirst, th.colFirst {
      +    white-space:nowrap;
      +    font-size:13px;
      +}
      +td.colLast, th.colLast {
      +    font-size:13px;
      +}
      +td.colOne, th.colOne {
      +    font-size:13px;
      +}
      +.overviewSummary td.colFirst, .overviewSummary th.colFirst,
      +.useSummary td.colFirst, .useSummary th.colFirst,
      +.overviewSummary td.colOne, .overviewSummary th.colOne,
      +.memberSummary td.colFirst, .memberSummary th.colFirst,
      +.memberSummary td.colOne, .memberSummary th.colOne,
      +.typeSummary td.colFirst{
      +    width:25%;
      +    vertical-align:top;
      +}
      +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
      +    font-weight:bold;
      +}
      +.tableSubHeadingColor {
      +    background-color:#EEEEFF;
      +}
      +.altColor {
      +    background-color:#FFFFFF;
      +}
      +.rowColor {
      +    background-color:#EEEEEF;
      +}
      +/*
      +Content styles
      +*/
      +.description pre {
      +    margin-top:0;
      +}
      +.deprecatedContent {
      +    margin:0;
      +    padding:10px 0;
      +}
      +.docSummary {
      +    padding:0;
      +}
      +
      +ul.blockList ul.blockList ul.blockList li.blockList h3 {
      +    font-style:normal;
      +}
      +
      +div.block {
      +    font-size:14px;
      +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
      +}
      +
      +td.colLast div {
      +    padding-top:0px;
      +}
      +
      +
      +td.colLast a {
      +    padding-bottom:3px;
      +}
      +/*
      +Formatting effect styles
      +*/
      +.sourceLineNo {
      +    color:green;
      +    padding:0 30px 0 0;
      +}
      +h1.hidden {
      +    visibility:hidden;
      +    overflow:hidden;
      +    font-size:10px;
      +}
      +.block {
      +    display:block;
      +    margin:3px 10px 2px 0px;
      +    color:#474747;
      +}
      +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
      +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
      +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
      +    font-weight:bold;
      +}
      +.deprecationComment, .emphasizedPhrase, .interfaceName {
      +    font-style:italic;
      +}
      +
      +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
      +div.block div.block span.interfaceName {
      +    font-style:normal;
      +}
      +
      +div.contentContainer ul.blockList li.blockList h2{
      +    padding-bottom:0px;
      +}
      +
      +/* JXR style sheet */
      +a.jxr_linenumber:link {
      +    color: #00f;
      +}
      +
      +a.jxr_linenumber:visited {
      +    color: #00a;
      +}
      +
      +a.jxr_linenumber:active, a.jxr_linenumber:hover {
      +    color: #f30 !important;
      +}
      +
      +em.comment {
      +    color: #390;
      +}
      +
      +.string {
      +    color: #009;
      +}
      +
      +#overview {
      +    padding: 2px;
      +    font-size: 90%;
      +    font-family: Helvetica, Arial, sans-serif;
      +}
      +
      +hr {
      +    color: #000;
      +}
      +
      +.jxr_comment
      +{
      +    color: #390;
      +}
      +
      +.jxr_javadoccomment
      +{
      +    color: #A00;
      +}
      +
      +.jxr_string
      +{
      +    color: #009;
      +}
      +
      +.jxr_keyword
      +{
      +    color: #000;
      +}
      +
      diff --git a/waffle-tomcat10/xref/waffle/apache/GenericWindowsPrincipal.html b/waffle-tomcat10/xref/waffle/apache/GenericWindowsPrincipal.html
      new file mode 100644
      index 0000000000..d8e2b757f6
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/GenericWindowsPrincipal.html
      @@ -0,0 +1,221 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>GenericWindowsPrincipal xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../apidocs/waffle/apache/GenericWindowsPrincipal.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.util.List;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.realm.GenericPrincipal;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsAccount;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsIdentity;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.PrincipalFormat;
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.WindowsAccount;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment"> * A Windows Principal.</em>
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="GenericWindowsPrincipal" href="../../waffle/apache/GenericWindowsPrincipal.html#GenericWindowsPrincipal">GenericWindowsPrincipal</a> <strong class="jxr_keyword">extends</strong> GenericPrincipal {
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <em class="jxr_javadoccomment">/** The Constant serialVersionUID. */</em>
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>      <em class="jxr_javadoccomment">/** The sid. */</em>
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] sid;
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <em class="jxr_javadoccomment">/** The sid string. */</em>
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String sidString;
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <em class="jxr_javadoccomment">/** The groups. */</em>
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String, WindowsAccount&gt; groups;
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">     * A windows principal.</em>
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">     * @param windowsIdentity</em>
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment">     *            Windows identity.</em>
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment">     * @param principalFormat</em>
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <em class="jxr_javadoccomment">     *            Principal format.</em>
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <em class="jxr_javadoccomment">     * @param roleFormat</em>
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment">     *            Role format.</em>
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">public</strong> <a name="GenericWindowsPrincipal" href="../../waffle/apache/GenericWindowsPrincipal.html#GenericWindowsPrincipal">GenericWindowsPrincipal</a>(<strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity, <strong class="jxr_keyword">final</strong> PrincipalFormat principalFormat,
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>              <strong class="jxr_keyword">final</strong> PrincipalFormat roleFormat) {
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>          <strong class="jxr_keyword">super</strong>(windowsIdentity.getFqn(), GenericWindowsPrincipal.getRoles(windowsIdentity, principalFormat, roleFormat));
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>          <strong class="jxr_keyword">this</strong>.sid = windowsIdentity.getSid();
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>          <strong class="jxr_keyword">this</strong>.sidString = windowsIdentity.getSidString();
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>          <strong class="jxr_keyword">this</strong>.groups = GenericWindowsPrincipal.getGroups(windowsIdentity.getGroups());
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      }
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>  
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment">     * Gets the roles.</em>
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">     * @param windowsIdentity</em>
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">     *            the windows identity</em>
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">     * @param principalFormat</em>
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">     *            the principal format</em>
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">     * @param roleFormat</em>
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment">     *            the role format</em>
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>  <em class="jxr_javadoccomment">     * @return the roles</em>
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List&lt;String&gt; getRoles(<strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity, <strong class="jxr_keyword">final</strong> PrincipalFormat principalFormat,
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>              <strong class="jxr_keyword">final</strong> PrincipalFormat roleFormat) {
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>          <strong class="jxr_keyword">final</strong> List&lt;String&gt; roles = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>          roles.addAll(GenericWindowsPrincipal.getPrincipalNames(windowsIdentity, principalFormat));
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> IWindowsAccount group : windowsIdentity.getGroups()) {
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>              roles.addAll(GenericWindowsPrincipal.getRoleNames(group, roleFormat));
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>          }
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">return</strong> roles;
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>      }
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>  
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>  <em class="jxr_javadoccomment">     * Gets the groups.</em>
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>  <em class="jxr_javadoccomment">     * @param groups</em>
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">     *            the groups</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">     * @return the groups</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Map&lt;String, WindowsAccount&gt; getGroups(<strong class="jxr_keyword">final</strong> IWindowsAccount[] groups) {
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>         <strong class="jxr_keyword">final</strong> Map&lt;String, WindowsAccount&gt; groupMap = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> IWindowsAccount group : groups) {
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>             groupMap.put(group.getFqn(), <strong class="jxr_keyword">new</strong> WindowsAccount(group));
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>         }
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a>         <strong class="jxr_keyword">return</strong> groupMap;
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>     }
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a> 
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a> <em class="jxr_javadoccomment">     * Windows groups that the user is a member of.</em>
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a> <em class="jxr_javadoccomment">     * @return A map of group names to groups.</em>
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a>     <strong class="jxr_keyword">public</strong> Map&lt;String, WindowsAccount&gt; getGroups() {
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.groups;
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>     }
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a> <em class="jxr_javadoccomment">     * Byte representation of the SID.</em>
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a> <em class="jxr_javadoccomment">     * @return Array of bytes.</em>
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a>     <strong class="jxr_keyword">public</strong> byte[] getSid() {
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.sid.clone();
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a>     }
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a> 
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">     * String representation of the SID.</em>
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a> <em class="jxr_javadoccomment">     * @return String.</em>
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a>     <strong class="jxr_keyword">public</strong> String getSidString() {
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.sidString;
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a>     }
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a> 
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a> <em class="jxr_javadoccomment">     * Returns a list of role principal objects.</em>
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a> <em class="jxr_javadoccomment">     * @param group</em>
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a> <em class="jxr_javadoccomment">     *            Windows group.</em>
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a> <em class="jxr_javadoccomment">     * @param principalFormat</em>
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a> <em class="jxr_javadoccomment">     *            Principal format.</em>
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a> <em class="jxr_javadoccomment">     * @return List of role principal objects.</em>
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List&lt;String&gt; getRoleNames(<strong class="jxr_keyword">final</strong> IWindowsAccount group, <strong class="jxr_keyword">final</strong> PrincipalFormat principalFormat) {
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a>         <strong class="jxr_keyword">final</strong> List&lt;String&gt; principals = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a>         <strong class="jxr_keyword">switch</strong> (principalFormat) {
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a>             <strong class="jxr_keyword">case</strong> FQN:
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>                 principals.add(group.getFqn());
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>             <strong class="jxr_keyword">case</strong> SID:
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a>                 principals.add(group.getSidString());
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>             <strong class="jxr_keyword">case</strong> BOTH:
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a>                 principals.add(group.getFqn());
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a>                 principals.add(group.getSidString());
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a>             <strong class="jxr_keyword">case</strong> NONE:
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>             <strong class="jxr_keyword">default</strong>:
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a>         }
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a>         <strong class="jxr_keyword">return</strong> principals;
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a>     }
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a> 
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a> <em class="jxr_javadoccomment">     * Returns a list of user principal objects.</em>
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a> <em class="jxr_javadoccomment">     * @param windowsIdentity</em>
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a> <em class="jxr_javadoccomment">     *            Windows identity.</em>
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a> <em class="jxr_javadoccomment">     * @param principalFormat</em>
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a> <em class="jxr_javadoccomment">     *            Principal format.</em>
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a> <em class="jxr_javadoccomment">     * @return A list of user principal objects.</em>
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List&lt;String&gt; getPrincipalNames(<strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity,
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a>             <strong class="jxr_keyword">final</strong> PrincipalFormat principalFormat) {
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a>         <strong class="jxr_keyword">final</strong> List&lt;String&gt; principals = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a>         <strong class="jxr_keyword">switch</strong> (principalFormat) {
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a>             <strong class="jxr_keyword">case</strong> FQN:
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a>                 principals.add(windowsIdentity.getFqn());
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a>             <strong class="jxr_keyword">case</strong> SID:
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a>                 principals.add(windowsIdentity.getSidString());
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a>             <strong class="jxr_keyword">case</strong> BOTH:
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a>                 principals.add(windowsIdentity.getFqn());
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a>                 principals.add(windowsIdentity.getSidString());
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>             <strong class="jxr_keyword">case</strong> NONE:
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>             <strong class="jxr_keyword">default</strong>:
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a>                 <strong class="jxr_keyword">break</strong>;
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a>         }
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a>         <strong class="jxr_keyword">return</strong> principals;
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a>     }
      +<a class="jxr_linenumber" name="L198" href="#L198">198</a> 
      +<a class="jxr_linenumber" name="L199" href="#L199">199</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L200" href="#L200">200</a> <em class="jxr_javadoccomment">     * Get an array of roles as a string.</em>
      +<a class="jxr_linenumber" name="L201" href="#L201">201</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L202" href="#L202">202</a> <em class="jxr_javadoccomment">     * @return Role1, Role2, ...</em>
      +<a class="jxr_linenumber" name="L203" href="#L203">203</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L204" href="#L204">204</a>     <strong class="jxr_keyword">public</strong> String getRolesString() {
      +<a class="jxr_linenumber" name="L205" href="#L205">205</a>         <strong class="jxr_keyword">return</strong> String.join(<span class="jxr_string">", "</span>, <strong class="jxr_keyword">this</strong>.getRoles());
      +<a class="jxr_linenumber" name="L206" href="#L206">206</a>     }
      +<a class="jxr_linenumber" name="L207" href="#L207">207</a> 
      +<a class="jxr_linenumber" name="L208" href="#L208">208</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref/waffle/apache/MixedAuthenticator.html b/waffle-tomcat10/xref/waffle/apache/MixedAuthenticator.html
      new file mode 100644
      index 0000000000..aa106097a4
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/MixedAuthenticator.html
      @@ -0,0 +1,323 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>MixedAuthenticator xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../apidocs/waffle/apache/MixedAuthenticator.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> com.sun.jna.platform.win32.Win32Exception;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.RequestDispatcher;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.ServletContext;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.ServletException;
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpServletResponse;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpSession;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> java.security.Principal;
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> java.util.Base64;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.LifecycleException;
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.connector.Request;
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.realm.GenericPrincipal;
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.tomcat.util.descriptor.web.LoginConfig;
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> waffle.util.AuthorizationHeader;
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> waffle.util.NtlmServletRequest;
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsIdentity;
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsSecurityContext;
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <em class="jxr_javadoccomment"> * Mixed Negotiate + Form Authenticator.</em>
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="MixedAuthenticator" href="../../waffle/apache/MixedAuthenticator.html#MixedAuthenticator">MixedAuthenticator</a> <strong class="jxr_keyword">extends</strong> <a name="WaffleAuthenticatorBase" href="../../waffle/apache/WaffleAuthenticatorBase.html#WaffleAuthenticatorBase">WaffleAuthenticatorBase</a> {
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     * Instantiates a new mixed authenticator.</em>
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">public</strong> <a name="MixedAuthenticator" href="../../waffle/apache/MixedAuthenticator.html#MixedAuthenticator">MixedAuthenticator</a>() {
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>          <strong class="jxr_keyword">super</strong>();
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <strong class="jxr_keyword">this</strong>.log = LoggerFactory.getLogger(MixedAuthenticator.<strong class="jxr_keyword">class</strong>);
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>          <strong class="jxr_keyword">this</strong>.info = MixedAuthenticator.<strong class="jxr_keyword">class</strong>.getSimpleName();
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"[waffle.apache.MixedAuthenticator] loaded"</span>);
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>      }
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>  
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      @Override
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> startInternal() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>          <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"[waffle.apache.MixedAuthenticator] started"</span>);
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>          <strong class="jxr_keyword">super</strong>.startInternal();
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>      }
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>  
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      @Override
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> stopInternal() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <strong class="jxr_keyword">super</strong>.stopInternal();
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>          <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"[waffle.apache.MixedAuthenticator] stopped"</span>);
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>      }
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>      @Override
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> authenticate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response) {
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>          <em class="jxr_comment">// realm: fail if no realm is configured</em>
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>          <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.context == <strong class="jxr_keyword">null</strong> || <strong class="jxr_keyword">this</strong>.context.getRealm() == <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>              <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"missing context/realm"</span>);
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>              <strong class="jxr_keyword">this</strong>.sendError(response, HttpServletResponse.SC_SERVICE_UNAVAILABLE);
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>              <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>          }
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>  
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"{} {}, contentlength: {}"</span>, request.getMethod(), request.getRequestURI(),
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>                  Integer.valueOf(request.getContentLength()));
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> negotiateCheck = request.getParameter(<span class="jxr_string">"j_negotiate_check"</span>) != <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"negotiateCheck: {}"</span>, Boolean.valueOf(negotiateCheck));
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> securityCheck = request.getParameter(<span class="jxr_string">"j_security_check"</span>) != <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"securityCheck: {}"</span>, Boolean.valueOf(securityCheck));
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>  
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">final</strong> Principal principal = request.getUserPrincipal();
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <strong class="jxr_keyword">final</strong> AuthorizationHeader authorizationHeader = <strong class="jxr_keyword">new</strong> AuthorizationHeader(request);
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"authorization: {}, ntlm post: {}"</span>, authorizationHeader, Boolean.valueOf(ntlmPost));
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a>         <strong class="jxr_keyword">final</strong> LoginConfig loginConfig = <strong class="jxr_keyword">this</strong>.context.getLoginConfig();
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> 
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a>         <strong class="jxr_keyword">if</strong> (principal != <strong class="jxr_keyword">null</strong> &amp;&amp; !ntlmPost) {
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"previously authenticated user: {}"</span>, principal.getName());
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (negotiateCheck) {
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>             <strong class="jxr_keyword">if</strong> (!authorizationHeader.isNull()) {
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>                 <strong class="jxr_keyword">boolean</strong> negotiateResult = <strong class="jxr_keyword">this</strong>.negotiate(request, response, authorizationHeader);
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a>                 <strong class="jxr_keyword">if</strong> (!negotiateResult) {
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>                     <strong class="jxr_keyword">this</strong>.redirectTo(request, response, loginConfig.getErrorPage());
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a>                 }
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a>                 <strong class="jxr_keyword">return</strong> negotiateResult;
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a>             }
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"authorization required"</span>);
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a>             <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (securityCheck) {
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> postResult = <strong class="jxr_keyword">this</strong>.post(request, response);
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>             <strong class="jxr_keyword">if</strong> (!postResult) {
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a>                 <strong class="jxr_keyword">this</strong>.redirectTo(request, response, loginConfig.getErrorPage());
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a>             }
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a>             <strong class="jxr_keyword">return</strong> postResult;
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>         } <strong class="jxr_keyword">else</strong> {
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>             <strong class="jxr_keyword">this</strong>.redirectTo(request, response, loginConfig.getLoginPage());
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a>         }
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>     }
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a> 
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em class="jxr_javadoccomment">     * Negotiate.</em>
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a> <em class="jxr_javadoccomment">     * @param request</em>
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a> <em class="jxr_javadoccomment">     *            the request</em>
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a> <em class="jxr_javadoccomment">     * @param response</em>
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a> <em class="jxr_javadoccomment">     *            the response</em>
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">     * @param authorizationHeader</em>
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">     *            the authorization header</em>
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a> <em class="jxr_javadoccomment">     * @return true, if successful</em>
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> negotiate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response,
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a>             <strong class="jxr_keyword">final</strong> AuthorizationHeader authorizationHeader) {
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a> 
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a>         <strong class="jxr_keyword">final</strong> String securityPackage = authorizationHeader.getSecurityPackage();
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a>         <em class="jxr_comment">// maintain a connection-based session for NTLM tokens</em>
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a>         <strong class="jxr_keyword">final</strong> String connectionId = NtlmServletRequest.getConnectionId(request);
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a> 
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"security package: {}, connection id: {}"</span>, securityPackage, connectionId);
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a> 
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a> 
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a>         <strong class="jxr_keyword">if</strong> (ntlmPost) {
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>             <em class="jxr_comment">// type 1 NTLM authentication message received</em>
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>             <strong class="jxr_keyword">this</strong>.auth.resetSecurityToken(connectionId);
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>         }
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a> 
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a>         <strong class="jxr_keyword">final</strong> byte[] tokenBuffer = authorizationHeader.getTokenBytes();
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"token buffer: {} byte(s)"</span>, Integer.valueOf(tokenBuffer.length));
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a> 
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a>         <em class="jxr_comment">// log the user in using the token</em>
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a>         IWindowsSecurityContext securityContext;
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>             securityContext = <strong class="jxr_keyword">this</strong>.auth.acceptSecurityToken(connectionId, tokenBuffer, securityPackage);
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> Win32Exception e) {
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a>             <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"error logging in user: {}"</span>, e.getMessage());
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a>             <strong class="jxr_keyword">this</strong>.log.trace(<span class="jxr_string">""</span>, e);
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a>             <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a>         }
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"continue required: {}"</span>, Boolean.valueOf(securityContext.isContinue()));
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a> 
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a>         <strong class="jxr_keyword">final</strong> byte[] continueTokenBytes = securityContext.getToken();
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a>         <strong class="jxr_keyword">if</strong> (continueTokenBytes != <strong class="jxr_keyword">null</strong> &amp;&amp; continueTokenBytes.length &gt; 0) {
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a>             <strong class="jxr_keyword">final</strong> String continueToken = Base64.getEncoder().encodeToString(continueTokenBytes);
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"continue token: {}"</span>, continueToken);
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a>             response.addHeader(<span class="jxr_string">"WWW-Authenticate"</span>, securityPackage + <span class="jxr_string">" "</span> + continueToken);
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a>         }
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a> 
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a>             <strong class="jxr_keyword">if</strong> (securityContext.isContinue() || ntlmPost) {
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a>                 response.setHeader(<span class="jxr_string">"Connection"</span>, <span class="jxr_string">"keep-alive"</span>);
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a>                 response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a>                 response.flushBuffer();
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a>                 <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>             }
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> IOException e) {
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a>             <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"error logging in user: {}"</span>, e.getMessage());
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a>             <strong class="jxr_keyword">this</strong>.log.trace(<span class="jxr_string">""</span>, e);
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a>             <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a>         }
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a> 
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>         <em class="jxr_comment">// create and register the user principal with the session</em>
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>         <strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity = securityContext.getIdentity();
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a> 
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a>         <em class="jxr_comment">// disable guest login</em>
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a>         <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a>             <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"guest login disabled: {}"</span>, windowsIdentity.getFqn());
      +<a class="jxr_linenumber" name="L198" href="#L198">198</a>             <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L199" href="#L199">199</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L200" href="#L200">200</a>         }
      +<a class="jxr_linenumber" name="L201" href="#L201">201</a> 
      +<a class="jxr_linenumber" name="L202" href="#L202">202</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L203" href="#L203">203</a> 
      +<a class="jxr_linenumber" name="L204" href="#L204">204</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"logged in user: {} ({})"</span>, windowsIdentity.getFqn(), windowsIdentity.getSidString());
      +<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
      +<a class="jxr_linenumber" name="L206" href="#L206">206</a>             <strong class="jxr_keyword">final</strong> GenericPrincipal genericPrincipal = <strong class="jxr_keyword">this</strong>.createPrincipal(windowsIdentity);
      +<a class="jxr_linenumber" name="L207" href="#L207">207</a> 
      +<a class="jxr_linenumber" name="L208" href="#L208">208</a>             <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.log.isDebugEnabled()) {
      +<a class="jxr_linenumber" name="L209" href="#L209">209</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"roles: {}"</span>, String.join(<span class="jxr_string">", "</span>, genericPrincipal.getRoles()));
      +<a class="jxr_linenumber" name="L210" href="#L210">210</a>             }
      +<a class="jxr_linenumber" name="L211" href="#L211">211</a> 
      +<a class="jxr_linenumber" name="L212" href="#L212">212</a>             <em class="jxr_comment">// create a session associated with this request if there's none</em>
      +<a class="jxr_linenumber" name="L213" href="#L213">213</a>             <strong class="jxr_keyword">final</strong> HttpSession session = request.getSession(<strong class="jxr_keyword">true</strong>);
      +<a class="jxr_linenumber" name="L214" href="#L214">214</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"session id: {}"</span>, session == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"null"</span> : session.getId());
      +<a class="jxr_linenumber" name="L215" href="#L215">215</a> 
      +<a class="jxr_linenumber" name="L216" href="#L216">216</a>             <strong class="jxr_keyword">this</strong>.register(request, response, genericPrincipal, securityPackage, genericPrincipal.getName(), <strong class="jxr_keyword">null</strong>);
      +<a class="jxr_linenumber" name="L217" href="#L217">217</a>             <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"successfully logged in user: {}"</span>, genericPrincipal.getName());
      +<a class="jxr_linenumber" name="L218" href="#L218">218</a> 
      +<a class="jxr_linenumber" name="L219" href="#L219">219</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L220" href="#L220">220</a>             windowsIdentity.dispose();
      +<a class="jxr_linenumber" name="L221" href="#L221">221</a>         }
      +<a class="jxr_linenumber" name="L222" href="#L222">222</a> 
      +<a class="jxr_linenumber" name="L223" href="#L223">223</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
      +<a class="jxr_linenumber" name="L224" href="#L224">224</a>     }
      +<a class="jxr_linenumber" name="L225" href="#L225">225</a> 
      +<a class="jxr_linenumber" name="L226" href="#L226">226</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L227" href="#L227">227</a> <em class="jxr_javadoccomment">     * Post.</em>
      +<a class="jxr_linenumber" name="L228" href="#L228">228</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L229" href="#L229">229</a> <em class="jxr_javadoccomment">     * @param request</em>
      +<a class="jxr_linenumber" name="L230" href="#L230">230</a> <em class="jxr_javadoccomment">     *            the request</em>
      +<a class="jxr_linenumber" name="L231" href="#L231">231</a> <em class="jxr_javadoccomment">     * @param response</em>
      +<a class="jxr_linenumber" name="L232" href="#L232">232</a> <em class="jxr_javadoccomment">     *            the response</em>
      +<a class="jxr_linenumber" name="L233" href="#L233">233</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L234" href="#L234">234</a> <em class="jxr_javadoccomment">     * @return true, if successful</em>
      +<a class="jxr_linenumber" name="L235" href="#L235">235</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L236" href="#L236">236</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> post(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response) {
      +<a class="jxr_linenumber" name="L237" href="#L237">237</a> 
      +<a class="jxr_linenumber" name="L238" href="#L238">238</a>         <strong class="jxr_keyword">final</strong> String username = request.getParameter(<span class="jxr_string">"j_username"</span>);
      +<a class="jxr_linenumber" name="L239" href="#L239">239</a>         <strong class="jxr_keyword">final</strong> String password = request.getParameter(<span class="jxr_string">"j_password"</span>);
      +<a class="jxr_linenumber" name="L240" href="#L240">240</a> 
      +<a class="jxr_linenumber" name="L241" href="#L241">241</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"logging in: {}"</span>, username);
      +<a class="jxr_linenumber" name="L242" href="#L242">242</a> 
      +<a class="jxr_linenumber" name="L243" href="#L243">243</a>         IWindowsIdentity windowsIdentity;
      +<a class="jxr_linenumber" name="L244" href="#L244">244</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L245" href="#L245">245</a>             windowsIdentity = <strong class="jxr_keyword">this</strong>.auth.logonUser(username, password);
      +<a class="jxr_linenumber" name="L246" href="#L246">246</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> Exception e) {
      +<a class="jxr_linenumber" name="L247" href="#L247">247</a>             <strong class="jxr_keyword">this</strong>.log.error(e.getMessage());
      +<a class="jxr_linenumber" name="L248" href="#L248">248</a>             <strong class="jxr_keyword">this</strong>.log.trace(<span class="jxr_string">""</span>, e);
      +<a class="jxr_linenumber" name="L249" href="#L249">249</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L250" href="#L250">250</a>         }
      +<a class="jxr_linenumber" name="L251" href="#L251">251</a> 
      +<a class="jxr_linenumber" name="L252" href="#L252">252</a>         <em class="jxr_comment">// disable guest login</em>
      +<a class="jxr_linenumber" name="L253" href="#L253">253</a>         <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {
      +<a class="jxr_linenumber" name="L254" href="#L254">254</a>             <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"guest login disabled: {}"</span>, windowsIdentity.getFqn());
      +<a class="jxr_linenumber" name="L255" href="#L255">255</a>             <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L256" href="#L256">256</a>         }
      +<a class="jxr_linenumber" name="L257" href="#L257">257</a> 
      +<a class="jxr_linenumber" name="L258" href="#L258">258</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L259" href="#L259">259</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"successfully logged in {} ({})"</span>, username, windowsIdentity.getSidString());
      +<a class="jxr_linenumber" name="L260" href="#L260">260</a> 
      +<a class="jxr_linenumber" name="L261" href="#L261">261</a>             <strong class="jxr_keyword">final</strong> GenericPrincipal genericPrincipal = <strong class="jxr_keyword">this</strong>.createPrincipal(windowsIdentity);
      +<a class="jxr_linenumber" name="L262" href="#L262">262</a> 
      +<a class="jxr_linenumber" name="L263" href="#L263">263</a>             <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.log.isDebugEnabled()) {
      +<a class="jxr_linenumber" name="L264" href="#L264">264</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"roles: {}"</span>, String.join(<span class="jxr_string">", "</span>, genericPrincipal.getRoles()));
      +<a class="jxr_linenumber" name="L265" href="#L265">265</a>             }
      +<a class="jxr_linenumber" name="L266" href="#L266">266</a> 
      +<a class="jxr_linenumber" name="L267" href="#L267">267</a>             <em class="jxr_comment">// create a session associated with this request if there's none</em>
      +<a class="jxr_linenumber" name="L268" href="#L268">268</a>             <strong class="jxr_keyword">final</strong> HttpSession session = request.getSession(<strong class="jxr_keyword">true</strong>);
      +<a class="jxr_linenumber" name="L269" href="#L269">269</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"session id: {}"</span>, session == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"null"</span> : session.getId());
      +<a class="jxr_linenumber" name="L270" href="#L270">270</a> 
      +<a class="jxr_linenumber" name="L271" href="#L271">271</a>             <strong class="jxr_keyword">this</strong>.register(request, response, genericPrincipal, <span class="jxr_string">"FORM"</span>, genericPrincipal.getName(), <strong class="jxr_keyword">null</strong>);
      +<a class="jxr_linenumber" name="L272" href="#L272">272</a>             <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"successfully logged in user: {}"</span>, genericPrincipal.getName());
      +<a class="jxr_linenumber" name="L273" href="#L273">273</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L274" href="#L274">274</a>             windowsIdentity.dispose();
      +<a class="jxr_linenumber" name="L275" href="#L275">275</a>         }
      +<a class="jxr_linenumber" name="L276" href="#L276">276</a> 
      +<a class="jxr_linenumber" name="L277" href="#L277">277</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
      +<a class="jxr_linenumber" name="L278" href="#L278">278</a>     }
      +<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
      +<a class="jxr_linenumber" name="L280" href="#L280">280</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L281" href="#L281">281</a> <em class="jxr_javadoccomment">     * Redirect to.</em>
      +<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L283" href="#L283">283</a> <em class="jxr_javadoccomment">     * @param request</em>
      +<a class="jxr_linenumber" name="L284" href="#L284">284</a> <em class="jxr_javadoccomment">     *            the request</em>
      +<a class="jxr_linenumber" name="L285" href="#L285">285</a> <em class="jxr_javadoccomment">     * @param response</em>
      +<a class="jxr_linenumber" name="L286" href="#L286">286</a> <em class="jxr_javadoccomment">     *            the response</em>
      +<a class="jxr_linenumber" name="L287" href="#L287">287</a> <em class="jxr_javadoccomment">     * @param url</em>
      +<a class="jxr_linenumber" name="L288" href="#L288">288</a> <em class="jxr_javadoccomment">     *            the url</em>
      +<a class="jxr_linenumber" name="L289" href="#L289">289</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L290" href="#L290">290</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> redirectTo(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response, <strong class="jxr_keyword">final</strong> String url) {
      +<a class="jxr_linenumber" name="L291" href="#L291">291</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L292" href="#L292">292</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"redirecting to: {}"</span>, url);
      +<a class="jxr_linenumber" name="L293" href="#L293">293</a>             <strong class="jxr_keyword">final</strong> ServletContext servletContext = <strong class="jxr_keyword">this</strong>.context.getServletContext();
      +<a class="jxr_linenumber" name="L294" href="#L294">294</a>             <strong class="jxr_keyword">final</strong> RequestDispatcher disp = servletContext.getRequestDispatcher(url);
      +<a class="jxr_linenumber" name="L295" href="#L295">295</a>             disp.forward(request.getRequest(), response);
      +<a class="jxr_linenumber" name="L296" href="#L296">296</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> IOException | ServletException e) {
      +<a class="jxr_linenumber" name="L297" href="#L297">297</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(e);
      +<a class="jxr_linenumber" name="L298" href="#L298">298</a>         }
      +<a class="jxr_linenumber" name="L299" href="#L299">299</a>     }
      +<a class="jxr_linenumber" name="L300" href="#L300">300</a> 
      +<a class="jxr_linenumber" name="L301" href="#L301">301</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L302" href="#L302">302</a> <em class="jxr_javadoccomment">     * XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours. In order to support old and</em>
      +<a class="jxr_linenumber" name="L303" href="#L303">303</a> <em class="jxr_javadoccomment">     * new at this time, we will continue to have both for time being.</em>
      +<a class="jxr_linenumber" name="L304" href="#L304">304</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L305" href="#L305">305</a>     @Override
      +<a class="jxr_linenumber" name="L306" href="#L306">306</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> doAuthenticate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response) <strong class="jxr_keyword">throws</strong> IOException {
      +<a class="jxr_linenumber" name="L307" href="#L307">307</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.authenticate(request, response);
      +<a class="jxr_linenumber" name="L308" href="#L308">308</a>     }
      +<a class="jxr_linenumber" name="L309" href="#L309">309</a> 
      +<a class="jxr_linenumber" name="L310" href="#L310">310</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref/waffle/apache/NegotiateAuthenticator.html b/waffle-tomcat10/xref/waffle/apache/NegotiateAuthenticator.html
      new file mode 100644
      index 0000000000..ed187c5ba1
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/NegotiateAuthenticator.html
      @@ -0,0 +1,210 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>NegotiateAuthenticator xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../apidocs/waffle/apache/NegotiateAuthenticator.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> com.sun.jna.platform.win32.Win32Exception;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpServletResponse;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpSession;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.security.Principal;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Base64;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.LifecycleException;
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.connector.Request;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.realm.GenericPrincipal;
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> waffle.util.AuthorizationHeader;
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> waffle.util.NtlmServletRequest;
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsIdentity;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsSecurityContext;
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment"> * An Apache Negotiate (NTLM, Kerberos) Authenticator.</em>
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="NegotiateAuthenticator" href="../../waffle/apache/NegotiateAuthenticator.html#NegotiateAuthenticator">NegotiateAuthenticator</a> <strong class="jxr_keyword">extends</strong> <a name="WaffleAuthenticatorBase" href="../../waffle/apache/WaffleAuthenticatorBase.html#WaffleAuthenticatorBase">WaffleAuthenticatorBase</a> {
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">     * Instantiates a new negotiate authenticator.</em>
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">public</strong> <a name="NegotiateAuthenticator" href="../../waffle/apache/NegotiateAuthenticator.html#NegotiateAuthenticator">NegotiateAuthenticator</a>() {
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>          <strong class="jxr_keyword">super</strong>();
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>          <strong class="jxr_keyword">this</strong>.log = LoggerFactory.getLogger(NegotiateAuthenticator.<strong class="jxr_keyword">class</strong>);
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>          <strong class="jxr_keyword">this</strong>.info = NegotiateAuthenticator.<strong class="jxr_keyword">class</strong>.getSimpleName();
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"[waffle.apache.NegotiateAuthenticator] loaded"</span>);
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>      }
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>      @Override
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> startInternal() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>          <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"[waffle.apache.NegotiateAuthenticator] started"</span>);
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">super</strong>.startInternal();
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      }
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>      @Override
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> stopInternal() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>          <strong class="jxr_keyword">super</strong>.stopInternal();
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>          <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"[waffle.apache.NegotiateAuthenticator] stopped"</span>);
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      }
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>  
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>      @Override
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> authenticate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response) {
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>  
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>          Principal principal = request.getUserPrincipal();
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>          <strong class="jxr_keyword">final</strong> AuthorizationHeader authorizationHeader = <strong class="jxr_keyword">new</strong> AuthorizationHeader(request);
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> ntlmPost = authorizationHeader.isNtlmType1PostAuthorizationHeader();
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"{} {}, contentlength: {}"</span>, request.getMethod(), request.getRequestURI(),
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>                  Integer.valueOf(request.getContentLength()));
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>          <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"authorization: {}, ntlm post: {}"</span>, authorizationHeader, Boolean.valueOf(ntlmPost));
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>  
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <strong class="jxr_keyword">if</strong> (principal != <strong class="jxr_keyword">null</strong> &amp;&amp; !ntlmPost) {
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>              <em class="jxr_comment">// user already authenticated</em>
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>              <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"previously authenticated user: {}"</span>, principal.getName());
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>          }
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <em class="jxr_comment">// authenticate user</em>
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>          <strong class="jxr_keyword">if</strong> (!authorizationHeader.isNull()) {
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>  
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>              <strong class="jxr_keyword">final</strong> String securityPackage = authorizationHeader.getSecurityPackage();
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>              <em class="jxr_comment">// maintain a connection-based session for NTLM tokens</em>
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>              <strong class="jxr_keyword">final</strong> String connectionId = NtlmServletRequest.getConnectionId(request);
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>              <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"security package: {}, connection id: {}"</span>, securityPackage, connectionId);
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>  
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>              <strong class="jxr_keyword">if</strong> (ntlmPost) {
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>                  <em class="jxr_comment">// type 1 NTLM authentication message received</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a>                 <strong class="jxr_keyword">this</strong>.auth.resetSecurityToken(connectionId);
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a>             }
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a> 
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>             <strong class="jxr_keyword">final</strong> byte[] tokenBuffer = authorizationHeader.getTokenBytes();
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"token buffer: {} byte(s)"</span>, Integer.valueOf(tokenBuffer.length));
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a>             <em class="jxr_comment">// log the user in using the token</em>
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>             IWindowsSecurityContext securityContext;
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a>             <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a>                 securityContext = <strong class="jxr_keyword">this</strong>.auth.acceptSecurityToken(connectionId, tokenBuffer, securityPackage);
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a>             } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> Win32Exception e) {
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a>                 <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"error logging in user: {}"</span>, e.getMessage());
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a>                 <strong class="jxr_keyword">this</strong>.log.trace(<span class="jxr_string">""</span>, e);
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a>                 <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a>                 <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a>             }
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"continue required: {}"</span>, Boolean.valueOf(securityContext.isContinue()));
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a> 
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a>             <strong class="jxr_keyword">final</strong> byte[] continueTokenBytes = securityContext.getToken();
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a>             <strong class="jxr_keyword">if</strong> (continueTokenBytes != <strong class="jxr_keyword">null</strong> &amp;&amp; continueTokenBytes.length &gt; 0) {
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a>                 <strong class="jxr_keyword">final</strong> String continueToken = Base64.getEncoder().encodeToString(continueTokenBytes);
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"continue token: {}"</span>, continueToken);
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>                 response.addHeader(<span class="jxr_string">"WWW-Authenticate"</span>, securityPackage + <span class="jxr_string">" "</span> + continueToken);
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>             }
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a>             <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>                 <strong class="jxr_keyword">if</strong> (securityContext.isContinue()) {
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a>                     response.setHeader(<span class="jxr_string">"Connection"</span>, <span class="jxr_string">"keep-alive"</span>);
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a>                     response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a>                     response.flushBuffer();
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a>                     <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a>                 }
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a>             } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> IOException e) {
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a>                 <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"error logging in user: {}"</span>, e.getMessage());
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a>                 <strong class="jxr_keyword">this</strong>.log.trace(<span class="jxr_string">""</span>, e);
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a>                 <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a>                 <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a>             }
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a> 
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a>             <em class="jxr_comment">// realm: fail if no realm is configured</em>
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a>             <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.context == <strong class="jxr_keyword">null</strong> || <strong class="jxr_keyword">this</strong>.context.getRealm() == <strong class="jxr_keyword">null</strong>) {
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a>                 <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"missing context/realm"</span>);
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a>                 <strong class="jxr_keyword">this</strong>.sendError(response, HttpServletResponse.SC_SERVICE_UNAVAILABLE);
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a>                 <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a>             }
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a>             <em class="jxr_comment">// create and register the user principal with the session</em>
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a>             <strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity = securityContext.getIdentity();
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a> 
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a>             <em class="jxr_comment">// disable guest login</em>
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a>             <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a>                 <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"guest login disabled: {}"</span>, windowsIdentity.getFqn());
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>                 <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>                 <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>             }
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a> 
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a>             <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"logged in user: {} ({})"</span>, windowsIdentity.getFqn(), windowsIdentity.getSidString());
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a> 
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a>                 <strong class="jxr_keyword">final</strong> GenericPrincipal genericPrincipal = <strong class="jxr_keyword">this</strong>.createPrincipal(windowsIdentity);
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a> 
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a>                 <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.log.isDebugEnabled()) {
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>                     <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"roles: {}"</span>, String.join(<span class="jxr_string">", "</span>, genericPrincipal.getRoles()));
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>                 }
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a> 
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a>                 principal = genericPrincipal;
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a> 
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a>                 <em class="jxr_comment">// create a session associated with this request if there's none</em>
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a>                 <strong class="jxr_keyword">final</strong> HttpSession session = request.getSession(<strong class="jxr_keyword">true</strong>);
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"session id: {}"</span>, session == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"null"</span> : session.getId());
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a> 
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a>                 <em class="jxr_comment">// register the authenticated principal</em>
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a>                 <strong class="jxr_keyword">this</strong>.register(request, response, principal, securityPackage, principal.getName(), <strong class="jxr_keyword">null</strong>);
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a>                 <strong class="jxr_keyword">this</strong>.log.info(<span class="jxr_string">"successfully logged in user: {}"</span>, principal.getName());
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a> 
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a>             } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a>                 windowsIdentity.dispose();
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a>                 securityContext.dispose();
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a>             }
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a> 
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a>         }
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a> 
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"authorization required"</span>);
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>         <strong class="jxr_keyword">this</strong>.sendUnauthorized(response);
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a>         <strong class="jxr_keyword">return</strong> false;
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a>     }
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a> 
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a> <em class="jxr_javadoccomment">     * XXX The 'doAuthenticate' is intended to replace 'authenticate' for needs like ours. In order to support old and</em>
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a> <em class="jxr_javadoccomment">     * new at this time, we will continue to have both for time being.</em>
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>     @Override
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> doAuthenticate(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> HttpServletResponse response) <strong class="jxr_keyword">throws</strong> IOException {
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.authenticate(request, response);
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a>     }
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a> 
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref/waffle/apache/WaffleAuthenticatorBase.html b/waffle-tomcat10/xref/waffle/apache/WaffleAuthenticatorBase.html
      new file mode 100644
      index 0000000000..23dc0a3b2b
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/WaffleAuthenticatorBase.html
      @@ -0,0 +1,318 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>WaffleAuthenticatorBase xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../apidocs/waffle/apache/WaffleAuthenticatorBase.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.ServletException;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> jakarta.servlet.http.HttpServletResponse;
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.security.Principal;
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedHashSet;
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Locale;
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.LifecycleException;
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.authenticator.AuthenticatorBase;
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.connector.Request;
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.realm.GenericPrincipal;
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsAuthProvider;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.IWindowsIdentity;
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.PrincipalFormat;
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> waffle.windows.auth.impl.WindowsAuthProviderImpl;
      +<a class="jxr_linenumber" name="L46" href="#L46">46</a>  
      +<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment"> * The Class WaffleAuthenticatorBase.</em>
      +<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a name="WaffleAuthenticatorBase" href="../../waffle/apache/WaffleAuthenticatorBase.html#WaffleAuthenticatorBase">WaffleAuthenticatorBase</a> <strong class="jxr_keyword">extends</strong> AuthenticatorBase {
      +<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
      +<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <em class="jxr_javadoccomment">/** The Constant SUPPORTED_PROTOCOLS. */</em>
      +<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Set&lt;String&gt; SUPPORTED_PROTOCOLS = <strong class="jxr_keyword">new</strong> LinkedHashSet&lt;&gt;(Arrays.asList(<span class="jxr_string">"Negotiate"</span>, <span class="jxr_string">"NTLM"</span>));
      +<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
      +<a class="jxr_linenumber" name="L55" href="#L55">55</a>      <em class="jxr_javadoccomment">/** The info. */</em>
      +<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">protected</strong> String info;
      +<a class="jxr_linenumber" name="L57" href="#L57">57</a>  
      +<a class="jxr_linenumber" name="L58" href="#L58">58</a>      <em class="jxr_javadoccomment">/** The log. */</em>
      +<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">protected</strong> Logger log;
      +<a class="jxr_linenumber" name="L60" href="#L60">60</a>  
      +<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <em class="jxr_javadoccomment">/** The principal format. */</em>
      +<a class="jxr_linenumber" name="L62" href="#L62">62</a>      <strong class="jxr_keyword">protected</strong> PrincipalFormat principalFormat = PrincipalFormat.FQN;
      +<a class="jxr_linenumber" name="L63" href="#L63">63</a>  
      +<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <em class="jxr_javadoccomment">/** The role format. */</em>
      +<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">protected</strong> PrincipalFormat roleFormat = PrincipalFormat.FQN;
      +<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
      +<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <em class="jxr_javadoccomment">/** The allow guest login. */</em>
      +<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> allowGuestLogin = <strong class="jxr_keyword">true</strong>;
      +<a class="jxr_linenumber" name="L69" href="#L69">69</a>  
      +<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <em class="jxr_javadoccomment">/** The protocols. */</em>
      +<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">protected</strong> Set&lt;String&gt; protocols = WaffleAuthenticatorBase.SUPPORTED_PROTOCOLS;
      +<a class="jxr_linenumber" name="L72" href="#L72">72</a>  
      +<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <em class="jxr_javadoccomment">/** The auth continueContextsTimeout configuration. */</em>
      +<a class="jxr_linenumber" name="L74" href="#L74">74</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> continueContextsTimeout = WindowsAuthProviderImpl.CONTINUE_CONTEXT_TIMEOUT;
      +<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
      +<a class="jxr_linenumber" name="L76" href="#L76">76</a>      <em class="jxr_javadoccomment">/** The auth. */</em>
      +<a class="jxr_linenumber" name="L77" href="#L77">77</a>      <strong class="jxr_keyword">protected</strong> IWindowsAuthProvider auth;
      +<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
      +<a class="jxr_linenumber" name="L79" href="#L79">79</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">     * Gets the continue context time out configuration.</em>
      +<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L82" href="#L82">82</a>  <em class="jxr_javadoccomment">     * @return the continue contexts timeout</em>
      +<a class="jxr_linenumber" name="L83" href="#L83">83</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L84" href="#L84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getContinueContextsTimeout() {
      +<a class="jxr_linenumber" name="L85" href="#L85">85</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.continueContextsTimeout;
      +<a class="jxr_linenumber" name="L86" href="#L86">86</a>      }
      +<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
      +<a class="jxr_linenumber" name="L88" href="#L88">88</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L89" href="#L89">89</a>  <em class="jxr_javadoccomment">     * Sets the continue context time out configuration.</em>
      +<a class="jxr_linenumber" name="L90" href="#L90">90</a>  <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L91" href="#L91">91</a>  <em class="jxr_javadoccomment">     * @param continueContextsTimeout</em>
      +<a class="jxr_linenumber" name="L92" href="#L92">92</a>  <em class="jxr_javadoccomment">     *            the new continue contexts timeout</em>
      +<a class="jxr_linenumber" name="L93" href="#L93">93</a>  <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L94" href="#L94">94</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setContinueContextsTimeout(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> continueContextsTimeout) {
      +<a class="jxr_linenumber" name="L95" href="#L95">95</a>          <strong class="jxr_keyword">this</strong>.continueContextsTimeout = continueContextsTimeout;
      +<a class="jxr_linenumber" name="L96" href="#L96">96</a>      }
      +<a class="jxr_linenumber" name="L97" href="#L97">97</a>  
      +<a class="jxr_linenumber" name="L98" href="#L98">98</a>      <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">     * Windows authentication provider.</em>
      +<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">     * @return IWindowsAuthProvider.</em>
      +<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L103" href="#L103">103</a>     <strong class="jxr_keyword">public</strong> IWindowsAuthProvider getAuth() {
      +<a class="jxr_linenumber" name="L104" href="#L104">104</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.auth;
      +<a class="jxr_linenumber" name="L105" href="#L105">105</a>     }
      +<a class="jxr_linenumber" name="L106" href="#L106">106</a> 
      +<a class="jxr_linenumber" name="L107" href="#L107">107</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L108" href="#L108">108</a> <em class="jxr_javadoccomment">     * Set Windows auth provider.</em>
      +<a class="jxr_linenumber" name="L109" href="#L109">109</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">     * @param provider</em>
      +<a class="jxr_linenumber" name="L111" href="#L111">111</a> <em class="jxr_javadoccomment">     *            Class implements IWindowsAuthProvider.</em>
      +<a class="jxr_linenumber" name="L112" href="#L112">112</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L113" href="#L113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAuth(<strong class="jxr_keyword">final</strong> IWindowsAuthProvider provider) {
      +<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <strong class="jxr_keyword">this</strong>.auth = provider;
      +<a class="jxr_linenumber" name="L115" href="#L115">115</a>     }
      +<a class="jxr_linenumber" name="L116" href="#L116">116</a> 
      +<a class="jxr_linenumber" name="L117" href="#L117">117</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L118" href="#L118">118</a> <em class="jxr_javadoccomment">     * Gets the info.</em>
      +<a class="jxr_linenumber" name="L119" href="#L119">119</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L120" href="#L120">120</a> <em class="jxr_javadoccomment">     * @return the info</em>
      +<a class="jxr_linenumber" name="L121" href="#L121">121</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L122" href="#L122">122</a>     <strong class="jxr_keyword">public</strong> String getInfo() {
      +<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.info;
      +<a class="jxr_linenumber" name="L124" href="#L124">124</a>     }
      +<a class="jxr_linenumber" name="L125" href="#L125">125</a> 
      +<a class="jxr_linenumber" name="L126" href="#L126">126</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">     * Set the principal format.</em>
      +<a class="jxr_linenumber" name="L128" href="#L128">128</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em class="jxr_javadoccomment">     * @param format</em>
      +<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">     *            Principal format.</em>
      +<a class="jxr_linenumber" name="L131" href="#L131">131</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L132" href="#L132">132</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setPrincipalFormat(<strong class="jxr_keyword">final</strong> String format) {
      +<a class="jxr_linenumber" name="L133" href="#L133">133</a>         <strong class="jxr_keyword">this</strong>.principalFormat = PrincipalFormat.valueOf(format.toUpperCase(Locale.ENGLISH));
      +<a class="jxr_linenumber" name="L134" href="#L134">134</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"principal format: {}"</span>, <strong class="jxr_keyword">this</strong>.principalFormat);
      +<a class="jxr_linenumber" name="L135" href="#L135">135</a>     }
      +<a class="jxr_linenumber" name="L136" href="#L136">136</a> 
      +<a class="jxr_linenumber" name="L137" href="#L137">137</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L138" href="#L138">138</a> <em class="jxr_javadoccomment">     * Principal format.</em>
      +<a class="jxr_linenumber" name="L139" href="#L139">139</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L140" href="#L140">140</a> <em class="jxr_javadoccomment">     * @return Principal format.</em>
      +<a class="jxr_linenumber" name="L141" href="#L141">141</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L142" href="#L142">142</a>     <strong class="jxr_keyword">public</strong> PrincipalFormat getPrincipalFormat() {
      +<a class="jxr_linenumber" name="L143" href="#L143">143</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.principalFormat;
      +<a class="jxr_linenumber" name="L144" href="#L144">144</a>     }
      +<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
      +<a class="jxr_linenumber" name="L146" href="#L146">146</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">     * Set the principal format.</em>
      +<a class="jxr_linenumber" name="L148" href="#L148">148</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L149" href="#L149">149</a> <em class="jxr_javadoccomment">     * @param format</em>
      +<a class="jxr_linenumber" name="L150" href="#L150">150</a> <em class="jxr_javadoccomment">     *            Role format.</em>
      +<a class="jxr_linenumber" name="L151" href="#L151">151</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L152" href="#L152">152</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRoleFormat(<strong class="jxr_keyword">final</strong> String format) {
      +<a class="jxr_linenumber" name="L153" href="#L153">153</a>         <strong class="jxr_keyword">this</strong>.roleFormat = PrincipalFormat.valueOf(format.toUpperCase(Locale.ENGLISH));
      +<a class="jxr_linenumber" name="L154" href="#L154">154</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"role format: {}"</span>, <strong class="jxr_keyword">this</strong>.roleFormat);
      +<a class="jxr_linenumber" name="L155" href="#L155">155</a>     }
      +<a class="jxr_linenumber" name="L156" href="#L156">156</a> 
      +<a class="jxr_linenumber" name="L157" href="#L157">157</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L158" href="#L158">158</a> <em class="jxr_javadoccomment">     * Principal format.</em>
      +<a class="jxr_linenumber" name="L159" href="#L159">159</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L160" href="#L160">160</a> <em class="jxr_javadoccomment">     * @return Role format.</em>
      +<a class="jxr_linenumber" name="L161" href="#L161">161</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L162" href="#L162">162</a>     <strong class="jxr_keyword">public</strong> PrincipalFormat getRoleFormat() {
      +<a class="jxr_linenumber" name="L163" href="#L163">163</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.roleFormat;
      +<a class="jxr_linenumber" name="L164" href="#L164">164</a>     }
      +<a class="jxr_linenumber" name="L165" href="#L165">165</a> 
      +<a class="jxr_linenumber" name="L166" href="#L166">166</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L167" href="#L167">167</a> <em class="jxr_javadoccomment">     * True if Guest login permitted.</em>
      +<a class="jxr_linenumber" name="L168" href="#L168">168</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L169" href="#L169">169</a> <em class="jxr_javadoccomment">     * @return True if Guest login permitted, false otherwise.</em>
      +<a class="jxr_linenumber" name="L170" href="#L170">170</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L171" href="#L171">171</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isAllowGuestLogin() {
      +<a class="jxr_linenumber" name="L172" href="#L172">172</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.allowGuestLogin;
      +<a class="jxr_linenumber" name="L173" href="#L173">173</a>     }
      +<a class="jxr_linenumber" name="L174" href="#L174">174</a> 
      +<a class="jxr_linenumber" name="L175" href="#L175">175</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L176" href="#L176">176</a> <em class="jxr_javadoccomment">     * Set whether Guest login is permitted. Default is true, if the Guest account is enabled, an invalid</em>
      +<a class="jxr_linenumber" name="L177" href="#L177">177</a> <em class="jxr_javadoccomment">     * username/password results in a Guest login.</em>
      +<a class="jxr_linenumber" name="L178" href="#L178">178</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L179" href="#L179">179</a> <em class="jxr_javadoccomment">     * @param value</em>
      +<a class="jxr_linenumber" name="L180" href="#L180">180</a> <em class="jxr_javadoccomment">     *            True or false.</em>
      +<a class="jxr_linenumber" name="L181" href="#L181">181</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L182" href="#L182">182</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAllowGuestLogin(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> value) {
      +<a class="jxr_linenumber" name="L183" href="#L183">183</a>         <strong class="jxr_keyword">this</strong>.allowGuestLogin = value;
      +<a class="jxr_linenumber" name="L184" href="#L184">184</a>     }
      +<a class="jxr_linenumber" name="L185" href="#L185">185</a> 
      +<a class="jxr_linenumber" name="L186" href="#L186">186</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L187" href="#L187">187</a> <em class="jxr_javadoccomment">     * Set the authentication protocols. Default is "Negotiate, NTLM".</em>
      +<a class="jxr_linenumber" name="L188" href="#L188">188</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L189" href="#L189">189</a> <em class="jxr_javadoccomment">     * @param value</em>
      +<a class="jxr_linenumber" name="L190" href="#L190">190</a> <em class="jxr_javadoccomment">     *            Authentication protocols</em>
      +<a class="jxr_linenumber" name="L191" href="#L191">191</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L192" href="#L192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setProtocols(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L193" href="#L193">193</a>         <strong class="jxr_keyword">this</strong>.protocols = <strong class="jxr_keyword">new</strong> LinkedHashSet&lt;&gt;();
      +<a class="jxr_linenumber" name="L194" href="#L194">194</a>         <strong class="jxr_keyword">final</strong> String[] protocolNames = value.split(<span class="jxr_string">","</span>, -1);
      +<a class="jxr_linenumber" name="L195" href="#L195">195</a>         <strong class="jxr_keyword">for</strong> (String protocolName : protocolNames) {
      +<a class="jxr_linenumber" name="L196" href="#L196">196</a>             protocolName = protocolName.trim();
      +<a class="jxr_linenumber" name="L197" href="#L197">197</a>             <strong class="jxr_keyword">if</strong> (!protocolName.isEmpty()) {
      +<a class="jxr_linenumber" name="L198" href="#L198">198</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"init protocol: {}"</span>, protocolName);
      +<a class="jxr_linenumber" name="L199" href="#L199">199</a>                 <strong class="jxr_keyword">if</strong> (WaffleAuthenticatorBase.SUPPORTED_PROTOCOLS.contains(protocolName)) {
      +<a class="jxr_linenumber" name="L200" href="#L200">200</a>                     <strong class="jxr_keyword">this</strong>.protocols.add(protocolName);
      +<a class="jxr_linenumber" name="L201" href="#L201">201</a>                 } <strong class="jxr_keyword">else</strong> {
      +<a class="jxr_linenumber" name="L202" href="#L202">202</a>                     <strong class="jxr_keyword">this</strong>.log.error(<span class="jxr_string">"unsupported protocol: {}"</span>, protocolName);
      +<a class="jxr_linenumber" name="L203" href="#L203">203</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Unsupported protocol: "</span> + protocolName);
      +<a class="jxr_linenumber" name="L204" href="#L204">204</a>                 }
      +<a class="jxr_linenumber" name="L205" href="#L205">205</a>             }
      +<a class="jxr_linenumber" name="L206" href="#L206">206</a>         }
      +<a class="jxr_linenumber" name="L207" href="#L207">207</a>     }
      +<a class="jxr_linenumber" name="L208" href="#L208">208</a> 
      +<a class="jxr_linenumber" name="L209" href="#L209">209</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L210" href="#L210">210</a> <em class="jxr_javadoccomment">     * Send a 401 Unauthorized along with protocol authentication headers.</em>
      +<a class="jxr_linenumber" name="L211" href="#L211">211</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L212" href="#L212">212</a> <em class="jxr_javadoccomment">     * @param response</em>
      +<a class="jxr_linenumber" name="L213" href="#L213">213</a> <em class="jxr_javadoccomment">     *            HTTP Response</em>
      +<a class="jxr_linenumber" name="L214" href="#L214">214</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L215" href="#L215">215</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> sendUnauthorized(<strong class="jxr_keyword">final</strong> HttpServletResponse response) {
      +<a class="jxr_linenumber" name="L216" href="#L216">216</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L217" href="#L217">217</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> String protocol : <strong class="jxr_keyword">this</strong>.protocols) {
      +<a class="jxr_linenumber" name="L218" href="#L218">218</a>                 response.addHeader(<span class="jxr_string">"WWW-Authenticate"</span>, protocol);
      +<a class="jxr_linenumber" name="L219" href="#L219">219</a>             }
      +<a class="jxr_linenumber" name="L220" href="#L220">220</a>             response.setHeader(<span class="jxr_string">"Connection"</span>, <span class="jxr_string">"close"</span>);
      +<a class="jxr_linenumber" name="L221" href="#L221">221</a>             response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
      +<a class="jxr_linenumber" name="L222" href="#L222">222</a>             response.flushBuffer();
      +<a class="jxr_linenumber" name="L223" href="#L223">223</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> IOException e) {
      +<a class="jxr_linenumber" name="L224" href="#L224">224</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(e);
      +<a class="jxr_linenumber" name="L225" href="#L225">225</a>         }
      +<a class="jxr_linenumber" name="L226" href="#L226">226</a>     }
      +<a class="jxr_linenumber" name="L227" href="#L227">227</a> 
      +<a class="jxr_linenumber" name="L228" href="#L228">228</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L229" href="#L229">229</a> <em class="jxr_javadoccomment">     * Send an error code.</em>
      +<a class="jxr_linenumber" name="L230" href="#L230">230</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L231" href="#L231">231</a> <em class="jxr_javadoccomment">     * @param response</em>
      +<a class="jxr_linenumber" name="L232" href="#L232">232</a> <em class="jxr_javadoccomment">     *            HTTP Response</em>
      +<a class="jxr_linenumber" name="L233" href="#L233">233</a> <em class="jxr_javadoccomment">     * @param code</em>
      +<a class="jxr_linenumber" name="L234" href="#L234">234</a> <em class="jxr_javadoccomment">     *            Error Code</em>
      +<a class="jxr_linenumber" name="L235" href="#L235">235</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L236" href="#L236">236</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> sendError(<strong class="jxr_keyword">final</strong> HttpServletResponse response, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> code) {
      +<a class="jxr_linenumber" name="L237" href="#L237">237</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L238" href="#L238">238</a>             response.sendError(code);
      +<a class="jxr_linenumber" name="L239" href="#L239">239</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> IOException e) {
      +<a class="jxr_linenumber" name="L240" href="#L240">240</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(e);
      +<a class="jxr_linenumber" name="L241" href="#L241">241</a>         }
      +<a class="jxr_linenumber" name="L242" href="#L242">242</a>     }
      +<a class="jxr_linenumber" name="L243" href="#L243">243</a> 
      +<a class="jxr_linenumber" name="L244" href="#L244">244</a>     @Override
      +<a class="jxr_linenumber" name="L245" href="#L245">245</a>     <strong class="jxr_keyword">protected</strong> String getAuthMethod() {
      +<a class="jxr_linenumber" name="L246" href="#L246">246</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L247" href="#L247">247</a>     }
      +<a class="jxr_linenumber" name="L248" href="#L248">248</a> 
      +<a class="jxr_linenumber" name="L249" href="#L249">249</a>     @Override
      +<a class="jxr_linenumber" name="L250" href="#L250">250</a>     <strong class="jxr_keyword">protected</strong> Principal doLogin(<strong class="jxr_keyword">final</strong> Request request, <strong class="jxr_keyword">final</strong> String username, <strong class="jxr_keyword">final</strong> String password)
      +<a class="jxr_linenumber" name="L251" href="#L251">251</a>             <strong class="jxr_keyword">throws</strong> ServletException {
      +<a class="jxr_linenumber" name="L252" href="#L252">252</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"logging in: {}"</span>, username);
      +<a class="jxr_linenumber" name="L253" href="#L253">253</a>         IWindowsIdentity windowsIdentity;
      +<a class="jxr_linenumber" name="L254" href="#L254">254</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L255" href="#L255">255</a>             windowsIdentity = <strong class="jxr_keyword">this</strong>.auth.logonUser(username, password);
      +<a class="jxr_linenumber" name="L256" href="#L256">256</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> Exception e) {
      +<a class="jxr_linenumber" name="L257" href="#L257">257</a>             <strong class="jxr_keyword">this</strong>.log.error(e.getMessage());
      +<a class="jxr_linenumber" name="L258" href="#L258">258</a>             <strong class="jxr_keyword">this</strong>.log.trace(<span class="jxr_string">""</span>, e);
      +<a class="jxr_linenumber" name="L259" href="#L259">259</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.doLogin(request, username, password);
      +<a class="jxr_linenumber" name="L260" href="#L260">260</a>         }
      +<a class="jxr_linenumber" name="L261" href="#L261">261</a>         <em class="jxr_comment">// disable guest login</em>
      +<a class="jxr_linenumber" name="L262" href="#L262">262</a>         <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.allowGuestLogin &amp;&amp; windowsIdentity.isGuest()) {
      +<a class="jxr_linenumber" name="L263" href="#L263">263</a>             <strong class="jxr_keyword">this</strong>.log.warn(<span class="jxr_string">"guest login disabled: {}"</span>, windowsIdentity.getFqn());
      +<a class="jxr_linenumber" name="L264" href="#L264">264</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.doLogin(request, username, password);
      +<a class="jxr_linenumber" name="L265" href="#L265">265</a>         }
      +<a class="jxr_linenumber" name="L266" href="#L266">266</a>         <strong class="jxr_keyword">try</strong> {
      +<a class="jxr_linenumber" name="L267" href="#L267">267</a>             <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"successfully logged in {} ({})"</span>, username, windowsIdentity.getSidString());
      +<a class="jxr_linenumber" name="L268" href="#L268">268</a>             <strong class="jxr_keyword">final</strong> GenericPrincipal genericPrincipal = <strong class="jxr_keyword">this</strong>.createPrincipal(windowsIdentity);
      +<a class="jxr_linenumber" name="L269" href="#L269">269</a>             <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.log.isDebugEnabled()) {
      +<a class="jxr_linenumber" name="L270" href="#L270">270</a>                 <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"roles: {}"</span>, String.join(<span class="jxr_string">", "</span>, genericPrincipal.getRoles()));
      +<a class="jxr_linenumber" name="L271" href="#L271">271</a>             }
      +<a class="jxr_linenumber" name="L272" href="#L272">272</a>             <strong class="jxr_keyword">return</strong> genericPrincipal;
      +<a class="jxr_linenumber" name="L273" href="#L273">273</a>         } <strong class="jxr_keyword">finally</strong> {
      +<a class="jxr_linenumber" name="L274" href="#L274">274</a>             windowsIdentity.dispose();
      +<a class="jxr_linenumber" name="L275" href="#L275">275</a>         }
      +<a class="jxr_linenumber" name="L276" href="#L276">276</a>     }
      +<a class="jxr_linenumber" name="L277" href="#L277">277</a> 
      +<a class="jxr_linenumber" name="L278" href="#L278">278</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L279" href="#L279">279</a> <em class="jxr_javadoccomment">     * This method will create an instance of a IWindowsIdentity based GenericPrincipal. It is used for creating custom</em>
      +<a class="jxr_linenumber" name="L280" href="#L280">280</a> <em class="jxr_javadoccomment">     * implementation within subclasses.</em>
      +<a class="jxr_linenumber" name="L281" href="#L281">281</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment">     * @param windowsIdentity</em>
      +<a class="jxr_linenumber" name="L283" href="#L283">283</a> <em class="jxr_javadoccomment">     *            the windows identity to initialize the principal</em>
      +<a class="jxr_linenumber" name="L284" href="#L284">284</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L285" href="#L285">285</a> <em class="jxr_javadoccomment">     * @return the Generic Principal</em>
      +<a class="jxr_linenumber" name="L286" href="#L286">286</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L287" href="#L287">287</a>     <strong class="jxr_keyword">protected</strong> GenericPrincipal createPrincipal(<strong class="jxr_keyword">final</strong> IWindowsIdentity windowsIdentity) {
      +<a class="jxr_linenumber" name="L288" href="#L288">288</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="GenericWindowsPrincipal" href="../../waffle/apache/GenericWindowsPrincipal.html#GenericWindowsPrincipal">GenericWindowsPrincipal</a>(windowsIdentity, <strong class="jxr_keyword">this</strong>.principalFormat, <strong class="jxr_keyword">this</strong>.roleFormat);
      +<a class="jxr_linenumber" name="L289" href="#L289">289</a>     }
      +<a class="jxr_linenumber" name="L290" href="#L290">290</a> 
      +<a class="jxr_linenumber" name="L291" href="#L291">291</a>     <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L292" href="#L292">292</a> <em class="jxr_javadoccomment">     * Hook to the start and to set up the dependencies.</em>
      +<a class="jxr_linenumber" name="L293" href="#L293">293</a> <em class="jxr_javadoccomment">     *</em>
      +<a class="jxr_linenumber" name="L294" href="#L294">294</a> <em class="jxr_javadoccomment">     * @throws LifecycleException</em>
      +<a class="jxr_linenumber" name="L295" href="#L295">295</a> <em class="jxr_javadoccomment">     *             the lifecycle exception</em>
      +<a class="jxr_linenumber" name="L296" href="#L296">296</a> <em class="jxr_javadoccomment">     */</em>
      +<a class="jxr_linenumber" name="L297" href="#L297">297</a>     @Override
      +<a class="jxr_linenumber" name="L298" href="#L298">298</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> startInternal() <strong class="jxr_keyword">throws</strong> LifecycleException {
      +<a class="jxr_linenumber" name="L299" href="#L299">299</a>         <strong class="jxr_keyword">this</strong>.log.debug(<span class="jxr_string">"Creating a windows authentication provider with continueContextsTimeout property set to: {}"</span>,
      +<a class="jxr_linenumber" name="L300" href="#L300">300</a>                 <strong class="jxr_keyword">this</strong>.continueContextsTimeout);
      +<a class="jxr_linenumber" name="L301" href="#L301">301</a>         <strong class="jxr_keyword">this</strong>.auth = <strong class="jxr_keyword">new</strong> WindowsAuthProviderImpl(<strong class="jxr_keyword">this</strong>.continueContextsTimeout);
      +<a class="jxr_linenumber" name="L302" href="#L302">302</a>         <strong class="jxr_keyword">super</strong>.startInternal();
      +<a class="jxr_linenumber" name="L303" href="#L303">303</a>     }
      +<a class="jxr_linenumber" name="L304" href="#L304">304</a> 
      +<a class="jxr_linenumber" name="L305" href="#L305">305</a> }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref/waffle/apache/WindowsRealm.html b/waffle-tomcat10/xref/waffle/apache/WindowsRealm.html
      new file mode 100644
      index 0000000000..d04e4ec1c5
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/WindowsRealm.html
      @@ -0,0 +1,58 @@
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
      +<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +<title>WindowsRealm xref</title>
      +<link type="text/css" rel="stylesheet" href="../../stylesheet.css" />
      +</head>
      +<body>
      +<div id="overview"><a href="../../../apidocs/waffle/apache/WindowsRealm.html">View Javadoc</a></div><pre>
      +<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
      +<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * MIT License</em>
      +<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Copyright (c) 2010-2024 The Waffle Project Contributors: <a href="https://github.com/Waffle/waffle/graphs/contributors" target="alexandria_uri">https://github.com/Waffle/waffle/graphs/contributors</a></em>
      +<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</em>
      +<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * of this software and associated documentation files (the "Software"), to deal</em>
      +<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * in the Software without restriction, including without limitation the rights</em>
      +<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</em>
      +<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * copies of the Software, and to permit persons to whom the Software is</em>
      +<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * furnished to do so, subject to the following conditions:</em>
      +<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * The above copyright notice and this permission notice shall be included in all</em>
      +<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * copies or substantial portions of the Software.</em>
      +<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
      +<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</em>
      +<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</em>
      +<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</em>
      +<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</em>
      +<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</em>
      +<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <em class="jxr_comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</em>
      +<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <em class="jxr_comment"> * SOFTWARE.</em>
      +<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <em class="jxr_comment"> */</em>
      +<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">package</strong> waffle.apache;
      +<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
      +<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.security.Principal;
      +<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
      +<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.catalina.realm.RealmBase;
      +<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
      +<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment">/**</em>
      +<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * A rudimentary Windows realm.</em>
      +<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> */</em>
      +<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="WindowsRealm" href="../../waffle/apache/WindowsRealm.html#WindowsRealm">WindowsRealm</a> <strong class="jxr_keyword">extends</strong> RealmBase {
      +<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
      +<a class="jxr_linenumber" name="L35" href="#L35">35</a>      @Override
      +<a class="jxr_linenumber" name="L36" href="#L36">36</a>      <strong class="jxr_keyword">protected</strong> String getPassword(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L37" href="#L37">37</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L38" href="#L38">38</a>      }
      +<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
      +<a class="jxr_linenumber" name="L40" href="#L40">40</a>      @Override
      +<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">protected</strong> Principal getPrincipal(<strong class="jxr_keyword">final</strong> String value) {
      +<a class="jxr_linenumber" name="L42" href="#L42">42</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
      +<a class="jxr_linenumber" name="L43" href="#L43">43</a>      }
      +<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
      +<a class="jxr_linenumber" name="L45" href="#L45">45</a>  }
      +</pre>
      +<hr/>
      +<div id="footer">© 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a></div>
      +</body>
      +</html>
      diff --git a/waffle-tomcat10/xref/waffle/apache/package-frame.html b/waffle-tomcat10/xref/waffle/apache/package-frame.html
      new file mode 100644
      index 0000000000..b8354dedb5
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/package-frame.html
      @@ -0,0 +1,33 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference Package waffle.apache</title>
      +        <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="style" />
      +    </head>
      +    <body>
      +        <h1 class="bar"><a href="package-summary.html" target="classFrame">waffle.apache</a></h1>
      +        <div class="indexContainer">
      +            <h2 title="Classes">Classes</h2>
      +            <ul title="Classes">
      +                <li>
      +                    <a href="GenericWindowsPrincipal.html#GenericWindowsPrincipal" target="classFrame">GenericWindowsPrincipal</a>
      +                </li>
      +                <li>
      +                    <a href="MixedAuthenticator.html#MixedAuthenticator" target="classFrame">MixedAuthenticator</a>
      +                </li>
      +                <li>
      +                    <a href="NegotiateAuthenticator.html#NegotiateAuthenticator" target="classFrame">NegotiateAuthenticator</a>
      +                </li>
      +                <li>
      +                    <a href="WaffleAuthenticatorBase.html#WaffleAuthenticatorBase" target="classFrame">WaffleAuthenticatorBase</a>
      +                </li>
      +                <li>
      +                    <a href="WindowsRealm.html#WindowsRealm" target="classFrame">WindowsRealm</a>
      +                </li>
      +            </ul>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file
      diff --git a/waffle-tomcat10/xref/waffle/apache/package-summary.html b/waffle-tomcat10/xref/waffle/apache/package-summary.html
      new file mode 100644
      index 0000000000..28da97156d
      --- /dev/null
      +++ b/waffle-tomcat10/xref/waffle/apache/package-summary.html
      @@ -0,0 +1,127 @@
      +
      +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      +<html xml:lang="en" lang="en">
      +    <!-- generated by Apache Maven JXR (jdk8) -->
      +    <head>
      +        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      +        <title>waffle-tomcat10 3.5.1 Reference Package waffle.apache</title>
      +        <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="style" />
      +    </head>
      +
      +    <body>
      +                <div class="topNav">
      +            <a name="navbar_top"><!--   --></a>
      +            <a href="#skip-navbar_top" title="Skip navigation links"></a>
      +            <a name="navbar_top_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li><a href="../../overview-summary.html">Overview</a></li>
      +                <li class="navBarCell1Rev">Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="../../index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="package-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <ul class="navList" id="allclasses_navbar_top">
      +                <li>All Classes</li>
      +            </ul>
      +            <div>
      +            </div>
      +            <a name="skip-navbar_top"><!--   --></a>
      +        </div>
      +        
      +                <div class="header">
      +            <h1 title="Package" class="title">Package waffle.apache</h1>
      +        </div>
      +        <div class="contentContainer">
      +            <ul class="blockList">
      +                <li class="blockList">
      +                    <table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
      +                        <caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
      +                        <thead>
      +                            <tr>
      +                                <th class="colFirst colLast" scope="col">Class</th>
      +                            </tr>
      +                        </thead>
      +                        <tbody>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="GenericWindowsPrincipal.html#GenericWindowsPrincipal" target="classFrame" title="class in waffle.apache">GenericWindowsPrincipal</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="rowColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="MixedAuthenticator.html#MixedAuthenticator" target="classFrame" title="class in waffle.apache">MixedAuthenticator</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="NegotiateAuthenticator.html#NegotiateAuthenticator" target="classFrame" title="class in waffle.apache">NegotiateAuthenticator</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="rowColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="WaffleAuthenticatorBase.html#WaffleAuthenticatorBase" target="classFrame" title="class in waffle.apache">WaffleAuthenticatorBase</a>
      +                                </td>
      +                            </tr>
      +                            <tr class="altColor">
      +                                <td class="colFirst colLast">
      +                                    <a href="WindowsRealm.html#WindowsRealm" target="classFrame" title="class in waffle.apache">WindowsRealm</a>
      +                                </td>
      +                            </tr>
      +                        </tbody>
      +                    </table>
      +                </li>
      +            </ul>
      +        </div>
      +        
      +                <div class="bottomNav">
      +            <a name="navbar_bottom"><!--   --></a>
      +            <a href="#skip-navbar_bottom" title="Skip navigation links"></a>
      +            <a name="navbar_bottom_firstrow"><!--   --></a>
      +            <ul class="navList" title="Navigation">
      +                <li><a href="../../overview-summary.html">Overview</a></li>
      +                <li class="navBarCell1Rev">Package</li>
      +                <li>Class</li>
      +                <li>Use</li>
      +                <li>Tree</li>
      +                <li>Deprecated</li>
      +                <li>Index</li>
      +                <li>Help</li>
      +            </ul>
      +            <div class="aboutLanguage"><em><strong>waffle-tomcat10 3.5.1 Reference</strong></em></div>
      +        </div>
      +        <div class="subNav">
      +            <ul class="navList">
      +                <li>Prev</li>
      +                <li>Next</li>
      +            </ul>
      +            <ul class="navList">
      +                <li><a href="../../index.html?overview-summary.html" target="_top">Frames</a></li>
      +                <li><a href="package-summary.html" target="_top">No Frames</a></li>
      +            </ul>
      +            <ul class="navList" id="allclasses_navbar_bottom">
      +                <li>All Classes</li>
      +            </ul>
      +            <div>
      +            </div>
      +            <a name="skip-navbar_bottom"><!--   --></a>
      +        </div>
      +        
      +        <div id="footer">
      +            © 2010–2025 <a href="https://github.com/waffle/">com.github.waffle</a>
      +        </div>
      +    </body>
      +</html>
      \ No newline at end of file