<?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>201077</bug_id>
          
          <creation_ts>2019-08-23 06:43:38 -0700</creation_ts>
          <short_desc>[GTK][WPE] webkit_settings_set_user_agent() allows content forbidden in HTTP headers</short_desc>
          <delta_ts>2024-05-04 03:22:00 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=273733</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>201721</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>csaavedra</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1564449</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-23 06:43:38 -0700</bug_when>
    <thetext>The following call will succeed, and result in invalid characters
being sent over the wire:

   webkit_settings_set_user_agent(settings, &quot;\x1B&quot;);  /* Escape character */

As a reminder: the HTTP specification indicates that headers must
contain only visible, printable characters (so control characters
like 0x1B are forbidden).

If an user-agent string with an embeeded newline character is set,
libsoup will actually warn:

   soup_message_headers_append: assertion &apos;strpbrk (value, &quot;\r\n&quot;) == NULL&apos; failed

I am not sure what libsoup does (maybe it ignores setting the header?),
but at any rathe an HTTP header must *not* contain newlines embedded in
their values.

It would be good to have some validation to ensure that WebKitSettings
never ends up with an user-agent string configured which would result
in incorrect requests being sent to servers. The particular case of
control characters is something I have observed after an use-after-free
ended up setting some garbage string as user-agent, and some servers
would start mysteriously returning HTTP 400 (that is: “Bad Request”).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564457</commentid>
    <comment_count>1</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-23 08:11:12 -0700</bug_when>
    <thetext>In a chat with Claudio Saavedra about this we agreed that
we could consider that passing a string as user agent which
would result in an incorrect HTTP header can be considered a
programming error. That way, we can validate the string and
return early using g_return_if_fail() —which will warn— thus
avoiding the need to change the API/ABI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564645</commentid>
    <comment_count>2</comment_count>
      <attachid>377168</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-23 15:48:29 -0700</bug_when>
    <thetext>Created attachment 377168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564648</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-23 15:49:59 -0700</bug_when>
    <thetext>Attachment 377168 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3076:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3078:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564649</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-23 15:52:03 -0700</bug_when>
    <thetext>Maybe I should also add some new API function to check whether
a string can be used as User-Agent string. Something like:

   gboolean webkit_is_valid_user_agent (const gchar *user_agent);

WDYT? It would be useful to validate them before trying to call
webkit_settings_set_user_agent().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564651</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-23 15:54:18 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #3)
&gt; Attachment 377168 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3076:  One line
&gt; control clauses should not use braces.  [whitespace/braces] [4]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3078:  One line
&gt; control clauses should not use braces.  [whitespace/braces] [4]
&gt; Total errors found: 2 in 2 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

These are false positives: notice the CHECK_OK macro, which expands

   parseFoo(CHECK_OK);

into:

   parseFoo(ok);
   if (!ok)
       return;
   ((void) 0);

