<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>189154</bug_id>
          
          <creation_ts>2018-08-30 08:47:17 -0700</creation_ts>
          <short_desc>The width of an empty or nullptr TextRun should be zero</short_desc>
          <delta_ts>2018-09-05 21:08:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455227</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 08:47:17 -0700</bug_when>
    <thetext>A default initialized or null string wraps a nullptr StringImpl. Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check before using m_impl, but is8Bit() does not.

This patch adds a check in the is8Bit() implementation to be consistent with other methods, and to address a small number of crashes observed in testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455236</commentid>
    <comment_count>1</comment_count>
      <attachid>348501</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 09:02:11 -0700</bug_when>
    <thetext>Created attachment 348501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455256</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 10:04:26 -0700</bug_when>
    <thetext>Another possible fix could be this:

diff --git a/Source/WebCore/platform/graphics/FontCascade.cpp b/Source/WebCore/platform/graphics/FontCascade.cpp
index 7648f5bf269..245a418731b 100644
--- a/Source/WebCore/platform/graphics/FontCascade.cpp
+++ b/Source/WebCore/platform/graphics/FontCascade.cpp
@@ -604,6 +604,9 @@ FontCascade::CodePath FontCascade::codePath(const TextRun&amp; run, std::optional&lt;un
     if (s_codePath != Auto)
         return s_codePath;
 
+    if (!run.length())
+        return Simple;
+
 #if !USE(FREETYPE)
     // FIXME: Use the fast code path once it handles partial runs with kerning and ligatures. See http://webkit.org/b/100050
     if ((enableKerning() || requiresShaping()) &amp;&amp; (from.value_or(0) || to.value_or(run.length()) != run.length()))

However, I think there are enough unchecked &apos;is8Bit()&apos; calls in WebKit that it makes sense to handle it in WTFString.

But perhaps I should do both changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455257</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 10:04:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/43685926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455258</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2018-08-30 10:14:24 -0700</bug_when>
    <thetext>Asking whether a null string is 8-bit or not doesn&apos;t make sense - it&apos;s neither!

I think checking for a null run.length() is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455259</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 10:15:50 -0700</bug_when>
    <thetext>(In reply to Anders Carlsson from comment #4)
&gt; Asking whether a null string is 8-bit or not doesn&apos;t make sense - it&apos;s
&gt; neither!
&gt; 
&gt; I think checking for a null run.length() is better.

Sounds good. I do worry that other calls (such as isAllASCII()) have similar weirdness issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455267</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-08-30 10:29:52 -0700</bug_when>
    <thetext>(In reply to Anders Carlsson from comment #4)
&gt; Asking whether a null string is 8-bit or not doesn&apos;t make sense - it&apos;s
&gt; neither!
&gt; 
&gt; I think checking for a null run.length() is better.
I agree. This check would probably just mask flawed code on the caller side.
-and that begs the question of why you ask for the code path on an empty run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455273</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 10:39:28 -0700</bug_when>
    <thetext>It looks like there are a lot of places where is8Bit() is not nullptr checked, even in files where it is checked in other methods.

Should I take a pass through all of these and add the necessary checks to make them consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455287</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 11:00:29 -0700</bug_when>
    <thetext>Looking into this a bit further, it&apos;s a simpler/less risky change to just recognize that the width of an empty/null TextRun is always zero, rather than attempt to compute this from font data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455292</commentid>
    <comment_count>9</comment_count>
      <attachid>348509</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 11:07:18 -0700</bug_when>
    <thetext>Created attachment 348509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455307</commentid>
    <comment_count>10</comment_count>
      <attachid>348509</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-08-30 11:19:17 -0700</bug_when>
    <thetext>Comment on attachment 348509
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348509&amp;action=review

&gt; Source/WTF/wtf/text/WTFString.h:157
&gt; +    bool is8Bit() const { return m_impl &amp;&amp; m_impl-&gt;is8Bit(); }

Is this just a leftover from the previous candidate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455314</commentid>
    <comment_count>11</comment_count>
      <attachid>348518</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 11:26:21 -0700</bug_when>
    <thetext>Created attachment 348518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455353</commentid>
    <comment_count>12</comment_count>
      <attachid>348518</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-30 12:37:45 -0700</bug_when>
    <thetext>Comment on attachment 348518
Patch

Clearing flags on attachment: 348518

Committed r235516: &lt;https://trac.webkit.org/changeset/235516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455354</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-30 12:37:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455395</commentid>
    <comment_count>14</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-08-30 13:54:40 -0700</bug_when>
    <thetext>Reverted r235516 for reason:

Caused 50 Crashes on Sierra

Committed r235523: &lt;https://trac.webkit.org/changeset/235523&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455497</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-30 18:23:31 -0700</bug_when>
    <thetext>I’m annoyed having String::is8Bit be a &quot;don’t touch this if null&quot; function; it makes it really inconvenient to write code with a special case for 8-bit and another special case for 16-bit; you always have to special case the empty string, which seems like overkill for me. Requiring we always write a special case for the empty string is super-annoying.

If we want to take the position that a null string is neither 8-bit nor 16-bit, then I suggest we consider adding an is16Bit function as well as the is8Bit function and have both return false for null strings. Or, since processing with 8-bit is perhaps more efficient, maybe the function should be something with semantics more like canUse8Bit and then it can return true for the null string or mayRequire16Bit or whatever?

I really don’t want to have WTF::String functions that you can’t call on a null string. I think this is currently the *only* one with this behavior and it bothers me quite a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455781</commentid>
    <comment_count>16</comment_count>
      <attachid>348655</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-31 11:23:01 -0700</bug_when>
    <thetext>Created attachment 348655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455792</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-31 11:55:23 -0700</bug_when>
    <thetext>This patch goes back to my initial nullptr check, as Darin suggested. However, it looks like bypassing work when we have a nullptr string is useful, so I&apos;ve fixed the three places where my assertion could fire during layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455882</commentid>
    <comment_count>18</comment_count>
      <attachid>348655</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-08-31 16:09:09 -0700</bug_when>
    <thetext>Comment on attachment 348655
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348655&amp;action=review

&gt; Source/WebCore/rendering/RenderText.cpp:1246
&gt; +    if (!m_text.isEmpty()) {

computeCanUseSimplifiedTextMeasuring could actually early return with true if it has no content.

    auto&amp; font = style().fontCascade();
    if (font.wordSpacing() || font.letterSpacing())
        return false;

    if (m_text.isEmpty()
        return true;

&gt; Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp:108
&gt; +    if (text.length()) {
&gt; +        m_isComplexText = scaledFont.codePath(m_run) == FontCascade::Complex;
&gt;  
&gt; -    if (m_isComplexText)
&gt; -        m_simpleWidthIterator = nullptr;
&gt; -    else
&gt; -        m_simpleWidthIterator = std::make_unique&lt;WidthIterator&gt;(&amp;scaledFont, m_run);
&gt; +        if (m_isComplexText)
&gt; +            m_simpleWidthIterator = nullptr;
&gt; +        else
&gt; +            m_simpleWidthIterator = std::make_unique&lt;WidthIterator&gt;(&amp;scaledFont, m_run);
&gt; +    }

In here you need to re-create the m_simpleWidthIterator with the new m_run (to avoid UAF)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455913</commentid>
    <comment_count>19</comment_count>
      <attachid>348655</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-31 17:34:36 -0700</bug_when>
    <thetext>Comment on attachment 348655
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348655&amp;action=review

&gt; Source/WebCore/platform/graphics/ComplexTextController.cpp:73
&gt; +        if (!text.length())

Does this handle combined text?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455960</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-01 09:01:40 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #19)
&gt; Comment on attachment 348655 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348655&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ComplexTextController.cpp:73
&gt; &gt; +        if (!text.length())
&gt; 
&gt; Does this handle combined text?

Disregard this remark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455965</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-01 09:27:58 -0700</bug_when>
    <thetext>According to the inline comment for RenderText::text(), &lt;https://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderText.h?rev=229147#L65&gt;, it can never hold a null string. Is this comment still correct? Unless the empty string is common and has performance implications, can we make use of the fact that RenderText::text() is never a null string to reduce the need to add checks for the empty string. In particular, can we make use of this fact to either change to checking for a null string, which is the problematic case from my understanding, or remove some checks entirely from the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455966</commentid>
    <comment_count>22</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-01 09:51:43 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #21)
&gt; According to the inline comment for RenderText::text(),
&gt; &lt;https://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderText.
&gt; h?rev=229147#L65&gt;, it can never hold a null string. Is this comment still
&gt; correct? Unless the empty string is common and has performance implications,
&gt; can we make use of the fact that RenderText::text() is never a null string
&gt; to reduce the need to add checks for the empty string. In particular, can we
&gt; make use of this fact to either change to checking for a null string, which
&gt; is the problematic case from my understanding, or remove some checks
&gt; entirely from the patch?

I do not think that comment in RenderText is correct. My new assertion fired in this code while running our layout tests, indicating that this invariant is not true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456077</commentid>
    <comment_count>23</comment_count>
      <attachid>348655</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-02 11:58:01 -0700</bug_when>
    <thetext>Comment on attachment 348655
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348655&amp;action=review

&gt;&gt; Source/WebCore/rendering/RenderText.cpp:1246
&gt;&gt; +    if (!m_text.isEmpty()) {
&gt; 
&gt; computeCanUseSimplifiedTextMeasuring could actually early return with true if it has no content.
&gt; 
&gt;     auto&amp; font = style().fontCascade();
&gt;     if (font.wordSpacing() || font.letterSpacing())
&gt;         return false;
&gt; 
&gt;     if (m_text.isEmpty()
&gt;         return true;

Done.

&gt;&gt; Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp:108
&gt;&gt; +    }
&gt; 
&gt; In here you need to re-create the m_simpleWidthIterator with the new m_run (to avoid UAF)

Do you mean in the case of a nullptr RenderSVGInlineText string? I&apos;ll post a new patch for you to give final approval to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456079</commentid>
    <comment_count>24</comment_count>
      <attachid>348743</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-02 12:02:02 -0700</bug_when>
    <thetext>Created attachment 348743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456084</commentid>
    <comment_count>25</comment_count>
      <attachid>348743</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-02 12:20:12 -0700</bug_when>
    <thetext>Comment on attachment 348743
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348743&amp;action=review

&gt; Source/WebCore/ChangeLog:12
&gt; +        This patch recognizes that an empty TextRun should always produce a zero width, rather than
&gt; +        attempt to compute this value from font data.

I am a bit puzzled by our decision making here.

This kind of change, adding checks for empty text runs with early exits, is fine with me if we think that empty text runs are common and deserve to be optimized. If empty text runs should almost never occur, and they only occasionally do, and the performance in that case is not important to carefully optimize, then I think it would be fine to omit empty string and zero length special cases and let general purpose code run even though it will do extra work. I suspect the only reason the general case code didn’t run successfully before was the unguarded is8Bit checks.

&gt; Source/WTF/wtf/text/WTFString.h:157
&gt; -    bool is8Bit() const { return m_impl-&gt;is8Bit(); }
&gt; +    bool is8Bit() const { return !m_impl || m_impl-&gt;is8Bit(); }

I suggest landing this separately. I do want this change but I don’t think it’s needed to resolve the problem we are solving here if we are also going to add empty string and zero length checks in all these places.

Alternatively we could do *just* this one and not add all those special cases to the text code like the original proposal here.

But doing both seems a little strange to me.

I’d also like to hear at least a little more about what Anders thinks about the design of WTF::String and this function. I don’t want my opinion to override his judgement.

Also, if we do remove this, then we can follow up by removing quite a few null checks if we add this one here; should audit for null, empty, and zero length checks that aren’t beneficial any more once we change this. Like the null check in String::sizeInBytes just below this. Maybe the compiler will remove them for us, but it also seems worthwhile to have the code be less complex and repetitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456089</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-02 12:43:46 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #22)
&gt; (In reply to Daniel Bates from comment #21)
&gt; &gt; According to the inline comment for RenderText::text(),
&gt; &gt; &lt;https://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderText.
&gt; &gt; h?rev=229147#L65&gt;, it can never hold a null string. Is this comment still
&gt; &gt; correct? Unless the empty string is common and has performance implications,
&gt; &gt; can we make use of the fact that RenderText::text() is never a null string
&gt; &gt; to reduce the need to add checks for the empty string. In particular, can we
&gt; &gt; make use of this fact to either change to checking for a null string, which
&gt; &gt; is the problematic case from my understanding, or remove some checks
&gt; &gt; entirely from the patch?
&gt; 
&gt; I do not think that comment in RenderText is correct. My new assertion fired
&gt; in this code while running our layout tests, indicating that this invariant
&gt; is not true.


Are you saying you added an ASSERT(m_text.impl()) to RenderText::text() and it fired when you ran the layout tests? If not, can you please elaborate on the assertion you added and where you added it? If the comment in RenderText.h for text() is incorrect then can we please fix text() up and/or update the comment. Leaving the comment is confusing in the face of your proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456311</commentid>
    <comment_count>27</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-04 08:35:13 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #26)
&gt; Are you saying you added an ASSERT(m_text.impl()) to RenderText::text() and
&gt; it fired when you ran the layout tests? If not, can you please elaborate on
&gt; the assertion you added and where you added it? If the comment in
&gt; RenderText.h for text() is incorrect then can we please fix text() up and/or
&gt; update the comment. Leaving the comment is confusing in the face of your
&gt; proposed change.

No.

I added the assertion ASSERT(run.length()) to FontCascade::codePath, ran layout tests, and found that assertions fired for the following methods:

RenderText::computeCanUseSimplifiedTextMeasuring
SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer
TextLayout::isNeeded

I don&apos;t think the claim that RenderText&apos;s m_text member can never be null is correct. It is checked for null in the constructor, but the m_text member can be changed dynamically through various method calls, so it&apos;s not at all clear that this claim is true.

I&apos;ll revise the patch to remove that comment.

Alternatively, we could assert for non-null String in the setter method, and fix the places where a null value is being added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456366</commentid>
    <comment_count>28</comment_count>
      <attachid>348825</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-04 10:50:44 -0700</bug_when>
    <thetext>Created attachment 348825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456368</commentid>
    <comment_count>29</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-04 10:55:23 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #27)
&gt; I added the assertion ASSERT(run.length()) to FontCascade::codePath, ran
&gt; layout tests, and found that assertions fired for the following methods:

I spoke with this in more detail with Dan, who pointed out that a zero-length TextRun is not the same thing as a TextRun with a nullptr String, and that the assertion firing in the empty string case did not constitute a violation of the non-nullability of the RenderText.

I agree.

I have revised the patch to remove the assertion from FontCascade::codePath, since it is not useful.

I have left the checks for empty strings because I do think empty strings occur frequently enough that avoiding the work of constructing objects, making assessments of style and other characteristics, and performing calculations that always yield zero is a waste of energy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456390</commentid>
    <comment_count>30</comment_count>
      <attachid>348825</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-04 11:32:25 -0700</bug_when>
    <thetext>Comment on attachment 348825
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348825&amp;action=review

&gt; Source/WebCore/platform/graphics/ComplexTextController.cpp:75
&gt; +        if (!text.length())
&gt; +            return false;
&gt; +

This is unnecessary because RenderText::text() can never be the null string, RenderBlock::constructTextRun() knows how to handle the empty string and do not believe this function is hot enough to warrant special casing the empty string.

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:345
&gt; +    if (!run.length())
&gt; +        return 0;

I do not get the impression that a run with a zero length is the root problem.

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:393
&gt; +    if (!run.length())
&gt; +        return 0;
&gt; +

I do not get the impression that a run with a zero length is the root problem.

&gt; Source/WebCore/rendering/RenderText.cpp:1246
&gt; +    if (m_text.isEmpty())
&gt; +        return false;

This is not necessary because m_text cannot be the null string and TextRun knows how to handle empty and non-empty strings.

&gt; Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp:101
&gt; +    m_isComplexText = text.length() &amp;&amp; scaledFont.codePath(m_run) == FontCascade::Complex;

Ditto.

(Notice that RenderSVGInlineText extends RenderText).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456405</commentid>
    <comment_count>31</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-04 12:03:15 -0700</bug_when>
    <thetext>I am unclear how it makes sense for TextRun to ever hold a null string. I suggest we fix this issue to fix this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456716</commentid>
    <comment_count>32</comment_count>
      <attachid>348925</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-05 08:46:31 -0700</bug_when>
    <thetext>Created attachment 348925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456826</commentid>
    <comment_count>33</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-05 12:53:16 -0700</bug_when>
    <thetext>I added some logging, and determined that on common web pages we hit the zero-length string code path about 1:50 times through the width measurement. Seems common enough to warrant special casing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456987</commentid>
    <comment_count>34</comment_count>
      <attachid>348925</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-05 21:07:59 -0700</bug_when>
    <thetext>Comment on attachment 348925
Patch

Clearing flags on attachment: 348925

Committed r235721: &lt;https://trac.webkit.org/changeset/235721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456988</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-05 21:08:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348501</attachid>
            <date>2018-08-30 09:02:11 -0700</date>
            <delta_ts>2018-08-30 11:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180830090211.patch</filename>
            <type>text/plain</type>
            <size>3713</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyZjFlZmExOWZhNTg0NDZiODBkNjI0
NGJkYmQ5NWFlZDkxYmFjYTUuLmQ4NjU0YjU3NWY4NjAxMjAwNTBkZmQxNzlmZmJmNGE1M2VhMjYx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMDgtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG51bGxwdHIgY2hlY2sgdG8gU3RyaW5nOjpp
czhCaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzY4NTkyNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0IGFjY2Vzc29ycyBpbiBXVEZT
dHJpbmcuY3BwLCBzdWNoIGFzIGlzQWxsQVNDSUkoKSwgaGFzaCgpLCBldGMuLCBwZXJmb3JtIGEg
bnVsbHB0ciBjaGVjaworICAgICAgICBiZWZvcmUgdXNpbmcgbV9pbXBsLCBidXQgaXM4Qml0KCkg
ZG9lcyBub3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGlzOEJp
dCgpIGltcGxlbWVudGF0aW9uIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBtZXRob2RzLAor
ICAgICAgICBhbmQgdG8gYWRkcmVzcyBhIHNtYWxsIG51bWJlciBvZiBjcmFzaGVzIG9ic2VydmVk
IGluIHRlc3RpbmcuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRy
dW4uaHRtbAorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6
OlN0cmluZzo6aXM4Qml0IGNvbnN0KToKKwogMjAxOC0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHl1
c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFNocmluayBzaXplIG9mIFhNTEh0
dHBSZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiMDhiZTUzMGFmNDYzZjE0OWFh
YTgzN2U2ZmMwZjcyMDExYmViMzQ0Li5mYjE4NDI4YTVlYjM4NzMyNzhlZjUwNzgwOGZhOTBiOGU2
OTA0OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJuIGNoYXJhY3RlcnM4KCkgb3IgY2hhcmFjdGVyczE2KCkgZGVwZW5k
aW5nIG9uIENoYXJhY3RlclR5cGUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0OwogCi0gICAgYm9vbCBp
czhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9CisgICAgYm9vbCBpczhC
aXQoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXM4Qml0KCk7IH0KIAogICAg
IHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5s
ZW5ndGgoKSAqIChpczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKSA6IDA7
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGNkMTJjOGQ3N2ZhYmNiOWQzOTJjODY1YzMzY2U2ZTNjYWMxMWQ1NGMuLjQ1
MTczMmU2ZWU2YWNmZDhjNzRiYzUwNzQzYzgyNDJjMGQ0ZDY2MjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxOC0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgbnVsbHB0ciBjaGVjayB0byBTdHJpbmc6OmlzOEJpdCgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQzNjg1OTI2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1s
OiBBZGRlZC4KKwogMjAxOC0wOC0yNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgZmFzdC9ldmVudHMvZGJsY2xpY2stZXZlbnQtZ2V0
TW9kaWZpZXJTdGF0ZS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWQ4
Yzg5MjhlZTM3ZGJhYWRmYTE0OGIzZGM3ZjExMTE4MWIzYmM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSBudWxsIHRleHQgcnVuIGRv
ZXNuJ3QgdHJpZ2dlciBhIGNyYXNoLiBJdCBwYXNzZXMgaWYgaXQgbG9hZHMgd2l0aG91dCBjcmFz
aGluZy4KKworICAgICAgICAKKyAgICAgICAgCisgICAgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNDU5MDBkYmZlODVi
NWI3N2FmZjcxNzFjOGNiN2NhYzc5ZjFjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8aGVhZD4KKzxib2R5Pgor
ICAgIDxwPlRoaXMgdGVzdCBjb25maXJtcyB0aGF0IGEgbnVsbCB0ZXh0IHJ1biBkb2Vzbid0IHRy
aWdnZXIgYSBjcmFzaC4gSXQgcGFzc2VzIGlmIGl0IGxvYWRzIHdpdGhvdXQgY3Jhc2hpbmcuPC9w
PgorICAgIDxwcmUgaWQ9InByZV90YWciIGRpcj0iUlRMIiA+CisgICAgICAgIDxzdHlsZSBvbmxv
YWQ9InByZV90YWcuYXBwZW5kQ2hpbGQobWV0ZXJfdGFnKSIvPjwvc3R5bGU+CisgICAgICAgIDxz
ZWxlY3QgbXVsdGlwbGU9Im11bHRpcGxlIj4KKyAgICAgICAgICAgIDxvcHRncm91cC8+CisgICAg
ICAgIDwvc2VsZWN0PgorICAgIDwvcHJlPgorICAgIDxsYWJlbD4KKyAgICAgICAgPG1ldGVyIGlk
PSJtZXRlcl90YWciPgorICAgIDwvbGFiZWw+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348509</attachid>
            <date>2018-08-30 11:07:18 -0700</date>
            <delta_ts>2018-08-30 11:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180830110717.patch</filename>
            <type>text/plain</type>
            <size>5440</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc4MWE1MzU1MjZiZWE5
NWQzOGIxODVmNDU5YjNmMWQwYTgxMmI1OS4uOWRhNWExNTYxZWM2ZTU5ZGU3NTc5MjU1MWVkMTA1
MGIyZGU2M2MzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMwICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSB3aWR0aCBvZiBh
IG51bGxwdHIgVGV4dFJ1biBzaG91bGQgYmUgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MzY4NTkyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiBhIHBhZ2UgaGFzIGFuIGVtcHR5IFRleHRSdW4gYW5kIGF0dGVtcHRzIHRvIHBhaW50IGl0
IHdlIGNhbiBjcmFzaCB3aXRoIGEgbnVsbHB0ci4KKworICAgICAgICBUaGlzIHBhdGNoIHJlY29n
bml6ZXMgdGhhdCBhbiBlbXB0eSBUZXh0UnVuIHNob3VsZCBhbHdheXMgcHJvZHVjZSBhIHplcm8g
d2lkdGgsIHJhdGhlciB0aGFuCisgICAgICAgIGF0dGVtcHQgdG8gY29tcHV0ZSB0aGlzIHZhbHVl
IGZyb20gZm9udCBkYXRhLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9udWxsLXN0cmluZy10
ZXh0cnVuLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlIGNvbnN0
KTogQW4gZW1wdHkgVGV4dFJ1biBoYXMgemVybyB3aWR0aC4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjp3aWR0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmNvZGVQYXRoIGNvbnN0KTogQVNTRVJUIHRoYXQgdGhlIFRleHRSdW4gaXMgbm9uLWVt
cHR5LgorCiAyMDE4LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IElPU01BQyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
aW5kZXggYjA4YmU1MzBhZjQ2M2YxNDlhYWE4MzdlNmZjMGY3MjAxMWJlYjM0NC4uMzYyODZjYThi
NDg0NWMwNTJmY2U2NjE3NjJiYjFiYTU0MDk1ZGNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBjaGFyYWN0ZXJzOCgp
IG9yIGNoYXJhY3RlcnMxNigpIGRlcGVuZGluZyBvbiBDaGFyYWN0ZXJUeXBlLgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMoKSBjb25zdDsKIAotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5p
czhCaXQoKTsgfQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIG1f
aW1wbC0+aXM4Qml0KCk7IH0KIAogICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNpemVvZihMQ2hh
cikgOiBzaXplb2YoVUNoYXIpKSA6IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDc2NDhmNWJmMjY5M2JlZTI2ZjA1OThl
Y2ViZmZhZjFhYzIzZDA0MmMuLjJmYmQwMDYxYmZmMzJmZjEwNWRjNWM0YjVmZTM3ODFiNTA3ZTg4
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAKQEAgLTM0MSw2ICszNDEsOSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRS
YW5nZShjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgQVNT
RVJUKGZyb20gPD0gdG8pOwogICAgIEFTU0VSVCh0byA8PSBydW4ubGVuZ3RoKCkpOwogCisgICAg
aWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgZmxvYXQgb2Zmc2V0
QmVmb3JlUmFuZ2UgPSAwOwogICAgIGZsb2F0IG9mZnNldEFmdGVyUmFuZ2UgPSAwOwogICAgIGZs
b2F0IHRvdGFsV2lkdGggPSAwOwpAQCAtMzg1LDYgKzM4OCw5IEBAIGZsb2F0IEZvbnRDYXNjYWRl
Ojp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQKIAogZmxvYXQgRm9udENhc2NhZGU6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFz
aFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3Zl
cmZsb3cpIGNvbnN0CiB7CisgICAgaWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAw
OworCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgaWYg
KGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkgewogICAgICAgICAvLyBUaGUgY29tcGxleCBwYXRo
IGlzIG1vcmUgcmVzdHJpY3RpdmUgYWJvdXQgcmV0dXJuaW5nIGZhbGxiYWNrIGZvbnRzIHRoYW4g
dGhlIHNpbXBsZSBwYXRoLCBzbyB3ZSBuZWVkIGFuIGV4cGxpY2l0IHRlc3QgdG8gbWFrZSB0aGVp
ciBiZWhhdmlvcnMgbWF0Y2guCkBAIC02MDQsNiArNjEwLDggQEAgRm9udENhc2NhZGU6OkNvZGVQ
YXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIHN0ZDo6b3B0aW9u
YWw8dW4KICAgICBpZiAoc19jb2RlUGF0aCAhPSBBdXRvKQogICAgICAgICByZXR1cm4gc19jb2Rl
UGF0aDsKIAorICAgIEFTU0VSVChydW4ubGVuZ3RoKCkpOworCiAjaWYgIVVTRShGUkVFVFlQRSkK
ICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFy
dGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5v
cmcvYi8xMDAwNTAKICAgICBpZiAoKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmco
KSkgJiYgKGZyb20udmFsdWVfb3IoMCkgfHwgdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKSAhPSBy
dW4ubGVuZ3RoKCkpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNkMTJjOGQ3N2ZhYmNiOWQzOTJjODY1YzMzY2U2ZTNjYWMx
MWQ1NGMuLmU2NGMxNDlkYzMwY2RiOTFhMTkwN2JkNTQzNDkxMzY4NjEwNDQ3MjYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxOC0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBUaGUgd2lkdGggb2YgYSBudWxscHRyIFRleHRSdW4gc2hvdWxkIGJl
IHplcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
OTE1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDM2ODU5MjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3RleHQvbnVsbC1zdHJpbmct
dGV4dHJ1bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9udWxsLXN0
cmluZy10ZXh0cnVuLmh0bWw6IEFkZGVkLgorCiAyMDE4LTA4LTI3ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBmYXN0L2V2ZW50cy9k
YmxjbGljay1ldmVudC1nZXRNb2RpZmllclN0YXRlLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk5ZDhjODkyOGVlMzdkYmFhZGZhMTQ4YjNkYzdmMTExMTgxYjNiYzQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3QgY29uZmlybXMgdGhhdCBh
IG51bGwgdGV4dCBydW4gZG9lc24ndCB0cmlnZ2VyIGEgY3Jhc2guIEl0IHBhc3NlcyBpZiBpdCBs
b2FkcyB3aXRob3V0IGNyYXNoaW5nLgorCisgICAgICAgIAorICAgICAgICAKKyAgICAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjE0NTkwMGRiZmU4NWI1Yjc3YWZmNzE3MWM4Y2I3Y2FjNzlmMWM0MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwKQEAg
LTAsMCArMSwxOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4K
KzxoZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSBudWxsIHRl
eHQgcnVuIGRvZXNuJ3QgdHJpZ2dlciBhIGNyYXNoLiBJdCBwYXNzZXMgaWYgaXQgbG9hZHMgd2l0
aG91dCBjcmFzaGluZy48L3A+CisgICAgPHByZSBpZD0icHJlX3RhZyIgZGlyPSJSVEwiID4KKyAg
ICAgICAgPHN0eWxlIG9ubG9hZD0icHJlX3RhZy5hcHBlbmRDaGlsZChtZXRlcl90YWcpIi8+PC9z
dHlsZT4KKyAgICAgICAgPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiPgorICAgICAgICAgICAg
PG9wdGdyb3VwLz4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAgPC9wcmU+CisgICAgPGxhYmVsPgor
ICAgICAgICA8bWV0ZXIgaWQ9Im1ldGVyX3RhZyI+CisgICAgPC9sYWJlbD4KKzwvYm9keT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348518</attachid>
            <date>2018-08-30 11:26:21 -0700</date>
            <delta_ts>2018-08-31 11:22:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180830112620.patch</filename>
            <type>text/plain</type>
            <size>4762</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc4MWE1MzU1MjZiZWE5
NWQzOGIxODVmNDU5YjNmMWQwYTgxMmI1OS4uOWRhNWExNTYxZWM2ZTU5ZGU3NTc5MjU1MWVkMTA1
MGIyZGU2M2MzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMwICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSB3aWR0aCBvZiBh
IG51bGxwdHIgVGV4dFJ1biBzaG91bGQgYmUgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MzY4NTkyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiBhIHBhZ2UgaGFzIGFuIGVtcHR5IFRleHRSdW4gYW5kIGF0dGVtcHRzIHRvIHBhaW50IGl0
IHdlIGNhbiBjcmFzaCB3aXRoIGEgbnVsbHB0ci4KKworICAgICAgICBUaGlzIHBhdGNoIHJlY29n
bml6ZXMgdGhhdCBhbiBlbXB0eSBUZXh0UnVuIHNob3VsZCBhbHdheXMgcHJvZHVjZSBhIHplcm8g
d2lkdGgsIHJhdGhlciB0aGFuCisgICAgICAgIGF0dGVtcHQgdG8gY29tcHV0ZSB0aGlzIHZhbHVl
IGZyb20gZm9udCBkYXRhLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9udWxsLXN0cmluZy10
ZXh0cnVuLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlIGNvbnN0
KTogQW4gZW1wdHkgVGV4dFJ1biBoYXMgemVybyB3aWR0aC4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjp3aWR0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmNvZGVQYXRoIGNvbnN0KTogQVNTRVJUIHRoYXQgdGhlIFRleHRSdW4gaXMgbm9uLWVt
cHR5LgorCiAyMDE4LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IElPU01BQyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDc2NDhmNWJmMjY5M2JlZTI2
ZjA1OThlY2ViZmZhZjFhYzIzZDA0MmMuLjJmYmQwMDYxYmZmMzJmZjEwNWRjNWM0YjVmZTM3ODFi
NTA3ZTg4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKQEAgLTM0MSw2ICszNDEsOSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhP
ZlRleHRSYW5nZShjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAg
ICAgQVNTRVJUKGZyb20gPD0gdG8pOwogICAgIEFTU0VSVCh0byA8PSBydW4ubGVuZ3RoKCkpOwog
CisgICAgaWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgZmxvYXQg
b2Zmc2V0QmVmb3JlUmFuZ2UgPSAwOwogICAgIGZsb2F0IG9mZnNldEFmdGVyUmFuZ2UgPSAwOwog
ICAgIGZsb2F0IHRvdGFsV2lkdGggPSAwOwpAQCAtMzg1LDYgKzM4OCw5IEBAIGZsb2F0IEZvbnRD
YXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQKIAogZmxvYXQgRm9udENhc2NhZGU6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1
biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGds
eXBoT3ZlcmZsb3cpIGNvbnN0CiB7CisgICAgaWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAg
ICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkgewogICAgICAgICAvLyBUaGUgY29tcGxl
eCBwYXRoIGlzIG1vcmUgcmVzdHJpY3RpdmUgYWJvdXQgcmV0dXJuaW5nIGZhbGxiYWNrIGZvbnRz
IHRoYW4gdGhlIHNpbXBsZSBwYXRoLCBzbyB3ZSBuZWVkIGFuIGV4cGxpY2l0IHRlc3QgdG8gbWFr
ZSB0aGVpciBiZWhhdmlvcnMgbWF0Y2guCkBAIC02MDQsNiArNjEwLDggQEAgRm9udENhc2NhZGU6
OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIHN0ZDo6
b3B0aW9uYWw8dW4KICAgICBpZiAoc19jb2RlUGF0aCAhPSBBdXRvKQogICAgICAgICByZXR1cm4g
c19jb2RlUGF0aDsKIAorICAgIEFTU0VSVChydW4ubGVuZ3RoKCkpOworCiAjaWYgIVVTRShGUkVF
VFlQRSkKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRs
ZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dl
YmtpdC5vcmcvYi8xMDAwNTAKICAgICBpZiAoKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1No
YXBpbmcoKSkgJiYgKGZyb20udmFsdWVfb3IoMCkgfHwgdG8udmFsdWVfb3IocnVuLmxlbmd0aCgp
KSAhPSBydW4ubGVuZ3RoKCkpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNkMTJjOGQ3N2ZhYmNiOWQzOTJjODY1YzMzY2U2
ZTNjYWMxMWQ1NGMuLmU2NGMxNDlkYzMwY2RiOTFhMTkwN2JkNTQzNDkxMzY4NjEwNDQ3MjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgd2lkdGggb2YgYSBudWxscHRyIFRleHRSdW4gc2hv
dWxkIGJlIHplcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4OTE1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDM2ODU5MjY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3RleHQvbnVsbC1z
dHJpbmctdGV4dHJ1bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9u
dWxsLXN0cmluZy10ZXh0cnVuLmh0bWw6IEFkZGVkLgorCiAyMDE4LTA4LTI3ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBmYXN0L2V2
ZW50cy9kYmxjbGljay1ldmVudC1nZXRNb2RpZmllclN0YXRlLmh0bWwgaXMgZmFpbGluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk5ZDhjODkyOGVlMzdkYmFhZGZhMTQ4YjNkYzdmMTExMTgxYjNi
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbnVsbC1zdHJpbmct
dGV4dHJ1bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3QgY29uZmlybXMg
dGhhdCBhIG51bGwgdGV4dCBydW4gZG9lc24ndCB0cmlnZ2VyIGEgY3Jhc2guIEl0IHBhc3NlcyBp
ZiBpdCBsb2FkcyB3aXRob3V0IGNyYXNoaW5nLgorCisgICAgICAgIAorICAgICAgICAKKyAgICAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4u
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjE0NTkwMGRiZmU4NWI1Yjc3YWZmNzE3MWM4Y2I3Y2FjNzlmMWM0MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0
bWwKQEAgLTAsMCArMSwxOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8L3Nj
cmlwdD4KKzxoZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSBu
dWxsIHRleHQgcnVuIGRvZXNuJ3QgdHJpZ2dlciBhIGNyYXNoLiBJdCBwYXNzZXMgaWYgaXQgbG9h
ZHMgd2l0aG91dCBjcmFzaGluZy48L3A+CisgICAgPHByZSBpZD0icHJlX3RhZyIgZGlyPSJSVEwi
ID4KKyAgICAgICAgPHN0eWxlIG9ubG9hZD0icHJlX3RhZy5hcHBlbmRDaGlsZChtZXRlcl90YWcp
Ii8+PC9zdHlsZT4KKyAgICAgICAgPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiPgorICAgICAg
ICAgICAgPG9wdGdyb3VwLz4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAgPC9wcmU+CisgICAgPGxh
YmVsPgorICAgICAgICA8bWV0ZXIgaWQ9Im1ldGVyX3RhZyI+CisgICAgPC9sYWJlbD4KKzwvYm9k
eT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348655</attachid>
            <date>2018-08-31 11:23:01 -0700</date>
            <delta_ts>2018-09-02 12:02:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180831112300.patch</filename>
            <type>text/plain</type>
            <size>9690</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkyNjdjMWY5OTA5ZTVhOGE3NmE0ZWUx
ZTRiZmUwNzRmZGFhYTg4NDcuLmVlMTczODk5NDc5MWRhNDgxZWU2YzM5ZDA1ZjJiODIyZTUwMjlj
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDgtMzEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGEgbnVsbHB0ciBUZXh0UnVu
IHNob3VsZCBiZSB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzNjg1OTI2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3QgYWNjZXNzb3Jz
IGluIFdURlN0cmluZy5jcHAsIHN1Y2ggYXMgaXNBbGxBU0NJSSgpLCBoYXNoKCksIGV0Yy4sIHBl
cmZvcm0gYSBudWxscHRyIGNoZWNrCisgICAgICAgIGJlZm9yZSB1c2luZyBtX2ltcGwsIGJ1dCBp
czhCaXQoKSBkb2VzIG5vdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBjaGVjayBpbiB0
aGUgaXM4Qml0KCkgaW1wbGVtZW50YXRpb24gdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIG1l
dGhvZHMsCisgICAgICAgIGFuZCB0byBhZGRyZXNzIGEgc21hbGwgbnVtYmVyIG9mIGNyYXNoZXMg
b2JzZXJ2ZWQgaW4gdGVzdGluZy4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmlzOEJpdCBjb25zdCk6CisKIDIwMTgtMDgtMzAgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVuZGxlIHVuaWZp
ZWQgc291cmNlcyBtb3JlIHRpZ2h0bHkgaW4gcHJvamVjdHMgd2l0aCBkZWVwIGRpcmVjdG9yeSBz
dHJ1Y3R1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk5ZWI0OTYyZWViN2ZhYjU5ZTJkMDY1MzNmNzBjNjk2
NGY3NjdmYS4uNTBjMzQ5MzExYTYzMmJhNWM0NzI3MmMyNjhjZDE3NmJiOThjZWMwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTA4LTMxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSB3aWR0aCBvZiBhIG51bGxwdHIgVGV4dFJ1biBz
aG91bGQgYmUgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzY4NTkyNj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBhIHBhZ2UgaGFzIGFu
IGVtcHR5IFRleHRSdW4gYW5kIGF0dGVtcHRzIHRvIHBhaW50IGl0IHdlIGNhbiBjcmFzaCB3aXRo
IGEgbnVsbHB0ci4KKworICAgICAgICBUaGlzIHBhdGNoIHJlY29nbml6ZXMgdGhhdCBhbiBlbXB0
eSBUZXh0UnVuIHNob3VsZCBhbHdheXMgcHJvZHVjZSBhIHplcm8gd2lkdGgsIHJhdGhlciB0aGFu
CisgICAgICAgIGF0dGVtcHQgdG8gY29tcHV0ZSB0aGlzIHZhbHVlIGZyb20gZm9udCBkYXRhLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojppc05lZWRlZCk6IEFuIGVtcHR5IFJlbmRlclRleHQg
ZG9lcyBub3QgbmVlZCB0byBsYXlvdXQgaXRzIHRleHQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6Ondp
ZHRoT2ZUZXh0UmFuZ2UgY29uc3QpOiBBbiBlbXB0eSBUZXh0UnVuIGhhcyB6ZXJvIHdpZHRoLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoIGNvbnN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGggY29uc3QpOiBBU1NFUlQgdGhhdCB0
aGUgVGV4dFJ1biBpcyBub24tZW1wdHkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZp
ZWRUZXh0TWVhc3VyaW5nKTogRG9uJ3QgY29uc2lkZXIgZm9udCBhbmQgQ29kZVBhdGgKKyAgICAg
ICAgaWYgdGhlIFJlbmRlclRleHQgY29udGFpbnMgYSBudWxscHRyIHN0cmluZy4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0
UmVuZGVyZXIpOiBPbmx5IGNvbnNpZGVyIGZvbnQKKyAgICAgICAgYW5kIENvZGVQYXRoIGlmIHRo
ZSBSZW5kZXJUZXh0IGNvbnRhaW5zIGEgbm9uLW51bGxwdHIgc3RyaW5nLgorCiAyMDE4LTA4LTMw
ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIzNTUxNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGIwOGJl
NTMwYWY0NjNmMTQ5YWFhODM3ZTZmYzBmNzIwMTFiZWIzNDQuLmZiMTg0MjhhNWViMzg3MzI3OGVm
NTA3ODA4ZmE5MGI4ZTY5MDQ5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTU0LDcg
KzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gY2hhcmFjdGVyczgoKSBvciBjaGFyYWN0
ZXJzMTYoKSBkZXBlbmRpbmcgb24gQ2hhcmFjdGVyVHlwZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7
CiAKLSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aXM4Qml0KCk7IH0K
KyAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5pczhC
aXQoKTsgfQogCiAgICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmxlbmd0aCgpICogKGlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVv
ZihVQ2hhcikpIDogMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA3ZDhlZjBhM2RhZmM0
MjZkZjUxZTY4M2ZjNGRmMDg5NTRjMzgwZmZlLi43YTdhYjZjOTMzYzFjNTZlN2Q2OTZkNjdmZGU0
NmIxZGMyZjhhYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTcwLDYgKzcwLDkgQEAgY2xh
c3MgVGV4dExheW91dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNOZWVkZWQoUmVuZGVy
VGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAgeworICAgICAgICBpZiAo
IXRleHQubGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgVGV4
dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxl
KCkpOwogICAgICAgICByZXR1cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpD
b21wbGV4OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAppbmRleCA3NjQ4ZjViZjI2OTNiZWUyNmYwNTk4ZWNlYmZmYWYxYWMyM2Qw
NDJjLi4yZmJkMDA2MWJmZjMyZmYxMDVkYzVjNGI1ZmUzNzgxYjUwN2U4OGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zNDEs
NiArMzQxLDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoT2ZUZXh0UmFuZ2UoY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZAogICAgIEFTU0VSVChmcm9tIDw9IHRv
KTsKICAgICBBU1NFUlQodG8gPD0gcnVuLmxlbmd0aCgpKTsKIAorICAgIGlmICghcnVuLmxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGZsb2F0IG9mZnNldEJlZm9yZVJhbmdlID0g
MDsKICAgICBmbG9hdCBvZmZzZXRBZnRlclJhbmdlID0gMDsKICAgICBmbG9hdCB0b3RhbFdpZHRo
ID0gMDsKQEAgLTM4NSw2ICszODgsOSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRS
YW5nZShjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAKIGZsb2F0
IEZvbnRDYXNjYWRlOjp3aWR0aChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9u
dCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAog
eworICAgIGlmICghcnVuLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIENvZGVQ
YXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpIHsKICAgICAgICAgLy8gVGhlIGNvbXBsZXggcGF0aCBpcyBtb3JlIHJlc3Ry
aWN0aXZlIGFib3V0IHJldHVybmluZyBmYWxsYmFjayBmb250cyB0aGFuIHRoZSBzaW1wbGUgcGF0
aCwgc28gd2UgbmVlZCBhbiBleHBsaWNpdCB0ZXN0IHRvIG1ha2UgdGhlaXIgYmVoYXZpb3JzIG1h
dGNoLgpAQCAtNjA0LDYgKzYxMCw4IEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2Fk
ZTo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBzdGQ6Om9wdGlvbmFsPHVuCiAgICAgaWYg
KHNfY29kZVBhdGggIT0gQXV0bykKICAgICAgICAgcmV0dXJuIHNfY29kZVBhdGg7CiAKKyAgICBB
U1NFUlQocnVuLmxlbmd0aCgpKTsKKwogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRo
IGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCiAg
ICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZh
bHVlX29yKDApIHx8IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBmZjA1YjcyZDI2ZmU0
OTY3NTM0MDExY2VhYWRjZmQzZjRmZDRjYWYyLi4yZGI5MGVkODJmYmYzNThmMjgyYWMxZDI2NmYx
ZGM4ZjgzZTBjNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBA
IC0xMjQzLDEwICsxMjQzLDEyIEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBs
aWZpZWRUZXh0TWVhc3VyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gQWRkaXRpb25hbCBjaGVjayBvbiB0aGUgZm9udCBjb2RlcGF0aC4KLSAgICBUZXh0UnVuIHJ1
bihtX3RleHQpOwotICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoZmFsc2UpOwot
ICAgIGlmIChmb250LmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OlNpbXBsZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV90ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICBU
ZXh0UnVuIHJ1bihtX3RleHQpOworICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQ
YXRoKGZhbHNlKTsKKyAgICAgICAgaWYgKGZvbnQuY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2Fk
ZTo6U2ltcGxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGF1dG8g
d2hpdGVzcGFjZUlzQ29sbGFwc2VkID0gc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dCgpLmxlbmd0aCgpOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
LmNwcAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi4xZjUz
MDlmMjg3Y2M5YTAyZTdjNWM0MjY3NjkxZjg3NDc5MGYxYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC05
OCwxMiArOTgsMTQgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFz
dXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KIAogICAgIGNvbnN0IEZvbnRD
YXNjYWRlJiBzY2FsZWRGb250ID0gdGV4dC5zY2FsZWRGb250KCk7CiAgICAgbV9ydW4gPSBTVkdU
ZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0KTsKLSAgICBtX2lzQ29tcGxleFRleHQg
PSBzY2FsZWRGb250LmNvZGVQYXRoKG1fcnVuKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsKKyAg
ICBpZiAodGV4dC5sZW5ndGgoKSkgeworICAgICAgICBtX2lzQ29tcGxleFRleHQgPSBzY2FsZWRG
b250LmNvZGVQYXRoKG1fcnVuKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsKIAotICAgIGlmICht
X2lzQ29tcGxleFRleHQpCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG51bGxwdHI7
Ci0gICAgZWxzZQotICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CisgICAgICAgIGlmIChtX2lz
Q29tcGxleFRleHQpCisgICAgICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRy
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CisgICAgfQog
fQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNGFiZDI2M2M5ODVhZTdiYWY1
YjEyODlmZTQ2YmViMWIxOGM3Nzc1Li4xN2YzNzJiYWRmNGM5MDQ2ZGYwYjM4MWM2NGFhNDgyYTgw
NjNiZDE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDgtMzEgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGEgbnVsbHB0ciBU
ZXh0UnVuIHNob3VsZCBiZSB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzNjg1OTI2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC90
ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1sOiBBZGRlZC4KKwogMjAxOC0wOC0zMCAg
VHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzU1MTYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
bnVsbC1zdHJpbmctdGV4dHJ1bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
bnVsbC1zdHJpbmctdGV4dHJ1bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTlkOGM4OTI4ZWUz
N2RiYWFkZmExNDhiM2RjN2YxMTExODFiM2JjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDYgQEAKK1RoaXMgdGVzdCBjb25maXJtcyB0aGF0IGEgbnVsbCB0ZXh0IHJ1biBkb2Vzbid0IHRy
aWdnZXIgYSBjcmFzaC4gSXQgcGFzc2VzIGlmIGl0IGxvYWRzIHdpdGhvdXQgY3Jhc2hpbmcuCisK
KyAgICAgICAgCisgICAgICAgIAorICAgIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251
bGwtc3RyaW5nLXRleHRydW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTQ1OTAwZGJmZTg1YjViNzdhZmY3
MTcxYzhjYjdjYWM3OWYxYzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPGhlYWQ+Cis8Ym9keT4KKyAgICA8cD5U
aGlzIHRlc3QgY29uZmlybXMgdGhhdCBhIG51bGwgdGV4dCBydW4gZG9lc24ndCB0cmlnZ2VyIGEg
Y3Jhc2guIEl0IHBhc3NlcyBpZiBpdCBsb2FkcyB3aXRob3V0IGNyYXNoaW5nLjwvcD4KKyAgICA8
cHJlIGlkPSJwcmVfdGFnIiBkaXI9IlJUTCIgPgorICAgICAgICA8c3R5bGUgb25sb2FkPSJwcmVf
dGFnLmFwcGVuZENoaWxkKG1ldGVyX3RhZykiLz48L3N0eWxlPgorICAgICAgICA8c2VsZWN0IG11
bHRpcGxlPSJtdWx0aXBsZSI+CisgICAgICAgICAgICA8b3B0Z3JvdXAvPgorICAgICAgICA8L3Nl
bGVjdD4KKyAgICA8L3ByZT4KKyAgICA8bGFiZWw+CisgICAgICAgIDxtZXRlciBpZD0ibWV0ZXJf
dGFnIj4KKyAgICA8L2xhYmVsPgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348743</attachid>
            <date>2018-09-02 12:02:02 -0700</date>
            <delta_ts>2018-09-04 10:50:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180902120201.patch</filename>
            <type>text/plain</type>
            <size>9069</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLmE5NjdmNWMyYzgyZTEwNDljMzU3ZjhmOTA0Mjk2M2YwZDAyY2I5
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDktMDIgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGEgbnVsbHB0ciBUZXh0UnVu
IHNob3VsZCBiZSB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzNjg1OTI2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBNb3N0IGFjY2Vzc29ycyBp
biBXVEZTdHJpbmcuY3BwLCBzdWNoIGFzIGlzQWxsQVNDSUkoKSwgaGFzaCgpLCBldGMuLCBwZXJm
b3JtIGEgbnVsbHB0ciBjaGVjaworICAgICAgICBiZWZvcmUgdXNpbmcgbV9pbXBsLCBidXQgaXM4
Qml0KCkgZG9lcyBub3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhl
IGlzOEJpdCgpIGltcGxlbWVudGF0aW9uIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBtZXRo
b2RzLAorICAgICAgICBhbmQgdG8gYWRkcmVzcyBhIHNtYWxsIG51bWJlciBvZiBjcmFzaGVzIG9i
c2VydmVkIGluIHRlc3RpbmcuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjppczhCaXQgY29uc3QpOgorCiAyMDE4LTA4LTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8
PSBhbmQgLT0gb3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGZmZjM3MTkzZGZkZmQ2NTY1MTYzMmJhNjYwMmI3NTQ2YzRiYjIwMTguLmU3NjJm
MjNlOTdlMmVhMGZjYzA4ZmViZDExYzMyMzJjZjQ2Y2E3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxOC0wOS0wMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBUaGUgd2lkdGggb2YgYSBudWxscHRyIFRleHRSdW4gc2hvdWxkIGJlIHplcm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTE1NAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDM2ODU5MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WmFsYW4gQnVqdGFzLgorCisgICAgICAgIElmIGEgcGFnZSBoYXMgYW4gZW1wdHkgVGV4dFJ1biBh
bmQgYXR0ZW1wdHMgdG8gcGFpbnQgaXQgd2UgY2FuIGNyYXNoIHdpdGggYSBudWxscHRyLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVjb2duaXplcyB0aGF0IGFuIGVtcHR5IFRleHRSdW4gc2hvdWxk
IGFsd2F5cyBwcm9kdWNlIGEgemVybyB3aWR0aCwgcmF0aGVyIHRoYW4KKyAgICAgICAgYXR0ZW1w
dCB0byBjb21wdXRlIHRoaXMgdmFsdWUgZnJvbSBmb250IGRhdGEuCisKKyAgICAgICAgVGVzdDog
ZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRMYXlvdXQ6OmlzTmVlZGVkKTogQW4gZW1wdHkgUmVuZGVyVGV4dCBkb2VzIG5vdCBuZWVkIHRv
IGxheW91dCBpdHMgdGV4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZSBj
b25zdCk6IEFuIGVtcHR5IFRleHRSdW4gaGFzIHplcm8gd2lkdGguCisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6d2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpjb2RlUGF0aCBjb25zdCk6IEFTU0VSVCB0aGF0IHRoZSBUZXh0UnVuIGlzIG5v
bi1lbXB0eS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcp
OiBEb24ndCBjb25zaWRlciBmb250IGFuZCBDb2RlUGF0aAorICAgICAgICBpZiB0aGUgUmVuZGVy
VGV4dCBjb250YWlucyBhIG51bGxwdHIgc3RyaW5nLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRy
aWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6IE9ubHkg
Y29uc2lkZXIgZm9udAorICAgICAgICBhbmQgQ29kZVBhdGggaWYgdGhlIFJlbmRlclRleHQgY29u
dGFpbnMgYSBub24tbnVsbHB0ciBzdHJpbmcuCisKIDIwMTgtMDktMDEgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEZpbHRlckVmZmVjdFJl
bmRlcmVyIHRvIENTU0ZpbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYjA4YmU1MzBh
ZjQ2M2YxNDlhYWE4MzdlNmZjMGY3MjAxMWJlYjM0NC4uZmIxODQyOGE1ZWIzODczMjc4ZWY1MDc4
MDhmYTkwYjhlNjkwNDk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xNTQsNyArMTU0
LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBjaGFyYWN0ZXJzOCgpIG9yIGNoYXJhY3RlcnMx
NigpIGRlcGVuZGluZyBvbiBDaGFyYWN0ZXJUeXBlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMoKSBjb25zdDsKIAot
ICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsgfQorICAg
IGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzOEJpdCgp
OyB9CiAKICAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+bGVuZ3RoKCkgKiAoaXM4Qml0KCkgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVD
aGFyKSkgOiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDdkOGVmMGEzZGFmYzQyNmRm
NTFlNjgzZmM0ZGYwODk1NGMzODBmZmUuLjdhN2FiNmM5MzNjMWM1NmU3ZDY5NmQ2N2ZkZTQ2YjFk
YzJmOGFhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzAsNiArNzAsOSBAQCBjbGFzcyBU
ZXh0TGF5b3V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc05lZWRlZChSZW5kZXJUZXh0
JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKICAgICB7CisgICAgICAgIGlmICghdGV4
dC5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBUZXh0UnVu
IHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHRleHQuc3R5bGUoKSk7
CiAgICAgICAgIHJldHVybiBmb250LmNvZGVQYXRoKHJ1bikgPT0gRm9udENhc2NhZGU6OkNvbXBs
ZXg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCmluZGV4IDc2NDhmNWJmMjY5M2JlZTI2ZjA1OThlY2ViZmZhZjFhYzIzZDA0MmMu
LjJmYmQwMDYxYmZmMzJmZjEwNWRjNWM0YjVmZTM3ODFiNTA3ZTg4ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTM0MSw2ICsz
NDEsOSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgQVNTRVJUKGZyb20gPD0gdG8pOwog
ICAgIEFTU0VSVCh0byA8PSBydW4ubGVuZ3RoKCkpOwogCisgICAgaWYgKCFydW4ubGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiAwOworCiAgICAgZmxvYXQgb2Zmc2V0QmVmb3JlUmFuZ2UgPSAwOwog
ICAgIGZsb2F0IG9mZnNldEFmdGVyUmFuZ2UgPSAwOwogICAgIGZsb2F0IHRvdGFsV2lkdGggPSAw
OwpAQCAtMzg1LDYgKzM4OCw5IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdl
KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQKIAogZmxvYXQgRm9u
dENhc2NhZGU6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4q
IGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CiB7Cisg
ICAgaWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgQ29kZVBhdGgg
Y29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0g
Q29tcGxleCkgewogICAgICAgICAvLyBUaGUgY29tcGxleCBwYXRoIGlzIG1vcmUgcmVzdHJpY3Rp
dmUgYWJvdXQgcmV0dXJuaW5nIGZhbGxiYWNrIGZvbnRzIHRoYW4gdGhlIHNpbXBsZSBwYXRoLCBz
byB3ZSBuZWVkIGFuIGV4cGxpY2l0IHRlc3QgdG8gbWFrZSB0aGVpciBiZWhhdmlvcnMgbWF0Y2gu
CkBAIC02MDQsNiArNjEwLDggQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpj
b2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIHN0ZDo6b3B0aW9uYWw8dW4KICAgICBpZiAoc19j
b2RlUGF0aCAhPSBBdXRvKQogICAgICAgICByZXR1cm4gc19jb2RlUGF0aDsKIAorICAgIEFTU0VS
VChydW4ubGVuZ3RoKCkpOworCiAjaWYgIVVTRShGUkVFVFlQRSkKICAgICAvLyBGSVhNRTogVXNl
IHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2Vy
bmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKICAgICBp
ZiAoKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20udmFsdWVf
b3IoMCkgfHwgdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKSAhPSBydW4ubGVuZ3RoKCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGZmMDViNzJkMjZmZTQ5Njc1
MzQwMTFjZWFhZGNmZDNmNGZkNGNhZjIuLmMwMGVhYTgwZTlkNzU5Y2VjYzg5YzlmZTRjNTY5OWFl
Yjg5MTAwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEy
NDIsNiArMTI0Miw5IEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRU
ZXh0TWVhc3VyaW5nKCkgY29uc3QKICAgICBpZiAoZm9udC53b3JkU3BhY2luZygpIHx8IGZvbnQu
bGV0dGVyU3BhY2luZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobV90ZXh0
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gQWRkaXRpb25hbCBj
aGVjayBvbiB0aGUgZm9udCBjb2RlcGF0aC4KICAgICBUZXh0UnVuIHJ1bihtX3RleHQpOwogICAg
IHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4
IDMyNDEwMjU4NGMxZjExM2QwZWVkMzMyMTRhNjdmNTUzNGFiMGY1OWEuLmNhYmJhODM4YzlkMmYx
M2ZiYTcwYzYyMjFlMjg2ZGExNzdhMWExMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhU
ZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KIAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBzY2Fs
ZWRGb250ID0gdGV4dC5zY2FsZWRGb250KCk7CiAgICAgbV9ydW4gPSBTVkdUZXh0TWV0cmljczo6
Y29uc3RydWN0VGV4dFJ1bih0ZXh0KTsKLSAgICBtX2lzQ29tcGxleFRleHQgPSBzY2FsZWRGb250
LmNvZGVQYXRoKG1fcnVuKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsKKyAgICBtX2lzQ29tcGxl
eFRleHQgPSB0ZXh0Lmxlbmd0aCgpICYmIHNjYWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZv
bnRDYXNjYWRlOjpDb21wbGV4OwogCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAg
bV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYzJmNDgxYWYxZmNhZjEw
ZGRmZTg4ZDhmM2I2MjVkOGIzYjNlMDI3Li4xODUwODVlODE4MTI5YjhmODYzOTBlZTJkN2QyNjAy
ZDJmODU5NGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDIgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGEgbnVsbHB0
ciBUZXh0UnVuIHNob3VsZCBiZSB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzNjg1OTI2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIGZhc3Qv
dGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbDogQWRkZWQuCisKIDIwMTgtMDktMDIg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBJ
bXBsZW1lbnQgT2JqZWN0LmZyb21FbnRyaWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTlkOGM4
OTI4ZWUzN2RiYWFkZmExNDhiM2RjN2YxMTExODFiM2JjNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKK1RoaXMgdGVzdCBjb25maXJtcyB0aGF0IGEgbnVsbCB0ZXh0IHJ1biBkb2Vz
bid0IHRyaWdnZXIgYSBjcmFzaC4gSXQgcGFzc2VzIGlmIGl0IGxvYWRzIHdpdGhvdXQgY3Jhc2hp
bmcuCisKKyAgICAgICAgCisgICAgICAgIAorICAgIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTQ1OTAwZGJmZTg1YjVi
NzdhZmY3MTcxYzhjYjdjYWM3OWYxYzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPGhlYWQ+Cis8Ym9keT4KKyAg
ICA8cD5UaGlzIHRlc3QgY29uZmlybXMgdGhhdCBhIG51bGwgdGV4dCBydW4gZG9lc24ndCB0cmln
Z2VyIGEgY3Jhc2guIEl0IHBhc3NlcyBpZiBpdCBsb2FkcyB3aXRob3V0IGNyYXNoaW5nLjwvcD4K
KyAgICA8cHJlIGlkPSJwcmVfdGFnIiBkaXI9IlJUTCIgPgorICAgICAgICA8c3R5bGUgb25sb2Fk
PSJwcmVfdGFnLmFwcGVuZENoaWxkKG1ldGVyX3RhZykiLz48L3N0eWxlPgorICAgICAgICA8c2Vs
ZWN0IG11bHRpcGxlPSJtdWx0aXBsZSI+CisgICAgICAgICAgICA8b3B0Z3JvdXAvPgorICAgICAg
ICA8L3NlbGVjdD4KKyAgICA8L3ByZT4KKyAgICA8bGFiZWw+CisgICAgICAgIDxtZXRlciBpZD0i
bWV0ZXJfdGFnIj4KKyAgICA8L2xhYmVsPgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348825</attachid>
            <date>2018-09-04 10:50:44 -0700</date>
            <delta_ts>2018-09-05 08:46:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180904105043.patch</filename>
            <type>text/plain</type>
            <size>8743</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLmE5NjdmNWMyYzgyZTEwNDljMzU3ZjhmOTA0Mjk2M2YwZDAyY2I5
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDktMDIgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGEgbnVsbHB0ciBUZXh0UnVu
IHNob3VsZCBiZSB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzNjg1OTI2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBNb3N0IGFjY2Vzc29ycyBp
biBXVEZTdHJpbmcuY3BwLCBzdWNoIGFzIGlzQWxsQVNDSUkoKSwgaGFzaCgpLCBldGMuLCBwZXJm
b3JtIGEgbnVsbHB0ciBjaGVjaworICAgICAgICBiZWZvcmUgdXNpbmcgbV9pbXBsLCBidXQgaXM4
Qml0KCkgZG9lcyBub3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhl
IGlzOEJpdCgpIGltcGxlbWVudGF0aW9uIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBtZXRo
b2RzLAorICAgICAgICBhbmQgdG8gYWRkcmVzcyBhIHNtYWxsIG51bWJlciBvZiBjcmFzaGVzIG9i
c2VydmVkIGluIHRlc3RpbmcuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjppczhCaXQgY29uc3QpOgorCiAyMDE4LTA4LTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8
PSBhbmQgLT0gb3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGQ2M2JjYTBlMzU4ZjY3OWVjYzcxMTAzMDY2MWY1NmE0YWFlNTk5NDAuLjUzODNi
YWI4NDdiNzE4ZmI2MmQzZWEyMzMzODQ1NTJkZWNkNWZjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxOC0wOS0wMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBUaGUgd2lkdGggb2YgYSBudWxscHRyIFRleHRSdW4gc2hvdWxkIGJlIHplcm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTE1NAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDM2ODU5MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WmFsYW4gQnVqdGFzLgorCisgICAgICAgIElmIGEgcGFnZSBoYXMgYW4gZW1wdHkgVGV4dFJ1biBh
bmQgYXR0ZW1wdHMgdG8gcGFpbnQgaXQgd2UgY2FuIGNyYXNoIHdpdGggYSBudWxscHRyLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVjb2duaXplcyB0aGF0IGFuIGVtcHR5IFRleHRSdW4gc2hvdWxk
IGFsd2F5cyBwcm9kdWNlIGEgemVybyB3aWR0aCwgcmF0aGVyIHRoYW4KKyAgICAgICAgYXR0ZW1w
dCB0byBjb21wdXRlIHRoaXMgdmFsdWUgZnJvbSBmb250IGRhdGEuCisKKyAgICAgICAgVGVzdDog
ZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRMYXlvdXQ6OmlzTmVlZGVkKTogQW4gZW1wdHkgUmVuZGVyVGV4dCBkb2VzIG5vdCBuZWVkIHRv
IGxheW91dCBpdHMgdGV4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZSBj
b25zdCk6IEFuIGVtcHR5IFRleHRSdW4gaGFzIHplcm8gd2lkdGguCisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6d2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpjb2RlUGF0aCBjb25zdCk6IEFTU0VSVCB0aGF0IHRoZSBUZXh0UnVuIGlzIG5v
bi1lbXB0eS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcp
OiBEb24ndCBjb25zaWRlciBmb250IGFuZCBDb2RlUGF0aAorICAgICAgICBpZiB0aGUgUmVuZGVy
VGV4dCBjb250YWlucyBhIG51bGxwdHIgc3RyaW5nLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRy
aWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6IE9ubHkg
Y29uc2lkZXIgZm9udAorICAgICAgICBhbmQgQ29kZVBhdGggaWYgdGhlIFJlbmRlclRleHQgY29u
dGFpbnMgYSBub24tbnVsbHB0ciBzdHJpbmcuCisKIDIwMTgtMDktMDQgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHBhc3NpbmcgSW1hZ2VCaXRtYXAgdG8gdGV4
SW1hZ2UyRC90ZXhTdWJJbWFnZTJECmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiMDhiZTUz
MGFmNDYzZjE0OWFhYTgzN2U2ZmMwZjcyMDExYmViMzQ0Li5mYjE4NDI4YTVlYjM4NzMyNzhlZjUw
NzgwOGZhOTBiOGU2OTA0OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE1NCw3ICsx
NTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIGNoYXJhY3RlcnM4KCkgb3IgY2hhcmFjdGVy
czE2KCkgZGVwZW5kaW5nIG9uIENoYXJhY3RlclR5cGUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0Owog
Ci0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9Cisg
ICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXM4Qml0
KCk7IH0KIAogICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2Yo
VUNoYXIpKSA6IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggN2Q4ZWYwYTNkYWZjNDI2
ZGY1MWU2ODNmYzRkZjA4OTU0YzM4MGZmZS4uN2E3YWI2YzkzM2MxYzU2ZTdkNjk2ZDY3ZmRlNDZi
MWRjMmY4YWFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC03MCw2ICs3MCw5IEBAIGNsYXNz
IFRleHRMYXlvdXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzTmVlZGVkKFJlbmRlclRl
eHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHsKKyAgICAgICAgaWYgKCF0
ZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIFRleHRS
dW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgp
KTsKICAgICAgICAgcmV0dXJuIGZvbnQuY29kZVBhdGgocnVuKSA9PSBGb250Q2FzY2FkZTo6Q29t
cGxleDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKaW5kZXggNzY0OGY1YmYyNjkzYmVlMjZmMDU5OGVjZWJmZmFmMWFjMjNkMDQy
Yy4uMDg2OTI1MzRhNDc0N2MwYmM4MjI5ZDVhNDcwMWM0MGY1ODA2MDQ5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzQxLDYg
KzM0MSw5IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRS
dW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQKICAgICBBU1NFUlQoZnJvbSA8PSB0byk7
CiAgICAgQVNTRVJUKHRvIDw9IHJ1bi5sZW5ndGgoKSk7CiAKKyAgICBpZiAoIXJ1bi5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBmbG9hdCBvZmZzZXRCZWZvcmVSYW5nZSA9IDA7
CiAgICAgZmxvYXQgb2Zmc2V0QWZ0ZXJSYW5nZSA9IDA7CiAgICAgZmxvYXQgdG90YWxXaWR0aCA9
IDA7CkBAIC0zODUsNiArMzg4LDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoT2ZUZXh0UmFu
Z2UoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZAogCiBmbG9hdCBG
b250Q2FzY2FkZTo6d2lkdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsK
KyAgICBpZiAoIXJ1bi5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBDb2RlUGF0
aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICBpZiAoY29kZVBhdGhUb1VzZSAh
PSBDb21wbGV4KSB7CiAgICAgICAgIC8vIFRoZSBjb21wbGV4IHBhdGggaXMgbW9yZSByZXN0cmlj
dGl2ZSBhYm91dCByZXR1cm5pbmcgZmFsbGJhY2sgZm9udHMgdGhhbiB0aGUgc2ltcGxlIHBhdGgs
IHNvIHdlIG5lZWQgYW4gZXhwbGljaXQgdGVzdCB0byBtYWtlIHRoZWlyIGJlaGF2aW9ycyBtYXRj
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBmZjA1YjcyZDI2
ZmU0OTY3NTM0MDExY2VhYWRjZmQzZjRmZDRjYWYyLi5jMDBlYWE4MGU5ZDc1OWNlY2M4OWM5ZmU0
YzU2OTlhZWI4OTEwMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CkBAIC0xMjQyLDYgKzEyNDIsOSBAQCBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1w
bGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0CiAgICAgaWYgKGZvbnQud29yZFNwYWNpbmcoKSB8
fCBmb250LmxldHRlclNwYWNpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYg
KG1fdGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIEFkZGl0
aW9uYWwgY2hlY2sgb24gdGhlIGZvbnQgY29kZXBhdGguCiAgICAgVGV4dFJ1biBydW4obV90ZXh0
KTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi5jYWJiYTgz
OGM5ZDJmMTNmYmE3MGM2MjIxZTI4NmRhMTc3YTFhMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1l
bnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAKICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgc2NhbGVkRm9udCA9IHRleHQuc2NhbGVkRm9udCgpOwogICAgIG1fcnVuID0gU1ZHVGV4dE1l
dHJpY3M6OmNvbnN0cnVjdFRleHRSdW4odGV4dCk7Ci0gICAgbV9pc0NvbXBsZXhUZXh0ID0gc2Nh
bGVkRm9udC5jb2RlUGF0aChtX3J1bikgPT0gRm9udENhc2NhZGU6OkNvbXBsZXg7CisgICAgbV9p
c0NvbXBsZXhUZXh0ID0gdGV4dC5sZW5ndGgoKSAmJiBzY2FsZWRGb250LmNvZGVQYXRoKG1fcnVu
KSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsKIAogICAgIGlmIChtX2lzQ29tcGxleFRleHQpCiAg
ICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGQ3ZmU3MjM1
YjQ0NThjZTZhM2UzMmU2ZWY0YzU1ZWE5Mjk1YjdjMS4uODA1YTY3NmNhODkyMDE1OWU2NmY2Y2My
ODg2ZTE2ODg4N2IzNmZiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA5LTAyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSB3aWR0aCBvZiBh
IG51bGxwdHIgVGV4dFJ1biBzaG91bGQgYmUgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MzY4NTkyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAg
KiBmYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWw6IEFkZGVkLgorCiAyMDE4
LTA5LTA0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4gYW5kIE1zMmdlciAg
PE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBwYXNz
aW5nIEltYWdlQml0bWFwIHRvIHRleEltYWdlMkQvdGV4U3ViSW1hZ2UyRApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZDhjODkyOGVlMzdkYmFhZGZhMTQ4YjNkYzdmMTExMTgxYjNiYzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3QgY29uZmlybXMgdGhhdCBhIG51
bGwgdGV4dCBydW4gZG9lc24ndCB0cmlnZ2VyIGEgY3Jhc2guIEl0IHBhc3NlcyBpZiBpdCBsb2Fk
cyB3aXRob3V0IGNyYXNoaW5nLgorCisgICAgICAgIAorICAgICAgICAKKyAgICAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjE0NTkwMGRiZmU4NWI1Yjc3YWZmNzE3MWM4Y2I3Y2FjNzlmMWM0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLmh0bWwKQEAgLTAs
MCArMSwxOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxo
ZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSBudWxsIHRleHQg
cnVuIGRvZXNuJ3QgdHJpZ2dlciBhIGNyYXNoLiBJdCBwYXNzZXMgaWYgaXQgbG9hZHMgd2l0aG91
dCBjcmFzaGluZy48L3A+CisgICAgPHByZSBpZD0icHJlX3RhZyIgZGlyPSJSVEwiID4KKyAgICAg
ICAgPHN0eWxlIG9ubG9hZD0icHJlX3RhZy5hcHBlbmRDaGlsZChtZXRlcl90YWcpIi8+PC9zdHls
ZT4KKyAgICAgICAgPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiPgorICAgICAgICAgICAgPG9w
dGdyb3VwLz4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAgPC9wcmU+CisgICAgPGxhYmVsPgorICAg
ICAgICA8bWV0ZXIgaWQ9Im1ldGVyX3RhZyI+CisgICAgPC9sYWJlbD4KKzwvYm9keT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348925</attachid>
            <date>2018-09-05 08:46:31 -0700</date>
            <delta_ts>2018-09-05 21:07:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189154-20180905084630.patch</filename>
            <type>text/plain</type>
            <size>9095</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLjgzYjE3NzQwMzVkZTZiZjJhZjllYjc0ZjQ0YzhkODhjN2NkNDI3
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDktMDUgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGFuIGVtcHR5IG9yIG51bGxw
dHIgVGV4dFJ1biBzaG91bGQgYmUgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzY4NTky
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgTW9zdCBh
Y2Nlc3NvcnMgaW4gV1RGU3RyaW5nLmNwcCwgc3VjaCBhcyBpc0FsbEFTQ0lJKCksIGhhc2goKSwg
ZXRjLiwgcGVyZm9ybSBhIG51bGxwdHIgY2hlY2sKKyAgICAgICAgYmVmb3JlIHVzaW5nIG1faW1w
bCwgYnV0IGlzOEJpdCgpIGRvZXMgbm90LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNo
ZWNrIGluIHRoZSBpczhCaXQoKSBpbXBsZW1lbnRhdGlvbiB0byBiZSBjb25zaXN0ZW50IHdpdGgg
b3RoZXIgbWV0aG9kcywKKyAgICAgICAgYW5kIHRvIGFkZHJlc3MgYSBzbWFsbCBudW1iZXIgb2Yg
Y3Jhc2hlcyBvYnNlcnZlZCBpbiB0ZXN0aW5nLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3Ry
aW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6aXM4Qml0IGNvbnN0KToKKwogMjAxOC0wOC0z
MSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBP
cHRpb25TZXQgfD0gYW5kIC09IG9wZXJhdG9ycyB3aXRoIGFkZCgpIGFuZCByZW1vdmUoKSBmdW5j
dGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmMjIzNGI5NmI5MWU5MGViMWViMDhjYjUzMjY0OGY2NjM1MTM5
MTQyLi5iNjdhMmVkYjQ3NWVlYmM2OGE5YWQyMDMyYTM3MzVlNzgyOWJiYTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDktMDUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGFuIGVtcHR5IG9yIG51bGxwdHIgVGV4
dFJ1biBzaG91bGQgYmUgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5MTU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzY4NTkyNj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgSWYgYSBwYWdlIGhh
cyBhbiBlbXB0eSBUZXh0UnVuIGFuZCBhdHRlbXB0cyB0byBwYWludCBpdCB3ZSBjYW4gY3Jhc2gg
d2l0aCBhIG51bGxwdHIuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWNvZ25pemVzIHRoYXQgYW4g
ZW1wdHkgVGV4dFJ1biBzaG91bGQgYWx3YXlzIHByb2R1Y2UgYSB6ZXJvIHdpZHRoLCByYXRoZXIg
dGhhbgorICAgICAgICBhdHRlbXB0IHRvIGNvbXB1dGUgdGhpcyB2YWx1ZSBmcm9tIGZvbnQgZGF0
YS4gSXQgYWxzbyBwcmV2ZW50cyBMaXN0Qm94IGZyb20gYXR0ZW1wdGluZyB0bworICAgICAgICBw
YWludCBhIG51bGwgc3RyaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9udWxsLXN0cmlu
Zy10ZXh0cnVuLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlIGNv
bnN0KTogQW4gZW1wdHkgVGV4dFJ1biBoYXMgemVybyB3aWR0aC4KKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjp3aWR0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RleHRSdW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OlRleHRSdW4pOiBB
U1NFUlQgdGhhdCB0aGUgc3VwcGxpZWQgU3RyaW5nIGlzIG5vbi1udWxsLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFJ1bjo6c2V0VGV4dCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRl
bUZvcmVncm91bmQpOiBEb24ndCBhdHRlbXB0IHRvIHBhaW50IGEgbnVsbCBzdHJpbmcuCisKIDIw
MTgtMDktMDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgcG90ZW50aWFsIENPUlMgcmVxdWVzdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYjA4YmU1MzBhZjQ2M2YxNDlhYWE4MzdlNmZjMGY3MjAx
MWJlYjM0NC4uZGRlZGVmZDYzYjk0ZWE4MjBiZjAzZjg2OTViZGQzZDQ4MGZmMTU0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1NCw3
ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIGNoYXJhY3RlcnM4KCkgb3IgY2hhcmFj
dGVyczE2KCkgZGVwZW5kaW5nIG9uIENoYXJhY3RlclR5cGUuCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0
OwogCi0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9
CisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXM4
Qml0KCk7IH0KIAogICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXpl
b2YoVUNoYXIpKSA6IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDc2NDhmNWJmMjY5M2JlZTI2ZjA1OThlY2ViZmZhZjFh
YzIzZDA0MmMuLjA4NjkyNTM0YTQ3NDdjMGJjODIyOWQ1YTQ3MDFjNDBmNTgwNjA0OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAg
LTM0MSw2ICszNDEsOSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25z
dCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgQVNTRVJUKGZyb20g
PD0gdG8pOwogICAgIEFTU0VSVCh0byA8PSBydW4ubGVuZ3RoKCkpOwogCisgICAgaWYgKCFydW4u
bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgZmxvYXQgb2Zmc2V0QmVmb3JlUmFu
Z2UgPSAwOwogICAgIGZsb2F0IG9mZnNldEFmdGVyUmFuZ2UgPSAwOwogICAgIGZsb2F0IHRvdGFs
V2lkdGggPSAwOwpAQCAtMzg1LDYgKzM4OCw5IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9m
VGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQKIAog
ZmxvYXQgRm9udENhc2NhZGU6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25z
dCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNv
bnN0CiB7CisgICAgaWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAg
Q29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgaWYgKGNvZGVQYXRo
VG9Vc2UgIT0gQ29tcGxleCkgewogICAgICAgICAvLyBUaGUgY29tcGxleCBwYXRoIGlzIG1vcmUg
cmVzdHJpY3RpdmUgYWJvdXQgcmV0dXJuaW5nIGZhbGxiYWNrIGZvbnRzIHRoYW4gdGhlIHNpbXBs
ZSBwYXRoLCBzbyB3ZSBuZWVkIGFuIGV4cGxpY2l0IHRlc3QgdG8gbWFrZSB0aGVpciBiZWhhdmlv
cnMgbWF0Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5k
ZXggZDM5YmNmNzkxNzE0ODlkOGQzNTZkMmM5ZjBmZjllYWFmZThkNDc3ZC4uZTJiYjRiZTRkZjhj
OWViMTYxNjdlYzNjODFhMWRiY2YzMGJmM2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRSdW4uaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQogICAg
ICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCiAgICAgeworICAgICAgICBBU1NFUlQoIW1f
dGV4dC5pc051bGwoKSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3
IHN0cmluZ1ZpZXcsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNp
b25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3Zl
cnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQpAQCAt
ODksNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRleHQoY29uc3QgTENoYXIqIHRl
eHQsIHVuc2lnbmVkIGxlbmd0aCkgeyBzZXRUZXh0KHsgdGV4dCwgbGVuZ3RoIH0pOyB9CiAgICAg
dm9pZCBzZXRUZXh0KGNvbnN0IFVDaGFyKiB0ZXh0LCB1bnNpZ25lZCBsZW5ndGgpIHsgc2V0VGV4
dCh7IHRleHQsIGxlbmd0aCB9KTsgfQotICAgIHZvaWQgc2V0VGV4dChTdHJpbmdWaWV3IHRleHQp
IHsgbV90ZXh0ID0gdGV4dC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCk7IH0KKyAgICB2b2lkIHNl
dFRleHQoU3RyaW5nVmlldyB0ZXh0KSB7IEFTU0VSVCghdGV4dC5pc051bGwoKSk7IG1fdGV4dCA9
IHRleHQudG9TdHJpbmdXaXRob3V0Q29weWluZygpOyB9CiAKICAgICBmbG9hdCBob3Jpem9udGFs
R2x5cGhTdHJldGNoKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoOyB9
CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsR2x5cGhTdHJldGNoKGZsb2F0IHNjYWxlKSB7IG1faG9y
aXpvbnRhbEdseXBoU3RyZXRjaCA9IHNjYWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMzZjMWFlZDBkMDQxOTVhMWZlZWZmMmExNjQ3ZGFmOWMx
YTNjODZlZS4uZWNkNTUxNjVmZmM4MTljNWIzMjZiM2U3NmEyNTA0OGQxNTA0YWIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTQtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgICAgIDIwMDkg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyMiw2ICs0MjIsOSBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JgogICAgICAgICBpdGVtVGV4dCA9IGRvd25jYXN0PEhUTUxPcHRHcm91
cEVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7CiAgICAgaXRlbVRl
eHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcgJyk7CiAKKyAgICBp
ZiAoaXRlbVRleHQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIENvbG9yIHRleHRD
b2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NT
UHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAmJiBkb3duY2FzdDxIVE1M
T3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQoKSkgewogICAgICAgICBp
ZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBkb2N1bWVudCgp
LmZvY3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OGQxZTEyNTZm
ZmM4YTYyMTgzMmVlM2NhNjRjMzM1NDMxNDNiZjFjLi40ZWVkZGJjY2UzNGQ3OTU1YzExZjU0NTg1
YTdmZTQzNzg4MWY2ODk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDQgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdpZHRoIG9mIGEg
bnVsbHB0ciBUZXh0UnVuIHNob3VsZCBiZSB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
Njg1OTI2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAq
IGZhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC90ZXh0L251bGwtc3RyaW5nLXRleHRydW4uaHRtbDogQWRkZWQuCisKIDIwMTgt
MDktMDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSByZWR1bmRhbnQgaW5saW5lIHRleHQgYm94ZXMgZm9yIGVtcHR5IGNvbWJpbmVkIHRleHQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVuLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45OWQ4Yzg5MjhlZTM3ZGJhYWRmYTE0OGIzZGM3ZjExMTE4MWIz
YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L251bGwtc3RyaW5n
LXRleHRydW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0IGNvbmZpcm1z
IHRoYXQgYSBudWxsIHRleHQgcnVuIGRvZXNuJ3QgdHJpZ2dlciBhIGNyYXNoLiBJdCBwYXNzZXMg
aWYgaXQgbG9hZHMgd2l0aG91dCBjcmFzaGluZy4KKworICAgICAgICAKKyAgICAgICAgCisgICAg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9udWxsLXN0cmluZy10ZXh0cnVu
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIxNDU5MDBkYmZlODViNWI3N2FmZjcxNzFjOGNiN2NhYzc5ZjFjNDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbnVsbC1zdHJpbmctdGV4dHJ1bi5o
dG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9z
Y3JpcHQ+Cis8aGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjb25maXJtcyB0aGF0IGEg
bnVsbCB0ZXh0IHJ1biBkb2Vzbid0IHRyaWdnZXIgYSBjcmFzaC4gSXQgcGFzc2VzIGlmIGl0IGxv
YWRzIHdpdGhvdXQgY3Jhc2hpbmcuPC9wPgorICAgIDxwcmUgaWQ9InByZV90YWciIGRpcj0iUlRM
IiA+CisgICAgICAgIDxzdHlsZSBvbmxvYWQ9InByZV90YWcuYXBwZW5kQ2hpbGQobWV0ZXJfdGFn
KSIvPjwvc3R5bGU+CisgICAgICAgIDxzZWxlY3QgbXVsdGlwbGU9Im11bHRpcGxlIj4KKyAgICAg
ICAgICAgIDxvcHRncm91cC8+CisgICAgICAgIDwvc2VsZWN0PgorICAgIDwvcHJlPgorICAgIDxs
YWJlbD4KKyAgICAgICAgPG1ldGVyIGlkPSJtZXRlcl90YWciPgorICAgIDwvbGFiZWw+Cis8L2Jv
ZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>