diff --git a/DEPENDENCIES b/DEPENDENCIES
index 632d8b2..0b55c0d 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -36,80 +36,91 @@
     Available at: http://aopalliance.sourceforge.net
     License name: Public Domain
   
-  ch.qos.logback:1.2.3: 
+  ch.qos.logback:1.2.9: 
     Project:      Logback Logging Framework
-    Version:      1.2.3
+    Version:      1.2.9
     Available at: http://logback.qos.ch
     Developed by: QOS.ch (http://www.qos.ch)
     License name: Eclipse Public License, version 1.0
   
-  com.fasterxml.jackson:2.11.3: 
+  com.fasterxml.jackson:2.16.1: 
     Project:      Jackson FasterXML
-    Version:      2.11.3
-    Available at: 
-      - http://github.com/FasterXML/jackson
-      - https://github.com/FasterXML/jackson-core
-      - https://github.com/FasterXML/jackson-dataformats-text
-      - https://github.com/FasterXML/jackson-modules-base
+    Version:      2.16.1
+    Available at: https://github.com/FasterXML/jackson
     Developed by: FasterXML (http://fasterxml.com/)
-    License name: Apache License, version 2.0
+    Licenses: 
+      -
+        License name: Apache License, version 2.0
+      -
+        License name: Apache License, version 2.0
   
-  com.fasterxml.woodstox.woodstox-core:5.0.3: 
+  com.fasterxml.woodstox.woodstox-core:6.4.0: 
     Project:      Woodstox
-    Version:      5.0.3
+    Version:      6.4.0
     Available at: https://github.com/FasterXML/woodstox
     Developed by: FasterXML (http://fasterxml.com)
     License name: Apache License, version 2.0
   
-  com.google.code.findbugs.jsr305:2.0.1: 
-    Project:      FindBugs-jsr305
-    Version:      2.0.1
-    Available at: http://findbugs.sourceforge.net/
-    License name: Apache License, version 2.0
-  
-  com.google.code.gson:2.5: 
+  com.google.code.gson:2.8.9: 
     Project:      Gson
-    Version:      2.5
+    Version:      2.8.9
     Available at: https://github.com/google/gson
-    Developed by: Google, Inc. (http://www.google.com)
     License name: Apache License, version 2.0
   
-  com.google.errorprone.error_prone_annotations:2.1.0: 
+  com.google.errorprone.error_prone_annotations:2.2.0: 
     Project:      error-prone annotations
-    Version:      2.1.0
+    Version:      2.2.0
     Available at: http://nexus.sonatype.org/oss-repository-hosting.html
     License name: Apache License, version 2.0
   
-  com.google.guava:18.0: 
+  com.google.guava.failureaccess:1.0.1: 
+    Project:      Guava InternalFutureFailureAccess and InternalFutures
+    Version:      1.0.1
+    Available at: https://github.com/google/guava
+    License name: Apache License, version 2.0
+  
+  com.google.guava.listenablefuture:9999.0-empty-to-avoid-conflict-with-guava: 
+    Project:      Guava ListenableFuture only
+    Version:      9999.0-empty-to-avoid-conflict-with-guava
+    Available at: https://github.com/google/guava
+    License name: Apache License, version 2.0
+  
+  com.google.guava:27.1-jre: 
     Project:      "Guava: Google Core Libraries for Java"
-    Version:      18.0
-    Available at: http://code.google.com/p/guava-libraries
+    Version:      27.1-jre
+    Available at: https://github.com/google/guava
     License name: Apache License, version 2.0
   
-  com.google.inject.guice:3.0: 
+  com.google.inject.guice:4.2.3: 
     Project:      Google Guice
-    Version:      3.0
-    Available at: http://code.google.com/p/google-guice/
+    Version:      4.2.3
+    Available at: https://github.com/google/guice
     Developed by: Google, Inc. (http://www.google.com)
     License name: Apache License, version 2.0
   
-  com.google.inject:3.0: 
+  com.google.inject:4.2.3: 
     Project:      Google Guice
-    Version:      3.0
-    Available at: http://code.google.com/p/google-guice/
+    Version:      4.2.3
+    Available at: https://github.com/google/guice
     Developed by: Google, Inc. (http://www.google.com)
     License name: Apache License, version 2.0
   
-  com.hierynomus.sshj:0.22.0: 
-    Project:      sshj
-    Version:      0.22.0
-    Available at: https://github.com/hierynomus/sshj
-    License name: Apache License, version 2.0
-  
-  com.jamesmurty.utils.java-xmlbuilder:1.1: 
-    Project:      java-xmlbuilder
+  com.google.j2objc.j2objc-annotations:1.1: 
+    Project:      J2ObjC Annotations
     Version:      1.1
-    Available at: https://github.com/jmurty/java-xmlbuilder
+    Available at: https://github.com/google/j2objc/
+    License name: Apache License, version 2.0
+  
+  com.hierynomus.asn-one:0.6.0: 
+    Project:      asn-one
+    Version:      0.6.0
+    Available at: https://github.com/hierynomus/asn-one
+    License name: Apache License, version 2.0
+  
+  com.hierynomus.sshj:0.34.0: 
+    Project:      sshj
+    Version:      0.34.0
+    Available at: https://github.com/hierynomus/sshj
     License name: Apache License, version 2.0
   
   com.jayway.jsonpath.json-path:2.4.0: 
@@ -148,12 +159,11 @@
     Developed by: MaxMind, Inc. (http://www.maxmind.com/)
     License name: Apache License, version 2.0
   
-  com.squareup.okhttp:2.2.0: 
+  com.squareup.okhttp3.okhttp:3.14.9: 
     Project:      OkHttp
-    Version:      2.2.0
+    Version:      3.14.9
     Available at: https://github.com/square/okhttp
     License name: Apache License, version 2.0
-    Notice:       Copyright (c) Square, Inc.
   
   com.squareup.okio:1.15.0: 
     Project:      Okio
@@ -162,9 +172,16 @@
     License name: Apache License, version 2.0
     Notice:       Copyright (c) Square, Inc.
   
-  com.thoughtworks.xstream:1.4.18: 
+  com.sun.xml.bind.jaxb-impl:2.3.3: 
+    Project:      Old JAXB Runtime
+    Version:      2.3.3
+    Available at: https://eclipse-ee4j.github.io/jaxb-ri
+    Developed by: Eclipse Foundation (https://www.eclipse.org)
+    License name: Common Development and Distribution License, version 1.1
+  
+  com.thoughtworks.xstream:1.4.19: 
     Project:      XStream Core
-    Version:      1.4.18
+    Version:      1.4.19
     Available at: http://x-stream.github.io/
     Developed by: XStream (http://x-stream.github.io)
     License name: BSD 3-Clause (New BSD) License
@@ -190,11 +207,11 @@
     Developed by: The Apache Software Foundation (http://www.apache.org/)
     License name: Apache License, version 2.0
   
-  commons-io:2.4: 
-    Project:      Commons IO
-    Version:      2.4
-    Available at: http://commons.apache.org/io/
-    Developed by: The Apache Software Foundation (http://www.apache.org/)
+  commons-io:2.11.0: 
+    Project:      Apache Commons IO
+    Version:      2.11.0
+    Available at: https://commons.apache.org/proper/commons-io/
+    Developed by: The Apache Software Foundation (https://www.apache.org/)
     License name: Apache License, version 2.0
   
   commons-logging:1.2: 
@@ -216,9 +233,30 @@
     Project:      MXParser
     Version:      1.2.2
     Available at: http://x-stream.github.io/mxparser
-    License name: Indiana University Extreme! Lab Software License, vesion 1.2
+    License name: Indiana University Extreme! Lab Software License, version 1.2
     Notice:       Copyright (c) Extreme! Lab, Indiana University
   
+  jakarta.activation.jakarta.activation-api:1.2.2: 
+    Project:      Jakarta Activation API jar
+    Version:      1.2.2
+    Available at: https://github.com/eclipse-ee4j/jaf
+    Developed by: Eclipse Foundation (https://www.eclipse.org)
+    License name: Eclipse Distribution License, version 1.0
+  
+  jakarta.annotation.jakarta.annotation-api:1.3.5: 
+    Project:      Jakarta Annotations API
+    Version:      1.3.5
+    Available at: https://projects.eclipse.org/projects/ee4j.ca
+    Developed by: Eclipse Foundation (https://www.eclipse.org)
+    License name: Eclipse Public License, version 2.0
+  
+  jakarta.xml.bind.jakarta.xml.bind-api:2.3.3: 
+    Project:      Jakarta XML Binding API
+    Version:      2.3.3
+    Available at: https://github.com/eclipse-ee4j/jaxb-api
+    Developed by: Eclipse Foundation (https://www.eclipse.org)
+    License name: Eclipse Distribution License, version 1.0
+  
   javax.annotation.jsr250-api:1.0: 
     Project:      JSR-250 Common Annotations for the JavaTM Platform
     Version:      1.0
@@ -238,52 +276,46 @@
     Developed by: Eclipse Foundation (https://www.eclipse.org/org/foundation/)
     License name: Common Development and Distribution License, version 1.1
   
-  net.i2p.crypto.eddsa:0.1.0: 
-    Project:      ed25519-java
-    Version:      0.1.0
+  net.i2p.crypto.eddsa:0.3.0: 
+    Project:      EdDSA-Java
+    Version:      0.3.0
     Available at: https://github.com/str4d/ed25519-java
-    License name: Public Domain
+    License name: CC0 1.0 Universal
   
-  net.iharder.base64:2.3.8: 
-    Project:      base64
-    Version:      2.3.8
-    Available at: http://iharder.net/base64/
-    License name: Public Domain
-  
-  net.java.dev.jna:4.1.0: 
+  net.java.dev.jna:5.9.0: 
     Project: 
       - Java Native Access
       - Java Native Access Platform
-    Version:      4.1.0
-    Available at: https://github.com/twall/jna
+    Version:      5.9.0
+    Available at: https://github.com/java-native-access/jna
     License name: Apache License, version 2.0
   
-  net.minidev.accessors-smart:1.2: 
+  net.minidev.accessors-smart:2.4.9: 
     Project:      ASM based accessors helper used by json-smart
-    Version:      1.2
-    Available at: http://www.minidev.net/
-    Developed by: Chemouni Uriel (http://www.minidev.net/)
+    Version:      2.4.9
+    Available at: https://urielch.github.io/
+    Developed by: Chemouni Uriel (https://urielch.github.io/)
     License name: Apache License, version 2.0
   
-  net.minidev.json-smart:2.3: 
+  net.minidev.json-smart:2.4.10: 
     Project:      JSON Small and Fast Parser
-    Version:      2.3
-    Available at: http://www.minidev.net/
-    Developed by: Chemouni Uriel (http://www.minidev.net/)
+    Version:      2.4.10
+    Available at: https://urielch.github.io/
+    Developed by: Chemouni Uriel (https://urielch.github.io/)
     License name: Apache License, version 2.0
   
-  org.apache.commons.commons-compress:1.20: 
+  org.apache.commons.commons-compress:1.21: 
     Project:      Apache Commons Compress
-    Version:      1.20
+    Version:      1.21
     Available at: https://commons.apache.org/proper/commons-compress/
     Developed by: The Apache Software Foundation (https://www.apache.org/)
     License name: Apache License, version 2.0
   
-  org.apache.commons.commons-lang3:3.3.2: 
+  org.apache.commons.commons-lang3:3.12.0: 
     Project:      Apache Commons Lang
-    Version:      3.3.2
-    Available at: http://commons.apache.org/proper/commons-lang/
-    Developed by: The Apache Software Foundation (http://www.apache.org/)
+    Version:      3.12.0
+    Available at: https://commons.apache.org/proper/commons-lang/
+    Developed by: The Apache Software Foundation (https://www.apache.org/)
     License name: Apache License, version 2.0
   
   org.apache.cxf:3.3.9: 
@@ -293,9 +325,16 @@
     Developed by: The Apache Software Foundation (https://www.apache.org/)
     License name: Apache License, version 2.0
   
-  org.apache.felix.org.apache.felix.framework:6.0.3: 
+  org.apache.cxf:3.4.10: 
+    Project:      Apache CXF
+    Version:      3.4.10
+    Available at: https://cxf.apache.org
+    Developed by: The Apache Software Foundation (https://www.apache.org/)
+    License name: Apache License, version 2.0
+  
+  org.apache.felix.org.apache.felix.framework:6.0.5: 
     Project:      Apache Felix Framework
-    Version:      6.0.3
+    Version:      6.0.5
     Available at: http://felix.apache.org/
     Developed by: The Apache Software Foundation (https://www.apache.org/)
     License name: Apache License, version 2.0
@@ -328,17 +367,17 @@
     Developed by: The Apache Software Foundation (http://www.apache.org/)
     License name: Apache License, version 2.0
   
-  org.apache.httpcomponents.httpcore:4.4.14: 
+  org.apache.httpcomponents.httpcore:4.4.15: 
     Project:      Apache HttpCore
-    Version:      4.4.14
+    Version:      4.4.15
     Available at: http://hc.apache.org/httpcomponents-core-ga
     Developed by: The Apache Software Foundation (http://www.apache.org/)
     License name: Apache License, version 2.0
   
-  org.apache.jclouds:2.1.2: 
+  org.apache.jclouds:2.4.0: 
     Project:      Apache jclouds
-    Version:      2.1.2
-    Available at: http://jclouds.apache.org/
+    Version:      2.4.0
+    Available at: https://jclouds.apache.org/
     Developed by: The Apache Software Foundation (http://www.apache.org/)
     License name: Apache License, version 2.0
   
@@ -356,35 +395,41 @@
     Developed by: The Apache Software Foundation (https://www.apache.org/)
     License name: Apache License, version 2.0
   
-  org.bouncycastle:1.67: 
-    Project: 
-      - Bouncy Castle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs
-      - Bouncy Castle Provider
-    Version:      1.67
-    Available at: 
-      - http://www.bouncycastle.org/java.html
-      - https://www.bouncycastle.org/java.html
+  org.bouncycastle.bcprov-ext-jdk15on:1.60: 
+    Project:      Bouncy Castle Provider
+    Version:      1.60
+    Available at: https://www.bouncycastle.org/java.html
     License name: MIT License
     Notice:       Copyright (c) The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
   
-  org.codehaus.groovy.groovy-all:2.4.15: 
+  org.bouncycastle:1.72: 
+    Project: 
+      - Bouncy Castle ASN.1 Extension and Utility APIs
+      - Bouncy Castle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs
+      - Bouncy Castle Provider
+    Version:      1.72
+    Available at: https://www.bouncycastle.org/java.html
+    License name: MIT License
+    Notice:       Copyright (c) The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
+  
+  org.codehaus.groovy.groovy-all:2.4.21: 
     Project:      Apache Groovy
-    Version:      2.4.15
+    Version:      2.4.21
     Available at: http://groovy-lang.org
     Developed by: Apache Software Foundation (http://groovy-lang.org)
     License name: Apache License, version 2.0
   
-  org.codehaus.mojo.animal-sniffer-annotations:1.9: 
+  org.codehaus.mojo.animal-sniffer-annotations:1.17: 
     Project:      Animal Sniffer Annotations
-    Version:      1.9
-    Available at: http://mojo.codehaus.org/animal-sniffer
-    Developed by: Codehaus (http://codehaus.org)
+    Version:      1.17
+    Available at: http://www.mojohaus.org/animal-sniffer
+    Developed by: MojoHaus (http://www.mojohaus.org)
     License name: MIT License
   
-  org.codehaus.woodstox.stax2-api:3.1.4: 
+  org.codehaus.woodstox.stax2-api:4.2.1: 
     Project:      Stax2 API
-    Version:      3.1.4
-    Available at: http://wiki.fasterxml.com/WoodstoxStax2
+    Version:      4.2.1
+    Available at: http://github.com/FasterXML/stax2-api
     Developed by: fasterxml.com (http://fasterxml.com)
     License name: BSD 2-Clause (Simplified or FreeBSD) License
   
@@ -448,12 +493,16 @@
     Available at: http://github.com/ronmamo/reflections
     License name: BSD 3-Clause (New BSD) License
   
-  org.slf4j:1.7.25: 
+  org.slf4j:1.7.36: 
     Project:      Simple Logging Framework for Java
-    Version:      1.7.25
+    Version:      1.7.36
     Available at: http://www.slf4j.org
     Developed by: QOS.ch (http://www.qos.ch)
-    License name: MIT License
+    Licenses: 
+      -
+        License name: Apache License, version 2.0
+      -
+        License name: MIT License
   
   org.xmlunit:2.3.0: 
     Project: 
@@ -464,10 +513,10 @@
     Developed by: XMLUnit (http://www.xmlunit.org/)
     License name: Apache License, version 2.0
   
-  org.yaml.snakeyaml:1.27: 
+  org.yaml.snakeyaml:2.2: 
     Project:      SnakeYAML
-    Version:      1.27
-    Available at: http://www.snakeyaml.org
+    Version:      2.2
+    Available at: https://bitbucket.org/snakeyaml/snakeyaml
     License name: Apache License, version 2.0
   
   wsdl4j:1.6.3: 
@@ -927,6 +976,49 @@
     NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+  CC0 1.0 Universal: |
+    
+    CC0 1.0 Universal (CC0 1.0)
+    
+    Creative Commons - No Copyright
+    
+    The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
+    
+    You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
+    
+    Legal Code
+    
+    Statement of Purpose
+    
+    The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
+    
+    Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
+    
+    For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
+    
+    1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
+    
+    the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
+    moral rights retained by the original author(s) and/or performer(s);
+    publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
+    rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
+    rights protecting the extraction, dissemination, use and reuse of data in a Work;
+    database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
+    other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
+    2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
+    
+    3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
+    
+    4. Limitations and Disclaimers.
+    
+    No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
+    Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
+    Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
+    Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
+    
+    
+    
+
   Common Development and Distribution License, version 1.0: |
     COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) 
     Version 1.0
@@ -1156,6 +1248,37 @@
     This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
     
 
+  Eclipse Distribution License, version 1.0: |
+    Eclipse Distribution License - v 1.0
+    Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
+    
+    All rights reserved.
+    
+    Redistribution and use in source and binary forms, with or without modification, 
+    are permitted provided that the following conditions are met:
+    
+    Redistributions of source code must retain the above copyright notice, this list 
+    of conditions and the following disclaimer.
+    
+    Redistributions in binary form must reproduce the above copyright notice, this 
+    list of conditions and the following disclaimer in the documentation and/or other 
+    materials provided with the distribution.
+    
+    Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors 
+    may be used to endorse or promote products derived from this software without 
+    specific prior written permission.
+    
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
+    IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
+    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+    OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 
+    IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
   Eclipse Public License, version 1.0: |
     Eclipse Public License - v 1.0
     
@@ -1233,7 +1356,105 @@
     
     This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
 
-  Indiana University Extreme! Lab Software License, vesion 1.2: |
+  Eclipse Public License, version 2.0: |
+    Eclipse Public License - v 2.0
+    
+    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+    
+    1. DEFINITIONS
+    
+    "Contribution" means:
+    
+    a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and
+    b) in the case of each subsequent Contributor:
+      i) changes to the Program, and
+      ii) additions to the Program;
+      
+    where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution "originates" from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works.
+    
+    "Contributor" means any person or entity that Distributes the Program.
+    
+    "Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+    
+    "Program" means the Contributions Distributed in accordance with this Agreement.
+    
+    "Recipient" means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors.
+    
+    "Derivative Works" shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.
+    
+    "Modified Works" shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof.
+    
+    "Distribute" means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy.
+    
+    "Source Code" means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files.
+    
+    "Secondary License" means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor.
+    
+    2. GRANT OF RIGHTS
+    
+    a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works.
+    b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+    c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+    d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+    e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3).
+    
+    3. REQUIREMENTS
+    
+    3.1 If a Contributor Distributes the Program in any form, then:
+    
+    a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and
+    b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license:
+      i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+      ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+      iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and
+      iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3.
+    
+    3.2 When the Program is Distributed as Source Code:
+    
+    a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and
+    b) a copy of this Agreement must be included with each copy of the Program.
+    
+    3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices.
+    
+    4. COMMERCIAL DISTRIBUTION
+    
+    Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+    
+    For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+    
+    5. NO WARRANTY
+    
+    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+    
+    6. DISCLAIMER OF LIABILITY
+    
+    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    
+    7. GENERAL
+    
+    If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+    
+    If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+    
+    All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+    
+    Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version.
+    
+    Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement.
+    
+    
+    Exhibit A – Form of Secondary Licenses Notice
+    
+    "This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}."
+    
+    Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses.
+    
+    If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.
+    
+    You may add additional accurate notices of copyright ownership.
+    
+
+  Indiana University Extreme! Lab Software License, version 1.2: |
     Indiana University Extreme! Lab Software License, Version 1.2
     
     Copyright (C) 2003 The Trustees of Indiana University.
