From c66030018ad53626be36f095fda38c815c552805 Mon Sep 17 00:00:00 2001 From: Benny Prange Date: Fri, 17 Dec 2021 18:20:38 +0100 Subject: [PATCH] Release eumw-2.2.5 --- .hgtags | 2 + configuration-checker/pom.xml | 2 +- configuration-wizard/pom.xml | 2 +- .../web/model/GlobalModelAttribute.java | 64 +++++++++++++++++ .../src/main/resources/application.properties | 6 +- .../main/resources/views/config-wizard.html | 16 ++--- .../views/fragments/view-components.html | 4 +- .../wizard/springboot/SessionFilter.java | 46 ++++++++++++ .../src/test/resources/application.properties | 3 +- databasemigration/pom.xml | 2 +- distribution/pom.xml | 4 +- doc/Makefile | 2 +- doc/source/chapter/Changelog.rst | 4 ++ doc/source/chapter/Configuration.rst | 6 +- doc/source/chapter/DemoApplication.rst | 6 +- doc/source/chapter/Operating.rst | 10 +-- doc/source/conf.py | 4 +- dvca-connection-configurator/pom.xml | 2 +- eidas-base-container/pom.xml | 2 +- eidas-common/pom.xml | 2 +- eidas-demo/pom.xml | 2 +- eidas-middleware/pom.xml | 7 +- .../resources/static/js/jquery-3.4.1.min.js | 2 - .../main/resources/templates/middleware.html | 2 +- eidas-starterkit/pom.xml | 2 +- password-generator/pom.xml | 2 +- pom.xml | 32 ++++----- poseidas-configuration/pom.xml | 2 +- poseidas/pom.xml | 6 +- .../authentication/paos/PaosReceiver.java | 6 +- .../paos/handler/PaosHandlerFactory.java | 10 +-- .../paosservlet/server/HttpPaosServlet.java | 71 ------------------- .../src/main/resources/templates/details.html | 4 +- .../resources/templates/fragments/header.html | 4 +- .../src/main/resources/templates/list.html | 4 +- .../src/main/resources/templates/login.html | 4 +- .../src/main/resources/templates/status.html | 4 +- .../server/timer/StartupListenerTest.java | 2 +- utils/pom.xml | 2 +- 39 files changed, 197 insertions(+), 160 deletions(-) create mode 100644 configuration-wizard/src/main/java/de/governikus/eumw/configuration/wizard/web/model/GlobalModelAttribute.java create mode 100644 configuration-wizard/src/test/java/de/governikus/eumw/configuration/wizard/springboot/SessionFilter.java delete mode 100644 eidas-middleware/src/main/resources/static/js/jquery-3.4.1.min.js delete mode 100644 poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/server/HttpPaosServlet.java diff --git a/.hgtags b/.hgtags index fdd0603b..f68432be 100644 --- a/.hgtags +++ b/.hgtags @@ -60,3 +60,5 @@ f0a7904ab43d36580ae5452ec536a1aba1d6b629 eumw-2.2.1 d14cac49af140383c0e21a6d5321af9e093277b6 eumw-2.2.2 22f43397b2011d9ee14fe3a0bbade0e719cb8355 eumw-2.2.3-RC1 d2932df2e87d2e2c9e4a11180f4b794c19ceea20 eumw-2.2.3-RC2 +4e9da5cfcfd457536c4b1dc963c8ecb5cc3c2f26 eumw-2.2.3 +eebce4e024fdcf705d1ea6baef62e86e3f2eb947 eumw-2.2.4 diff --git a/configuration-checker/pom.xml b/configuration-checker/pom.xml index 64c3edc0..f63ffd33 100644 --- a/configuration-checker/pom.xml +++ b/configuration-checker/pom.xml @@ -14,7 +14,7 @@ eumw de.governikus.eumw - 2.2.3 + 2.2.5 configuration-checker diff --git a/configuration-wizard/pom.xml b/configuration-wizard/pom.xml index 95dcf790..00c2897b 100644 --- a/configuration-wizard/pom.xml +++ b/configuration-wizard/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 configuration-wizard diff --git a/configuration-wizard/src/main/java/de/governikus/eumw/configuration/wizard/web/model/GlobalModelAttribute.java b/configuration-wizard/src/main/java/de/governikus/eumw/configuration/wizard/web/model/GlobalModelAttribute.java new file mode 100644 index 00000000..10a0a66a --- /dev/null +++ b/configuration-wizard/src/main/java/de/governikus/eumw/configuration/wizard/web/model/GlobalModelAttribute.java @@ -0,0 +1,64 @@ +package de.governikus.eumw.configuration.wizard.web.model; + +import java.util.Arrays; +import java.util.List; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ModelAttribute; + +import de.governikus.eumw.configuration.wizard.identifier.HSMTypeIdentifier; +import de.governikus.eumw.configuration.wizard.web.utils.WizardPage; + + +@ControllerAdvice +public class GlobalModelAttribute +{ + + @ModelAttribute("BASE_PATH_VIEW") + public WizardPage basePathView() + { + return WizardPage.BASE_PATH_VIEW; + } + + @ModelAttribute("UPLOAD_CONFIG_PROPERTIES_VIEW") + public WizardPage uploadConfigPropertiesView() + { + return WizardPage.UPLOAD_CONFIG_PROPERTIES_VIEW; + } + + @ModelAttribute("APPLICATION_PROPERTIES_VIEW") + public WizardPage applicationPropertiesView() + { + return WizardPage.APPLICATION_PROPERTIES_VIEW; + } + + @ModelAttribute("POSEIDAS_CORE_VIEW") + public WizardPage poseidasCoreView() + { + return WizardPage.POSEIDAS_CORE_VIEW; + } + + @ModelAttribute("EIDAS_PROPERTIES_VIEW") + public WizardPage eidasPropertiesView() + { + return WizardPage.EIDAS_PROPERTIES_VIEW; + } + + @ModelAttribute("SAVE_LOCATION_VIEW") + public WizardPage saveLocationView() + { + return WizardPage.SAVE_LOCATION_VIEW; + } + + @ModelAttribute("NUMBER_OF_PAGES") + public int numberOfPages() + { + return WizardPage.values().length; + } + + @ModelAttribute("HSM_TYPE_IDENTIFIER") + public List hsmTypeIdentifier() + { + return Arrays.asList(HSMTypeIdentifier.values()); + } +} diff --git a/configuration-wizard/src/main/resources/application.properties b/configuration-wizard/src/main/resources/application.properties index 8394e0b8..008dab64 100644 --- a/configuration-wizard/src/main/resources/application.properties +++ b/configuration-wizard/src/main/resources/application.properties @@ -7,13 +7,11 @@ # OF ANY KIND, either express or implied. See the Licence for the specific language governing permissions and # limitations under the Licence. # - # Server settings server.port=8080 server.servlet.context-path=/config-wizard - # Thymeleaf settings spring.thymeleaf.prefix=classpath:views/ spring.thymeleaf.cache=false -spring.resources.static-locations=classpath:resources/ -spring.resources.cache.period=0 +spring.web.resources.static-locations=classpath:resources/ +spring.web.resources.cache.period=0 diff --git a/configuration-wizard/src/main/resources/views/config-wizard.html b/configuration-wizard/src/main/resources/views/config-wizard.html index ae5e8761..e03a47ec 100644 --- a/configuration-wizard/src/main/resources/views/config-wizard.html +++ b/configuration-wizard/src/main/resources/views/config-wizard.html @@ -22,13 +22,13 @@

