<!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="en" lang="en">
<head>
                            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>PLC4X &#x2013; Dependency Convergence</title>
    <script src="./js/jquery.slim.min.js" type="text/javascript"></script>
    <!--script src="./js/popper.min.js" type="javascript"></script-->
    <script src="./js/bootstrap.bundle.min.js" type="text/javascript"></script>
    <!-- The tooling for adding images and links to Apache events -->
    <script src="https://www.apachecon.com/event-images/snippet.js" type="text/javascript"></script>
    <!-- FontAwesome -->
    <link rel="stylesheet" href="./css/all.min.css" type="text/css"/>
    <!-- Bootstrap -->
    <link rel="stylesheet" href="./css/bootstrap.min.css" type="text/css"/>
    <!-- Some Maven Site defaults -->
    <link rel="stylesheet" href="./css/maven-base.css" type="text/css"/>
    <link rel="stylesheet" href="./css/maven-theme.css" type="text/css"/>
    <!-- The PLC4X version of a bootstrap theme -->
    <link rel="stylesheet" href="./css/themes/plc4x.css" type="text/css" id="pagestyle"/>
    <!-- A custom style for printing content -->
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print"/>

            <meta http-equiv="Content-Language" content="en"/>
            
</head>
<body class="composite">
<nav class="navbar navbar-light navbar-expand-md bg-faded justify-content-center border-bottom">
    <!--a href="/" class="navbar-brand d-flex w-50 mr-auto">Navbar 3</a-->
    <a href="https://plc4x.apache.org/" id="bannerLeft"><img src="images/apache_plc4x_logo_small.png"  alt="Apache PLC4X"/></a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar3">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="navbar-collapse collapse w-100" id="collapsingNavbar3">
        <ul class="navbar-nav w-100 justify-content-center">
                        <li class="nav-item active">
                            <a class="nav-link" href="./index.html">Home</a>
            </li>
                                                                                <li class="nav-item">
                                    <a class="nav-link" href="./users/index.html">Users</a>
                </li>
                                            <li class="nav-item">
                                    <a class="nav-link" href="./developers/index.html">Developers</a>
                </li>
                                            <li class="nav-item">
                                    <a class="nav-link" href="./apache/index.html">Apache</a>
                </li>
                    </ul>
        <ul class="nav navbar-nav ml-auto justify-content-end">
            <li class="nav-item row valign-middle">
                <a class="acevent" data-format="wide" data-mode="light" data-event="random" style="width:240px;height:60px;"></a>
            </li>
        </ul>
    </div>
</nav>
<div class="container-fluid">
    <div class="row h-100">
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                                                
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                                                
                                    
                                            
                                    
                                            
                                    
                                            
                                    
                                            
                                    
                                                                                    <main role="main" class="ml-sm-auto px-4 w-100 h-100">
            <section>
<h2><a name="Dependency_Convergence"></a>Dependency Convergence</h2>
<table border="0" class="bodyTable"><caption>
  <b>Legend:</b>
</caption>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="[Error]" /></td>
<td>At least one dependency has a differing version of the dependency or has SNAPSHOT dependencies.</td></tr></table><br />
<table border="0" class="bodyTable"><caption>
  <b>Statistics:</b>
</caption>
<tr class="b">
<th>Number of dependencies (NOD):</th>
<td>0</td></tr>
<tr class="a">
<th>Number of unique artifacts (NOA):</th>
<td>0</td></tr>
<tr class="b">
<th>Number of version-conflicting artifacts (NOC):</th>
<td>0</td></tr>
<tr class="a">
<th>Number of SNAPSHOT artifacts (NOS):</th>
<td>0</td></tr>
<tr class="b">
<th>Convergence (NOD/NOA):</th>
<td><img src="images/icon_error_sml.gif" alt="[Error]" />&#160;<b>0 %</b></td></tr>
<tr class="a">
<th>Ready for release (100% convergence and no SNAPSHOTS):</th>
<td><img src="images/icon_error_sml.gif" alt="[Error]" />&#160;<b>Error</b><br />You do not have 100% convergence.</td></tr></table></section><section>
<h3><a name="Dependencies_used_in_this_project"></a>Dependencies used in this project</h3></section>
        </main>
        <footer class="pt-4 my-md-5 pt-md-5 w-100 border-top">
            <div class="row justify-content-md-center" style="font-size: 13px">
                <div class="col col-6 text-center">
                                    Copyright &#169;      2017&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.<br/>
                    Apache PLC4X, PLC4X, Apache, the Apache feather logo, and the Apache PLC4X project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
                                        <br/><div style="text-align:center;">Home screen image taken from <a
                        href="https://flic.kr/p/chEftd">Flickr</a>, "Tesla Robot Dance" by Steve Jurvetson, licensed
                    under <a href="https://creativecommons.org/licenses/by/2.0/">CC BY 2.0 Generic</a>, image cropped
                    and blur effect added.</div>
                                </div>
            </div>
        </footer>
    </div>
</div>

<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="./js/jquery.slim.min.js"></script>
<script src="./js/popper.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script type="text/javascript">
    $('.carousel .carousel-item').each(function(){
        var next = $(this).next();
        if (!next.length) {
            next = $(this).siblings(':first');
        }
        next.children(':first-child').clone().appendTo($(this));

        for (let i = 0; i < 3; i++) {
            next=next.next();
            if (!next.length) {
                next = $(this).siblings(':first');
            }
            next.children(':first-child').clone().appendTo($(this));
        }
    });
</script>
</body>
</html>