Therefore the braces are needed because those are not really one-line
clauses. This preprocessor trick is very handy to make sure that the
“ok” status flag is always passed to the parsing functions and checked
afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564902</commentid>
    <comment_count>6</comment_count>
      <attachid>377168</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-08-26 02:30:14 -0700</bug_when>
    <thetext>Comment on attachment 377168
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3037
&gt; +// Checks User-Agent strings as per https://tools.ietf.org/html/rfc7231#section-5.5.3
&gt; +// The comments with the BNF productions before the functions below have been copied
&gt; +// from the RFC verbatim as reference.
&gt; +struct UserAgentChecker {

I think this belongs to Source/WebCore/platform/network/HTTPParsers.cpp You can probably reuse code from there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564912</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-26 04:06:48 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #6)
&gt; Comment on attachment 377168 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377168&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3037
&gt; &gt; +// Checks User-Agent strings as per https://tools.ietf.org/html/rfc7231#section-5.5.3
&gt; &gt; +// The comments with the BNF productions before the functions below have been copied
&gt; &gt; +// from the RFC verbatim as reference.
&gt; &gt; +struct UserAgentChecker {
&gt; 
&gt; I think this belongs to Source/WebCore/platform/network/HTTPParsers.cpp You
&gt; can probably reuse code from there.

Oh, cool, somehow my grepping didn&apos;t unearth this file. I see there are
other utility functions already there like isValidLanguageHeaderValue()
already, so I will move the code to this file, make the entry point be
isValidUserAgentHeaverValue() and make the code style similar to the
rest of the file.

Thanks for the pointer!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564951</commentid>
    <comment_count>8</comment_count>
      <attachid>377247</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-26 08:37:41 -0700</bug_when>
    <thetext>Created attachment 377247
WIP Patch

Work in progress moving things to HTTPParsers.cpp; I will 
be adding some unit tests in Tools/TestWebKitAPI/Tests/WebCore/HTTPParsers.cpp
for the new code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564952</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-26 08:39:22 -0700</bug_when>
    <thetext>Attachment 377247 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:10:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566652</commentid>
    <comment_count>10</comment_count>
      <attachid>377707</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-30 08:12:34 -0700</bug_when>
    <thetext>Created attachment 377707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566668</commentid>
    <comment_count>11</comment_count>
      <attachid>377713</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-30 08:45:18 -0700</bug_when>
    <thetext>Created attachment 377713
Patch v2


This adds the symbol to the linker script, which should make the
mac and iOS EWS bots happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566679</commentid>
    <comment_count>12</comment_count>
      <attachid>377718</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-08-30 09:14:54 -0700</bug_when>
    <thetext>Created attachment 377718
Patch v3


Well, I was wrong: it seems that the right thing to do is marking the
symbol using WEBCORE_EXPORT, rather than adding it to WebCore.order.

Third time is the charm. Maybe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569561</commentid>
    <comment_count>13</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-10 09:11:08 -0700</bug_when>
    <thetext>Ping reviewers :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569867</commentid>
    <comment_count>14</comment_count>
      <attachid>377718</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-11 01:12:47 -0700</bug_when>
    <thetext>Comment on attachment 377718
Patch v3

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

LGTM

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:177
&gt; +// See RFC 7230, Section 3.2.6.
&gt; +static inline bool isOctectInFieldContentCharacter(const UChar c)
&gt; +{
&gt; +    // obs-text = %x80-FF
&gt; +    return (c &gt;= 0x80 &amp;&amp; c &lt;= 0xFF);
&gt; +}
&gt; +
&gt; +// See RFC 7230, Section 3.2.6.
&gt; +static bool isCommentTextCharacter(const UChar c)
&gt; +{
&gt; +    // ctext = HTAB / SP
&gt; +    //       / %x21-27 ; &apos;!&apos;-&apos;&apos;&apos;
&gt; +    //       / %x2A-5B ; &apos;*&apos;-&apos;[&apos;
&gt; +    //       / %x5D-7E ; &apos;]&apos;-&apos;~&apos;
&gt; +    //       / obs-text
&gt; +    return (c == &apos;\t&apos; || c == &apos; &apos;
&gt; +        || (c &gt;= 0x21 &amp;&amp; c &lt;= 0x27)
&gt; +        || (c &gt;= 0x2A &amp;&amp; c &lt;= 0x5B)
&gt; +        || (c &gt;= 0x5D &amp;&amp; c &lt;= 0x7E)
&gt; +        || isOctectInFieldContentCharacter(c));
&gt; +}

We have these already in HTTPHeaderField.cpp maybe we can move them to a common place?

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:246
&gt; +static inline bool skipCharacter(const String&amp; value, unsigned&amp; pos, const UChar expected)
&gt; +{
&gt; +    if (pos &lt; value.length() &amp;&amp; value[pos] == expected) {
&gt; +        ++pos;
&gt; +        return true;
&gt; +    }
&gt; +    return false;
&gt; +}

Can&apos;t this be used by passing a predicate doing the value[pos] == expected check?

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:275
&gt; +// True is a comment is present, incrementing &quot;pos&quot; to the position after the comment.

True if

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3048
&gt; +    g_return_if_fail(WebCore::isValidUserAgentHeaderValue(userAgentString));

I think we should only validate the given user agent. The standard user agent is generated by WebKit, it&apos;s expected to be valid. We could add an assert in WebCore::standardUserAgent() before returnig the generated value, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569985</commentid>
    <comment_count>15</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-11 14:34:54 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #14)
&gt; Comment on attachment 377718 [details]
&gt; Patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377718&amp;action=review
&gt; 
&gt; LGTM

\o/

&gt; &gt; Source/WebCore/platform/network/HTTPParsers.cpp:177
&gt; &gt; +// See RFC 7230, Section 3.2.6.
&gt; &gt; +static inline bool isOctectInFieldContentCharacter(const UChar c)
&gt; &gt; +{
&gt; &gt; +    // obs-text = %x80-FF
&gt; &gt; +    return (c &gt;= 0x80 &amp;&amp; c &lt;= 0xFF);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +// See RFC 7230, Section 3.2.6.
&gt; &gt; +static bool isCommentTextCharacter(const UChar c)
&gt; &gt; +{
&gt; &gt; +    // ctext = HTAB / SP
&gt; &gt; +    //       / %x21-27 ; &apos;!&apos;-&apos;&apos;&apos;
&gt; &gt; +    //       / %x2A-5B ; &apos;*&apos;-&apos;[&apos;
&gt; &gt; +    //       / %x5D-7E ; &apos;]&apos;-&apos;~&apos;
&gt; &gt; +    //       / obs-text
&gt; &gt; +    return (c == &apos;\t&apos; || c == &apos; &apos;
&gt; &gt; +        || (c &gt;= 0x21 &amp;&amp; c &lt;= 0x27)
&gt; &gt; +        || (c &gt;= 0x2A &amp;&amp; c &lt;= 0x5B)
&gt; &gt; +        || (c &gt;= 0x5D &amp;&amp; c &lt;= 0x7E)
&gt; &gt; +        || isOctectInFieldContentCharacter(c));
&gt; &gt; +}
&gt; 
&gt; We have these already in HTTPHeaderField.cpp maybe we can move them to a
&gt; common place?

There is already a couple of utility function prototypes declared
in “HTTPHeaderField.h” inside the WebCore::RFC7230 namespace. We could
add the prototypes for the other functions used by “HTTPParsers.cpp”
and use them from there.

How about doing that in a follow-up patch?

&gt; &gt; Source/WebCore/platform/network/HTTPParsers.cpp:246
&gt; &gt; +static inline bool skipCharacter(const String&amp; value, unsigned&amp; pos, const UChar expected)
&gt; &gt; +{
&gt; &gt; +    if (pos &lt; value.length() &amp;&amp; value[pos] == expected) {
&gt; &gt; +        ++pos;
&gt; &gt; +        return true;
&gt; &gt; +    }
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; 
&gt; Can&apos;t this be used by passing a predicate doing the value[pos] == expected
&gt; check?

True, let&apos;s change it to that!

(Probably I wrote have written the version that takes just the
character before writing the overload that takes a predicate,
then forgot or didn&apos;t notice that one could be written in terms
of the other.)

&gt; &gt; Source/WebCore/platform/network/HTTPParsers.cpp:275
&gt; &gt; +// True is a comment is present, incrementing &quot;pos&quot; to the position after the comment.
&gt; 
&gt; True if
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3048
&gt; &gt; +    g_return_if_fail(WebCore::isValidUserAgentHeaderValue(userAgentString));
&gt; 
&gt; I think we should only validate the given user agent. The standard user
&gt; agent is generated by WebKit, it&apos;s expected to be valid. We could add an
&gt; assert in WebCore::standardUserAgent() before returnig the generated value,
&gt; though.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569987</commentid>
    <comment_count>16</comment_count>
      <attachid>378579</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-11 14:38:01 -0700</bug_when>
    <thetext>Created attachment 378579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569988</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-11 14:38:41 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570212</commentid>
    <comment_count>18</comment_count>
      <attachid>378579</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-12 01:52:49 -0700</bug_when>
    <thetext>Comment on attachment 378579
Patch

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

Clearing r flag since this is already reviewed

&gt; Source/WebCore/platform/network/HTTPParsers.h:75
&gt; +WEBCORE_EXPORT bool isValidUserAgentHeaderValue(const String&amp;);

We don&apos;t need the export since this is only used by linux ports

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3053
&gt; +        userAgentString = WebCore::standardUserAgent(&quot;&quot;);

I would add an assert in WebCore::standardUserAgent() to ensure the generated user agent is valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570238</commentid>
    <comment_count>19</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-12 06:23:26 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #18)
&gt; Comment on attachment 378579 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378579&amp;action=review
&gt; 
&gt; Clearing r flag since this is already reviewed
&gt; 
&gt; &gt; Source/WebCore/platform/network/HTTPParsers.h:75
&gt; &gt; +WEBCORE_EXPORT bool isValidUserAgentHeaderValue(const String&amp;);
&gt; 
&gt; We don&apos;t need the export since this is only used by linux ports

...but we need the export, otherwise TestWebCore does not link.
Or do you mean that the unit tests added by the patch should be
built only for the GTK and WPE ports, too?

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3053
&gt; &gt; +        userAgentString = WebCore::standardUserAgent(&quot;&quot;);
&gt; 
&gt; I would add an assert in WebCore::standardUserAgent() to ensure the
&gt; generated user agent is valid.

Ah, I missed this, so I&apos;ll add it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570241</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-12 06:28:39 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #19)
&gt; (In reply to Carlos Garcia Campos from comment #18)
&gt; &gt; Comment on attachment 378579 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=378579&amp;action=review
&gt; &gt; 
&gt; &gt; Clearing r flag since this is already reviewed
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/HTTPParsers.h:75
&gt; &gt; &gt; +WEBCORE_EXPORT bool isValidUserAgentHeaderValue(const String&amp;);
&gt; &gt; 
&gt; &gt; We don&apos;t need the export since this is only used by linux ports
&gt; 
&gt; ...but we need the export, otherwise TestWebCore does not link.
&gt; Or do you mean that the unit tests added by the patch should be
&gt; built only for the GTK and WPE ports, too?

No no, you are right, I forgot the unit test, sorry.

&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:3053
&gt; &gt; &gt; +        userAgentString = WebCore::standardUserAgent(&quot;&quot;);
&gt; &gt; 
&gt; &gt; I would add an assert in WebCore::standardUserAgent() to ensure the
&gt; &gt; generated user agent is valid.
&gt; 
&gt; Ah, I missed this, so I&apos;ll add it before landing.

:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570252</commentid>
    <comment_count>21</comment_count>
      <attachid>378644</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-12 07:48:59 -0700</bug_when>
    <thetext>Created attachment 378644
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570259</commentid>
    <comment_count>22</comment_count>
      <attachid>378644</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-12 08:33:38 -0700</bug_when>
    <thetext>Comment on attachment 378644
Patch for landing

Clearing flags on attachment: 378644

Committed r249810: &lt;https://trac.webkit.org/changeset/249810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570260</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-12 08:33:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570265</commentid>
    <comment_count>24</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-12 08:48:02 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #15)
&gt; (In reply to Carlos Garcia Campos from comment #14)
&gt; &gt; Comment on attachment 377718 [details]
&gt; &gt;
&gt; &gt; &gt; Source/WebCore/platform/network/HTTPParsers.cpp:177
&gt; &gt; &gt; +// See RFC 7230, Section 3.2.6.
&gt; &gt; &gt; +static inline bool isOctectInFieldContentCharacter(const UChar c)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    // obs-text = %x80-FF
&gt; &gt; &gt; +    return (c &gt;= 0x80 &amp;&amp; c &lt;= 0xFF);
&gt; &gt; &gt; +}
&gt; &gt; &gt; +
&gt; &gt; &gt; +// See RFC 7230, Section 3.2.6.
&gt; &gt; &gt; +static bool isCommentTextCharacter(const UChar c)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    // ctext = HTAB / SP
&gt; &gt; &gt; +    //       / %x21-27 ; &apos;!&apos;-&apos;&apos;&apos;
&gt; &gt; &gt; +    //       / %x2A-5B ; &apos;*&apos;-&apos;[&apos;
&gt; &gt; &gt; +    //       / %x5D-7E ; &apos;]&apos;-&apos;~&apos;
&gt; &gt; &gt; +    //       / obs-text
&gt; &gt; &gt; +    return (c == &apos;\t&apos; || c == &apos; &apos;
&gt; &gt; &gt; +        || (c &gt;= 0x21 &amp;&amp; c &lt;= 0x27)
&gt; &gt; &gt; +        || (c &gt;= 0x2A &amp;&amp; c &lt;= 0x5B)
&gt; &gt; &gt; +        || (c &gt;= 0x5D &amp;&amp; c &lt;= 0x7E)
&gt; &gt; &gt; +        || isOctectInFieldContentCharacter(c));
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; We have these already in HTTPHeaderField.cpp maybe we can move them to a
&gt; &gt; common place?
&gt; 
&gt; There is already a couple of utility function prototypes declared
&gt; in “HTTPHeaderField.h” inside the WebCore::RFC7230 namespace. We could
&gt; add the prototypes for the other functions used by “HTTPParsers.cpp”
&gt; and use them from there.
&gt; 
&gt; How about doing that in a follow-up patch?

Filed bug #201721 for the follow-up refactoring, I&apos;ll give it a go in
the next days.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377168</attachid>
            <date>2019-08-23 15:48:29 -0700</date>
            <delta_ts>2019-08-26 08:37:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201077-20190824014828.patch</filename>
            <type>text/plain</type>
            <size>8285</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkZTM1MWQyZjc3ODdhMGQ5
YzEwZWJjYmQ2NmMzZDUwYWY3MDU3NjAuLjkxNzJhNjNkMzI3NGZkMDZkYWFjZGY2YTQzNWEwZDYx
ZmU2NjNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMDgtMjMgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVd
IHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudCgpIGFsbG93cyBjb250ZW50IGZvcmJpZGRl
biBpbiBIVFRQIGhlYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTA3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIHNtYWxsIHBhcnNlciBmb3IgVUEgc3RyaW5ncyAoVXNlckFnZW50Q2hl
Y2tlciksIGFuZCB1c2UgaXQgdG8KKyAgICAgICAgdmFsaWRhdGUgdGhlIHN0cmluZ3MgcGFzc2Vk
IHRvIHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudCgpLCBhcworICAgICAgICBwZXIgUkZD
IDcyMzEuIFBhc3NpbmcgYW4gaW52YWxpZCBzdHJpbmcgaXMgY29uc2lkZXJlZCBhIHByb2dyYW1t
aW5nCisgICAgICAgIGVycm9yLCBoZW5jZSB0aGUgdXNhZ2Ugb2YgZ19yZXR1cm5faWZfZmFpbCgp
IHdoaWNoIHdpbGwgd2FybiB0aGUKKyAgICAgICAgcHJvZ3JhbW1lci4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHA6IEFkZGVkIHRoZSBVc2VyQWdlbnRD
aGVja2VyCisgICAgICAgIGhlbHBlciBzdHJ1Y3QsIHdoaWNoIGlzIGEgdGlueSByZWN1cnNpdmUg
ZGVzY2VudCBwYXJzZXIgZm9yIFVBCisgICAgICAgIHN0cmluZ3MuIE5vdGUgdGhhdCBpdCBpcyBu
b3QgYSBmdWxsIHBhcnNlciwgYXMgaXQgb25seSByZWNvZ25pemVzCisgICAgICAgIHdoZXRoZXIg
dGhlIGlucHV0IGlzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgaW1wbGVtZW50ZWQgZ3JhbW1hci4K
KyAgICAgICAgKFVzZXJBZ2VudENoZWNrZXI6OmNoZWNrKToKKyAgICAgICAgKFVzZXJBZ2VudENo
ZWNrZXI6OlVzZXJBZ2VudENoZWNrZXIpOgorICAgICAgICAoVXNlckFnZW50Q2hlY2tlcjo6cGFy
c2VVc2VyQWdlbnQpOgorICAgICAgICAoVXNlckFnZW50Q2hlY2tlcjo6cGFyc2VQcm9kdWN0KToK
KyAgICAgICAgKFVzZXJBZ2VudENoZWNrZXI6OnBhcnNlQ29tbWVudCk6CisgICAgICAgIChVc2Vy
QWdlbnRDaGVja2VyOjpwYXJzZVF1b3RlZFBhaXIpOgorICAgICAgICAoVXNlckFnZW50Q2hlY2tl
cjo6aXNUZXh0Q2hhcmFjdGVyKToKKyAgICAgICAgKFVzZXJBZ2VudENoZWNrZXI6OmlzVmlzaWJs
ZUNoYXJhY3Rlcik6CisgICAgICAgIChVc2VyQWdlbnRDaGVja2VyOjppc09jdGVjdEluRmllbGRD
b250ZW50Q2hhcmFjdGVyKToKKyAgICAgICAgKFVzZXJBZ2VudENoZWNrZXI6OnBhcnNlVG9rZW4p
OgorICAgICAgICAoVXNlckFnZW50Q2hlY2tlcjo6aXNUb2tlbkNoYXJhY3Rlcik6CisgICAgICAg
IChVc2VyQWdlbnRDaGVja2VyOjppc1JlcXVpcmVkV2hpdGVzcGFjZUNoYXJhY3Rlcik6CisgICAg
ICAgIChVc2VyQWdlbnRDaGVja2VyOjpza2lwV2hpbGUpOgorICAgICAgICAoVXNlckFnZW50Q2hl
Y2tlcjo6Y2hlY2tOb3QpOgorICAgICAgICAoVXNlckFnZW50Q2hlY2tlcjo6bWF0Y2gpOgorICAg
ICAgICAoVXNlckFnZW50Q2hlY2tlcjo6Y3VycmVudCk6CisgICAgICAgIChVc2VyQWdlbnRDaGVj
a2VyOjplb3MpOgorICAgICAgICAoVXNlckFnZW50Q2hlY2tlcjo6bmV4dCk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQpOiBDaGVjayB3aGV0aGVyIHRoZSBwYXNzZWQg
dmFsdWUgZm9yCisgICAgICAgIHRoZSBuZXcgVUEgc3RyaW5nIGlzIHZhbGlkIGJlZm9yZSB1c2lu
ZyBpdC4KKwogMjAxOS0wOC0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVudCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRv
ciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IGMzYjY1YzQ5MDRhNjc5OGI1YTlmYTFiNTNkY2RhNGI3NGE5MDJm
YzguLmFjZmMyZGFiN2JhNzQ4NzNiMmY4OGE4ZmNhZGM2MTkyOTlhMjZlZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAg
LTMwMzEsNiArMzAzMSwyMDYgQEAgY29uc3QgY2hhciogd2Via2l0X3NldHRpbmdzX2dldF91c2Vy
X2FnZW50KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKICAgICByZXR1cm4gcHJpdi0+dXNlckFn
ZW50LmRhdGEoKTsKIH0KIAorLy8gQ2hlY2tzIFVzZXItQWdlbnQgc3RyaW5ncyBhcyBwZXIgaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi01LjUuMworLy8gVGhlIGNv
bW1lbnRzIHdpdGggdGhlIEJORiBwcm9kdWN0aW9ucyBiZWZvcmUgdGhlIGZ1bmN0aW9ucyBiZWxv
dyBoYXZlIGJlZW4gY29waWVkCisvLyBmcm9tIHRoZSBSRkMgdmVyYmF0aW0gYXMgcmVmZXJlbmNl
Lgorc3RydWN0IFVzZXJBZ2VudENoZWNrZXIgeworICAgIHN0YXRpYyBib29sIGNoZWNrKGNvbnN0
IGNoYXIqIHVzZXJBZ2VudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VyQWdlbnQpOworICAg
ICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgVXNlckFnZW50Q2hlY2tlcih1c2VyQWdlbnQp
LnBhcnNlVXNlckFnZW50KG9rKTsKKyAgICAgICAgcmV0dXJuIG9rOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBVc2VyQWdlbnRDaGVja2VyKGNvbnN0IGNoYXIgKnMpCisgICAgICAgIDogbV9jdXJw
b3MocykKKyAgICB7CisgICAgfQorCisgICAgZW51bSB7CisgICAgICAgIFNwYWNlICAgICAgICAg
ICA9ICcgJywKKyAgICAgICAgQ29tbWVudFN0YXJ0ICAgID0gJygnLAorICAgICAgICBDb21tZW50
RW5kICAgICAgPSAnKScsCisgICAgICAgIEhvcml6b250YWxUYWIgICA9ICdcdCcsCisgICAgICAg
IFF1b3RlZFBhaXJTdGFydCA9ICdcXCcsCisgICAgfTsKKworI2RlZmluZSBPSyBib29sJiBvawor
I2RlZmluZSBDSEVDS19PSyBvayk7IFwKKyAgICBpZiAoIW9rKSAgICAgICAgICBcCisgICAgICAg
IHJldHVybjsgICAgICAgXAorICAgICgodm9pZCkgMAorI2RlZmluZSBEVU1NWSApIC8vIE1ha2Ug
ZWRpdG9yIGF1dG9pbmRlbnQgd29yay4KKyN1bmRlZiBEVU1NWQorCisgICAgLy8gVXNlci1BZ2Vu
dCA9IHByb2R1Y3QgKiggUldTICggcHJvZHVjdCAvIGNvbW1lbnQgKSApCisgICAgdm9pZCBwYXJz
ZVVzZXJBZ2VudChPSykKKyAgICB7CisgICAgICAgIHBhcnNlUHJvZHVjdChDSEVDS19PSyk7Cisg
ICAgICAgIHdoaWxlIChjaGVjayhpc1JlcXVpcmVkV2hpdGVzcGFjZUNoYXJhY3RlcikpIHsKKyAg
ICAgICAgICAgIHNraXBXaGlsZShpc1JlcXVpcmVkV2hpdGVzcGFjZUNoYXJhY3Rlcik7CisgICAg
ICAgICAgICBpZiAoY2hlY2soQ29tbWVudFN0YXJ0KSkgeworICAgICAgICAgICAgICAgIHBhcnNl
Q29tbWVudChDSEVDS19PSyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHBhcnNlUHJvZHVjdChDSEVDS19PSyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgb2sgPSBlb3MoKTsKKyAgICB9CisKKyAgICAvLyBwcm9kdWN0ICAgICAgICAgPSB0b2tlbiBb
Ii8iIHByb2R1Y3QtdmVyc2lvbl0KKyAgICAvLyBwcm9kdWN0LXZlcnNpb24gPSB0b2tlbgorICAg
IHZvaWQgcGFyc2VQcm9kdWN0KE9LKQorICAgIHsKKyAgICAgICAgcGFyc2VUb2tlbihDSEVDS19P
Syk7CisgICAgICAgIGlmIChjaGVjaygnLycpKSB7CisgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgICAgICBwYXJzZVRva2VuKENIRUNLX09LKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IGNvbW1lbnQgICAgID0gIigiICooIGN0ZXh0IC8gcXVvdGVkLXBhaXIgLyBjb21tZW50ICkgIiki
CisgICAgLy8gY3RleHQgICAgICAgPSBIVEFCIC8gU1AgLyAleDIxLTI3IC8gJXgyQS01QiAvICV4
NUQtN0UgLyBvYnMtdGV4dAorICAgIC8vIHF1b3RlZC1wYWlyID0gIlwiICggSFRBQiAvIFNQIC8g
VkNIQVIgLyBvYnMtdGV4dCApCisgICAgdm9pZCBwYXJzZUNvbW1lbnQoT0spCisgICAgeworICAg
ICAgICBtYXRjaChDb21tZW50U3RhcnQsIENIRUNLX09LKTsKKyAgICAgICAgd2hpbGUgKCFlb3Mo
KSAmJiBjaGVja05vdChDb21tZW50RW5kKSkgeworICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0OgorICAgICAgICAgICAgICAgIHBh
cnNlQ29tbWVudChDSEVDS19PSyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFF1b3RlZFBhaXJTdGFydDoKKyAgICAgICAgICAgICAgICBwYXJzZVF1b3RlZFBhaXIo
Q0hFQ0tfT0spOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBtYXRjaChpc1RleHRDaGFyYWN0ZXIsIENIRUNLX09LKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtYXRjaChDb21tZW50RW5kLCBDSEVDS19PSyk7
CisgICAgfQorCisgICAgLy8gcXVvdGVkLXBhaXIgPSAiXCIgKCBIVEFCIC8gU1AgLyBWQ0hBUiAv
IG9icy10ZXh0ICkKKyAgICB2b2lkIHBhcnNlUXVvdGVkUGFpcihPSykKKyAgICB7CisgICAgICAg
IG1hdGNoKFF1b3RlZFBhaXJTdGFydCwgQ0hFQ0tfT0spOworICAgICAgICBvayA9IGNoZWNrKEhv
cml6b250YWxUYWIpCisgICAgICAgICAgICB8fCBjaGVjayhTcGFjZSkKKyAgICAgICAgICAgIHx8
IGNoZWNrKGlzVmlzaWJsZUNoYXJhY3RlcikKKyAgICAgICAgICAgIHx8IGNoZWNrKGlzT2N0ZWN0
SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIpOworICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAg
Ly8gY3RleHQgPSBIVEFCIC8gU1AgLyAleDIxLTI3IDsgJyEnLScnJworICAgIC8vICAgICAgIC8g
JXgyQS01QiA7ICcqJy0nWycKKyAgICAvLyAgICAgICAvICV4NUQtN0UgOyAnXSctJ34nCisgICAg
Ly8gICAgICAgLyBvYnMtdGV4dAorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RleHRDaGFyYWN0
ZXIoY2hhciBjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChjID09IEhvcml6b250YWxUYWIpCisg
ICAgICAgICAgICB8fCAoYyA9PSBTcGFjZSkKKyAgICAgICAgICAgIHx8IChjID49IDB4MkEgJiYg
YyA8PSAweDVCKQorICAgICAgICAgICAgfHwgKGMgPj0gMHg1RCAmJiBjIDw9IDB4N0UpCisgICAg
ICAgICAgICB8fCBpc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKGMpOworICAgIH0KKwor
ICAgIC8vIFZDSEFSID0gJXgyMS03RQorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Zpc2libGVD
aGFyYWN0ZXIoaW50IGMpCisgICAgeworICAgICAgICByZXR1cm4gKGMgPj0gMHgyMSAmJiBjIDw9
IDB4N0UpOworICAgIH0KKworICAgIC8vIG9icy10ZXh0ID0gJXg4MC1GRgorICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKGludCBjKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIChjID49IDB4ODAgJiYgYyA8PSAweEZGKTsKKyAgICB9CisKKyAgICAv
LyB0b2tlbiA9IDEqdGNoYXIKKyAgICB2b2lkIHBhcnNlVG9rZW4oT0spCisgICAgeworICAgICAg
ICBtYXRjaChpc1Rva2VuQ2hhcmFjdGVyLCBDSEVDS19PSyk7CisgICAgICAgIHNraXBXaGlsZShp
c1Rva2VuQ2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICAvLyB0Y2hhciA9ICIhIiAvICIjIiAvICIk
IiAvICIlIiAvICImIiAvICInIiAvICIqIgorICAgIC8vICAgICAgIC8gIisiIC8gIi0iIC8gIi4i
IC8gIl4iIC8gIl8iIC8gImAiIC8gInwiIC8gIn4iCisgICAgLy8gICAgICAgLyBESUdJVCAvIEFM
UEhBCisgICAgc3RhdGljIGlubGluZSBib29sIGlzVG9rZW5DaGFyYWN0ZXIoaW50IGMpCisgICAg
eworICAgICAgICByZXR1cm4gYyA9PSAnIScgfHwgYyA9PSAnIycKKyAgICAgICAgICAgIHx8IGMg
PT0gJyQnIHx8IGMgPT0gJyUnCisgICAgICAgICAgICB8fCBjID09ICcmJyB8fCBjID09ICdcJycK
KyAgICAgICAgICAgIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCisgICAgICAgICAgICB8fCBjID09
ICctJyB8fCBjID09ICcuJworICAgICAgICAgICAgfHwgYyA9PSAnXicgfHwgYyA9PSAnYycKKyAg
ICAgICAgICAgIHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3wnCisgICAgICAgICAgICB8fCBjID09ICd+
JyB8fCBXVEY6OmlzQVNDSUlBbHBoYW51bWVyaWMoYyk7CisgICAgfQorCisgICAgLy8gUldTID0g
MSooIFNQIC8gSFRBQiApCisgICAgc3RhdGljIGlubGluZSBib29sIGlzUmVxdWlyZWRXaGl0ZXNw
YWNlQ2hhcmFjdGVyKGludCBjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGMgPT0gU3BhY2UgfHwg
YyA9PSBIb3Jpem9udGFsVGFiOworICAgIH0KKworICAgIGlubGluZSB2b2lkIHNraXBXaGlsZShz
dGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4gcHJlZGljYXRlKQorICAgIHsKKyAgICAgICAgd2hpbGUg
KGNoZWNrKHByZWRpY2F0ZSkpCisgICAgICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgaW5s
aW5lIGJvb2wgY2hlY2soc3RkOjpmdW5jdGlvbjxib29sKGludCk+IHByZWRpY2F0ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiAhZW9zKCkgJiYgcHJlZGljYXRlKGN1cnJlbnQoKSk7CisgICAgfQor
CisgICAgaW5saW5lIGJvb2wgY2hlY2soaW50IGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICFlb3MoKSAmJiAoY3VycmVudCgpID09IGV4cGVjdGVkKTsKKyAgICB9CisKKyAgICBpbmxp
bmUgYm9vbCBjaGVja05vdChpbnQgZXhwZWN0ZWQpCisgICAgeworICAgICAgICByZXR1cm4gIWNo
ZWNrKGV4cGVjdGVkKTsKKyAgICB9CisKKyAgICB2b2lkIG1hdGNoKHN0ZDo6ZnVuY3Rpb248Ym9v
bChpbnQpPiBwcmVkaWNhdGUsIE9LKQorICAgIHsKKyAgICAgICAgb2sgPSBjaGVjayhwcmVkaWNh
dGUpOworICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBpbmxpbmUgbWF0Y2goaW50
IGV4cGVjdGVkLCBPSykKKyAgICB7CisgICAgICAgIG9rID0gY2hlY2soZXhwZWN0ZWQpOworICAg
ICAgICBuZXh0KCk7CisgICAgfQorCisgICAgaW50IGlubGluZSBjdXJyZW50KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAqbV9jdXJwb3M7CisgICAgfQorCisgICAgYm9vbCBpbmxpbmUg
ZW9zKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjdXJyZW50KCkgPT0gJ1wwJzsKKyAg
ICB9CisKKyAgICB2b2lkIGlubGluZSBuZXh0KCkKKyAgICB7CisgICAgICAgIGlmICghZW9zKCkp
CisgICAgICAgICAgICArK21fY3VycG9zOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIG1fY3Vy
cG9zOworCisjdW5kZWYgQ0hFQ0tfT0sKKyN1bmRlZiBPSworfTsKKwogLyoqCiAgKiB3ZWJraXRf
c2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQ6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdz
CkBAIC0zMDQxLDYgKzMyNDEsNyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X3Vz
ZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
c2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFyKiB1c2Vy
QWdlbnQpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGlu
Z3MpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKCF1c2VyQWdlbnQgfHwgVXNlckFnZW50Q2hlY2tl
cjo6Y2hlY2sodXNlckFnZW50KSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKICAgICBDU3RyaW5nIG5ld1VzZXJBZ2VudCA9ICghdXNlckFnZW50
IHx8ICFzdHJsZW4odXNlckFnZW50KSkgPyBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudCgiIiku
dXRmOCgpIDogdXNlckFnZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377247</attachid>
            <date>2019-08-26 08:37:41 -0700</date>
            <delta_ts>2019-08-30 08:12:12 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-201077-20190826183740.patch</filename>
            <type>text/plain</type>
            <size>10983</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2NjdiMTVmMjZiZmE4
NmRiNWYyMDFlYTlmZmQ1NzExZjM1MGQyMy4uMWVjMGI2NDJlNTlkNGVkNDUwOTNhZDk5NGMwZTc2
MTkzNzJmYzBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA4LTI2ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3Ji
aWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXSVAKKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2tpcFdoaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZUNoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJDb3JlOjppc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ29tbWVudFRleHRDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aXNIVFRQVG9rZW5DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhUVFBUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpza2lwQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNraXBRdW90ZWRQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OnNraXBDb21tZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNraXBIVFRQVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFVzZXJB
Z2VudFByb2R1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6CisKIDIwMTkt
MDgtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lc3Nh
Z2VQb3J0IHNob3VsZCBiZSBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5ODQ4NjRjZmYyNGM4NDMyNWI2YzQyZGM0MzNhNTdmZTRiZDkwNjY1Li42MDA2ZWRh
OTk2MGVjYmM0ZjVhYTQyYjQxNzczOTMyNzMwZThhNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE5LTA4LTI2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bV1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQo
KSBhbGxvd3MgY29udGVudCBmb3JiaWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3Nfc2V0X3VzZXJfYWdlbnQpOgorCiAyMDE5LTA4LTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXZWJzaXRlRGF0YVN0b3JlIGRlbGVnYXRlIHRv
IGhhbmRsZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0aGF0IGRvIG5vdCBjb21lIGZyb20gcGFn
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
aW5kZXggNTBhMjM3OWFjYTQ4ODgwY2JjMzRiNDZiMDZjOGYwMDc2YWQ4YzI4Ny4uOWRhOWQ3MTU5
YTk1OGNiYjdlMGNhMTFmZGRjOGRiODY2YTgxOTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTk3LDYgKzk3LDE4IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBza2lwVmFsdWUoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3Mp
CiAgICAgcmV0dXJuIHBvcyAhPSBzdGFydDsKIH0KIAorLy8gVHJ1ZSBpZiBjaGFyYWN0ZXJzIHdo
aWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBhcmUgcHJlc2VudCwgaW5jcmVtZW50aW5nCisvLyAi
cG9zIiB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgd2hpY2ggZG9lcyBub3Qgc2F0aXNmeSB0aGUgcHJl
ZGljYXRlLgorLy8gTm90ZTogbWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkuCitzdGF0
aWMgaW5saW5lIGJvb2wgc2tpcFdoaWxlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9z
LCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgVUNoYXIpPiYgcHJlZGljYXRlKQorewor
ICAgIGNvbnN0IHVuc2lnbmVkIHN0YXJ0ID0gcG9zOworICAgIGNvbnN0IHVuc2lnbmVkIGxlbiA9
IHN0ci5sZW5ndGgoKTsKKyAgICB3aGlsZSAocG9zIDwgbGVuICYmIHByZWRpY2F0ZShzdHJbcG9z
XSkpCisgICAgICAgICsrcG9zOworICAgIHJldHVybiBwb3MgIT0gc3RhcnQ7Cit9CisKIC8vIFNl
ZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjEuMi4KIGJvb2wgaXNWYWxpZFJlYXNvblBocmFzZShjb25z
dCBTdHJpbmcmIHZhbHVlKQogewpAQCAtMTM1LDYgKzE0NywzNSBAQCBzdGF0aWMgYm9vbCBpc0Rl
bGltaXRlckNoYXJhY3Rlcihjb25zdCBVQ2hhciBjKQogICAgICAgICB8fCBjID09ICddJyB8fCBj
ID09ICd7JyB8fCBjID09ICd9Jyk7CiB9CiAKKy8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIu
Ni4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Zpc2libGVDaGFyYWN0ZXIoY29uc3QgVUNoYXIgYykK
K3sKKyAgICAvLyBWQ0hBUiA9ICV4MjEtN0UKKyAgICByZXR1cm4gKGMgPj0gMHgyMSAmJiBjIDw9
IDB4N0UpOworfQorCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNPY3RlY3RJbkZpZWxkQ29udGVudENoYXJhY3Rlcihjb25zdCBVQ2hhciBjKQor
eworICAgIC8vIG9icy10ZXh0ID0gJXg4MC1GRgorICAgIHJldHVybiAoYyA+PSAweDgwICYmIGMg
PD0gMHhGRik7Cit9CisKKy8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBi
b29sIGlzQ29tbWVudFRleHRDaGFyYWN0ZXIoY29uc3QgVUNoYXIgYykKK3sKKyAgICAvLyBjdGV4
dCA9IEhUQUIgLyBTUAorICAgIC8vICAgICAgIC8gJXgyMS0yNyA7ICchJy0nJycKKyAgICAvLyAg
ICAgICAvICV4MkEtNUIgOyAnKictJ1snCisgICAgLy8gICAgICAgLyAleDVELTdFIDsgJ10nLSd+
JworICAgIC8vICAgICAgIC8gb2JzLXRleHQKKyAgICByZXR1cm4gKGMgPT0gJ1x0JyB8fCBjID09
ICcgJworICAgICAgICB8fCAoYyA+PSAweDIxICYmIGMgPD0gMHgyNykKKyAgICAgICAgfHwgKGMg
Pj0gMHgyQSAmJiBjIDw9IDB4NUIpCisgICAgICAgIHx8IChjID49IDB4NUQgJiYgYyA8PSAweDdF
KQorICAgICAgICB8fCBpc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKGMpKTsKK30KKwog
Ly8gU2VlIFJGQyA3MjMxLCBTZWN0aW9uIDUuMy4yLgogYm9vbCBpc1ZhbGlkQWNjZXB0SGVhZGVy
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKQEAgLTE3Myw2ICsyMTQsMTMgQEAgYm9vbCBp
c1ZhbGlkTGFuZ3VhZ2VIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVy
biB0cnVlOwogfQogCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNIVFRQVG9rZW5DaGFyYWN0ZXIoY29uc3QgVUNoYXIgYykKK3sKKyAgICAvLyBB
bnkgVkNIQVIsIGV4Y2VwdCBkZWxpbWl0ZXJzCisgICAgcmV0dXJuIGMgPj0gMHgyMCAmJiBjIDw9
IDB4N0YgJiYgIWlzRGVsaW1pdGVyQ2hhcmFjdGVyKGMpOworfQorCiAvLyBTZWUgUkZDIDcyMzAs
IFNlY3Rpb24gMy4yLjYuCiBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKQEAgLTE4MCwxNiArMjI4LDEyNiBAQCBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gdmFsdWVTdHJp
bmdWaWV3ID0gU3RyaW5nVmlldyh2YWx1ZSk7CiAgICAgZm9yIChVQ2hhciBjIDogdmFsdWVTdHJp
bmdWaWV3LmNvZGVVbml0cygpKSB7Ci0gICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdG
Ci0gICAgICAgICAgICB8fCBjID09ICcoJyB8fCBjID09ICcpJyB8fCBjID09ICc8JyB8fCBjID09
ICc+JyB8fCBjID09ICdAJwotICAgICAgICAgICAgfHwgYyA9PSAnLCcgfHwgYyA9PSAnOycgfHwg
YyA9PSAnOicgfHwgYyA9PSAnXFwnIHx8IGMgPT0gJyInCi0gICAgICAgICAgICB8fCBjID09ICcv
JyB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc/JyB8fCBjID09ICc9JwotICAgICAg
ICAgICAgfHwgYyA9PSAneycgfHwgYyA9PSAnfScpCisgICAgICAgIGlmICghaXNIVFRQVG9rZW5D
aGFyYWN0ZXIoYykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCisvLyBUcnVlIGlmIHRoZSAiZXhwZWN0ZWQiIGNoYXJhY3RlciBpcyBhdCB0
aGUgZ2l2ZW4gcG9zaXRpb24sIGluY3JlbWVudGluZyAicG9zIiBieSBvbmUuCisvLyBOb3RlOiBN
aWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQorc3RhdGljIGlubGluZSBib29sIHNraXBD
aGFyYWN0ZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcywgY29uc3QgVUNoYXIg
ZXhwZWN0ZWQpCit7CisgICAgaWYgKHBvcyA8IHZhbHVlLmxlbmd0aCgpICYmIHZhbHVlW3Bvc10g
PT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgKytwb3M7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFRydWUgaWYgdGhlIGNoYXJhY3RlciBhdCB0
aGUgZ2l2ZW4gcG9zaXRpb24gc2F0aXNpZmllcyBhIHByZWRpY2F0ZSwgaW5jcmVtZW50aW5nICJw
b3MiIGJ5IG9uZS4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCitz
dGF0aWMgaW5saW5lIGJvb2wgc2tpcENoYXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNp
Z25lZCYgcG9zLCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgVUNoYXIpPiYmIHByZWRpY2F0ZSkK
K3sKKyAgICBpZiAocG9zIDwgdmFsdWUubGVuZ3RoKCkgJiYgcHJlZGljYXRlKHZhbHVlW3Bvc10p
KSB7CisgICAgICAgICsrcG9zOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisvLyBUcnVlIGlmIGEgcXVvdGVkIHBhaXIgaXMgcHJlc2VudCwgaW5j
cmVtZW50aW5nICJwb3MiIHRvIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgcXVvdGVkIHBhaXIuCisv
LyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQorLy8gU2VlIFJGQyA3MjMw
LCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGNvbnN0ZXhwciBhdXRvIFF1b3RlZFBhaXJTdGFydENo
YXJhY3RlciA9ICdcXCc7CitzdGF0aWMgYm9vbCBza2lwUXVvdGVkUGFpcihjb25zdCBTdHJpbmcm
IHZhbHVlLCB1bnNpZ25lZCYgcG9zKQoreworICAgIC8vIHF1b3RlZC1wYWlyID0gIlwiICggSFRB
QiAvIFNQIC8gVkNIQVIgLyBvYnMtdGV4dCApCisgICAgaWYgKCFza2lwQ2hhcmFjdGVyKHZhbHVl
LCBwb3MsIFF1b3RlZFBhaXJTdGFydENoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsICdcdCcpCisgICAgICAgIHx8
IHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgJyAnKQorICAgICAgICB8fCBza2lwQ2hhcmFjdGVy
KHZhbHVlLCBwb3MsIGlzVmlzaWJsZUNoYXJhY3RlcikKKyAgICAgICAgfHwgc2tpcENoYXJhY3Rl
cih2YWx1ZSwgcG9zLCBpc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKTsKK30KKworLy8g
VHJ1ZSBpcyBhIGNvbW1lbnQgaXMgcHJlc2VudCwgaW5jcmVtZW50aW5nICJwb3MiIHRvIHRoZSBw
b3NpdGlvbiBhZnRlciB0aGUgY29tbWVudC4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0g
c3RyLmxlbmd0aCgpCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgY29u
c3RleHByIGF1dG8gQ29tbWVudFN0YXJ0Q2hhcmFjdGVyID0gJygnOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIENvbW1lbnRFbmRDaGFyYWN0ZXIgPSAnKSc7CitzdGF0aWMgYm9vbCBza2lwQ29tbWVu
dChjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zKQoreworICAgIC8vIGNvbW1lbnQg
PSAiKCIgKiggY3RleHQgLyBxdW90ZWQtcGFpciAvIGNvbW1lbnQgKSAiKSIKKyAgICAvLyBjdGV4
dCAgID0gSFRBQiAvIFNQIC8gJXgyMS0yNyAvICV4MkEtNUIgLyAleDVELTdFIC8gb2JzLXRleHQK
KyAgICBpZiAoIXNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgQ29tbWVudFN0YXJ0Q2hhcmFjdGVy
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQgZW5kID0gdmFs
dWUubGVuZ3RoKCk7CisgICAgd2hpbGUgKHBvcyA8IGVuZCAmJiB2YWx1ZVtwb3NdICE9IENvbW1l
bnRFbmRDaGFyYWN0ZXIpIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZVtwb3NdKSB7CisgICAgICAg
IGNhc2UgQ29tbWVudFN0YXJ0Q2hhcmFjdGVyOgorICAgICAgICAgICAgaWYgKCFza2lwQ29tbWVu
dCh2YWx1ZSwgcG9zKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBRdW90ZWRQYWlyU3RhcnRDaGFyYWN0ZXI6CisgICAgICAg
ICAgICBpZiAoIXNraXBRdW90ZWRQYWlyKHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgaWYgKCFza2lwV2hpbGUodmFsdWUsIHBvcywgaXNDb21tZW50VGV4dENoYXJhY3Rlcikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQorICAgIHJl
dHVybiBza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIENvbW1lbnRFbmRDaGFyYWN0ZXIpOworfQor
CisvLyBUcnVlIGlmIGFuIEhUVFAgaGVhZGVyIHRva2VuIGlzIHByZXNlbnQsIGluY3JlbWVudGlu
ZyAicG9zIiB0byB0aGUgcG9zaXRpb24gYWZ0ZXIgaXQuCisvLyBOb3RlOiBNaWdodCByZXR1cm4g
cG9zID09IHN0ci5sZW5ndGgoKQorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3Rh
dGljIGJvb2wgc2tpcEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9z
KQoreworICAgIHJldHVybiBza2lwV2hpbGUodmFsdWUsIHBvcywgaXNIVFRQVG9rZW5DaGFyYWN0
ZXIpOworfQorCisvLyBUcnVlIGlmIGEgcHJvZHVjdCBzcGVjaWZpZXIgKGFzIGluIGFuIFVzZXIt
QWdlbnQgaGVhZGVyKSBpcyBwcmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8gdGhlIHBvc2l0
aW9uIGFmdGVyIGl0LgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkK
Ky8vIFNlZSBSRkMgNzIzMSwgU2VjdGlvbiA1LjUuMy4KK3N0YXRpYyBib29sIHNraXBVc2VyQWdl
bnRQcm9kdWN0KGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8g
cHJvZHVjdCAgICAgICAgID0gdG9rZW4gWyIvIiBwcm9kdWN0LXZlcnNpb25dCisgICAgLy8gcHJv
ZHVjdC12ZXJzaW9uID0gdG9rZW4KKyAgICBpZiAoIXNraXBIVFRQVG9rZW4odmFsdWUsIHBvcykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9z
LCAnLycpKQorICAgICAgICByZXR1cm4gc2tpcEhUVFBUb2tlbih2YWx1ZSwgcG9zKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorLy8gU2VlIFJGQyA3MjMxLCBTZWN0aW9uIDUuNS4zCitib29sIGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIC8v
IFVzZXItQWdlbnQgPSBwcm9kdWN0ICooIFJXUyAoIHByb2R1Y3QgLyBjb21tZW50ICkgKQorICAg
IHVuc2lnbmVkIHBvcyA9IDA7CisgICAgaWYgKCFza2lwVXNlckFnZW50UHJvZHVjdCh2YWx1ZSwg
cG9zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgd2hpbGUgKHBvcyA8IHZhbHVlLmxl
bmd0aCgpKSB7CisgICAgICAgIGlmICghc2tpcFdoaXRlU3BhY2UodmFsdWUsIHBvcykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICh2YWx1ZVtwb3NdID09IENvbW1lbnRT
dGFydENoYXJhY3RlcikgeworICAgICAgICAgICAgaWYgKCFza2lwQ29tbWVudCh2YWx1ZSwgcG9z
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAoIXNraXBVc2VyQWdlbnRQcm9kdWN0KHZhbHVlLCBwb3MpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBwb3Mg
PT0gdmFsdWUubGVuZ3RoKCk7Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1w
bGVTaXplID0gMTI4Owogc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciog
cCwgc2l6ZV90IGxlbmd0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuaAppbmRleCBlM2UxOTI3MDVjNzFmZTJiMmVmMTA3NzBkZGQxMjU2MDZmYzNk
ZjlkLi5jMjFlY2MwNTAwNWFlNjdiYzJhZWNjNTczOTA2OTc4ZDllYzQ2ZjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC03Miw2ICs3Miw3
IEBAIGJvb2wgaXNWYWxpZFJlYXNvblBocmFzZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxp
ZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkTGFuZ3VhZ2VIZWFkZXJWYWx1ZShj
b25zdCBTdHJpbmcmKTsKK2Jvb2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0
cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBwYXJz
ZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgZG91YmxlJiBkZWxheSwgU3RyaW5n
JiB1cmwpOwogT3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5n
cy5jcHAKaW5kZXggYzNiNjVjNDkwNGE2Nzk4YjVhOWZhMWI1M2RjZGE0Yjc0YTkwMmZjOC4uYzg2
OTc1ODU1MGMwNWI3ZWM1ZTIwNWE5OTFlYzhmMzE4ODVjZThhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9IVFRQUGFyc2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQWdlbnQuaD4KQEAgLTMwNDMsNyArMzA0NCwxMCBAQCB2b2lkIHdlYmtpdF9zZXR0
aW5nc19zZXRfdXNlcl9hZ2VudChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGNoYXIq
IHVzZXJBZwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdz
KSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsK
LSAgICBDU3RyaW5nIG5ld1VzZXJBZ2VudCA9ICghdXNlckFnZW50IHx8ICFzdHJsZW4odXNlckFn
ZW50KSkgPyBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudCgiIikudXRmOCgpIDogdXNlckFnZW50
OworICAgIFN0cmluZyB1c2VyQWdlbnRTdHJpbmcgPSAoIXVzZXJBZ2VudCB8fCAhc3RybGVuKHVz
ZXJBZ2VudCkpID8gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpIDogU3RyaW5nOjpmcm9t
VVRGOCh1c2VyQWdlbnQpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV2ViQ29yZTo6aXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKHVzZXJBZ2VudFN0cmluZykpOworCisgICAgQ1N0cmluZyBuZXdV
c2VyQWdlbnQgPSB1c2VyQWdlbnRTdHJpbmcudXRmOCgpOwogICAgIGlmIChuZXdVc2VyQWdlbnQg
PT0gcHJpdi0+dXNlckFnZW50KQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377707</attachid>
            <date>2019-08-30 08:12:34 -0700</date>
            <delta_ts>2019-08-30 08:44:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201077-20190830181232.patch</filename>
            <type>text/plain</type>
            <size>16189</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc3N2RjYTUyNTk2ODQy
Zjc3OGRiZjdhNGJiYTBjYzIwNDU4NGY4ZC4uODY1YjQ5MjYxOWU4NjNkNDcyYjBkYTQ1MmM3NjJk
OWU4NDQ2NDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTMwICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3Ji
aWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB3aGV0aGVyIGEgc3RyaW5n
IGNvbnRhaW5zIGEgdmFsaWQgdmFsdWUKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgaW4gYSBI
VFRQIFVzZXItQWdlbnQgaGVhZGVyLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IFdlYkNvcmUg
QVBJIHRlc3QgSFRUUFBhcnNlcnMuVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDogQWRkZWQgYSBzZXJpZXMgb2YgaGVs
cGVyIGZ1bmN0aW9ucyB3aGljaCBza2lwIG92ZXIKKyAgICAgICAgY2hhcmFjdGVycyBvZiBhIHN0
cmluZywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2NhbiBvdmVyIHRoZSBkaWZmZXJlbnQgZWxlbWVu
dHMgb2YgYW4KKyAgICAgICAgVXNlci1BZ2VudCB2YWx1ZTsgYWxsIG9mIHRoZW0gcmVjZWl2ZSB0
aGUgcG9zaXRpb24gZnJvbSB0aGUgaW5wdXQgc3RyaW5nIHdoZXJlIHRvIHN0YXJ0CisgICAgICAg
IHNjYW5uaW5nLCB1cGRhdGluZyBpdCB0byB0aGUgcG9zaXRpb24gcmlnaHQgYWZ0ZXIgdGhlIHNj
YW5uZWQgaXRlbSAodGhpcyBmb2xsb3cgdGhlCisgICAgICAgIGNvbnZlbnRpb24gYWxyZWFkeSBp
biB1c2UgYnkgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzb3VyY2UgZmlsZSkuIEVhY2ggb2YgdGhl
bSBoYXMKKyAgICAgICAgYmVlbiBhbm5vdGF0ZWQgd2l0aCB0aGUgUkZDIG51bWJlciBhbmQgc2Vj
dGlvbiB3aGljaCBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAgICAgICAgc2Nhbm5l
ZCBpdGVtLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQk5GIHJ1bGVzIHRvIG1ha2UgdGhlIGNvZGUg
ZWFzaWVyIHRvIGZvbGxvdy4KKyAgICAgICAgKFdlYkNvcmU6OnNraXBXaGlsZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNWaXNpYmxlQ2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjppc0NvbW1lbnRUZXh0Q2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjppc0hUVFBUb2tlbkNoYXJhY3Rlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZEhUVFBUb2tlbik6IFJlZmFjdG9yZWQgdG8gdXNlIHRoZSBuZXcgaXNIVFRQVG9rZW5DaGFy
YWN0ZXIoKQorICAgICAgICBoZWxwZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBoYXZpbmcgdGhlIHRl
c3QgaW5zaWRlIHRoZSBsb29wLgorICAgICAgICAoV2ViQ29yZTo6c2tpcENoYXJhY3Rlcik6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2tpcFF1b3RlZFBhaXIpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnNraXBDb21tZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwSFRU
UFRva2VuKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwVXNlckFnZW50UHJvZHVjdCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKTog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oOiBBZGQgcHJv
dG90eXBlIGZvciBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoKS4KKwogMjAxOS0wOC0zMCAg
Q2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1l
cl0gRG8gbm90IHJlZiB0aGUgcGxheWVyIGNvdW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0OWNkYjUwY2U0ZTUyMDRjZjFjMTBhZGQ0OTdmNTQzM2I4ZjRiZWVmLi43ZDEw
MWI4MThhYzFhY2NkYTEzYjhiZTVmNThhNGFiMDAyNTg3MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTA4LTMwICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdl
bnQoKSBhbGxvd3MgY29udGVudCBmb3JiaWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJf
YWdlbnQpOiBDaGVjayB0aGUgcGFzc2VkIHN0cmluZyB1c2luZyB0aGUgbmV3CisgICAgICAgIFdl
YkNvcmU6OmlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgpIGZ1bmN0aW9uLCBhbmQgcmV0dXJu
IGVhcmx5IHdpdGhvdXQKKyAgICAgICAgY2hhbmdpbmcgdGhlIHNldHRpbmcgaWYgdGhlIHN0cmlu
ZyBpcyBub3QgdXNhYmxlIGluIHRoZSBVc2VyLUFnZW50IEhUVFAKKyAgICAgICAgaGVhZGVyLgor
CiAyMDE5LTA4LTMwICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dQRV1bR1RLXSBOZXcgQVBJIHRvIHJlbW92ZSBhIGZpbHRlciBmcm9tIGFu
IHVzZXIgY29udGVudCBtYW5hZ2VyIGdpdmVuIGl0cyBpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDUwYTIzNzlhY2E0
ODg4MGNiYzM0YjQ2YjA2YzhmMDA3NmFkOGMyODcuLjEwMzBjYmU5YTM4YjY5NWU3ZGQ1NDY2MmI2
NmNiNzI3MTJhMzQ3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC05Nyw2ICs5NywxOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tp
cFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zKQogICAgIHJldHVybiBwb3Mg
IT0gc3RhcnQ7CiB9CiAKKy8vIFRydWUgaWYgY2hhcmFjdGVycyB3aGljaCBzYXRpc2Z5IHRoZSBw
cmVkaWNhdGUgYXJlIHByZXNlbnQsIGluY3JlbWVudGluZworLy8gInBvcyIgdG8gdGhlIG5leHQg
Y2hhcmFjdGVyIHdoaWNoIGRvZXMgbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4KKy8vIE5vdGU6
IG1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpLgorc3RhdGljIGlubGluZSBib29sIHNr
aXBXaGlsZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcywgY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sKGNvbnN0IFVDaGFyKT4mIHByZWRpY2F0ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBzdGFydCA9IHBvczsKKyAgICBjb25zdCB1bnNpZ25lZCBsZW4gPSBzdHIubGVuZ3RoKCk7Cisg
ICAgd2hpbGUgKHBvcyA8IGxlbiAmJiBwcmVkaWNhdGUoc3RyW3Bvc10pKQorICAgICAgICArK3Bv
czsKKyAgICByZXR1cm4gcG9zICE9IHN0YXJ0OworfQorCiAvLyBTZWUgUkZDIDcyMzAsIFNlY3Rp
b24gMy4xLjIuCiBib29sIGlzVmFsaWRSZWFzb25QaHJhc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKQEAgLTEzNSw2ICsxNDcsMzUgQEAgc3RhdGljIGJvb2wgaXNEZWxpbWl0ZXJDaGFyYWN0ZXIo
Y29uc3QgVUNoYXIgYykKICAgICAgICAgfHwgYyA9PSAnXScgfHwgYyA9PSAneycgfHwgYyA9PSAn
fScpOwogfQogCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgaW5saW5l
IGJvb2wgaXNWaXNpYmxlQ2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gVkNIQVIg
PSAleDIxLTdFCisgICAgcmV0dXJuIChjID49IDB4MjEgJiYgYyA8PSAweDdFKTsKK30KKworLy8g
U2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGluZSBib29sIGlzT2N0ZWN0
SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIoY29uc3QgVUNoYXIgYykKK3sKKyAgICAvLyBvYnMtdGV4
dCA9ICV4ODAtRkYKKyAgICByZXR1cm4gKGMgPj0gMHg4MCAmJiBjIDw9IDB4RkYpOworfQorCisv
LyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgYm9vbCBpc0NvbW1lbnRUZXh0
Q2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gY3RleHQgPSBIVEFCIC8gU1AKKyAg
ICAvLyAgICAgICAvICV4MjEtMjcgOyAnISctJycnCisgICAgLy8gICAgICAgLyAleDJBLTVCIDsg
JyonLSdbJworICAgIC8vICAgICAgIC8gJXg1RC03RSA7ICddJy0nficKKyAgICAvLyAgICAgICAv
IG9icy10ZXh0CisgICAgcmV0dXJuIChjID09ICdcdCcgfHwgYyA9PSAnICcKKyAgICAgICAgfHwg
KGMgPj0gMHgyMSAmJiBjIDw9IDB4MjcpCisgICAgICAgIHx8IChjID49IDB4MkEgJiYgYyA8PSAw
eDVCKQorICAgICAgICB8fCAoYyA+PSAweDVEICYmIGMgPD0gMHg3RSkKKyAgICAgICAgfHwgaXNP
Y3RlY3RJbkZpZWxkQ29udGVudENoYXJhY3RlcihjKSk7Cit9CisKIC8vIFNlZSBSRkMgNzIzMSwg
U2VjdGlvbiA1LjMuMi4KIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CkBAIC0xNzMsNiArMjE0LDEzIEBAIGJvb2wgaXNWYWxpZExhbmd1YWdlSGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8g
U2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGluZSBib29sIGlzSFRUUFRv
a2VuQ2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gQW55IFZDSEFSLCBleGNlcHQg
ZGVsaW1pdGVycworICAgIHJldHVybiBjID4gMHgyMCAmJiBjIDwgMHg3RiAmJiAhaXNEZWxpbWl0
ZXJDaGFyYWN0ZXIoYyk7Cit9CisKIC8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KIGJv
b2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlKQogewpAQCAtMTgwLDE2ICsy
MjgsMTI2IEBAIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byB2YWx1ZVN0cmluZ1ZpZXcgPSBTdHJpbmdWaWV3
KHZhbHVlKTsKICAgICBmb3IgKFVDaGFyIGMgOiB2YWx1ZVN0cmluZ1ZpZXcuY29kZVVuaXRzKCkp
IHsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N0YKLSAgICAgICAgICAgIHx8IGMg
PT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8IGMgPT0gJz4nIHx8IGMgPT0gJ0AnCi0g
ICAgICAgICAgICB8fCBjID09ICcsJyB8fCBjID09ICc7JyB8fCBjID09ICc6JyB8fCBjID09ICdc
XCcgfHwgYyA9PSAnIicKLSAgICAgICAgICAgIHx8IGMgPT0gJy8nIHx8IGMgPT0gJ1snIHx8IGMg
PT0gJ10nIHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0nCi0gICAgICAgICAgICB8fCBjID09ICd7JyB8
fCBjID09ICd9JykKKyAgICAgICAgaWYgKCFpc0hUVFBUb2tlbkNoYXJhY3RlcihjKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRy
dWUgaWYgdGhlICJleHBlY3RlZCIgY2hhcmFjdGVyIGlzIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiwg
aW5jcmVtZW50aW5nICJwb3MiIGJ5IG9uZS4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0g
c3RyLmxlbmd0aCgpCitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcENoYXJhY3Rlcihjb25zdCBTdHJp
bmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zLCBjb25zdCBVQ2hhciBleHBlY3RlZCkKK3sKKyAgICBp
ZiAocG9zIDwgdmFsdWUubGVuZ3RoKCkgJiYgdmFsdWVbcG9zXSA9PSBleHBlY3RlZCkgeworICAg
ICAgICArK3BvczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworLy8gVHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBz
YXRpc2lmaWVzIGEgcHJlZGljYXRlLCBpbmNyZW1lbnRpbmcgInBvcyIgYnkgb25lLgorLy8gTm90
ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
a2lwQ2hhcmFjdGVyKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MsIFdURjo6RnVu
Y3Rpb248Ym9vbChjb25zdCBVQ2hhcik+JiYgcHJlZGljYXRlKQoreworICAgIGlmIChwb3MgPCB2
YWx1ZS5sZW5ndGgoKSAmJiBwcmVkaWNhdGUodmFsdWVbcG9zXSkpIHsKKyAgICAgICAgKytwb3M7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8v
IFRydWUgaWYgYSBxdW90ZWQgcGFpciBpcyBwcmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8g
dGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBxdW90ZWQgcGFpci4KKy8vIE5vdGU6IE1pZ2h0IHJldHVy
biBwb3MgPT0gc3RyLmxlbmd0aCgpCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitz
dGF0aWMgY29uc3RleHByIGF1dG8gUXVvdGVkUGFpclN0YXJ0Q2hhcmFjdGVyID0gJ1xcJzsKK3N0
YXRpYyBib29sIHNraXBRdW90ZWRQYWlyKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBw
b3MpCit7CisgICAgLy8gcXVvdGVkLXBhaXIgPSAiXCIgKCBIVEFCIC8gU1AgLyBWQ0hBUiAvIG9i
cy10ZXh0ICkKKyAgICBpZiAoIXNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgUXVvdGVkUGFpclN0
YXJ0Q2hhcmFjdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNraXBD
aGFyYWN0ZXIodmFsdWUsIHBvcywgJ1x0JykKKyAgICAgICAgfHwgc2tpcENoYXJhY3Rlcih2YWx1
ZSwgcG9zLCAnICcpCisgICAgICAgIHx8IHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgaXNWaXNp
YmxlQ2hhcmFjdGVyKQorICAgICAgICB8fCBza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIGlzT2N0
ZWN0SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIpOworfQorCisvLyBUcnVlIGlzIGEgY29tbWVudCBp
cyBwcmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBj
b21tZW50LgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKKy8vIFNl
ZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBjb25zdGV4cHIgYXV0byBDb21tZW50
U3RhcnRDaGFyYWN0ZXIgPSAnKCc7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQ29tbWVudEVuZENo
YXJhY3RlciA9ICcpJzsKK3N0YXRpYyBib29sIHNraXBDb21tZW50KGNvbnN0IFN0cmluZyYgdmFs
dWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8gY29tbWVudCA9ICIoIiAqKCBjdGV4dCAvIHF1
b3RlZC1wYWlyIC8gY29tbWVudCApICIpIgorICAgIC8vIGN0ZXh0ICAgPSBIVEFCIC8gU1AgLyAl
eDIxLTI3IC8gJXgyQS01QiAvICV4NUQtN0UgLyBvYnMtdGV4dAorICAgIGlmICghc2tpcENoYXJh
Y3Rlcih2YWx1ZSwgcG9zLCBDb21tZW50U3RhcnRDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBlbmQgPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3
aGlsZSAocG9zIDwgZW5kICYmIHZhbHVlW3Bvc10gIT0gQ29tbWVudEVuZENoYXJhY3Rlcikgewor
ICAgICAgICBzd2l0Y2ggKHZhbHVlW3Bvc10pIHsKKyAgICAgICAgY2FzZSBDb21tZW50U3RhcnRD
aGFyYWN0ZXI6CisgICAgICAgICAgICBpZiAoIXNraXBDb21tZW50KHZhbHVlLCBwb3MpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFF1b3RlZFBhaXJTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgIGlmICghc2tpcFF1b3Rl
ZFBhaXIodmFsdWUsIHBvcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIXNraXBXaGls
ZSh2YWx1ZSwgcG9zLCBpc0NvbW1lbnRUZXh0Q2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHNraXBDaGFyYWN0ZXIo
dmFsdWUsIHBvcywgQ29tbWVudEVuZENoYXJhY3Rlcik7Cit9CisKKy8vIFRydWUgaWYgYW4gSFRU
UCBoZWFkZXIgdG9rZW4gaXMgcHJlc2VudCwgaW5jcmVtZW50aW5nICJwb3MiIHRvIHRoZSBwb3Np
dGlvbiBhZnRlciBpdC4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgp
CisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgYm9vbCBza2lwSFRUUFRv
a2VuKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgcmV0dXJuIHNr
aXBXaGlsZSh2YWx1ZSwgcG9zLCBpc0hUVFBUb2tlbkNoYXJhY3Rlcik7Cit9CisKKy8vIFRydWUg
aWYgYSBwcm9kdWN0IHNwZWNpZmllciAoYXMgaW4gYW4gVXNlci1BZ2VudCBoZWFkZXIpIGlzIHBy
ZXNlbnQsIGluY3JlbWVudGluZyAicG9zIiB0byB0aGUgcG9zaXRpb24gYWZ0ZXIgaXQuCisvLyBO
b3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQorLy8gU2VlIFJGQyA3MjMxLCBT
ZWN0aW9uIDUuNS4zLgorc3RhdGljIGJvb2wgc2tpcFVzZXJBZ2VudFByb2R1Y3QoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcykKK3sKKyAgICAvLyBwcm9kdWN0ICAgICAgICAgPSB0
b2tlbiBbIi8iIHByb2R1Y3QtdmVyc2lvbl0KKyAgICAvLyBwcm9kdWN0LXZlcnNpb24gPSB0b2tl
bgorICAgIGlmICghc2tpcEhUVFBUb2tlbih2YWx1ZSwgcG9zKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsICcvJykpCisgICAgICAgIHJl
dHVybiBza2lwSFRUUFRva2VuKHZhbHVlLCBwb3MpOwogICAgIHJldHVybiB0cnVlOwogfQogCisv
LyBTZWUgUkZDIDcyMzEsIFNlY3Rpb24gNS41LjMKK2Jvb2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gVXNlci1BZ2VudCA9IHByb2R1
Y3QgKiggUldTICggcHJvZHVjdCAvIGNvbW1lbnQgKSApCisgICAgdW5zaWduZWQgcG9zID0gMDsK
KyAgICBpZiAoIXNraXBVc2VyQWdlbnRQcm9kdWN0KHZhbHVlLCBwb3MpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB3aGlsZSAocG9zIDwgdmFsdWUubGVuZ3RoKCkpIHsKKyAgICAgICAg
aWYgKCFza2lwV2hpdGVTcGFjZSh2YWx1ZSwgcG9zKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT0gQ29tbWVudFN0YXJ0Q2hhcmFjdGVyKSB7Cisg
ICAgICAgICAgICBpZiAoIXNraXBDb21tZW50KHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghc2tpcFVz
ZXJBZ2VudFByb2R1Y3QodmFsdWUsIHBvcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHBvcyA9PSB2YWx1ZS5sZW5ndGgoKTsK
K30KKwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7CiBzdGF0
aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuZ3RoKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCmluZGV4
IGUzZTE5MjcwNWM3MWZlMmIyZWYxMDc3MGRkZDEyNTYwNmZjM2RmOWQuLmMyMWVjYzA1MDA1YWU2
N2JjMmFlY2M1NzM5MDY5NzhkOWVjNDZmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTcyLDYgKzcyLDcgQEAgYm9vbCBpc1ZhbGlkUmVh
c29uUGhyYXNlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNv
bnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkQWNjZXB0SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5n
Jik7CiBib29sIGlzVmFsaWRMYW5ndWFnZUhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOworYm9v
bCBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFs
aWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJik7CiBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3Qg
U3RyaW5nJiByZWZyZXNoLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCk7CiBPcHRpb25hbDxX
YWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCBjM2I2NWM0
OTA0YTY3OThiNWE5ZmExYjUzZGNkYTRiNzRhOTAyZmM4Li5jODY5NzU4NTUwYzA1YjdlYzVlMjA1
YTk5MWVjOGYzMTg4NWNlOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dEVuY29kaW5nUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudC5oPgpA
QCAtMzA0Myw3ICszMDQ0LDEwIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgY2hhciogdXNlckFnCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIENTdHJpbmcgbmV3VXNl
ckFnZW50ID0gKCF1c2VyQWdlbnQgfHwgIXN0cmxlbih1c2VyQWdlbnQpKSA/IFdlYkNvcmU6OnN0
YW5kYXJkVXNlckFnZW50KCIiKS51dGY4KCkgOiB1c2VyQWdlbnQ7CisgICAgU3RyaW5nIHVzZXJB
Z2VudFN0cmluZyA9ICghdXNlckFnZW50IHx8ICFzdHJsZW4odXNlckFnZW50KSkgPyBXZWJDb3Jl
OjpzdGFuZGFyZFVzZXJBZ2VudCgiIikgOiBTdHJpbmc6OmZyb21VVEY4KHVzZXJBZ2VudCk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXZWJDb3JlOjppc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
dXNlckFnZW50U3RyaW5nKSk7CisKKyAgICBDU3RyaW5nIG5ld1VzZXJBZ2VudCA9IHVzZXJBZ2Vu
dFN0cmluZy51dGY4KCk7CiAgICAgaWYgKG5ld1VzZXJBZ2VudCA9PSBwcml2LT51c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDU1MDUzOTZmNDViZWFmNDg0NzJhZmIxOTk2YWVhOTAzNjI5M2NlZjgu
LjU4MzVmM2JlZWYwOGJmYWM1MzI2MWQ5Yjc3NDliOGMzNjQ0MGQ5N2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
OS0wOC0zMCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdW1dQRV0gd2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50KCkgYWxsb3dz
IGNvbnRlbnQgZm9yYmlkZGVuIGluIEhUVFAgaGVhZGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
OiBBZGQgbWlzc2luZyBIVFRQUGFyc2Vycy5jcHAgdG8gYmUgYnVpbHQgaW50byBUZXN0V2ViQ29y
ZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IEFkZCB0ZXN0cyBmb3IgV2ViQ29yZTo6
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCkuCisKIDIwMTktMDgtMzAgIEFkcmlhbiBQZXJl
eiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIE5l
dyBBUEkgdG8gcmVtb3ZlIGEgZmlsdGVyIGZyb20gYW4gdXNlciBjb250ZW50IG1hbmFnZXIgZ2l2
ZW4gaXRzIGlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDIzOTRi
NTMxYWUzNmEzZjNjOWI4MjRiMTVmYTU2MmRkMzU2OTBhNDUuLjdlZGUxYmMyMDM0NzcxMmI3ZTgx
OTI3ODhjMDkyNTdlYWU5MjdhMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAt
MTMwLDYgKzEzMCw3IEBAIGlmIChFTkFCTEVfV0VCQ09SRSkKICAgICAgICAgVGVzdHMvV2ViQ29y
ZS9GbG9hdFNpemUuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNwcAog
ICAgICAgICBUZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisgICAgICAgIFRlc3Rz
L1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UG9pbnQu
Y3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UmVjdC5jcHAKICAgICAgICAgVGVzdHMvV2Vi
Q29yZS9JbnRTaXplLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0hUVFBQYXJzZXJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9IVFRQUGFyc2Vycy5jcHAKaW5kZXggMDE2NmE0ZDA1ZjJmOWE5MWYyN2Y5M2Q0YTUxMTQ2ZGZj
MTNiYjc4Yi4uZWU0MzkxZjJkYTUwN2EzZjI3ZTRiNDk0NzM0NDQyNWFkY2RiZmVkNyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBA
IC01Niw0ICs1NiwzNCBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNyb3NzT3JpZ2luUmVzb3Vy
Y2VQb2xpY3lIZWFkZXIpCiAgICAgRVhQRUNUX1RSVUUocGFyc2VDcm9zc09yaWdpblJlc291cmNl
UG9saWN5SGVhZGVyKCLvo78iKSA9PSBDcm9zc09yaWdpblJlc291cmNlUG9saWN5OjpJbnZhbGlk
KTsKIH0KIAorVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCit7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0
IikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkgV2ViS2l0LzE2MyIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7CisgICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQv
MTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAo
PC0gRW1wdHkgY29tbWVudCkiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8
fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKKyAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4g
Y2hhcmFjdGVycykiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKworICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiAiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRy
YWlsaW5nIHdoaXRlc3BhY2UpICIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xp
bmUpXG4iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpLyAobm8gdmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29t
bWVudCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xu
MTAuMCAoZW1iZWRlZCBuZXdsaW5lKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNz
aW5nIHByb2R1Y3QgdG9rZW4pIikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377713</attachid>
            <date>2019-08-30 08:45:18 -0700</date>
            <delta_ts>2019-08-30 09:13:58 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-201077-20190830184517.patch</filename>
            <type>text/plain</type>
            <size>17045</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc3N2RjYTUyNTk2ODQy
Zjc3OGRiZjdhNGJiYTBjYzIwNDU4NGY4ZC4uZTJlMGMyMzkxOWU0ZjZlNGUxOTk1ZWZjN2FmMjEx
NmJhNjQ1MzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA4LTMwICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3Ji
aWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB3aGV0aGVyIGEgc3RyaW5n
IGNvbnRhaW5zIGEgdmFsaWQgdmFsdWUKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgaW4gYSBI
VFRQIFVzZXItQWdlbnQgaGVhZGVyLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IFdlYkNvcmUg
QVBJIHRlc3QgSFRUUFBhcnNlcnMuVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlLm9yZGVyOiBBZGQgV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCkgc3ltYm9sLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOiBB
ZGRlZCBhIHNlcmllcyBvZiBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIHNraXAgb3ZlcgorICAgICAg
ICBjaGFyYWN0ZXJzIG9mIGEgc3RyaW5nLCB3aGljaCBjYW4gYmUgdXNlZCB0byBzY2FuIG92ZXIg
dGhlIGRpZmZlcmVudCBlbGVtZW50cyBvZiBhbgorICAgICAgICBVc2VyLUFnZW50IHZhbHVlOyBh
bGwgb2YgdGhlbSByZWNlaXZlIHRoZSBwb3NpdGlvbiBmcm9tIHRoZSBpbnB1dCBzdHJpbmcgd2hl
cmUgdG8gc3RhcnQKKyAgICAgICAgc2Nhbm5pbmcsIHVwZGF0aW5nIGl0IHRvIHRoZSBwb3NpdGlv
biByaWdodCBhZnRlciB0aGUgc2Nhbm5lZCBpdGVtICh0aGlzIGZvbGxvdyB0aGUKKyAgICAgICAg
Y29udmVudGlvbiBhbHJlYWR5IGluIHVzZSBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHNvdXJj
ZSBmaWxlKS4gRWFjaCBvZiB0aGVtIGhhcworICAgICAgICBiZWVuIGFubm90YXRlZCB3aXRoIHRo
ZSBSRkMgbnVtYmVyIGFuZCBzZWN0aW9uIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9m
IHRoZQorICAgICAgICBzY2FubmVkIGl0ZW0sIGFuZCB0aGUgY29ycmVzcG9uZGluZyBCTkYgcnVs
ZXMgdG8gbWFrZSB0aGUgY29kZSBlYXNpZXIgdG8gZm9sbG93LgorICAgICAgICAoV2ViQ29yZTo6
c2tpcFdoaWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVDaGFyYWN0ZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzT2N0ZWN0SW5GaWVsZENvbnRlbnRDaGFyYWN0
ZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ29tbWVudFRleHRDaGFyYWN0ZXIpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzSFRUUFRva2VuQ2hhcmFjdGVyKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjppc1ZhbGlkSFRUUFRva2VuKTogUmVmYWN0b3JlZCB0byB1c2UgdGhl
IG5ldyBpc0hUVFBUb2tlbkNoYXJhY3RlcigpCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiBpbnN0
ZWFkIG9mIGhhdmluZyB0aGUgdGVzdCBpbnNpZGUgdGhlIGxvb3AuCisgICAgICAgIChXZWJDb3Jl
Ojpza2lwQ2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwUXVvdGVkUGFp
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2tpcENvbW1lbnQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnNraXBIVFRQVG9rZW4pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNr
aXBVc2VyQWdlbnRQcm9kdWN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmg6IEFkZCBwcm90b3R5cGUgZm9yIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgpLgorCiAyMDE5LTA4LTMwICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1N0cmVhbWVyXSBEbyBub3QgcmVmIHRoZSBwbGF5ZXIgY291bnQgZnJvbSBi
YWNrZ3JvdW5kIHRocmVhZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5Y2RiNTBjZTRlNTIwNGNmMWMxMGFkZDQ5
N2Y1NDMzYjhmNGJlZWYuLjdkMTAxYjgxOGFjMWFjY2RhMTNiOGJlNWY1OGE0YWIwMDI1ODcwODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMzAgIEFkcmlhbiBQZXJleiBkZSBD
YXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIHdlYmtpdF9z
ZXR0aW5nc19zZXRfdXNlcl9hZ2VudCgpIGFsbG93cyBjb250ZW50IGZvcmJpZGRlbiBpbiBIVFRQ
IGhlYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMTA3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtp
dF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudCk6IENoZWNrIHRoZSBwYXNzZWQgc3RyaW5nIHVzaW5n
IHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCkg
ZnVuY3Rpb24sIGFuZCByZXR1cm4gZWFybHkgd2l0aG91dAorICAgICAgICBjaGFuZ2luZyB0aGUg
c2V0dGluZyBpZiB0aGUgc3RyaW5nIGlzIG5vdCB1c2FibGUgaW4gdGhlIFVzZXItQWdlbnQgSFRU
UAorICAgICAgICBoZWFkZXIuCisKIDIwMTktMDgtMzAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIE5ldyBBUEkgdG8gcmVt
b3ZlIGEgZmlsdGVyIGZyb20gYW4gdXNlciBjb250ZW50IG1hbmFnZXIgZ2l2ZW4gaXRzIGlkZW50
aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDM3ZDI0NWUxMWU4YmYzNjI2NTIzZjA3NmVhMmI5
M2QyYzEwNmUxOWIuLmYwYmEyOGRhMDZkNGMzMTc5MmFlMjY0ZmNhNDRlODQ2YzkwYzJiZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgpAQCAtMTM4NjcsNiArMTM4NjcsNyBAQCBfX1pON1dlYkNvcmUxNVRy
YW5zaXRpb25FdmVudEMxRVJLTjNXVEYxMkF0b21pY1N0cmluZ0VSS05TMV82U3RyaW5nRWRTN18K
IF9fWk43V2ViQ29yZTE1VHJhbnNpdGlvbkV2ZW50RDBFdgogX19aTjdXZWJDb3JlMTJSZW5kZXJJ
bmxpbmUxMmltYWdlQ2hhbmdlZEVQdlBLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxNWlzVmFs
aWRQcm90b2NvbEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTI3aXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlRVJLTjNXVEY2U3RyaW5nRQogX19aTkszV1RGMTJTdHJpbmdBcHBlbmRJTlMw
X0lOU182U3RyaW5nRWNFRVMxX0VjdlMxX0V2CiBfX1pOM1dURjEzdHJ5TWFrZVN0cmluZ0lOU18x
MlN0cmluZ0FwcGVuZElOU182U3RyaW5nRWNFRVMyX0VFTlNfMTBQYXNzUmVmUHRySU5TXzEwU3Ry
aW5nSW1wbEVFRVRfVDBfCiBfX1pOM1dURnBsSU5TXzEyU3RyaW5nQXBwZW5kSU5TXzZTdHJpbmdF
UEtjRUVTMl9TMl9FRU5TMV9JTlMxX0lUX1QwX0VFVDFfRUVSS1M4X1M5XwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA1MGEyMzc5YWNh
NDg4ODBjYmMzNGI0NmIwNmM4ZjAwNzZhZDhjMjg3Li4xMDMwY2JlOWEzOGI2OTVlN2RkNTQ2NjJi
NjZjYjcyNzEyYTM0NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcApAQCAtOTcsNiArOTcsMTggQEAgc3RhdGljIGlubGluZSBib29sIHNr
aXBWYWx1ZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcykKICAgICByZXR1cm4gcG9z
ICE9IHN0YXJ0OwogfQogCisvLyBUcnVlIGlmIGNoYXJhY3RlcnMgd2hpY2ggc2F0aXNmeSB0aGUg
cHJlZGljYXRlIGFyZSBwcmVzZW50LCBpbmNyZW1lbnRpbmcKKy8vICJwb3MiIHRvIHRoZSBuZXh0
IGNoYXJhY3RlciB3aGljaCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUuCisvLyBOb3Rl
OiBtaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKS4KK3N0YXRpYyBpbmxpbmUgYm9vbCBz
a2lwV2hpbGUoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbChjb25zdCBVQ2hhcik+JiBwcmVkaWNhdGUpCit7CisgICAgY29uc3QgdW5zaWdu
ZWQgc3RhcnQgPSBwb3M7CisgICAgY29uc3QgdW5zaWduZWQgbGVuID0gc3RyLmxlbmd0aCgpOwor
ICAgIHdoaWxlIChwb3MgPCBsZW4gJiYgcHJlZGljYXRlKHN0cltwb3NdKSkKKyAgICAgICAgKytw
b3M7CisgICAgcmV0dXJuIHBvcyAhPSBzdGFydDsKK30KKwogLy8gU2VlIFJGQyA3MjMwLCBTZWN0
aW9uIDMuMS4yLgogYm9vbCBpc1ZhbGlkUmVhc29uUGhyYXNlKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CkBAIC0xMzUsNiArMTQ3LDM1IEBAIHN0YXRpYyBib29sIGlzRGVsaW1pdGVyQ2hhcmFjdGVy
KGNvbnN0IFVDaGFyIGMpCiAgICAgICAgIHx8IGMgPT0gJ10nIHx8IGMgPT0gJ3snIHx8IGMgPT0g
J30nKTsKIH0KIAorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGlu
ZSBib29sIGlzVmlzaWJsZUNoYXJhY3Rlcihjb25zdCBVQ2hhciBjKQoreworICAgIC8vIFZDSEFS
ID0gJXgyMS03RQorICAgIHJldHVybiAoYyA+PSAweDIxICYmIGMgPD0gMHg3RSk7Cit9CisKKy8v
IFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc09jdGVj
dEluRmllbGRDb250ZW50Q2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gb2JzLXRl
eHQgPSAleDgwLUZGCisgICAgcmV0dXJuIChjID49IDB4ODAgJiYgYyA8PSAweEZGKTsKK30KKwor
Ly8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGJvb2wgaXNDb21tZW50VGV4
dENoYXJhY3Rlcihjb25zdCBVQ2hhciBjKQoreworICAgIC8vIGN0ZXh0ID0gSFRBQiAvIFNQCisg
ICAgLy8gICAgICAgLyAleDIxLTI3IDsgJyEnLScnJworICAgIC8vICAgICAgIC8gJXgyQS01QiA7
ICcqJy0nWycKKyAgICAvLyAgICAgICAvICV4NUQtN0UgOyAnXSctJ34nCisgICAgLy8gICAgICAg
LyBvYnMtdGV4dAorICAgIHJldHVybiAoYyA9PSAnXHQnIHx8IGMgPT0gJyAnCisgICAgICAgIHx8
IChjID49IDB4MjEgJiYgYyA8PSAweDI3KQorICAgICAgICB8fCAoYyA+PSAweDJBICYmIGMgPD0g
MHg1QikKKyAgICAgICAgfHwgKGMgPj0gMHg1RCAmJiBjIDw9IDB4N0UpCisgICAgICAgIHx8IGlz
T2N0ZWN0SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIoYykpOworfQorCiAvLyBTZWUgUkZDIDcyMzEs
IFNlY3Rpb24gNS4zLjIuCiBib29sIGlzVmFsaWRBY2NlcHRIZWFkZXJWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogewpAQCAtMTczLDYgKzIxNCwxMyBAQCBib29sIGlzVmFsaWRMYW5ndWFnZUhl
YWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8v
IFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0hUVFBU
b2tlbkNoYXJhY3Rlcihjb25zdCBVQ2hhciBjKQoreworICAgIC8vIEFueSBWQ0hBUiwgZXhjZXB0
IGRlbGltaXRlcnMKKyAgICByZXR1cm4gYyA+IDB4MjAgJiYgYyA8IDB4N0YgJiYgIWlzRGVsaW1p
dGVyQ2hhcmFjdGVyKGMpOworfQorCiAvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCiBi
b29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKQEAgLTE4MCwxNiAr
MjI4LDEyNiBAQCBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gdmFsdWVTdHJpbmdWaWV3ID0gU3RyaW5nVmll
dyh2YWx1ZSk7CiAgICAgZm9yIChVQ2hhciBjIDogdmFsdWVTdHJpbmdWaWV3LmNvZGVVbml0cygp
KSB7Ci0gICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdGCi0gICAgICAgICAgICB8fCBj
ID09ICcoJyB8fCBjID09ICcpJyB8fCBjID09ICc8JyB8fCBjID09ICc+JyB8fCBjID09ICdAJwot
ICAgICAgICAgICAgfHwgYyA9PSAnLCcgfHwgYyA9PSAnOycgfHwgYyA9PSAnOicgfHwgYyA9PSAn
XFwnIHx8IGMgPT0gJyInCi0gICAgICAgICAgICB8fCBjID09ICcvJyB8fCBjID09ICdbJyB8fCBj
ID09ICddJyB8fCBjID09ICc/JyB8fCBjID09ICc9JwotICAgICAgICAgICAgfHwgYyA9PSAneycg
fHwgYyA9PSAnfScpCisgICAgICAgIGlmICghaXNIVFRQVG9rZW5DaGFyYWN0ZXIoYykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisvLyBU
cnVlIGlmIHRoZSAiZXhwZWN0ZWQiIGNoYXJhY3RlciBpcyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24s
IGluY3JlbWVudGluZyAicG9zIiBieSBvbmUuCisvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09
IHN0ci5sZW5ndGgoKQorc3RhdGljIGlubGluZSBib29sIHNraXBDaGFyYWN0ZXIoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcywgY29uc3QgVUNoYXIgZXhwZWN0ZWQpCit7CisgICAg
aWYgKHBvcyA8IHZhbHVlLmxlbmd0aCgpICYmIHZhbHVlW3Bvc10gPT0gZXhwZWN0ZWQpIHsKKyAg
ICAgICAgKytwb3M7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKy8vIFRydWUgaWYgdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24g
c2F0aXNpZmllcyBhIHByZWRpY2F0ZSwgaW5jcmVtZW50aW5nICJwb3MiIGJ5IG9uZS4KKy8vIE5v
dGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCitzdGF0aWMgaW5saW5lIGJvb2wg
c2tpcENoYXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zLCBXVEY6OkZ1
bmN0aW9uPGJvb2woY29uc3QgVUNoYXIpPiYmIHByZWRpY2F0ZSkKK3sKKyAgICBpZiAocG9zIDwg
dmFsdWUubGVuZ3RoKCkgJiYgcHJlZGljYXRlKHZhbHVlW3Bvc10pKSB7CisgICAgICAgICsrcG9z
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisv
LyBUcnVlIGlmIGEgcXVvdGVkIHBhaXIgaXMgcHJlc2VudCwgaW5jcmVtZW50aW5nICJwb3MiIHRv
IHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgcXVvdGVkIHBhaXIuCisvLyBOb3RlOiBNaWdodCByZXR1
cm4gcG9zID09IHN0ci5sZW5ndGgoKQorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIFF1b3RlZFBhaXJTdGFydENoYXJhY3RlciA9ICdcXCc7Citz
dGF0aWMgYm9vbCBza2lwUXVvdGVkUGFpcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYg
cG9zKQoreworICAgIC8vIHF1b3RlZC1wYWlyID0gIlwiICggSFRBQiAvIFNQIC8gVkNIQVIgLyBv
YnMtdGV4dCApCisgICAgaWYgKCFza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIFF1b3RlZFBhaXJT
dGFydENoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBza2lw
Q2hhcmFjdGVyKHZhbHVlLCBwb3MsICdcdCcpCisgICAgICAgIHx8IHNraXBDaGFyYWN0ZXIodmFs
dWUsIHBvcywgJyAnKQorICAgICAgICB8fCBza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIGlzVmlz
aWJsZUNoYXJhY3RlcikKKyAgICAgICAgfHwgc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9zLCBpc09j
dGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKTsKK30KKworLy8gVHJ1ZSBpcyBhIGNvbW1lbnQg
aXMgcHJlc2VudCwgaW5jcmVtZW50aW5nICJwb3MiIHRvIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUg
Y29tbWVudC4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCisvLyBT
ZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgY29uc3RleHByIGF1dG8gQ29tbWVu
dFN0YXJ0Q2hhcmFjdGVyID0gJygnOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIENvbW1lbnRFbmRD
aGFyYWN0ZXIgPSAnKSc7CitzdGF0aWMgYm9vbCBza2lwQ29tbWVudChjb25zdCBTdHJpbmcmIHZh
bHVlLCB1bnNpZ25lZCYgcG9zKQoreworICAgIC8vIGNvbW1lbnQgPSAiKCIgKiggY3RleHQgLyBx
dW90ZWQtcGFpciAvIGNvbW1lbnQgKSAiKSIKKyAgICAvLyBjdGV4dCAgID0gSFRBQiAvIFNQIC8g
JXgyMS0yNyAvICV4MkEtNUIgLyAleDVELTdFIC8gb2JzLXRleHQKKyAgICBpZiAoIXNraXBDaGFy
YWN0ZXIodmFsdWUsIHBvcywgQ29tbWVudFN0YXJ0Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQgZW5kID0gdmFsdWUubGVuZ3RoKCk7CisgICAg
d2hpbGUgKHBvcyA8IGVuZCAmJiB2YWx1ZVtwb3NdICE9IENvbW1lbnRFbmRDaGFyYWN0ZXIpIHsK
KyAgICAgICAgc3dpdGNoICh2YWx1ZVtwb3NdKSB7CisgICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0
Q2hhcmFjdGVyOgorICAgICAgICAgICAgaWYgKCFza2lwQ29tbWVudCh2YWx1ZSwgcG9zKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBRdW90ZWRQYWlyU3RhcnRDaGFyYWN0ZXI6CisgICAgICAgICAgICBpZiAoIXNraXBRdW90
ZWRQYWlyKHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCFza2lwV2hp
bGUodmFsdWUsIHBvcywgaXNDb21tZW50VGV4dENoYXJhY3RlcikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBza2lwQ2hhcmFjdGVy
KHZhbHVlLCBwb3MsIENvbW1lbnRFbmRDaGFyYWN0ZXIpOworfQorCisvLyBUcnVlIGlmIGFuIEhU
VFAgaGVhZGVyIHRva2VuIGlzIHByZXNlbnQsIGluY3JlbWVudGluZyAicG9zIiB0byB0aGUgcG9z
aXRpb24gYWZ0ZXIgaXQuCisvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgo
KQorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGJvb2wgc2tpcEhUVFBU
b2tlbihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zKQoreworICAgIHJldHVybiBz
a2lwV2hpbGUodmFsdWUsIHBvcywgaXNIVFRQVG9rZW5DaGFyYWN0ZXIpOworfQorCisvLyBUcnVl
IGlmIGEgcHJvZHVjdCBzcGVjaWZpZXIgKGFzIGluIGFuIFVzZXItQWdlbnQgaGVhZGVyKSBpcyBw
cmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8gdGhlIHBvc2l0aW9uIGFmdGVyIGl0LgorLy8g
Tm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKKy8vIFNlZSBSRkMgNzIzMSwg
U2VjdGlvbiA1LjUuMy4KK3N0YXRpYyBib29sIHNraXBVc2VyQWdlbnRQcm9kdWN0KGNvbnN0IFN0
cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8gcHJvZHVjdCAgICAgICAgID0g
dG9rZW4gWyIvIiBwcm9kdWN0LXZlcnNpb25dCisgICAgLy8gcHJvZHVjdC12ZXJzaW9uID0gdG9r
ZW4KKyAgICBpZiAoIXNraXBIVFRQVG9rZW4odmFsdWUsIHBvcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9zLCAnLycpKQorICAgICAgICBy
ZXR1cm4gc2tpcEhUVFBUb2tlbih2YWx1ZSwgcG9zKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ly8gU2VlIFJGQyA3MjMxLCBTZWN0aW9uIDUuNS4zCitib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIC8vIFVzZXItQWdlbnQgPSBwcm9k
dWN0ICooIFJXUyAoIHByb2R1Y3QgLyBjb21tZW50ICkgKQorICAgIHVuc2lnbmVkIHBvcyA9IDA7
CisgICAgaWYgKCFza2lwVXNlckFnZW50UHJvZHVjdCh2YWx1ZSwgcG9zKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgd2hpbGUgKHBvcyA8IHZhbHVlLmxlbmd0aCgpKSB7CisgICAgICAg
IGlmICghc2tpcFdoaXRlU3BhY2UodmFsdWUsIHBvcykpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICh2YWx1ZVtwb3NdID09IENvbW1lbnRTdGFydENoYXJhY3Rlcikgewor
ICAgICAgICAgICAgaWYgKCFza2lwQ29tbWVudCh2YWx1ZSwgcG9zKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIXNraXBV
c2VyQWdlbnRQcm9kdWN0KHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBwb3MgPT0gdmFsdWUubGVuZ3RoKCk7
Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Owogc3Rh
dGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbmd0aCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRl
eCBlM2UxOTI3MDVjNzFmZTJiMmVmMTA3NzBkZGQxMjU2MDZmYzNkZjlkLi5jMjFlY2MwNTAwNWFl
NjdiYzJhZWNjNTczOTA2OTc4ZDllYzQ2ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC03Miw2ICs3Miw3IEBAIGJvb2wgaXNWYWxpZFJl
YXNvblBocmFzZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShj
b25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYpOwogYm9vbCBpc1ZhbGlkTGFuZ3VhZ2VIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKK2Jv
b2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1Zh
bGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0
IFN0cmluZyYgcmVmcmVzaCwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpOwogT3B0aW9uYWw8
V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYzNiNjVj
NDkwNGE2Nzk4YjVhOWZhMWI1M2RjZGE0Yjc0YTkwMmZjOC4uYzg2OTc1ODU1MGMwNWI3ZWM1ZTIw
NWE5OTFlYzhmMzE4ODVjZThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4K
QEAgLTMwNDMsNyArMzA0NCwxMCBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2Vu
dChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGNoYXIqIHVzZXJBZwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBDU3RyaW5nIG5ld1Vz
ZXJBZ2VudCA9ICghdXNlckFnZW50IHx8ICFzdHJsZW4odXNlckFnZW50KSkgPyBXZWJDb3JlOjpz
dGFuZGFyZFVzZXJBZ2VudCgiIikudXRmOCgpIDogdXNlckFnZW50OworICAgIFN0cmluZyB1c2Vy
QWdlbnRTdHJpbmcgPSAoIXVzZXJBZ2VudCB8fCAhc3RybGVuKHVzZXJBZ2VudCkpID8gV2ViQ29y
ZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpIDogU3RyaW5nOjpmcm9tVVRGOCh1c2VyQWdlbnQpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KHVzZXJBZ2VudFN0cmluZykpOworCisgICAgQ1N0cmluZyBuZXdVc2VyQWdlbnQgPSB1c2VyQWdl
bnRTdHJpbmcudXRmOCgpOwogICAgIGlmIChuZXdVc2VyQWdlbnQgPT0gcHJpdi0+dXNlckFnZW50
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA1NTA1Mzk2ZjQ1YmVhZjQ4NDcyYWZiMTk5NmFlYTkwMzYyOTNjZWY4
Li41ODM1ZjNiZWVmMDhiZmFjNTMyNjFkOWI3NzQ5YjhjMzY0NDBkOTdkIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTktMDgtMzAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXVtXUEVdIHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudCgpIGFsbG93
cyBjb250ZW50IGZvcmJpZGRlbiBpbiBIVFRQIGhlYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTA3NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dDogQWRkIG1pc3NpbmcgSFRUUFBhcnNlcnMuY3BwIHRvIGJlIGJ1aWx0IGludG8gVGVzdFdlYkNv
cmUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBBZGQgdGVzdHMgZm9yIFdlYkNvcmU6
OmlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgpLgorCiAyMDE5LTA4LTMwICBBZHJpYW4gUGVy
ZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBO
ZXcgQVBJIHRvIHJlbW92ZSBhIGZpbHRlciBmcm9tIGFuIHVzZXIgY29udGVudCBtYW5hZ2VyIGdp
dmVuIGl0cyBpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCAyMzk0
YjUzMWFlMzZhM2YzYzliODI0YjE1ZmE1NjJkZDM1NjkwYTQ1Li43ZWRlMWJjMjAzNDc3MTJiN2U4
MTkyNzg4YzA5MjU3ZWFlOTI3YTJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAg
LTEzMCw2ICsxMzAsNyBAQCBpZiAoRU5BQkxFX1dFQkNPUkUpCiAgICAgICAgIFRlc3RzL1dlYkNv
cmUvRmxvYXRTaXplLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAK
ICAgICAgICAgVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAorICAgICAgICBUZXN0
cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFBvaW50
LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFJlY3QuY3BwCiAgICAgICAgIFRlc3RzL1dl
YkNvcmUvSW50U2l6ZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDAxNjZhNGQwNWYyZjlhOTFmMjdmOTNkNGE1MTE0NmRm
YzEzYmI3OGIuLmVlNDM5MWYyZGE1MDdhM2YyN2U0YjQ5NDczNDQ0MjVhZGNkYmZlZDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcApA
QCAtNTYsNCArNTYsMzQgQEAgVEVTVChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291
cmNlUG9saWN5SGVhZGVyKQogICAgIEVYUEVDVF9UUlVFKHBhcnNlQ3Jvc3NPcmlnaW5SZXNvdXJj
ZVBvbGljeUhlYWRlcigi76O/IikgPT0gQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTo6SW52YWxp
ZCk7CiB9CiAKK1RFU1QoSFRUUFBhcnNlcnMsIFZhbGlkYXRlVXNlckFnZW50VmFsdWVzKQorewor
ICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIikpOwor
ICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktp
dCIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aS8xMC4wIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpIFdlYktpdC8xNjMiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIikpOworICAgIEVY
UEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0
LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbykiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKCkg
KDwtIEVtcHR5IGNvbW1lbnQpIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpIChsZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiKSk7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9g
fH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7CisgICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIwMTIzNDU2Nzg5IChudW1lcmljIHRva2Vu
IGNoYXJhY3RlcnMpIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiYSAoc2luZ2xlIGNoYXJhY3RlciB0b2tlbikiKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOworICAgIEVYUEVDVF9GQUxTRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFjZSkiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0
cmFpbGluZyB3aGl0ZXNwYWNlKSAiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXds
aW5lKVxuIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOworICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNv
bW1lbnQiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIikp
OworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9c
bjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlz
c2luZyBwcm9kdWN0IHRva2VuKSIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377718</attachid>
            <date>2019-08-30 09:14:54 -0700</date>
            <delta_ts>2019-09-11 14:37:55 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-201077-20190830191453.patch</filename>
            <type>text/plain</type>
            <size>16204</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc3N2RjYTUyNTk2ODQy
Zjc3OGRiZjdhNGJiYTBjYzIwNDU4NGY4ZC4uODY1YjQ5MjYxOWU4NjNkNDcyYjBkYTQ1MmM3NjJk
OWU4NDQ2NDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTMwICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3Ji
aWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB3aGV0aGVyIGEgc3RyaW5n
IGNvbnRhaW5zIGEgdmFsaWQgdmFsdWUKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgaW4gYSBI
VFRQIFVzZXItQWdlbnQgaGVhZGVyLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IFdlYkNvcmUg
QVBJIHRlc3QgSFRUUFBhcnNlcnMuVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDogQWRkZWQgYSBzZXJpZXMgb2YgaGVs
cGVyIGZ1bmN0aW9ucyB3aGljaCBza2lwIG92ZXIKKyAgICAgICAgY2hhcmFjdGVycyBvZiBhIHN0
cmluZywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2NhbiBvdmVyIHRoZSBkaWZmZXJlbnQgZWxlbWVu
dHMgb2YgYW4KKyAgICAgICAgVXNlci1BZ2VudCB2YWx1ZTsgYWxsIG9mIHRoZW0gcmVjZWl2ZSB0
aGUgcG9zaXRpb24gZnJvbSB0aGUgaW5wdXQgc3RyaW5nIHdoZXJlIHRvIHN0YXJ0CisgICAgICAg
IHNjYW5uaW5nLCB1cGRhdGluZyBpdCB0byB0aGUgcG9zaXRpb24gcmlnaHQgYWZ0ZXIgdGhlIHNj
YW5uZWQgaXRlbSAodGhpcyBmb2xsb3cgdGhlCisgICAgICAgIGNvbnZlbnRpb24gYWxyZWFkeSBp
biB1c2UgYnkgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzb3VyY2UgZmlsZSkuIEVhY2ggb2YgdGhl
bSBoYXMKKyAgICAgICAgYmVlbiBhbm5vdGF0ZWQgd2l0aCB0aGUgUkZDIG51bWJlciBhbmQgc2Vj
dGlvbiB3aGljaCBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAgICAgICAgc2Nhbm5l
ZCBpdGVtLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQk5GIHJ1bGVzIHRvIG1ha2UgdGhlIGNvZGUg
ZWFzaWVyIHRvIGZvbGxvdy4KKyAgICAgICAgKFdlYkNvcmU6OnNraXBXaGlsZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNWaXNpYmxlQ2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjppc0NvbW1lbnRUZXh0Q2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjppc0hUVFBUb2tlbkNoYXJhY3Rlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZEhUVFBUb2tlbik6IFJlZmFjdG9yZWQgdG8gdXNlIHRoZSBuZXcgaXNIVFRQVG9rZW5DaGFy
YWN0ZXIoKQorICAgICAgICBoZWxwZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBoYXZpbmcgdGhlIHRl
c3QgaW5zaWRlIHRoZSBsb29wLgorICAgICAgICAoV2ViQ29yZTo6c2tpcENoYXJhY3Rlcik6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2tpcFF1b3RlZFBhaXIpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnNraXBDb21tZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwSFRU
UFRva2VuKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwVXNlckFnZW50UHJvZHVjdCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKTog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oOiBBZGQgcHJv
dG90eXBlIGZvciBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoKS4KKwogMjAxOS0wOC0zMCAg
Q2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1l
cl0gRG8gbm90IHJlZiB0aGUgcGxheWVyIGNvdW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0OWNkYjUwY2U0ZTUyMDRjZjFjMTBhZGQ0OTdmNTQzM2I4ZjRiZWVmLi43ZDEw
MWI4MThhYzFhY2NkYTEzYjhiZTVmNThhNGFiMDAyNTg3MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTA4LTMwICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdl
bnQoKSBhbGxvd3MgY29udGVudCBmb3JiaWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJf
YWdlbnQpOiBDaGVjayB0aGUgcGFzc2VkIHN0cmluZyB1c2luZyB0aGUgbmV3CisgICAgICAgIFdl
YkNvcmU6OmlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgpIGZ1bmN0aW9uLCBhbmQgcmV0dXJu
IGVhcmx5IHdpdGhvdXQKKyAgICAgICAgY2hhbmdpbmcgdGhlIHNldHRpbmcgaWYgdGhlIHN0cmlu
ZyBpcyBub3QgdXNhYmxlIGluIHRoZSBVc2VyLUFnZW50IEhUVFAKKyAgICAgICAgaGVhZGVyLgor
CiAyMDE5LTA4LTMwICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dQRV1bR1RLXSBOZXcgQVBJIHRvIHJlbW92ZSBhIGZpbHRlciBmcm9tIGFu
IHVzZXIgY29udGVudCBtYW5hZ2VyIGdpdmVuIGl0cyBpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDUwYTIzNzlhY2E0
ODg4MGNiYzM0YjQ2YjA2YzhmMDA3NmFkOGMyODcuLjEwMzBjYmU5YTM4YjY5NWU3ZGQ1NDY2MmI2
NmNiNzI3MTJhMzQ3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC05Nyw2ICs5NywxOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tp
cFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zKQogICAgIHJldHVybiBwb3Mg
IT0gc3RhcnQ7CiB9CiAKKy8vIFRydWUgaWYgY2hhcmFjdGVycyB3aGljaCBzYXRpc2Z5IHRoZSBw
cmVkaWNhdGUgYXJlIHByZXNlbnQsIGluY3JlbWVudGluZworLy8gInBvcyIgdG8gdGhlIG5leHQg
Y2hhcmFjdGVyIHdoaWNoIGRvZXMgbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4KKy8vIE5vdGU6
IG1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpLgorc3RhdGljIGlubGluZSBib29sIHNr
aXBXaGlsZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcywgY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sKGNvbnN0IFVDaGFyKT4mIHByZWRpY2F0ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBzdGFydCA9IHBvczsKKyAgICBjb25zdCB1bnNpZ25lZCBsZW4gPSBzdHIubGVuZ3RoKCk7Cisg
ICAgd2hpbGUgKHBvcyA8IGxlbiAmJiBwcmVkaWNhdGUoc3RyW3Bvc10pKQorICAgICAgICArK3Bv
czsKKyAgICByZXR1cm4gcG9zICE9IHN0YXJ0OworfQorCiAvLyBTZWUgUkZDIDcyMzAsIFNlY3Rp
b24gMy4xLjIuCiBib29sIGlzVmFsaWRSZWFzb25QaHJhc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKQEAgLTEzNSw2ICsxNDcsMzUgQEAgc3RhdGljIGJvb2wgaXNEZWxpbWl0ZXJDaGFyYWN0ZXIo
Y29uc3QgVUNoYXIgYykKICAgICAgICAgfHwgYyA9PSAnXScgfHwgYyA9PSAneycgfHwgYyA9PSAn
fScpOwogfQogCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgaW5saW5l
IGJvb2wgaXNWaXNpYmxlQ2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gVkNIQVIg
PSAleDIxLTdFCisgICAgcmV0dXJuIChjID49IDB4MjEgJiYgYyA8PSAweDdFKTsKK30KKworLy8g
U2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGluZSBib29sIGlzT2N0ZWN0
SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIoY29uc3QgVUNoYXIgYykKK3sKKyAgICAvLyBvYnMtdGV4
dCA9ICV4ODAtRkYKKyAgICByZXR1cm4gKGMgPj0gMHg4MCAmJiBjIDw9IDB4RkYpOworfQorCisv
LyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgYm9vbCBpc0NvbW1lbnRUZXh0
Q2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gY3RleHQgPSBIVEFCIC8gU1AKKyAg
ICAvLyAgICAgICAvICV4MjEtMjcgOyAnISctJycnCisgICAgLy8gICAgICAgLyAleDJBLTVCIDsg
JyonLSdbJworICAgIC8vICAgICAgIC8gJXg1RC03RSA7ICddJy0nficKKyAgICAvLyAgICAgICAv
IG9icy10ZXh0CisgICAgcmV0dXJuIChjID09ICdcdCcgfHwgYyA9PSAnICcKKyAgICAgICAgfHwg
KGMgPj0gMHgyMSAmJiBjIDw9IDB4MjcpCisgICAgICAgIHx8IChjID49IDB4MkEgJiYgYyA8PSAw
eDVCKQorICAgICAgICB8fCAoYyA+PSAweDVEICYmIGMgPD0gMHg3RSkKKyAgICAgICAgfHwgaXNP
Y3RlY3RJbkZpZWxkQ29udGVudENoYXJhY3RlcihjKSk7Cit9CisKIC8vIFNlZSBSRkMgNzIzMSwg
U2VjdGlvbiA1LjMuMi4KIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CkBAIC0xNzMsNiArMjE0LDEzIEBAIGJvb2wgaXNWYWxpZExhbmd1YWdlSGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8g
U2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGluZSBib29sIGlzSFRUUFRv
a2VuQ2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gQW55IFZDSEFSLCBleGNlcHQg
ZGVsaW1pdGVycworICAgIHJldHVybiBjID4gMHgyMCAmJiBjIDwgMHg3RiAmJiAhaXNEZWxpbWl0
ZXJDaGFyYWN0ZXIoYyk7Cit9CisKIC8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KIGJv
b2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlKQogewpAQCAtMTgwLDE2ICsy
MjgsMTI2IEBAIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byB2YWx1ZVN0cmluZ1ZpZXcgPSBTdHJpbmdWaWV3
KHZhbHVlKTsKICAgICBmb3IgKFVDaGFyIGMgOiB2YWx1ZVN0cmluZ1ZpZXcuY29kZVVuaXRzKCkp
IHsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N0YKLSAgICAgICAgICAgIHx8IGMg
PT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8IGMgPT0gJz4nIHx8IGMgPT0gJ0AnCi0g
ICAgICAgICAgICB8fCBjID09ICcsJyB8fCBjID09ICc7JyB8fCBjID09ICc6JyB8fCBjID09ICdc
XCcgfHwgYyA9PSAnIicKLSAgICAgICAgICAgIHx8IGMgPT0gJy8nIHx8IGMgPT0gJ1snIHx8IGMg
PT0gJ10nIHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0nCi0gICAgICAgICAgICB8fCBjID09ICd7JyB8
fCBjID09ICd9JykKKyAgICAgICAgaWYgKCFpc0hUVFBUb2tlbkNoYXJhY3RlcihjKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRy
dWUgaWYgdGhlICJleHBlY3RlZCIgY2hhcmFjdGVyIGlzIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiwg
aW5jcmVtZW50aW5nICJwb3MiIGJ5IG9uZS4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0g
c3RyLmxlbmd0aCgpCitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcENoYXJhY3Rlcihjb25zdCBTdHJp
bmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zLCBjb25zdCBVQ2hhciBleHBlY3RlZCkKK3sKKyAgICBp
ZiAocG9zIDwgdmFsdWUubGVuZ3RoKCkgJiYgdmFsdWVbcG9zXSA9PSBleHBlY3RlZCkgeworICAg
ICAgICArK3BvczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworLy8gVHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBz
YXRpc2lmaWVzIGEgcHJlZGljYXRlLCBpbmNyZW1lbnRpbmcgInBvcyIgYnkgb25lLgorLy8gTm90
ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
a2lwQ2hhcmFjdGVyKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MsIFdURjo6RnVu
Y3Rpb248Ym9vbChjb25zdCBVQ2hhcik+JiYgcHJlZGljYXRlKQoreworICAgIGlmIChwb3MgPCB2
YWx1ZS5sZW5ndGgoKSAmJiBwcmVkaWNhdGUodmFsdWVbcG9zXSkpIHsKKyAgICAgICAgKytwb3M7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8v
IFRydWUgaWYgYSBxdW90ZWQgcGFpciBpcyBwcmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8g
dGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBxdW90ZWQgcGFpci4KKy8vIE5vdGU6IE1pZ2h0IHJldHVy
biBwb3MgPT0gc3RyLmxlbmd0aCgpCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitz
dGF0aWMgY29uc3RleHByIGF1dG8gUXVvdGVkUGFpclN0YXJ0Q2hhcmFjdGVyID0gJ1xcJzsKK3N0
YXRpYyBib29sIHNraXBRdW90ZWRQYWlyKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBw
b3MpCit7CisgICAgLy8gcXVvdGVkLXBhaXIgPSAiXCIgKCBIVEFCIC8gU1AgLyBWQ0hBUiAvIG9i
cy10ZXh0ICkKKyAgICBpZiAoIXNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgUXVvdGVkUGFpclN0
YXJ0Q2hhcmFjdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNraXBD
aGFyYWN0ZXIodmFsdWUsIHBvcywgJ1x0JykKKyAgICAgICAgfHwgc2tpcENoYXJhY3Rlcih2YWx1
ZSwgcG9zLCAnICcpCisgICAgICAgIHx8IHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgaXNWaXNp
YmxlQ2hhcmFjdGVyKQorICAgICAgICB8fCBza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIGlzT2N0
ZWN0SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIpOworfQorCisvLyBUcnVlIGlzIGEgY29tbWVudCBp
cyBwcmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBj
b21tZW50LgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKKy8vIFNl
ZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBjb25zdGV4cHIgYXV0byBDb21tZW50
U3RhcnRDaGFyYWN0ZXIgPSAnKCc7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQ29tbWVudEVuZENo
YXJhY3RlciA9ICcpJzsKK3N0YXRpYyBib29sIHNraXBDb21tZW50KGNvbnN0IFN0cmluZyYgdmFs
dWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8gY29tbWVudCA9ICIoIiAqKCBjdGV4dCAvIHF1
b3RlZC1wYWlyIC8gY29tbWVudCApICIpIgorICAgIC8vIGN0ZXh0ICAgPSBIVEFCIC8gU1AgLyAl
eDIxLTI3IC8gJXgyQS01QiAvICV4NUQtN0UgLyBvYnMtdGV4dAorICAgIGlmICghc2tpcENoYXJh
Y3Rlcih2YWx1ZSwgcG9zLCBDb21tZW50U3RhcnRDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBlbmQgPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3
aGlsZSAocG9zIDwgZW5kICYmIHZhbHVlW3Bvc10gIT0gQ29tbWVudEVuZENoYXJhY3Rlcikgewor
ICAgICAgICBzd2l0Y2ggKHZhbHVlW3Bvc10pIHsKKyAgICAgICAgY2FzZSBDb21tZW50U3RhcnRD
aGFyYWN0ZXI6CisgICAgICAgICAgICBpZiAoIXNraXBDb21tZW50KHZhbHVlLCBwb3MpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFF1b3RlZFBhaXJTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgIGlmICghc2tpcFF1b3Rl
ZFBhaXIodmFsdWUsIHBvcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIXNraXBXaGls
ZSh2YWx1ZSwgcG9zLCBpc0NvbW1lbnRUZXh0Q2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHNraXBDaGFyYWN0ZXIo
dmFsdWUsIHBvcywgQ29tbWVudEVuZENoYXJhY3Rlcik7Cit9CisKKy8vIFRydWUgaWYgYW4gSFRU
UCBoZWFkZXIgdG9rZW4gaXMgcHJlc2VudCwgaW5jcmVtZW50aW5nICJwb3MiIHRvIHRoZSBwb3Np
dGlvbiBhZnRlciBpdC4KKy8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgp
CisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgYm9vbCBza2lwSFRUUFRv
a2VuKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgcmV0dXJuIHNr
aXBXaGlsZSh2YWx1ZSwgcG9zLCBpc0hUVFBUb2tlbkNoYXJhY3Rlcik7Cit9CisKKy8vIFRydWUg
aWYgYSBwcm9kdWN0IHNwZWNpZmllciAoYXMgaW4gYW4gVXNlci1BZ2VudCBoZWFkZXIpIGlzIHBy
ZXNlbnQsIGluY3JlbWVudGluZyAicG9zIiB0byB0aGUgcG9zaXRpb24gYWZ0ZXIgaXQuCisvLyBO
b3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQorLy8gU2VlIFJGQyA3MjMxLCBT
ZWN0aW9uIDUuNS4zLgorc3RhdGljIGJvb2wgc2tpcFVzZXJBZ2VudFByb2R1Y3QoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcykKK3sKKyAgICAvLyBwcm9kdWN0ICAgICAgICAgPSB0
b2tlbiBbIi8iIHByb2R1Y3QtdmVyc2lvbl0KKyAgICAvLyBwcm9kdWN0LXZlcnNpb24gPSB0b2tl
bgorICAgIGlmICghc2tpcEhUVFBUb2tlbih2YWx1ZSwgcG9zKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsICcvJykpCisgICAgICAgIHJl
dHVybiBza2lwSFRUUFRva2VuKHZhbHVlLCBwb3MpOwogICAgIHJldHVybiB0cnVlOwogfQogCisv
LyBTZWUgUkZDIDcyMzEsIFNlY3Rpb24gNS41LjMKK2Jvb2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gVXNlci1BZ2VudCA9IHByb2R1
Y3QgKiggUldTICggcHJvZHVjdCAvIGNvbW1lbnQgKSApCisgICAgdW5zaWduZWQgcG9zID0gMDsK
KyAgICBpZiAoIXNraXBVc2VyQWdlbnRQcm9kdWN0KHZhbHVlLCBwb3MpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB3aGlsZSAocG9zIDwgdmFsdWUubGVuZ3RoKCkpIHsKKyAgICAgICAg
aWYgKCFza2lwV2hpdGVTcGFjZSh2YWx1ZSwgcG9zKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT0gQ29tbWVudFN0YXJ0Q2hhcmFjdGVyKSB7Cisg
ICAgICAgICAgICBpZiAoIXNraXBDb21tZW50KHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghc2tpcFVz
ZXJBZ2VudFByb2R1Y3QodmFsdWUsIHBvcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHBvcyA9PSB2YWx1ZS5sZW5ndGgoKTsK
K30KKwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7CiBzdGF0
aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuZ3RoKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCmluZGV4
IGUzZTE5MjcwNWM3MWZlMmIyZWYxMDc3MGRkZDEyNTYwNmZjM2RmOWQuLjJhN2RkYWMyZGMxZWY4
ZjE1YWM5NThjMjNkZmFiYThlMDk0NDQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTcyLDYgKzcyLDcgQEAgYm9vbCBpc1ZhbGlkUmVh
c29uUGhyYXNlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNv
bnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkQWNjZXB0SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5n
Jik7CiBib29sIGlzVmFsaWRMYW5ndWFnZUhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5n
Jik7CiBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJik7CiBib29sIHBhcnNlSFRU
UFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVy
bCk7CiBPcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNw
cAppbmRleCBjM2I2NWM0OTA0YTY3OThiNWE5ZmExYjUzZGNkYTRiNzRhOTAyZmM4Li5jODY5NzU4
NTUwYzA1YjdlYzVlMjA1YTk5MWVjOGYzMTg4NWNlOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0hUVFBQYXJzZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1VzZXJBZ2VudC5oPgpAQCAtMzA0Myw3ICszMDQ0LDEwIEBAIHZvaWQgd2Via2l0X3NldHRpbmdz
X3NldF91c2VyX2FnZW50KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgY2hhciogdXNl
ckFnCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsK
IAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAg
IENTdHJpbmcgbmV3VXNlckFnZW50ID0gKCF1c2VyQWdlbnQgfHwgIXN0cmxlbih1c2VyQWdlbnQp
KSA/IFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50KCIiKS51dGY4KCkgOiB1c2VyQWdlbnQ7Cisg
ICAgU3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9ICghdXNlckFnZW50IHx8ICFzdHJsZW4odXNlckFn
ZW50KSkgPyBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudCgiIikgOiBTdHJpbmc6OmZyb21VVEY4
KHVzZXJBZ2VudCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXZWJDb3JlOjppc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUodXNlckFnZW50U3RyaW5nKSk7CisKKyAgICBDU3RyaW5nIG5ld1VzZXJB
Z2VudCA9IHVzZXJBZ2VudFN0cmluZy51dGY4KCk7CiAgICAgaWYgKG5ld1VzZXJBZ2VudCA9PSBw
cml2LT51c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU1MDUzOTZmNDViZWFmNDg0NzJhZmIxOTk2
YWVhOTAzNjI5M2NlZjguLjU4MzVmM2JlZWYwOGJmYWM1MzI2MWQ5Yjc3NDliOGMzNjQ0MGQ5N2Qg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wOC0zMCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gd2Via2l0X3NldHRpbmdzX3NldF91c2Vy
X2FnZW50KCkgYWxsb3dzIGNvbnRlbnQgZm9yYmlkZGVuIGluIEhUVFAgaGVhZGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0OiBBZGQgbWlzc2luZyBIVFRQUGFyc2Vycy5jcHAgdG8gYmUgYnVpbHQg
aW50byBUZXN0V2ViQ29yZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
SFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IEFkZCB0ZXN0
cyBmb3IgV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCkuCisKIDIwMTktMDgt
MzAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXVtHVEtdIE5ldyBBUEkgdG8gcmVtb3ZlIGEgZmlsdGVyIGZyb20gYW4gdXNlciBjb250
ZW50IG1hbmFnZXIgZ2l2ZW4gaXRzIGlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDIzOTRiNTMxYWUzNmEzZjNjOWI4MjRiMTVmYTU2MmRkMzU2OTBhNDUuLjdlZGUx
YmMyMDM0NzcxMmI3ZTgxOTI3ODhjMDkyNTdlYWU5MjdhMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTMwLDYgKzEzMCw3IEBAIGlmIChFTkFCTEVfV0VCQ09SRSkKICAgICAg
ICAgVGVzdHMvV2ViQ29yZS9GbG9hdFNpemUuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvR3Jp
ZFBvc2l0aW9uLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
CisgICAgICAgIFRlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCiAgICAgICAgIFRlc3RzL1dl
YkNvcmUvSW50UG9pbnQuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UmVjdC5jcHAKICAg
ICAgICAgVGVzdHMvV2ViQ29yZS9JbnRTaXplLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKaW5kZXggMDE2NmE0ZDA1ZjJmOWE5MWYy
N2Y5M2Q0YTUxMTQ2ZGZjMTNiYjc4Yi4uZWU0MzkxZjJkYTUwN2EzZjI3ZTRiNDk0NzM0NDQyNWFk
Y2RiZmVkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hU
VFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UFBhcnNlcnMuY3BwCkBAIC01Niw0ICs1NiwzNCBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAgICAgRVhQRUNUX1RSVUUocGFyc2VDcm9z
c09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKCLvo78iKSA9PSBDcm9zc09yaWdpblJlc291cmNl
UG9saWN5OjpJbnZhbGlkKTsKIH0KIAorVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdl
bnRWYWx1ZXMpCit7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgV2ViS2l0IikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpLzEwLjAiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8x
NjMiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVk
IGNvbW1lbnQpKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVudCkiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3Rl
ZCBwYWlyKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkg
KG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiAiKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3
aGl0ZXNwYWNlKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRlc3BhY2UpICIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkg
KHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8gdmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1
bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9s
IGNoYXJhY3RlcikiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRlZCBuZXdsaW5lKSIpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWly
IGluIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3QgdG9rZW4pIikpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378579</attachid>
            <date>2019-09-11 14:38:01 -0700</date>
            <delta_ts>2019-09-12 07:48:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201077-20190912003759.patch</filename>
            <type>text/plain</type>
            <size>16181</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk5MjgwYWU0MzJmM2Mw
MjA3N2FjZjU4YzRmNDllMDNmMTJiMzFjYi4uZTQ0MTMxZDNiNWE0YWJkM2ZhMWE3MWM2ZjA1ZjNk
Y2U2MmE1MTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA5LTExICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3Ji
aWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lh
IENhbXBvcy4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB3aGV0aGVyIGEg
c3RyaW5nIGNvbnRhaW5zIGEgdmFsaWQgdmFsdWUKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQg
aW4gYSBIVFRQIFVzZXItQWdlbnQgaGVhZGVyLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IFdl
YkNvcmUgQVBJIHRlc3QgSFRUUFBhcnNlcnMuVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDogQWRkZWQgYSBzZXJpZXMg
b2YgaGVscGVyIGZ1bmN0aW9ucyB3aGljaCBza2lwIG92ZXIKKyAgICAgICAgY2hhcmFjdGVycyBv
ZiBhIHN0cmluZywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2NhbiBvdmVyIHRoZSBkaWZmZXJlbnQg
ZWxlbWVudHMgb2YgYW4KKyAgICAgICAgVXNlci1BZ2VudCB2YWx1ZTsgYWxsIG9mIHRoZW0gcmVj
ZWl2ZSB0aGUgcG9zaXRpb24gZnJvbSB0aGUgaW5wdXQgc3RyaW5nIHdoZXJlIHRvIHN0YXJ0Cisg
ICAgICAgIHNjYW5uaW5nLCB1cGRhdGluZyBpdCB0byB0aGUgcG9zaXRpb24gcmlnaHQgYWZ0ZXIg
dGhlIHNjYW5uZWQgaXRlbSAodGhpcyBmb2xsb3cgdGhlCisgICAgICAgIGNvbnZlbnRpb24gYWxy
ZWFkeSBpbiB1c2UgYnkgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzb3VyY2UgZmlsZSkuIEVhY2gg
b2YgdGhlbSBoYXMKKyAgICAgICAgYmVlbiBhbm5vdGF0ZWQgd2l0aCB0aGUgUkZDIG51bWJlciBh
bmQgc2VjdGlvbiB3aGljaCBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAgICAgICAg
c2Nhbm5lZCBpdGVtLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQk5GIHJ1bGVzIHRvIG1ha2UgdGhl
IGNvZGUgZWFzaWVyIHRvIGZvbGxvdy4KKyAgICAgICAgKFdlYkNvcmU6OnNraXBXaGlsZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWaXNpYmxlQ2hhcmFjdGVyKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjppc09jdGVjdEluRmllbGRDb250ZW50Q2hhcmFjdGVyKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjppc0NvbW1lbnRUZXh0Q2hhcmFjdGVyKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjppc0hUVFBUb2tlbkNoYXJhY3Rlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZEhUVFBUb2tlbik6IFJlZmFjdG9yZWQgdG8gdXNlIHRoZSBuZXcgaXNIVFRQVG9r
ZW5DaGFyYWN0ZXIoKQorICAgICAgICBoZWxwZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBoYXZpbmcg
dGhlIHRlc3QgaW5zaWRlIHRoZSBsb29wLgorICAgICAgICAoV2ViQ29yZTo6c2tpcENoYXJhY3Rl
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2tpcFF1b3RlZFBhaXIpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnNraXBDb21tZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpz
a2lwSFRUUFRva2VuKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwVXNlckFnZW50UHJv
ZHVjdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oOiBB
ZGQgcHJvdG90eXBlIGZvciBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoKS4KKwogMjAxOS0w
OS0xMSAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDk3NTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmZmQ0ZTYzMTQ4Yzc0MmJj
MmUxNWY2YTlkOTA3OGQxZWVhMjJlNjQuLjhjZDQ2OTY4Mzc0OTEzNWRmYTU5ZmRlMTM5MzlmZTg5
ZjUyZjM3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDktMTEgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVd
IHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudCgpIGFsbG93cyBjb250ZW50IGZvcmJpZGRl
biBpbiBIVFRQIGhlYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTA3NworCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2Ft
cG9zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudCk6IENoZWNrIHRoZSBwYXNz
ZWQgc3RyaW5nIHVzaW5nIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZTo6aXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCkgZnVuY3Rpb24sIGFuZCByZXR1cm4gZWFybHkgd2l0aG91dAorICAgICAg
ICBjaGFuZ2luZyB0aGUgc2V0dGluZyBpZiB0aGUgc3RyaW5nIGlzIG5vdCB1c2FibGUgaW4gdGhl
IFVzZXItQWdlbnQgSFRUUAorICAgICAgICBoZWFkZXIuCisKIDIwMTktMDktMTEgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKDI0NTAwNik6
IGNhbid0IHNjcm9sbCBpbiAicmVhZCBtb3JlIiB2aWV3IGluIEV2ZW50YnJpdGUgYXBwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDUw
YTIzNzlhY2E0ODg4MGNiYzM0YjQ2YjA2YzhmMDA3NmFkOGMyODcuLjMwMjlkODk4N2RmNDlkYzYy
ZDNlMmJkYzc2Nzg3OWQ2OTliMDlmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC05Nyw2ICs5NywxOCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2tpcFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zKQogICAgIHJl
dHVybiBwb3MgIT0gc3RhcnQ7CiB9CiAKKy8vIFRydWUgaWYgY2hhcmFjdGVycyB3aGljaCBzYXRp
c2Z5IHRoZSBwcmVkaWNhdGUgYXJlIHByZXNlbnQsIGluY3JlbWVudGluZworLy8gInBvcyIgdG8g
dGhlIG5leHQgY2hhcmFjdGVyIHdoaWNoIGRvZXMgbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4K
Ky8vIE5vdGU6IG1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpLgorc3RhdGljIGlubGlu
ZSBib29sIHNraXBXaGlsZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcywgY29uc3Qg
V1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFVDaGFyKT4mIHByZWRpY2F0ZSkKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBzdGFydCA9IHBvczsKKyAgICBjb25zdCB1bnNpZ25lZCBsZW4gPSBzdHIubGVu
Z3RoKCk7CisgICAgd2hpbGUgKHBvcyA8IGxlbiAmJiBwcmVkaWNhdGUoc3RyW3Bvc10pKQorICAg
ICAgICArK3BvczsKKyAgICByZXR1cm4gcG9zICE9IHN0YXJ0OworfQorCiAvLyBTZWUgUkZDIDcy
MzAsIFNlY3Rpb24gMy4xLjIuCiBib29sIGlzVmFsaWRSZWFzb25QaHJhc2UoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKQEAgLTEzNSw2ICsxNDcsMzUgQEAgc3RhdGljIGJvb2wgaXNEZWxpbWl0ZXJD
aGFyYWN0ZXIoY29uc3QgVUNoYXIgYykKICAgICAgICAgfHwgYyA9PSAnXScgfHwgYyA9PSAneycg
fHwgYyA9PSAnfScpOwogfQogCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0
aWMgaW5saW5lIGJvb2wgaXNWaXNpYmxlQ2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAg
Ly8gVkNIQVIgPSAleDIxLTdFCisgICAgcmV0dXJuIChjID49IDB4MjEgJiYgYyA8PSAweDdFKTsK
K30KKworLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGluZSBib29s
IGlzT2N0ZWN0SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIoY29uc3QgVUNoYXIgYykKK3sKKyAgICAv
LyBvYnMtdGV4dCA9ICV4ODAtRkYKKyAgICByZXR1cm4gKGMgPj0gMHg4MCAmJiBjIDw9IDB4RkYp
OworfQorCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgYm9vbCBpc0Nv
bW1lbnRUZXh0Q2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gY3RleHQgPSBIVEFC
IC8gU1AKKyAgICAvLyAgICAgICAvICV4MjEtMjcgOyAnISctJycnCisgICAgLy8gICAgICAgLyAl
eDJBLTVCIDsgJyonLSdbJworICAgIC8vICAgICAgIC8gJXg1RC03RSA7ICddJy0nficKKyAgICAv
LyAgICAgICAvIG9icy10ZXh0CisgICAgcmV0dXJuIChjID09ICdcdCcgfHwgYyA9PSAnICcKKyAg
ICAgICAgfHwgKGMgPj0gMHgyMSAmJiBjIDw9IDB4MjcpCisgICAgICAgIHx8IChjID49IDB4MkEg
JiYgYyA8PSAweDVCKQorICAgICAgICB8fCAoYyA+PSAweDVEICYmIGMgPD0gMHg3RSkKKyAgICAg
ICAgfHwgaXNPY3RlY3RJbkZpZWxkQ29udGVudENoYXJhY3RlcihjKSk7Cit9CisKIC8vIFNlZSBS
RkMgNzIzMSwgU2VjdGlvbiA1LjMuMi4KIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CkBAIC0xNzMsNiArMjE0LDEzIEBAIGJvb2wgaXNWYWxpZExh
bmd1YWdlSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGlubGluZSBib29s
IGlzSFRUUFRva2VuQ2hhcmFjdGVyKGNvbnN0IFVDaGFyIGMpCit7CisgICAgLy8gQW55IFZDSEFS
LCBleGNlcHQgZGVsaW1pdGVycworICAgIHJldHVybiBjID4gMHgyMCAmJiBjIDwgMHg3RiAmJiAh
aXNEZWxpbWl0ZXJDaGFyYWN0ZXIoYyk7Cit9CisKIC8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAz
LjIuNi4KIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlKQogewpAQCAt
MTgwLDE2ICsyMjgsMTI0IEBAIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byB2YWx1ZVN0cmluZ1ZpZXcgPSBT
dHJpbmdWaWV3KHZhbHVlKTsKICAgICBmb3IgKFVDaGFyIGMgOiB2YWx1ZVN0cmluZ1ZpZXcuY29k
ZVVuaXRzKCkpIHsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N0YKLSAgICAgICAg
ICAgIHx8IGMgPT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8IGMgPT0gJz4nIHx8IGMg
PT0gJ0AnCi0gICAgICAgICAgICB8fCBjID09ICcsJyB8fCBjID09ICc7JyB8fCBjID09ICc6JyB8
fCBjID09ICdcXCcgfHwgYyA9PSAnIicKLSAgICAgICAgICAgIHx8IGMgPT0gJy8nIHx8IGMgPT0g
J1snIHx8IGMgPT0gJ10nIHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0nCi0gICAgICAgICAgICB8fCBj
ID09ICd7JyB8fCBjID09ICd9JykKKyAgICAgICAgaWYgKCFpc0hUVFBUb2tlbkNoYXJhY3Rlcihj
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIFRydWUgaWYgdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gc2F0aXNp
ZmllcyBhIHByZWRpY2F0ZSwgaW5jcmVtZW50aW5nICJwb3MiIGJ5IG9uZS4KKy8vIE5vdGU6IE1p
Z2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcENo
YXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zLCBXVEY6OkZ1bmN0aW9u
PGJvb2woY29uc3QgVUNoYXIpPiYmIHByZWRpY2F0ZSkKK3sKKyAgICBpZiAocG9zIDwgdmFsdWUu
bGVuZ3RoKCkgJiYgcHJlZGljYXRlKHZhbHVlW3Bvc10pKSB7CisgICAgICAgICsrcG9zOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUcnVl
IGlmIHRoZSAiZXhwZWN0ZWQiIGNoYXJhY3RlciBpcyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24sIGlu
Y3JlbWVudGluZyAicG9zIiBieSBvbmUuCisvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0
ci5sZW5ndGgoKQorc3RhdGljIGlubGluZSBib29sIHNraXBDaGFyYWN0ZXIoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgdW5zaWduZWQmIHBvcywgY29uc3QgVUNoYXIgZXhwZWN0ZWQpCit7CisgICAgcmV0
dXJuIHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgW2V4cGVjdGVkXShjb25zdCBVQ2hhciBjKSB7
CisgICAgICAgIHJldHVybiBjID09IGV4cGVjdGVkOworICAgIH0pOworfQorCisvLyBUcnVlIGlm
IGEgcXVvdGVkIHBhaXIgaXMgcHJlc2VudCwgaW5jcmVtZW50aW5nICJwb3MiIHRvIHRoZSBwb3Np
dGlvbiBhZnRlciB0aGUgcXVvdGVkIHBhaXIuCisvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09
IHN0ci5sZW5ndGgoKQorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIFF1b3RlZFBhaXJTdGFydENoYXJhY3RlciA9ICdcXCc7CitzdGF0aWMgYm9v
bCBza2lwUXVvdGVkUGFpcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zKQorewor
ICAgIC8vIHF1b3RlZC1wYWlyID0gIlwiICggSFRBQiAvIFNQIC8gVkNIQVIgLyBvYnMtdGV4dCAp
CisgICAgaWYgKCFza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIFF1b3RlZFBhaXJTdGFydENoYXJh
Y3RlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBza2lwQ2hhcmFjdGVy
KHZhbHVlLCBwb3MsICdcdCcpCisgICAgICAgIHx8IHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywg
JyAnKQorICAgICAgICB8fCBza2lwQ2hhcmFjdGVyKHZhbHVlLCBwb3MsIGlzVmlzaWJsZUNoYXJh
Y3RlcikKKyAgICAgICAgfHwgc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9zLCBpc09jdGVjdEluRmll
bGRDb250ZW50Q2hhcmFjdGVyKTsKK30KKworLy8gVHJ1ZSBpZiBhIGNvbW1lbnQgaXMgcHJlc2Vu
dCwgaW5jcmVtZW50aW5nICJwb3MiIHRvIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY29tbWVudC4K
Ky8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCisvLyBTZWUgUkZDIDcy
MzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgY29uc3RleHByIGF1dG8gQ29tbWVudFN0YXJ0Q2hh
cmFjdGVyID0gJygnOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIENvbW1lbnRFbmRDaGFyYWN0ZXIg
PSAnKSc7CitzdGF0aWMgYm9vbCBza2lwQ29tbWVudChjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNp
Z25lZCYgcG9zKQoreworICAgIC8vIGNvbW1lbnQgPSAiKCIgKiggY3RleHQgLyBxdW90ZWQtcGFp
ciAvIGNvbW1lbnQgKSAiKSIKKyAgICAvLyBjdGV4dCAgID0gSFRBQiAvIFNQIC8gJXgyMS0yNyAv
ICV4MkEtNUIgLyAleDVELTdFIC8gb2JzLXRleHQKKyAgICBpZiAoIXNraXBDaGFyYWN0ZXIodmFs
dWUsIHBvcywgQ29tbWVudFN0YXJ0Q2hhcmFjdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgY29uc3QgdW5zaWduZWQgZW5kID0gdmFsdWUubGVuZ3RoKCk7CisgICAgd2hpbGUgKHBv
cyA8IGVuZCAmJiB2YWx1ZVtwb3NdICE9IENvbW1lbnRFbmRDaGFyYWN0ZXIpIHsKKyAgICAgICAg
c3dpdGNoICh2YWx1ZVtwb3NdKSB7CisgICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0Q2hhcmFjdGVy
OgorICAgICAgICAgICAgaWYgKCFza2lwQ29tbWVudCh2YWx1ZSwgcG9zKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBRdW90
ZWRQYWlyU3RhcnRDaGFyYWN0ZXI6CisgICAgICAgICAgICBpZiAoIXNraXBRdW90ZWRQYWlyKHZh
bHVlLCBwb3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCFza2lwV2hpbGUodmFsdWUs
IHBvcywgaXNDb21tZW50VGV4dENoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBza2lwQ2hhcmFjdGVyKHZhbHVlLCBw
b3MsIENvbW1lbnRFbmRDaGFyYWN0ZXIpOworfQorCisvLyBUcnVlIGlmIGFuIEhUVFAgaGVhZGVy
IHRva2VuIGlzIHByZXNlbnQsIGluY3JlbWVudGluZyAicG9zIiB0byB0aGUgcG9zaXRpb24gYWZ0
ZXIgaXQuCisvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQorLy8gU2Vl
IFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42Lgorc3RhdGljIGJvb2wgc2tpcEhUVFBUb2tlbihjb25z
dCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zKQoreworICAgIHJldHVybiBza2lwV2hpbGUo
dmFsdWUsIHBvcywgaXNIVFRQVG9rZW5DaGFyYWN0ZXIpOworfQorCisvLyBUcnVlIGlmIGEgcHJv
ZHVjdCBzcGVjaWZpZXIgKGFzIGluIGFuIFVzZXItQWdlbnQgaGVhZGVyKSBpcyBwcmVzZW50LCBp
bmNyZW1lbnRpbmcgInBvcyIgdG8gdGhlIHBvc2l0aW9uIGFmdGVyIGl0LgorLy8gTm90ZTogTWln
aHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKKy8vIFNlZSBSRkMgNzIzMSwgU2VjdGlvbiA1
LjUuMy4KK3N0YXRpYyBib29sIHNraXBVc2VyQWdlbnRQcm9kdWN0KGNvbnN0IFN0cmluZyYgdmFs
dWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8gcHJvZHVjdCAgICAgICAgID0gdG9rZW4gWyIv
IiBwcm9kdWN0LXZlcnNpb25dCisgICAgLy8gcHJvZHVjdC12ZXJzaW9uID0gdG9rZW4KKyAgICBp
ZiAoIXNraXBIVFRQVG9rZW4odmFsdWUsIHBvcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9zLCAnLycpKQorICAgICAgICByZXR1cm4gc2tp
cEhUVFBUb2tlbih2YWx1ZSwgcG9zKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gU2VlIFJG
QyA3MjMxLCBTZWN0aW9uIDUuNS4zCitib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIC8vIFVzZXItQWdlbnQgPSBwcm9kdWN0ICooIFJX
UyAoIHByb2R1Y3QgLyBjb21tZW50ICkgKQorICAgIHVuc2lnbmVkIHBvcyA9IDA7CisgICAgaWYg
KCFza2lwVXNlckFnZW50UHJvZHVjdCh2YWx1ZSwgcG9zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgd2hpbGUgKHBvcyA8IHZhbHVlLmxlbmd0aCgpKSB7CisgICAgICAgIGlmICghc2tp
cFdoaXRlU3BhY2UodmFsdWUsIHBvcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICh2YWx1ZVtwb3NdID09IENvbW1lbnRTdGFydENoYXJhY3RlcikgeworICAgICAgICAg
ICAgaWYgKCFza2lwQ29tbWVudCh2YWx1ZSwgcG9zKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIXNraXBVc2VyQWdlbnRQ
cm9kdWN0KHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBwb3MgPT0gdmFsdWUubGVuZ3RoKCk7Cit9CisKIHN0
YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Owogc3RhdGljIFN0cmlu
ZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbmd0aCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBlM2UxOTI3
MDVjNzFmZTJiMmVmMTA3NzBkZGQxMjU2MDZmYzNkZjlkLi4yYTdkZGFjMmRjMWVmOGYxNWFjOTU4
YzIzZGZhYmE4ZTA5NDQ0ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5oCkBAIC03Miw2ICs3Miw3IEBAIGJvb2wgaXNWYWxpZFJlYXNvblBocmFz
ZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJp
bmcmKTsKIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9v
bCBpc1ZhbGlkTGFuZ3VhZ2VIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9v
bCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBwYXJzZUhUVFBSZWZyZXNo
KGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpOwogT3B0
aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXgg
YzNiNjVjNDkwNGE2Nzk4YjVhOWZhMWI1M2RjZGE0Yjc0YTkwMmZjOC4uNjE4OTc0N2JhYWYzZmFi
ZjgwYjAwOWRlMDBhNGNiY2E5YWQ5OTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFy
c2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdl
bnQuaD4KQEAgLTMwNDMsNyArMzA0NCwxNSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfdXNl
cl9hZ2VudChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGNoYXIqIHVzZXJBZwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBX
ZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBDU3RyaW5n
IG5ld1VzZXJBZ2VudCA9ICghdXNlckFnZW50IHx8ICFzdHJsZW4odXNlckFnZW50KSkgPyBXZWJD
b3JlOjpzdGFuZGFyZFVzZXJBZ2VudCgiIikudXRmOCgpIDogdXNlckFnZW50OworCisgICAgU3Ry
aW5nIHVzZXJBZ2VudFN0cmluZzsKKyAgICBpZiAodXNlckFnZW50ICYmICp1c2VyQWdlbnQpIHsK
KyAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2VyQWdlbnQpOwor
ICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdXNlckFnZW50U3Ry
aW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworCisgICAgQ1N0cmluZyBuZXdV
c2VyQWdlbnQgPSB1c2VyQWdlbnRTdHJpbmcudXRmOCgpOwogICAgIGlmIChuZXdVc2VyQWdlbnQg
PT0gcHJpdi0+dXNlckFnZW50KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYjgyMDY5YTQyMGM1MWFmOTJkOTZm
ZWQzNDgwNGJhMTBmYTgyYjM2Li41ZTJlNmMxOGVmOTRhZWY4ZTBhZTc1Nzk5YTAzNjQ2MTYyNGVk
YjQ3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTktMDktMTEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVy
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIHdlYmtpdF9zZXR0aW5nc19zZXRf
dXNlcl9hZ2VudCgpIGFsbG93cyBjb250ZW50IGZvcmJpZGRlbiBpbiBIVFRQIGhlYWRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTA3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDogQWRkIG1pc3NpbmcgSFRUUFBhcnNlcnMuY3BwIHRv
IGJlIGJ1aWx0IGludG8gVGVzdFdlYkNvcmUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OiBBZGQgdGVzdHMgZm9yIFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgpLgor
CiAyMDE5LTA5LTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXVtXUEVdIFN0b3AgdXNpbmcgdGhlIHNlc3Npb24gYnVzIGluIHRoZSB1
bml0IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBjYmVjYTNhN2U0MWQw
OTg0ZTRhOTQ4MGFlNTdmMzM5YzBmZGY3MmY5Li5hYzVjYjA3Yjg3NzJmNmQyZDM2NGMzZjVlOTgx
OTQ5ZWE5YWM2NWM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTEzMCw2ICsx
MzAsNyBAQCBpZiAoRU5BQkxFX1dFQkNPUkUpCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvRmxvYXRT
aXplLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKICAgICAgICAg
VGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAorICAgICAgICBUZXN0cy9XZWJDb3Jl
L0hUVFBQYXJzZXJzLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFBvaW50LmNwcAogICAg
ICAgICBUZXN0cy9XZWJDb3JlL0ludFJlY3QuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50
U2l6ZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9I
VFRQUGFyc2Vycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBh
cnNlcnMuY3BwCmluZGV4IDAxNjZhNGQwNWYyZjlhOTFmMjdmOTNkNGE1MTE0NmRmYzEzYmI3OGIu
LmVlNDM5MWYyZGE1MDdhM2YyN2U0YjQ5NDczNDQ0MjVhZGNkYmZlZDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcApAQCAtNTYsNCAr
NTYsMzQgQEAgVEVTVChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5
SGVhZGVyKQogICAgIEVYUEVDVF9UUlVFKHBhcnNlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUhl
YWRlcigi76O/IikgPT0gQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTo6SW52YWxpZCk7CiB9CiAK
K1RFU1QoSFRUUFBhcnNlcnMsIFZhbGlkYXRlVXNlckFnZW50VmFsdWVzKQoreworICAgIEVYUEVD
VF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIikpOworICAgIEVYUEVD
VF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCIpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIikp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdl
YktpdC8xNjMiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkvMTAuMCBXZWJLaXQiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIikpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96
aWxsYTsgbGlrZSBHZWNrbykiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiKSk7CisgICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKCkgKDwtIEVtcHR5
IGNvbW1lbnQpIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpIChsZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiKSk7CisgICAgRVhQRUNU
X1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9gfH4gKG5vbi1h
bHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIwMTIzNDU2Nzg5IChudW1lcmljIHRva2VuIGNoYXJhY3Rl
cnMpIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAo
c2luZ2xlIGNoYXJhY3RlciB0b2tlbikiKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFjZSkiKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3
aGl0ZXNwYWNlKSAiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXdsaW5lKVxuIikp
OworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8g
KG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOworICAgIEVYUEVDVF9GQUxTRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIHVu
b3BlbmVkIGNvbW1hbmVudCkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIikpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEwLjAgKGVt
YmVkZWQgbmV3bGluZSkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBwcm9k
dWN0IHRva2VuKSIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378644</attachid>
            <date>2019-09-12 07:48:59 -0700</date>
            <delta_ts>2019-09-12 08:33:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201077-20190912174858.patch</filename>
            <type>text/plain</type>
            <size>18277</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdjMWJlOTA5M2Y5ZTZm
ZDYyZWU3ZDlkNjhjMmZkNDMzMjdjNTNkNC4uNWM5ZjI3ZTc5YWU0MDI1NjBiYjJjZmYyZTQ2M2Vm
ZDkwYzIxYWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA5LTExICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3Ji
aWRkZW4gaW4gSFRUUCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lh
IENhbXBvcy4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB3aGV0aGVyIGEg
c3RyaW5nIGNvbnRhaW5zIGEgdmFsaWQgdmFsdWUKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQg
aW4gYSBIVFRQIFVzZXItQWdlbnQgaGVhZGVyLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IFdl
YkNvcmUgQVBJIHRlc3QgSFRUUFBhcnNlcnMuVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c3RhbmRhcmRVc2VyQWdlbnQpOiBBc3NlcnQgdGhhdCB0aGUgcmV0dXJuZWQgc3RyaW5nIGlz
IGEgdmFsaWQgVXNlci1BZ2VudC4KKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6IEFkZGVkIGEgc2VyaWVzIG9mIGhlbHBlciBmdW5jdGlvbnMgd2hpY2ggc2tpcCBvdmVyCisg
ICAgICAgIGNoYXJhY3RlcnMgb2YgYSBzdHJpbmcsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNjYW4g
b3ZlciB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIG9mIGFuCisgICAgICAgIFVzZXItQWdlbnQgdmFs
dWU7IGFsbCBvZiB0aGVtIHJlY2VpdmUgdGhlIHBvc2l0aW9uIGZyb20gdGhlIGlucHV0IHN0cmlu
ZyB3aGVyZSB0byBzdGFydAorICAgICAgICBzY2FubmluZywgdXBkYXRpbmcgaXQgdG8gdGhlIHBv
c2l0aW9uIHJpZ2h0IGFmdGVyIHRoZSBzY2FubmVkIGl0ZW0gKHRoaXMgZm9sbG93IHRoZQorICAg
ICAgICBjb252ZW50aW9uIGFscmVhZHkgaW4gdXNlIGJ5IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUg
c291cmNlIGZpbGUpLiBFYWNoIG9mIHRoZW0gaGFzCisgICAgICAgIGJlZW4gYW5ub3RhdGVkIHdp
dGggdGhlIFJGQyBudW1iZXIgYW5kIHNlY3Rpb24gd2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRp
b24gb2YgdGhlCisgICAgICAgIHNjYW5uZWQgaXRlbSwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIEJO
RiBydWxlcyB0byBtYWtlIHRoZSBjb2RlIGVhc2llciB0byBmb2xsb3cuCisgICAgICAgIChXZWJD
b3JlOjpza2lwV2hpbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZUNoYXJh
Y3Rlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNPY3RlY3RJbkZpZWxkQ29udGVudENo
YXJhY3Rlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDb21tZW50VGV4dENoYXJhY3Rl
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNIVFRQVG9rZW5DaGFyYWN0ZXIpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRIVFRQVG9rZW4pOiBSZWZhY3RvcmVkIHRvIHVz
ZSB0aGUgbmV3IGlzSFRUUFRva2VuQ2hhcmFjdGVyKCkKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9u
IGluc3RlYWQgb2YgaGF2aW5nIHRoZSB0ZXN0IGluc2lkZSB0aGUgbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6OnNraXBDaGFyYWN0ZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNraXBRdW90
ZWRQYWlyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpza2lwQ29tbWVudCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6c2tpcEhUVFBUb2tlbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6c2tpcFVzZXJBZ2VudFByb2R1Y3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuaDogQWRkIHByb3RvdHlwZSBmb3IgaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCkuCisKIDIwMTktMDktMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSB0eXBlZCBpZGVudGlmaWVycyBmb3IgSURCIGNvbm5lY3Rpb24gaWRl
bnRpZmllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggODUxNTU4Y2E0ZTBmZjkxNWU0NWVjNmZkOWYzZWYzZWNmYThh
Mzk3MS4uNDE2YzViMGUwYmYwOWY4MDgzMGJkYTdhNGFjYjg2YWM2MDViZjc5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOS0xMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gd2Via2l0X3NldHRpbmdzX3Nl
dF91c2VyX2FnZW50KCkgYWxsb3dzIGNvbnRlbnQgZm9yYmlkZGVuIGluIEhUVFAgaGVhZGVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF91c2VyX2FnZW50KTogQ2hlY2sgdGhlIHBhc3NlZCBzdHJpbmcgdXNpbmcgdGhl
IG5ldworICAgICAgICBXZWJDb3JlOjppc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoKSBmdW5j
dGlvbiwgYW5kIHJldHVybiBlYXJseSB3aXRob3V0CisgICAgICAgIGNoYW5naW5nIHRoZSBzZXR0
aW5nIGlmIHRoZSBzdHJpbmcgaXMgbm90IHVzYWJsZSBpbiB0aGUgVXNlci1BZ2VudCBIVFRQCisg
ICAgICAgIGhlYWRlci4KKwogMjAxOS0wOS0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IGFjY2lkZW50YWwgY29waWVzIGluIE5ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvVXNlckFnZW50R0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJB
Z2VudEdMaWIuY3BwCmluZGV4IGI1YmEwODNmYmIzNGI3OGEyYWVkZjA1NTliMGE3MmU0ZTFiM2Yy
NjAuLjRhMWJjNjUyZDQ2ZWIwNWQyY2IyNTMzOGRhOWVmM2ZlMTk5NGYzZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtMTI1LDIxICsx
MjUsMzAgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRp
b25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICAvLyBicm93c2VycyB0aGF0IGFy
ZSAiU2FmYXJpIiBidXQgbm90IHJ1bm5pbmcgb24gT1MgWCBhcmUgdGhlIFNhZmFyaSBpT1MgYnJv
d3Nlci4gR2V0dGluZyB0aGlzCiAgICAgLy8gd3JvbmcgY2FuIGNhdXNlIHNpdGVzIHRvIGxvYWQg
dGhlIHdyb25nIEphdmFTY3JpcHQsIENTUywgb3IgY3VzdG9tIGZvbnRzLiBJbiBzb21lIGNhc2Vz
CiAgICAgLy8gc2l0ZXMgd29uJ3QgbG9hZCByZXNvdXJjZXMgYXQgYWxsLgotICAgIGlmIChhcHBs
aWNhdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRT
dGF0aWMoKTsKIAotICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0
aW9uVmVyc2lvbjsKLSAgICBpZiAoZmluYWxBcHBsaWNhdGlvblZlcnNpb24uaXNFbXB0eSgpKQot
ICAgICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IHZlcnNpb25Gb3JVQVN0cmluZygpOwot
Ci0gICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkgKyAnICcgKyBhcHBsaWNhdGlv
bk5hbWUgKyAnLycgKyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbjsKKyAgICBTdHJpbmcgdXNlckFn
ZW50OworICAgIGlmIChhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHVzZXJB
Z2VudCA9IHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
U3RyaW5nIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gYXBwbGljYXRpb25WZXJzaW9uOworICAg
ICAgICBpZiAoZmluYWxBcHBsaWNhdGlvblZlcnNpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAg
ZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSB2ZXJzaW9uRm9yVUFTdHJpbmcoKTsKKyAgICAgICAg
dXNlckFnZW50ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9u
TmFtZSArICcvJyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOworICAgIH0KKyAgICBBU1NFUlQo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKHVzZXJBZ2VudCkpOworICAgIHJldHVybiB1c2Vy
QWdlbnQ7CiB9CiAKIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBhdXRvIHF1aXJrcyA9IFVzZXJBZ2VudFF1aXJrczo6cXVpcmtzRm9yVVJMKHVy
bCk7CiAgICAgLy8gVGhlIG51bGwgc3RyaW5nIG1lYW5zIHdlIGRvbid0IG5lZWQgYSBzcGVjaWZp
YyBVQSBmb3IgdGhlIGdpdmVuIFVSTC4KLSAgICByZXR1cm4gcXVpcmtzLmlzRW1wdHkoKSA/IFN0
cmluZygpIDogYnVpbGRVc2VyQWdlbnRTdHJpbmcocXVpcmtzKTsKKyAgICBpZiAocXVpcmtzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHVzZXJBZ2Vu
dChidWlsZFVzZXJBZ2VudFN0cmluZyhxdWlya3MpKTsKKyAgICBBU1NFUlQoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKHVzZXJBZ2VudCkpOworICAgIHJldHVybiB1c2VyQWdlbnQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggMTA4ZTUxNjZmNDU3YjhiZDI3NzE3MTVlNDlhM2Q4
MDA2Y2IzMzM5MS4uNzVhNDFiZTVlOTdkOTZhNmM2ZTBiNjMyZDkyZDEyMDYzNmI2OTYzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAg
LTk3LDYgKzk3LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBza2lwVmFsdWUoY29uc3QgU3RyaW5n
JiBzdHIsIHVuc2lnbmVkJiBwb3MpCiAgICAgcmV0dXJuIHBvcyAhPSBzdGFydDsKIH0KIAorLy8g
VHJ1ZSBpZiBjaGFyYWN0ZXJzIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBhcmUgcHJlc2Vu
dCwgaW5jcmVtZW50aW5nCisvLyAicG9zIiB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgd2hpY2ggZG9l
cyBub3Qgc2F0aXNmeSB0aGUgcHJlZGljYXRlLgorLy8gTm90ZTogbWlnaHQgcmV0dXJuIHBvcyA9
PSBzdHIubGVuZ3RoKCkuCitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcFdoaWxlKGNvbnN0IFN0cmlu
ZyYgc3RyLCB1bnNpZ25lZCYgcG9zLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgVUNo
YXIpPiYgcHJlZGljYXRlKQoreworICAgIGNvbnN0IHVuc2lnbmVkIHN0YXJ0ID0gcG9zOworICAg
IGNvbnN0IHVuc2lnbmVkIGxlbiA9IHN0ci5sZW5ndGgoKTsKKyAgICB3aGlsZSAocG9zIDwgbGVu
ICYmIHByZWRpY2F0ZShzdHJbcG9zXSkpCisgICAgICAgICsrcG9zOworICAgIHJldHVybiBwb3Mg
IT0gc3RhcnQ7Cit9CisKIC8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjEuMi4KIGJvb2wgaXNW
YWxpZFJlYXNvblBocmFzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewpAQCAtMTM1LDYgKzE0Nywz
NSBAQCBzdGF0aWMgYm9vbCBpc0RlbGltaXRlckNoYXJhY3Rlcihjb25zdCBVQ2hhciBjKQogICAg
ICAgICB8fCBjID09ICddJyB8fCBjID09ICd7JyB8fCBjID09ICd9Jyk7CiB9CiAKKy8vIFNlZSBS
RkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Zpc2libGVDaGFy
YWN0ZXIoY29uc3QgVUNoYXIgYykKK3sKKyAgICAvLyBWQ0hBUiA9ICV4MjEtN0UKKyAgICByZXR1
cm4gKGMgPj0gMHgyMSAmJiBjIDw9IDB4N0UpOworfQorCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rp
b24gMy4yLjYuCitzdGF0aWMgaW5saW5lIGJvb2wgaXNPY3RlY3RJbkZpZWxkQ29udGVudENoYXJh
Y3Rlcihjb25zdCBVQ2hhciBjKQoreworICAgIC8vIG9icy10ZXh0ID0gJXg4MC1GRgorICAgIHJl
dHVybiAoYyA+PSAweDgwICYmIGMgPD0gMHhGRik7Cit9CisKKy8vIFNlZSBSRkMgNzIzMCwgU2Vj
dGlvbiAzLjIuNi4KK3N0YXRpYyBib29sIGlzQ29tbWVudFRleHRDaGFyYWN0ZXIoY29uc3QgVUNo
YXIgYykKK3sKKyAgICAvLyBjdGV4dCA9IEhUQUIgLyBTUAorICAgIC8vICAgICAgIC8gJXgyMS0y
NyA7ICchJy0nJycKKyAgICAvLyAgICAgICAvICV4MkEtNUIgOyAnKictJ1snCisgICAgLy8gICAg
ICAgLyAleDVELTdFIDsgJ10nLSd+JworICAgIC8vICAgICAgIC8gb2JzLXRleHQKKyAgICByZXR1
cm4gKGMgPT0gJ1x0JyB8fCBjID09ICcgJworICAgICAgICB8fCAoYyA+PSAweDIxICYmIGMgPD0g
MHgyNykKKyAgICAgICAgfHwgKGMgPj0gMHgyQSAmJiBjIDw9IDB4NUIpCisgICAgICAgIHx8IChj
ID49IDB4NUQgJiYgYyA8PSAweDdFKQorICAgICAgICB8fCBpc09jdGVjdEluRmllbGRDb250ZW50
Q2hhcmFjdGVyKGMpKTsKK30KKwogLy8gU2VlIFJGQyA3MjMxLCBTZWN0aW9uIDUuMy4yLgogYm9v
bCBpc1ZhbGlkQWNjZXB0SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKQEAgLTE3
Myw2ICsyMTQsMTMgQEAgYm9vbCBpc1ZhbGlkTGFuZ3VhZ2VIZWFkZXJWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rp
b24gMy4yLjYuCitzdGF0aWMgaW5saW5lIGJvb2wgaXNIVFRQVG9rZW5DaGFyYWN0ZXIoY29uc3Qg
VUNoYXIgYykKK3sKKyAgICAvLyBBbnkgVkNIQVIsIGV4Y2VwdCBkZWxpbWl0ZXJzCisgICAgcmV0
dXJuIGMgPiAweDIwICYmIGMgPCAweDdGICYmICFpc0RlbGltaXRlckNoYXJhY3RlcihjKTsKK30K
KwogLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42LgogYm9vbCBpc1ZhbGlkSFRUUFRva2Vu
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CkBAIC0xODAsMTYgKzIyOCwxMjQgQEAgYm9vbCBpc1Zh
bGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBhdXRvIHZhbHVlU3RyaW5nVmlldyA9IFN0cmluZ1ZpZXcodmFsdWUpOwogICAgIGZvciAo
VUNoYXIgYyA6IHZhbHVlU3RyaW5nVmlldy5jb2RlVW5pdHMoKSkgewotICAgICAgICBpZiAoYyA8
PSAweDIwIHx8IGMgPj0gMHg3RgotICAgICAgICAgICAgfHwgYyA9PSAnKCcgfHwgYyA9PSAnKScg
fHwgYyA9PSAnPCcgfHwgYyA9PSAnPicgfHwgYyA9PSAnQCcKLSAgICAgICAgICAgIHx8IGMgPT0g
JywnIHx8IGMgPT0gJzsnIHx8IGMgPT0gJzonIHx8IGMgPT0gJ1xcJyB8fCBjID09ICciJwotICAg
ICAgICAgICAgfHwgYyA9PSAnLycgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9PSAnPycg
fHwgYyA9PSAnPScKLSAgICAgICAgICAgIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ30nKQorICAgICAg
ICBpZiAoIWlzSFRUUFRva2VuQ2hhcmFjdGVyKGMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVHJ1ZSBpZiB0aGUgY2hhcmFjdGVy
IGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBzYXRpc2lmaWVzIGEgcHJlZGljYXRlLCBpbmNyZW1lbnRp
bmcgInBvcyIgYnkgb25lLgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3Ro
KCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBza2lwQ2hhcmFjdGVyKGNvbnN0IFN0cmluZyYgdmFsdWUs
IHVuc2lnbmVkJiBwb3MsIFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBVQ2hhcik+JiYgcHJlZGlj
YXRlKQoreworICAgIGlmIChwb3MgPCB2YWx1ZS5sZW5ndGgoKSAmJiBwcmVkaWNhdGUodmFsdWVb
cG9zXSkpIHsKKyAgICAgICAgKytwb3M7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFRydWUgaWYgdGhlICJleHBlY3RlZCIgY2hhcmFjdGVy
IGlzIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiwgaW5jcmVtZW50aW5nICJwb3MiIGJ5IG9uZS4KKy8v
IE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCitzdGF0aWMgaW5saW5lIGJv
b2wgc2tpcENoYXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zLCBjb25z
dCBVQ2hhciBleHBlY3RlZCkKK3sKKyAgICByZXR1cm4gc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9z
LCBbZXhwZWN0ZWRdKGNvbnN0IFVDaGFyIGMpIHsKKyAgICAgICAgcmV0dXJuIGMgPT0gZXhwZWN0
ZWQ7CisgICAgfSk7Cit9CisKKy8vIFRydWUgaWYgYSBxdW90ZWQgcGFpciBpcyBwcmVzZW50LCBp
bmNyZW1lbnRpbmcgInBvcyIgdG8gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBxdW90ZWQgcGFpci4K
Ky8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCisvLyBTZWUgUkZDIDcy
MzAsIFNlY3Rpb24gMy4yLjYuCitzdGF0aWMgY29uc3RleHByIGF1dG8gUXVvdGVkUGFpclN0YXJ0
Q2hhcmFjdGVyID0gJ1xcJzsKK3N0YXRpYyBib29sIHNraXBRdW90ZWRQYWlyKGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8gcXVvdGVkLXBhaXIgPSAiXCIgKCBI
VEFCIC8gU1AgLyBWQ0hBUiAvIG9icy10ZXh0ICkKKyAgICBpZiAoIXNraXBDaGFyYWN0ZXIodmFs
dWUsIHBvcywgUXVvdGVkUGFpclN0YXJ0Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgJ1x0JykKKyAgICAgICAg
fHwgc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9zLCAnICcpCisgICAgICAgIHx8IHNraXBDaGFyYWN0
ZXIodmFsdWUsIHBvcywgaXNWaXNpYmxlQ2hhcmFjdGVyKQorICAgICAgICB8fCBza2lwQ2hhcmFj
dGVyKHZhbHVlLCBwb3MsIGlzT2N0ZWN0SW5GaWVsZENvbnRlbnRDaGFyYWN0ZXIpOworfQorCisv
LyBUcnVlIGlmIGEgY29tbWVudCBpcyBwcmVzZW50LCBpbmNyZW1lbnRpbmcgInBvcyIgdG8gdGhl
IHBvc2l0aW9uIGFmdGVyIHRoZSBjb21tZW50LgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9
PSBzdHIubGVuZ3RoKCkKKy8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNi4KK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBDb21tZW50U3RhcnRDaGFyYWN0ZXIgPSAnKCc7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gQ29tbWVudEVuZENoYXJhY3RlciA9ICcpJzsKK3N0YXRpYyBib29sIHNraXBDb21t
ZW50KGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MpCit7CisgICAgLy8gY29tbWVu
dCA9ICIoIiAqKCBjdGV4dCAvIHF1b3RlZC1wYWlyIC8gY29tbWVudCApICIpIgorICAgIC8vIGN0
ZXh0ICAgPSBIVEFCIC8gU1AgLyAleDIxLTI3IC8gJXgyQS01QiAvICV4NUQtN0UgLyBvYnMtdGV4
dAorICAgIGlmICghc2tpcENoYXJhY3Rlcih2YWx1ZSwgcG9zLCBDb21tZW50U3RhcnRDaGFyYWN0
ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBlbmQgPSB2
YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAocG9zIDwgZW5kICYmIHZhbHVlW3Bvc10gIT0gQ29t
bWVudEVuZENoYXJhY3RlcikgeworICAgICAgICBzd2l0Y2ggKHZhbHVlW3Bvc10pIHsKKyAgICAg
ICAgY2FzZSBDb21tZW50U3RhcnRDaGFyYWN0ZXI6CisgICAgICAgICAgICBpZiAoIXNraXBDb21t
ZW50KHZhbHVlLCBwb3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFF1b3RlZFBhaXJTdGFydENoYXJhY3RlcjoKKyAgICAg
ICAgICAgIGlmICghc2tpcFF1b3RlZFBhaXIodmFsdWUsIHBvcykpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBpZiAoIXNraXBXaGlsZSh2YWx1ZSwgcG9zLCBpc0NvbW1lbnRUZXh0Q2hhcmFjdGVy
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CisgICAg
cmV0dXJuIHNraXBDaGFyYWN0ZXIodmFsdWUsIHBvcywgQ29tbWVudEVuZENoYXJhY3Rlcik7Cit9
CisKKy8vIFRydWUgaWYgYW4gSFRUUCBoZWFkZXIgdG9rZW4gaXMgcHJlc2VudCwgaW5jcmVtZW50
aW5nICJwb3MiIHRvIHRoZSBwb3NpdGlvbiBhZnRlciBpdC4KKy8vIE5vdGU6IE1pZ2h0IHJldHVy
biBwb3MgPT0gc3RyLmxlbmd0aCgpCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjYuCitz
dGF0aWMgYm9vbCBza2lwSFRUUFRva2VuKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBw
b3MpCit7CisgICAgcmV0dXJuIHNraXBXaGlsZSh2YWx1ZSwgcG9zLCBpc0hUVFBUb2tlbkNoYXJh
Y3Rlcik7Cit9CisKKy8vIFRydWUgaWYgYSBwcm9kdWN0IHNwZWNpZmllciAoYXMgaW4gYW4gVXNl
ci1BZ2VudCBoZWFkZXIpIGlzIHByZXNlbnQsIGluY3JlbWVudGluZyAicG9zIiB0byB0aGUgcG9z
aXRpb24gYWZ0ZXIgaXQuCisvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgo
KQorLy8gU2VlIFJGQyA3MjMxLCBTZWN0aW9uIDUuNS4zLgorc3RhdGljIGJvb2wgc2tpcFVzZXJB
Z2VudFByb2R1Y3QoY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcykKK3sKKyAgICAv
LyBwcm9kdWN0ICAgICAgICAgPSB0b2tlbiBbIi8iIHByb2R1Y3QtdmVyc2lvbl0KKyAgICAvLyBw
cm9kdWN0LXZlcnNpb24gPSB0b2tlbgorICAgIGlmICghc2tpcEhUVFBUb2tlbih2YWx1ZSwgcG9z
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChza2lwQ2hhcmFjdGVyKHZhbHVlLCBw
b3MsICcvJykpCisgICAgICAgIHJldHVybiBza2lwSFRUUFRva2VuKHZhbHVlLCBwb3MpOwogICAg
IHJldHVybiB0cnVlOwogfQogCisvLyBTZWUgUkZDIDcyMzEsIFNlY3Rpb24gNS41LjMKK2Jvb2wg
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAg
Ly8gVXNlci1BZ2VudCA9IHByb2R1Y3QgKiggUldTICggcHJvZHVjdCAvIGNvbW1lbnQgKSApCisg
ICAgdW5zaWduZWQgcG9zID0gMDsKKyAgICBpZiAoIXNraXBVc2VyQWdlbnRQcm9kdWN0KHZhbHVl
LCBwb3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB3aGlsZSAocG9zIDwgdmFsdWUu
bGVuZ3RoKCkpIHsKKyAgICAgICAgaWYgKCFza2lwV2hpdGVTcGFjZSh2YWx1ZSwgcG9zKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT0gQ29tbWVu
dFN0YXJ0Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICBpZiAoIXNraXBDb21tZW50KHZhbHVlLCBw
b3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmICghc2tpcFVzZXJBZ2VudFByb2R1Y3QodmFsdWUsIHBvcykpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHBv
cyA9PSB2YWx1ZS5sZW5ndGgoKTsKK30KKwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNh
bXBsZVNpemUgPSAxMjg7CiBzdGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFy
KiBwLCBzaXplX3QgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5oCmluZGV4IGNjNmNlMTAyZGIzNDBjMDMzODhmYjliMTg3ZTc3ZTU1MjZk
ZTZlZDcuLjgyYzNhMTVlZWFjZTYwZDcwNTZmYTBhODliNDBmZmJjYzY0YjQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTcyLDYgKzcy
LDcgQEAgYm9vbCBpc1ZhbGlkUmVhc29uUGhyYXNlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1Zh
bGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkQWNjZXB0SGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRMYW5ndWFnZUhlYWRlclZhbHVl
KGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3Ry
aW5nJik7CiBPcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsK
IFN0cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmluZyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwCmluZGV4IGMzYjY1YzQ5MDRhNjc5OGI1YTlmYTFiNTNkY2RhNGI3NGE5MDJmYzguLjYx
ODk3NDdiYWFmM2ZhYmY4MGIwMDlkZTAwYTRjYmNhOWFkOTk2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvSFRUUFBhcnNlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckFnZW50Lmg+CkBAIC0zMDQzLDcgKzMwNDQsMTUgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5n
cykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
Ci0gICAgQ1N0cmluZyBuZXdVc2VyQWdlbnQgPSAoIXVzZXJBZ2VudCB8fCAhc3RybGVuKHVzZXJB
Z2VudCkpID8gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpLnV0ZjgoKSA6IHVzZXJBZ2Vu
dDsKKworICAgIFN0cmluZyB1c2VyQWdlbnRTdHJpbmc7CisgICAgaWYgKHVzZXJBZ2VudCAmJiAq
dXNlckFnZW50KSB7CisgICAgICAgIHVzZXJBZ2VudFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgo
dXNlckFnZW50KTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChXZWJDb3JlOjppc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUodXNlckFnZW50U3RyaW5nKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHVzZXJBZ2VudFN0cmluZyA9IFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50KCIiKTsKKworICAg
IENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsKICAgICBpZiAo
bmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWVmZmVjMjIw
ZGJjYjc4OWU0ZTkyZWI2MjkyM2QxYTE0YmRlZmVhNC4uMmY4OWQzYzY0ZmJjNzA2MTZkZjFhNGU5
YjI0YTllMWVlODc3YmEwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA5LTExICBBZHJpYW4gUGVyZXogZGUg
Q2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSB3ZWJraXRf
c2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoKSBhbGxvd3MgY29udGVudCBmb3JiaWRkZW4gaW4gSFRU
UCBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEwNzcKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6IEFkZCBtaXNzaW5nIEhUVFBQ
YXJzZXJzLmNwcCB0byBiZSBidWlsdCBpbnRvIFRlc3RXZWJDb3JlLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKTogQWRkIHRlc3RzIGZvciBXZWJDb3JlOjppc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoKS4KKwogMjAxOS0wOS0xMiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IFBERktpdCByZWZlcmVuY2VzIGluIFRlc3RXZWJLaXRBUEkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGNiZWNhM2E3ZTQxZDA5ODRlNGE5NDgwYWU1
N2YzMzljMGZkZjcyZjkuLmFjNWNiMDdiODc3MmY2ZDJkMzY0YzNmNWU5ODE5NDllYTlhYzY1YzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTMwLDYgKzEzMCw3IEBAIGlmIChF
TkFCTEVfV0VCQ09SRSkKICAgICAgICAgVGVzdHMvV2ViQ29yZS9GbG9hdFNpemUuY3BwCiAgICAg
ICAgIFRlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3Jl
L0hUTUxQYXJzZXJJZGlvbXMuY3BwCisgICAgICAgIFRlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMu
Y3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3BwCiAgICAgICAgIFRlc3RzL1dl
YkNvcmUvSW50UmVjdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRTaXplLmNwcApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKaW5k
ZXggMDE2NmE0ZDA1ZjJmOWE5MWYyN2Y5M2Q0YTUxMTQ2ZGZjMTNiYjc4Yi4uZWU0MzkxZjJkYTUw
N2EzZjI3ZTRiNDk0NzM0NDQyNWFkY2RiZmVkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01Niw0ICs1NiwzNCBAQCBURVNU
KEhUVFBQYXJzZXJzLCBQYXJzZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAgICAg
RVhQRUNUX1RSVUUocGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKCLvo78iKSA9
PSBDcm9zc09yaWdpblJlc291cmNlUG9saWN5OjpJbnZhbGlkKTsKIH0KIAorVEVTVChIVFRQUGFy
c2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCit7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0IikpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiKSk7CisgICAgRVhQRUNU
X1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4w
IFdlYktpdCIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxhOyBsaWtlIEdl
Y2tvKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVudCkiKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxl
ZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJpYyB0
b2tlbiBjaGFyYWN0ZXJzKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7CisgICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFj
dGVyIHRva2VuKSIpKTsKKworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIiAiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRlc3BhY2UpICIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFy
aSAobGVhZGluZyBuZXdsaW5lKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8gdmVyc2lvbiB0
b2tlbiBhZnRlciBzbGFzaCkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFu
ZW50KSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJc
eDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRlZCBuZXdsaW5l
KSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVc
XCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3QgdG9rZW4pIikp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>