fieldName = hsmType, description = #{hsm.type}, message = #{hsm.type.desc}, - staticEnum = ${T(de.governikus.eumw.configuration.wizard.identifier.HSMTypeIdentifier)})"> + enumList = ${HSM_TYPE_IDENTIFIER})">

@@ -126,7 +126,7 @@ class="field-description-message">

diff --git a/configuration-wizard/src/test/java/de/governikus/eumw/configuration/wizard/springboot/SessionFilter.java b/configuration-wizard/src/test/java/de/governikus/eumw/configuration/wizard/springboot/SessionFilter.java new file mode 100644 index 00000000..f9adddf4 --- /dev/null +++ b/configuration-wizard/src/test/java/de/governikus/eumw/configuration/wizard/springboot/SessionFilter.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2021 Governikus KG. Licensed under the EUPL, Version 1.2 or as soon they will be approved by the + * European Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in compliance + * with the Licence. You may obtain a copy of the Licence at: http://joinup.ec.europa.eu/software/page/eupl Unless + * required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an + * "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licence for the + * specific language governing permissions and limitations under the Licence. + */ + +package de.governikus.eumw.configuration.wizard.springboot; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + + +/** + * While testing with the HTMLUnit-Framework, sometimes the URL parameter JSESSIONID is appended to the RequestURL, + * which leads to errors. This filter removes the JSESSIONID parameter. + */ +@Component +public class SessionFilter extends OncePerRequestFilter +{ + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException + { + logger.debug("In SessionFilter"); + if (request.getRequestURI().contains("jsessionid")) + { + String newURI = request.getRequestURI().substring(0, request.getRequestURI().indexOf(";")); + logger.debug("New RequestURL: " + newURI); + + request.getRequestDispatcher(newURI).forward(request, response); + return; + } + filterChain.doFilter(request, response); + } +} diff --git a/configuration-wizard/src/test/resources/application.properties b/configuration-wizard/src/test/resources/application.properties index 7406ced9..156be646 100644 --- a/configuration-wizard/src/test/resources/application.properties +++ b/configuration-wizard/src/test/resources/application.properties @@ -13,9 +13,10 @@ directory=${java.io.tmpdir} spring.thymeleaf.prefix=classpath:/views/ spring.thymeleaf.cache=false # Static resources reloading during development -spring.resources.static-locations=classpath:/resources/ +spring.web.resources.static-locations=classpath:/resources/ hsm.type=PKCS11 hsm.keys.delete=30 hsm.keys.archive=false pkcs11.config=DATEIPFAD pkcs11.passwd=PASSWORD + diff --git a/databasemigration/pom.xml b/databasemigration/pom.xml index 912bec41..f1d9e050 100644 --- a/databasemigration/pom.xml +++ b/databasemigration/pom.xml @@ -14,7 +14,7 @@ eumw de.governikus.eumw - 2.2.3 + 2.2.5 database-migration diff --git a/distribution/pom.xml b/distribution/pom.xml index eb2ad4c4..02fb2d2b 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -15,11 +15,11 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 distribution - 2.2.3 + 2.2.5 pom diff --git a/doc/Makefile b/doc/Makefile index 935758fa..c975b70b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -3,7 +3,7 @@ # You can set these variables from the command line. SPHINXOPTS = -SPHINXBUILD = python -msphinx +SPHINXBUILD = sphinx-build SPHINXPROJ = EUMW SOURCEDIR = source BUILDDIR = _build diff --git a/doc/source/chapter/Changelog.rst b/doc/source/chapter/Changelog.rst index d0016ffe..3e4b95f4 100644 --- a/doc/source/chapter/Changelog.rst +++ b/doc/source/chapter/Changelog.rst @@ -141,3 +141,7 @@ Changelog - eIDAS Middleware: Change certificate chain building algorithm. - eIDAS Middleware: Update xmlsec. - eIDAS Middleware: Improve stability in trust anchor management. + +* 2.2.5 + + - eIDAS Middleware: Fix Log4j security issue. diff --git a/doc/source/chapter/Configuration.rst b/doc/source/chapter/Configuration.rst index ae646225..bfcde4c0 100644 --- a/doc/source/chapter/Configuration.rst +++ b/doc/source/chapter/Configuration.rst @@ -72,7 +72,7 @@ In case you are using your own environment, copy the JAR file to a folder of you You can start the application with the following command:: - java -jar configuration-wizard-2.2.3.jar + java -jar configuration-wizard-2.2.5.jar In addition you can define the config folder with adding the parameter ``DconfigDirectory`` and its value to the command. This way the configuration wizard will be available at ``http://localhost:8080/config-wizard.`` @@ -102,7 +102,7 @@ to run the wizard again whenever you need it. To run the configuration wizard, execute the following command. It will mount the named volume in the container so that the configuration wizard can store the configuration in the volume. :: - docker run --rm -it -v eidas-configuration:/opt/eidas-middleware/configuration -p 8080:8080 --name eidas-configuration-wizard governikus/eidas-configuration-wizard:2.2.3 + docker run --rm -it -v eidas-configuration:/opt/eidas-middleware/configuration -p 8080:8080 --name eidas-configuration-wizard governikus/eidas-configuration-wizard:2.2.5 Running this command the configuration wizard will be available on http://localhost:8080/config-wizard. @@ -116,7 +116,7 @@ with the alias ``localhost`` and the password ``123456`` for the keystore and th You can also use PKCS12 keystores, in this case you must change the value of ``SERVER_SSL_KEY_STORE_TYPE`` to ``PKCS12``. :: - docker run --rm -it -v eidas-configuration:/opt/eidas-middleware/configuration -v /home/user/keystore.jks:/opt/eidas-middleware/keystore.jks -p 443:8080 -e SERVER_SSL_KEY_STORE=file:/opt/eidas-middleware/keystore.jks -e SERVER_SSL_KEY_STORE_TYPE=JKS -e SERVER_SSL_KEY_STORE_PASSWORD=123456 -e SERVER_SSL_KEY_ALIAS=localhost -e SERVER_SSL_KEY_PASSWORD=123456 --name eidas-configuration-wizard governikus/eidas-configuration-wizard:2.2.3 + docker run --rm -it -v eidas-configuration:/opt/eidas-middleware/configuration -v /home/user/keystore.jks:/opt/eidas-middleware/keystore.jks -p 443:8080 -e SERVER_SSL_KEY_STORE=file:/opt/eidas-middleware/keystore.jks -e SERVER_SSL_KEY_STORE_TYPE=JKS -e SERVER_SSL_KEY_STORE_PASSWORD=123456 -e SERVER_SSL_KEY_ALIAS=localhost -e SERVER_SSL_KEY_PASSWORD=123456 --name eidas-configuration-wizard governikus/eidas-configuration-wizard:2.2.5 Because the application is now bound to the host in port 443, the configuration wizard is available at https://localhost/config-wizard. diff --git a/doc/source/chapter/DemoApplication.rst b/doc/source/chapter/DemoApplication.rst index 1ed9f090..b3f1855b 100644 --- a/doc/source/chapter/DemoApplication.rst +++ b/doc/source/chapter/DemoApplication.rst @@ -50,8 +50,8 @@ Using the eIDAS Demo Application To use the eIDAS Demo Application, start by running the eIDAS Demo Application. #. Change to the correct directory where the aforementioned configuration is present. -#. If not present, copy the ``eidas-demo-2.2.3.jar`` file in this directory. -#. Start the application by executing ``java -jar eidas-demo-2.2.3.jar``. +#. If not present, copy the ``eidas-demo-2.2.5.jar`` file in this directory. +#. Start the application by executing ``java -jar eidas-demo-2.2.5.jar``. Now you must configure your eIDAS Middleware to communicate with the eIDAS Demo Application. @@ -93,7 +93,7 @@ Also bear in mind that you must use the path of the container file system in the To run the middleware, execute the following command after you have prepared the configuration, certificate and keystores:: - docker run --rm -it -v /path/to/your/config-directory:/opt/eidas-middleware/config -p 8080:8080 governikus/eidas-demo-application:2.2.3 + docker run --rm -it -v /path/to/your/config-directory:/opt/eidas-middleware/config -p 8080:8080 governikus/eidas-demo-application:2.2.5 Now you can follow the steps above to configure and test the eIDAS Middleware. diff --git a/doc/source/chapter/Operating.rst b/doc/source/chapter/Operating.rst index b75f49f8..c2a3d53b 100644 --- a/doc/source/chapter/Operating.rst +++ b/doc/source/chapter/Operating.rst @@ -106,14 +106,14 @@ To run the eIDAS Middleware, execute the following command. It will mount the named volumes containing the database and configuration in the container and the application will be available on port 8443. :: - docker run --rm -it -v eidas-configuration:/opt/eidas-middleware/configuration -v eidas-database:/opt/eidas-middleware/database -p 8443:8443 --name eidas-middleware-application governikus/eidas-middleware-application:2.2.3 + docker run --rm -it -v eidas-configuration:/opt/eidas-middleware/configuration -v eidas-database:/opt/eidas-middleware/database -p 8443:8443 --name eidas-middleware-application governikus/eidas-middleware-application:2.2.5 To stop and remove the container, just hit ``CTRL+C``. To keep the container running longer without being attached to the STDOUT and STDERR, change the command to the following:: - docker run -d -v eidas-configuration:/opt/eidas-middleware/configuration -v eidas-database:/opt/eidas-middleware/database -p 8443:8443 --name eidas-middleware-application governikus/eidas-middleware-application:2.2.3 + docker run -d -v eidas-configuration:/opt/eidas-middleware/configuration -v eidas-database:/opt/eidas-middleware/database -p 8443:8443 --name eidas-middleware-application governikus/eidas-middleware-application:2.2.5 For more information on starting and stopping containers and viewing the logs, see the `Docker Docs `_. @@ -177,7 +177,7 @@ Scalability The performance of the eIDAS Middleware improves by adding more memory (RAM) and using a faster CPU. In case the memory configuration has changed, the server needs to be restarted. To start the JVM with more memory, add ``-Xmx`` with the new maximum memory size to the start command, -e.g. ``java -Xmx8g -jar eidas-middleware-2.2.3.jar`` for 8 GB. +e.g. ``java -Xmx8g -jar eidas-middleware-2.2.5.jar`` for 8 GB. Request Signer Certificate @@ -269,7 +269,7 @@ Optional property for ``TRAP`` is ``poseidas.snmp.managementport`` (port 162 is set). All existing SNMP GET values are explained in detail in the MIB located at -``https://github.com/Governikus/eidas-middleware/blob/2.2.3/poseidas/snmp/EIDASMW-SNMP-MIB.mib``. +``https://github.com/Governikus/eidas-middleware/blob/2.2.5/poseidas/snmp/EIDASMW-SNMP-MIB.mib``. Global GET '''''''''' @@ -369,6 +369,6 @@ Stop the eIDAS Middleware Application and copy the database file to your backup e.g. ``cp /opt/eidas-middleware/database/eidasmw.mv.db /path/to/your/backup-location/eidasmw.mv.db``. To perform the migration, copy the database migration JAR file to the directory where your -configuration file is available and execute the command ``java -jar database-migration-2.2.3.jar``. +configuration file is available and execute the command ``java -jar database-migration-2.2.5.jar``. If there are errors in the log output, please send the complete log output and some information on your environment to eidas-middleware@governikus.com. diff --git a/doc/source/conf.py b/doc/source/conf.py index 9739f10b..21f192b8 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -55,9 +55,9 @@ # built documents. # # The short X.Y version. -version = '2.2.3' +version = '2.2.5' # The full version, including alpha/beta/rc tags. -release = '2.2.3' +release = '2.2.5' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/dvca-connection-configurator/pom.xml b/dvca-connection-configurator/pom.xml index 6c2c3e94..af18ecbf 100644 --- a/dvca-connection-configurator/pom.xml +++ b/dvca-connection-configurator/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 dvca-connection-configurator dvca-connection-configurator diff --git a/eidas-base-container/pom.xml b/eidas-base-container/pom.xml index 31ea9564..736aa0a3 100644 --- a/eidas-base-container/pom.xml +++ b/eidas-base-container/pom.xml @@ -14,7 +14,7 @@ eumw de.governikus.eumw - 2.2.3 + 2.2.5 eidas-base-container diff --git a/eidas-common/pom.xml b/eidas-common/pom.xml index 426504aa..da6efa75 100644 --- a/eidas-common/pom.xml +++ b/eidas-common/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 eidas-common diff --git a/eidas-demo/pom.xml b/eidas-demo/pom.xml index d6b4a8e9..2db93db0 100644 --- a/eidas-demo/pom.xml +++ b/eidas-demo/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 eidas-demo diff --git a/eidas-middleware/pom.xml b/eidas-middleware/pom.xml index e75a2e4f..1f84f1c3 100644 --- a/eidas-middleware/pom.xml +++ b/eidas-middleware/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 eidas-middleware @@ -95,6 +95,11 @@ commons-io + + org.webjars + jquery + + org.projectlombok lombok diff --git a/eidas-middleware/src/main/resources/static/js/jquery-3.4.1.min.js b/eidas-middleware/src/main/resources/static/js/jquery-3.4.1.min.js deleted file mode 100644 index a1c07fd8..00000000 --- a/eidas-middleware/src/main/resources/static/js/jquery-3.4.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS 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(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(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&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(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&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(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 ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);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&&E){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=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(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(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(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=se.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 j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.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 k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").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)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.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),m(t)&&(t=t.call(e,n,k.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)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.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"===k.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"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(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)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(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?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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){k.fn[n]=function(e,t){return 0 - + diff --git a/eidas-starterkit/pom.xml b/eidas-starterkit/pom.xml index f5a24cc3..4e03b2ce 100644 --- a/eidas-starterkit/pom.xml +++ b/eidas-starterkit/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 eidas-starterkit diff --git a/password-generator/pom.xml b/password-generator/pom.xml index 2a4db9fa..b86184ce 100644 --- a/password-generator/pom.xml +++ b/password-generator/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 password-generator diff --git a/pom.xml b/pom.xml index a5f3261b..0ba87a8c 100644 --- a/pom.xml +++ b/pom.xml @@ -9,13 +9,12 @@ ~ limitations under the Licence. --> - + 4.0.0 de.governikus.eumw eumw - 2.2.3 + 2.2.5 pom EU Middleware @@ -38,7 +37,7 @@ https://hg.govkg.de/Autent/eumw scm:hg:https://hg.govkg.de/Autent/eumw - eumw-2.2.3 + eumw-2.2.5 @@ -87,12 +86,11 @@ 1.0.7 3.4.6 - 2.2.3 + 2.3.0 - 3.4.4 - 2.5.4 - - 3.0.11.RELEASE + 3.4.5 + 2.6.1 + 3.0.14.RELEASE 2.5.2 9.2 @@ -102,12 +100,12 @@ 1.4 2.11.0 3.12.0 - 30.1.1-jre + 31.0.1-jre 1.4.200 4.0.1 - 2.12.5 + 2.13.0 1.11.1 - 2.10.10 + 2.10.13 2.2.14 3.0.2 3.0.9 @@ -115,10 +113,10 @@ 2.7.4 - 1.18.20 + 1.18.22 - 2.14.1 + 2.16.0 1.7.32 @@ -130,11 +128,11 @@ 1.2.0 - 6.3.1 + 6.5.0 - 5.1.0 + 5.1.3 3.6.0 @@ -366,7 +364,7 @@ [3.3,) - + Best Practice is to diff --git a/poseidas-configuration/pom.xml b/poseidas-configuration/pom.xml index c4a1879a..b5722366 100644 --- a/poseidas-configuration/pom.xml +++ b/poseidas-configuration/pom.xml @@ -13,7 +13,7 @@ eumw de.governikus.eumw - 2.2.3 + 2.2.5 4.0.0 diff --git a/poseidas/pom.xml b/poseidas/pom.xml index e878e944..72e39a93 100644 --- a/poseidas/pom.xml +++ b/poseidas/pom.xml @@ -9,14 +9,12 @@ KIND, either express or implied. See the Licence for the specific language governing permissions and ~ limitations under the Licence. --> - + 4.0.0 de.governikus.eumw eumw - 2.2.3 + 2.2.5 poseidas diff --git a/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/authentication/paos/PaosReceiver.java b/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/authentication/paos/PaosReceiver.java index ccb5aec4..d3975cee 100644 --- a/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/authentication/paos/PaosReceiver.java +++ b/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/authentication/paos/PaosReceiver.java @@ -13,17 +13,17 @@ import java.io.IOException; import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import de.governikus.eumw.eidascommon.ContextPaths; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import de.governikus.eumw.eidascommon.ContextPaths; import de.governikus.eumw.poseidas.paosservlet.paos.handler.AbstractPaosHandler; import de.governikus.eumw.poseidas.paosservlet.paos.handler.PaosHandlerException; import de.governikus.eumw.poseidas.paosservlet.paos.handler.PaosHandlerFactory; -import de.governikus.eumw.poseidas.paosservlet.server.HttpPaosServlet; /** @@ -32,7 +32,7 @@ * @author Ole Behrens */ @WebServlet(ContextPaths.EIDAS_CONTEXT_PATH + ContextPaths.PAOS_SERVLET) -public class PaosReceiver extends HttpPaosServlet +public class PaosReceiver extends HttpServlet { private static final long serialVersionUID = 3323320851L; diff --git a/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/paos/handler/PaosHandlerFactory.java b/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/paos/handler/PaosHandlerFactory.java index 1891933e..73cd5c1a 100644 --- a/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/paos/handler/PaosHandlerFactory.java +++ b/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/paos/handler/PaosHandlerFactory.java @@ -19,7 +19,6 @@ import org.apache.commons.logging.LogFactory; import de.governikus.eumw.eidascommon.Utils; -import de.governikus.eumw.poseidas.paosservlet.server.HttpPaosServlet; public class PaosHandlerFactory @@ -39,12 +38,8 @@ private PaosHandlerFactory() * @throws PaosHandlerException if the talked PAOS is wrong * @throws IOException on any IO errors */ - public static AbstractPaosHandler newInstance(HttpServletRequest request) throws PaosHandlerException, - IOException + public static AbstractPaosHandler newInstance(HttpServletRequest request) throws PaosHandlerException, IOException { - LOG.debug(HttpPaosServlet.getRequestInformation(request)); - LOG.debug(HttpPaosServlet.getRequestParameterInformation(request)); - byte[] requestBody = readRequestbody(request); try { @@ -53,8 +48,7 @@ public static AbstractPaosHandler newInstance(HttpServletRequest request) throws catch (IllegalArgumentException e) { LOG.warn("PAOS Conversation stopped: Can not create new instance for request", e); - throw new PaosHandlerException("PAOS Conversation stopped: Can not create new instance for request ", - 400); + throw new PaosHandlerException("PAOS Conversation stopped: Can not create new instance for request ", 400); } } diff --git a/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/server/HttpPaosServlet.java b/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/server/HttpPaosServlet.java deleted file mode 100644 index 318f69b0..00000000 --- a/poseidas/src/main/java/de/governikus/eumw/poseidas/paosservlet/server/HttpPaosServlet.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2020 Governikus KG. Licensed under the EUPL, Version 1.2 or as soon they will be approved by the - * European Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in compliance - * with the Licence. You may obtain a copy of the Licence at: http://joinup.ec.europa.eu/software/page/eupl Unless - * required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an - * "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licence for the - * specific language governing permissions and limitations under the Licence. - */ - -package de.governikus.eumw.poseidas.paosservlet.server; - -import java.util.Enumeration; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; - - -public abstract class HttpPaosServlet extends HttpServlet -{ - - /** - * Generated id - */ - private static final long serialVersionUID = -3825736452650355693L; - - /** - * Informations about a HttpServletRequest - * - * @param request the request to get informations from - * @return string with formatted informations about this request - */ - public static String getRequestInformation(HttpServletRequest request) - { - StringBuilder requestInformations = new StringBuilder(); - requestInformations.append("\n=== HttpServletRequest ===\n"); - requestInformations.append(" Requested URL: " + request.getRequestURL() + "\n"); - requestInformations.append(" Requested URI: " + request.getRequestURI() + "\n\n"); - requestInformations.append(" Context Path : " + request.getContextPath() + "\n"); - requestInformations.append(" Remote Addr : " + request.getRemoteAddr() + "\n"); - requestInformations.append(" Remote Host : " + request.getRemoteHost() + "\n"); - requestInformations.append(" PathInfo : " + request.getPathInfo() + "\n"); - requestInformations.append(" Server Name : " + request.getServerName() + "\n"); - requestInformations.append(" Servlet Path : " + request.getServletPath() + "\n"); - requestInformations.append(" Servlet : " + request.getContextPath() + "\n"); - requestInformations.append(" Server Port : " + request.getServerPort() + "\n\n"); - requestInformations.append("=======================\n"); - return requestInformations.toString(); - } - - - - /** - * Informations about parameters from a HTTPServletRequest - * - * @param request to get the parameters from - * @return string with a list of all parameters - */ - public static String getRequestParameterInformation(HttpServletRequest request) - { - StringBuilder parameters = new StringBuilder("=== ReceivedParameters ===\n"); - Enumeration parameterNames = request.getParameterNames(); - while (parameterNames.hasMoreElements()) - { - String nextElement = parameterNames.nextElement(); - parameters.append(" o PARAMETER '" + nextElement.replaceAll("[\n\r\t]", "_") + "'\n"); - parameters.append(" VALUE '" + request.getParameter(nextElement).replaceAll("[\n\r\t]", "_") + "'\n"); - } - return parameters.append("\n").toString(); - } - -} diff --git a/poseidas/src/main/resources/templates/details.html b/poseidas/src/main/resources/templates/details.html index 2ce004cf..87957979 100644 --- a/poseidas/src/main/resources/templates/details.html +++ b/poseidas/src/main/resources/templates/details.html @@ -15,9 +15,9 @@ POSeIDAS CVC Info - + - + diff --git a/poseidas/src/main/resources/templates/fragments/header.html b/poseidas/src/main/resources/templates/fragments/header.html index d341ef65..bed8592d 100644 --- a/poseidas/src/main/resources/templates/fragments/header.html +++ b/poseidas/src/main/resources/templates/fragments/header.html @@ -12,9 +12,9 @@ xmlns:th="http://www.thymeleaf.org"> - + - + diff --git a/poseidas/src/main/resources/templates/list.html b/poseidas/src/main/resources/templates/list.html index 9704575d..2caccfbe 100644 --- a/poseidas/src/main/resources/templates/list.html +++ b/poseidas/src/main/resources/templates/list.html @@ -14,9 +14,9 @@ POSeIDAS CVC List - + - + diff --git a/poseidas/src/main/resources/templates/login.html b/poseidas/src/main/resources/templates/login.html index de4a310e..d943f8d8 100644 --- a/poseidas/src/main/resources/templates/login.html +++ b/poseidas/src/main/resources/templates/login.html @@ -15,9 +15,9 @@ POSeIDAS CVC Info - + - + diff --git a/poseidas/src/main/resources/templates/status.html b/poseidas/src/main/resources/templates/status.html index 9779f9fb..7d5597ea 100644 --- a/poseidas/src/main/resources/templates/status.html +++ b/poseidas/src/main/resources/templates/status.html @@ -14,9 +14,9 @@ POSeIDAS CVC status - + - + diff --git a/poseidas/src/test/java/de/governikus/eumw/poseidas/server/timer/StartupListenerTest.java b/poseidas/src/test/java/de/governikus/eumw/poseidas/server/timer/StartupListenerTest.java index 303ef22b..acac87de 100644 --- a/poseidas/src/test/java/de/governikus/eumw/poseidas/server/timer/StartupListenerTest.java +++ b/poseidas/src/test/java/de/governikus/eumw/poseidas/server/timer/StartupListenerTest.java @@ -35,7 +35,7 @@ class StartupListenerTest { - private static final String MASTERLIST_BASE64 = "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"; + private static final String MASTERLIST_BASE64 = "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"; private static final String JAVA_IO_TMPDIR = System.getProperty("java.io.tmpdir") + "/poseidas"; diff --git a/utils/pom.xml b/utils/pom.xml index 51e326b8..a8792019 100644 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -14,7 +14,7 @@ de.governikus.eumw eumw - 2.2.3 + 2.2.5 utils