<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 
        <base href="https://hibernate.atlassian.net"> 
        <title>Message Title</title> 
    </head> 
    <body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429"> 
        <table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5"> 
            <!-- header here --> 
            <tbody>
                <tr> 
                    <td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px"> 
                        <table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                                <tr> 
                                    <td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/557058%3A58fa1ced-171a-4c00-97e8-5d70d442cc4b?by=id&amp;sg=VKY%2FyE4BMfcMsTv5IGLd1kPPynU%3D&amp;d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYR-6.svg&amp;size=48&amp;s=48" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td> 
                                    <td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="yrodiere" style="color:#6c797f;; color: #3b73af; text-decoration: none" id="email_yrodiere" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A58fa1ced-171a-4c00-97e8-5d70d442cc4b"> Yoann Rodière </a> <strong>updated</strong> an issue </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px"> 
                        <table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate"> 
                            <tbody>
                                <tr> 
                                    <!-- there needs to be content in the cell for it to render in some clients --> 
                                    <td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff">&nbsp;</td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> 
                                        <table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <td class="page-title-pattern-first-line " style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/HSEARCH?atlOrigin=eyJpIjoiZjcwM2Q2MmFkYzhkNDAwYWI1MjVmOGY5ZmE1NmMwYWYiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Hibernate Search</a> / <a href="https://hibernate.atlassian.net/browse/HSEARCH-3551?atlOrigin=eyJpIjoiZjcwM2Q2MmFkYzhkNDAwYWI1MjVmOGY5ZmE1NmMwYWYiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-16a45c95-498c-41bb-a6b3-58b43e2ab132" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3551?atlOrigin=eyJpIjoiZjcwM2Q2MmFkYzhkNDAwYWI1MjVmOGY5ZmE1NmMwYWYiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">HSEARCH-3551</a> </td> 
                                                </tr> 
                                                <tr> 
                                                    <td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3551?atlOrigin=eyJpIjoiZjcwM2Q2MmFkYzhkNDAwYWI1MjVmOGY5ZmE1NmMwYWYiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Hibernate Search doesn't boot when declared as a dependency in a module-info.java</a> </span> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff"> 
                                        <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
                                            <tbody>
                                                <tr> 
                                                    <td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">When running an application in the modulepath, this application will declare dependencies to Hibernate Search and Hibernate ORM in its <tt>module-info.java</tt>. As a result, both Hibernate Search and Hibernate ORM will be automatically promoted to (automatic) modules and put in the modulepath.</p> <p style="margin: 10px 0 0">Since Hibernate Search and ORM are now modules, unfortunately they have to comply with all the module rules, even if they are just "automatic modules". This means no split packages (so far so good), but more crucially this means services must be declared in a <tt>module-info.java</tt>...</p> <p style="margin: 10px 0 0">Indeed, the service loader completely ignores <tt>META-INF/services</tt> when the service class is defined in a module; see <tt>java.util.ServiceLoader.LazyClassPathLookupIterator#hasNextService</tt>:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
<span class="code-keyword" style="color: #000091">if</span> (clazz.getModule().isNamed()) {
    <span class="code-comment" style="color: #808080">// ignore <span class="code-keyword" style="color: #000091; color: #808080">class </span><span class="code-keyword" style="color: #000091; color: #808080">if</span> in named module
</span>    <span class="code-keyword" style="color: #000091">continue</span>;
}
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">So only the other services iterator, <tt>ModuleServicesLookupIterator</tt>, is effective when looking for service providers defined in modules.</p> <p style="margin: 10px 0 0">Services providing and consumption in modules requires both the provider and user to declare the service:</p> 
                                                        <ul> 
                                                            <li>The service provider must add a <tt>provides &lt;service interface&gt; with &lt;service implementation class&gt;;</tt> clause to its <tt>module-info.java</tt></li> 
                                                            <li>The service consumer must add a <tt>uses &lt;service interface&gt;;</tt> clause to its <tt>module-info.java</tt>.</li> 
                                                        </ul> <p style="margin: 10px 0 0">Fortunately, <tt>provides</tt> directives are automatically added to the module descriptor of automatic modules based on service files from <tt>META-INF/services/*</tt>, as <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">explained here</a>.<br> I checked that in debug mode: it works perfectly in the case of Hibernate Search.</p> <p style="margin: 10px 0 0">Unfortunately, it seems we really cannot use a service from another module in an automatic module:</p> 
                                                        <ul> 
                                                            <li>On contrary to <tt>provides</tt> directives, <tt>uses</tt> directives are <b>not</b> automatically generated for automatic modules (how could they?)</li> 
                                                            <li>Automatic module are assumed to implicitly require every other module by default and expose implicitly all of their packages (<a href="https://openjdk.java.net/projects/jigsaw/spec/sotms/#automatic-modules" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">this page</a> tells you that much, though I couldn't find a more up-to-date source). However, they do not seem to <tt>use</tt> every service. <a href="https://stackoverflow.com/a/46742802/6692043" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">This SO answer</a> states "An automatic module is assumed allowed to use all services." but that doesn't seem to be true. Automatic modules can implicitly use all services <b>from the classpath</b> only.</li> 
                                                            <li>There are many options to add various directives to modules when starting the JVM: <tt>-<del>add-opens</del></tt>, <tt>-add-exports</tt>, <tt><del>add-reads</del></tt>, ... but no <tt>-add-uses</tt>.</li> 
                                                            <li>There are ways to add <tt>uses</tt> directives to a module at runtime, dynamically, from the module itself. But it is explicitly defined as a no-op for automatic modules. See <tt>java.lang.Module#addUses</tt>: "This method is a no-op when invoked on an unnamed module or an automatic module"</li> 
                                                            <li>I could not find out why, but <tt>java.lang.module.ModuleDescriptor.Builder#uses</tt>, the API to add a <tt>uses</tt> directive when building a module descriptor dynamically, throws an exception for automatic modules: <tt>throw new IllegalStateException("Automatic modules can not declare service dependences")</tt>.</li> 
                                                        </ul> <p style="margin: 10px 0 0">It really looks like, in order to solve this problem, we will have to add a <tt>module-info.java</tt> to Hibernate ORM, so that it correctly declares <tt>uses</tt> directives.</p> <p style="margin: 10px 0 0">Going further, <span class="jira-issue-macro" data-jira-key="HSEARCH-3274"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3274" class="jira-issue-macro-key issue-link" title="Expose fully defined (non-automatic) Java modules for consumption by users" style="color: #3b73af; text-decoration: none"> <img class="icon" src="https://hibernate.atlassian.net/secure/viewavatar?size=xsmall&amp;avatarId=12151&amp;avatarType=issuetype"> HSEARCH-3274 </a> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-current jira-macro-single-issue-export-pdf" style="background: #cccccc; border: 1px solid #cccccc; border-radius: 3px; color: #333333; display: inline-block; font-size: 11px; font-weight: bold; line-height: 99%; margin: 0; padding: 2px 5px; text-align: center; text-decoration: none; text-transform: uppercase; background-color: #ffffff; border-color: #cccccc; color: #333333" bgcolor="#ffffff">In Progress</span> </span> (the addition of a <tt>module-info.java</tt> to Hibernate Search) may also be necessary in order to make consumption of services from Hibernate Search work correctly (e.g. for <tt>ElasticsearchBeanConfigurer</tt> and such).</p> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand  wrapper-special-margin" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 10px; padding-bottom: 5px" bgcolor="#ffffff"> 
                                        <table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Change By:</th> 
                                                    <td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="yrodiere" style="color:#6c797f;; color: #3b73af; text-decoration: none" id="email_yrodiere" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A58fa1ced-171a-4c00-97e8-5d70d442cc4b"> Yoann Rodière </a> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand  issue-description-container" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 5px; padding-bottom: 10px" bgcolor="#ffffff"> 
                                        <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
                                            <tbody>
                                                <tr> 
                                                    <td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <span class="diffcontext">While working on HSEARCH-3550 and making our Java module integration tests more relevant, I stumbled upon a blocker: when Hibernate Search is actually declared as a dependency of a module and when this module is actually run in the modulepath, Hibernate Search doesn't boot... It looks like declared services are not found by ORM, so both the integrator and the "Hibernate Search service context" do not exist as far as ORM is concerned.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>A possible explanation below.<br><br>When running an application in the modulepath, this application will declare dependencies to Hibernate Search and Hibernate ORM in its {{module-info.java}}. As a result, both Hibernate Search and Hibernate ORM will be automatically promoted to (automatic) modules and put in the modulepath.<br><br>Since Hibernate Search and ORM are now modules, unfortunately they have to comply with all the module rules, even if they are just "automatic modules". This means no split packages (so far so good), but more crucially this means services must be declared in a {{module-info.java}}...<br><br>This sounds a bit strange, as it basically means automatic modules cannot provide services: classpath JARs can, and full modules can, but not automatic modules since they would need a {{module-info.java}} and therefore wouldn't be automatic modules anymore.<br><br>But as far as I can tell, it's exactly how it's intended to work. While diving in the code, I was able to determine that Hibernate Search services were being ignored because of this code in {{java.util.ServiceLoader.LazyClassPathLookupIterator#hasNextService}}:<br><br>{code}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (clazz.getModule().isNamed()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ignore class if in named module<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>{code}<br><br>Which, well, seems pretty clear to me.<br><br>We should investigate a bit more, but if this really turns out to be true, we will need to implement HSEARCH-3274 in order for Hibernate Search to be really usable in an application that declares a {{module-info.jar}}.</span> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "EmailMessage",
  "description": "View Issue",
  "potentialAction": {
    "@type": "ViewAction",
        "target": "https://hibernate.atlassian.net/browse/HSEARCH-3551?inbox=true&focusedCommentId=105118&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-105118",
    "name": "View Comment"
      },
  "publisher": {
    "@type": "Organization",
    "name": "Atlassian",
    "url": "https://www.atlassian.com"
  }
}
</script> 
                                        <table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> 
                                            <tbody>
                                                <tr> 
                                                    <td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0"> 
                                                        <table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                                            <tbody>
                                                                <tr> 
                                                                    <td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3551#add-comment?atlOrigin=eyJpIjoiZjcwM2Q2MmFkYzhkNDAwYWI1MjVmOGY5ZmE1NmMwYWYiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-203d1664-fd72-4d62-846d-0a242ac6dbcf" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td> 
                                                                    <td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3551#add-comment?atlOrigin=eyJpIjoiZjcwM2Q2MmFkYzhkNDAwYWI1MjVmOGY5ZmE1NmMwYWYiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td> 
                                                                </tr> 
                                                            </tbody>
                                                        </table> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <!-- there needs to be content in the cell for it to render in some clients --> 
                                <tr> 
                                    <td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff">&nbsp;</td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px"> 
                        <table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                                <tr> 
                                    <td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a> 
                                        <hr> </td> 
                                </tr> 
                                <tr> 
                                    <td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100102-<span title="0a3a818834dbaa7d0dba4d2aae431cf53e92b2b0" data-commit-id="0a3a818834dbaa7d0dba4d2aae431cf53e92b2b0}">sha1:0a3a818</span>)</span> </td> 
                                    <td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top"> 
                                        <table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-e5793ddf-c1ea-4f73-9856-959648efd101" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
            </tbody>
        </table>   
    
<img border="0" width="1" height="1" alt="" src="http://atlassian.et.e.sparkpost.com/q/Z6XEy0WDUHqVbYlts9g4Kw~~/AAAAAQA~/RgRev-R9PlcLYXRsYXNzaWFudXNCCgAA_bDeXJUc8AhSIGhpYmVybmF0ZS1pc3N1ZXNAbGlzdHMuamJvc3Mub3JnWAQAAAAE">
</body>
</html>