<?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>194612</bug_id>
          
          <creation_ts>2019-02-13 14:38:02 -0800</creation_ts>
          <short_desc>EnvironmentUtilities::stripValuesEndingWithString isn&apos;t thread-safe</short_desc>
          <delta_ts>2019-03-03 21:10:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192405</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505861</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-13 14:38:02 -0800</bug_when>
    <thetext>EnvironmentUtilities::stripValuesEndingWithString isn&apos;t thread-safe -- its callsites in Source/ might(?) be, but its API test isn&apos;t (nor can it be, since WTF::initializeThreading() is called before the test even begins).

Since this function does little other than string manipulation, we could replace it with a function that *only* does string manipulation and let getenv/setenv be called separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506251</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-02-14 11:02:48 -0800</bug_when>
    <thetext>&gt; nor can it be, since WTF::initializeThreading() is called before the test even begins

Can you clarify why this means that the test will have trouble with threading?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506267</commentid>
    <comment_count>2</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-14 11:19:49 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #1)
&gt; &gt; nor can it be, since WTF::initializeThreading() is called before the test even begins
&gt; 
&gt; Can you clarify why this means that the test will have trouble with
&gt; threading?

Admittedly, even though it can&apos;t be called &quot;thread-safe&quot;, the test would be unlikely to ever encounter a problem, since the env vars it&apos;s setting are not realistic.

The issue is just that it would be nice to use the new WTF::Environment::set (from bug 192405), but this currently ASSERTs since &quot;has threading been initialized yet?&quot; is really our only way of ensuring thread safety of setenv (coarse-grained as that approach may be).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506274</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-02-14 11:29:59 -0800</bug_when>
    <thetext>Are you saying that you see the fact that initializeThreading was called as a sign that any code could be running on a secondary thread? I don&apos;t think that is closely enough related to be relevant here.

There are always many threads running in any process, whether it calls initializeThreading or not. It&apos;s never safe for other threads to manipulate the environment, except for when the code is fully in control of the process (so maybe the dynamic linker could safely do something here).

Can you describe the specific scenario that you are concerned about? &quot;Thread safe&quot; has many different meanings, so it&apos;s rarely a good way to describe threading related requirements or issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506308</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-14 12:50:12 -0800</bug_when>
    <thetext>This approach arose in https://bugs.webkit.org/show_bug.cgi?id=192405#c11 as a way to try to avoid some of the hard-to-repro bugs prevalent in GLib and such described here: https://blogs.gnome.org/mcatanzaro/2018/02/28/on-setenv-and-explosions/

Sorry if my word choice has added any confusion -- the basic concept is that we can&apos;t hope to prevent getenv from being littered anywhere and everywhere, so the best we can do is be aggressive in restricting where [un]setenv is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506343</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-14 13:48:15 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #3)
&gt; Are you saying that you see the fact that initializeThreading was called as
&gt; a sign that any code could be running on a secondary thread? I don&apos;t think
&gt; that is closely enough related to be relevant here.

Right: it&apos;s kinda a big hammer, and not even accurate enough since it&apos;s of course possible to have non-WTF threads before calling WTF::initializeThreading. (Maybe there are pthread APIs to detect if threads have been created; not sure.) And these APIs should never be used in the UI process under any circumstances. But anyway, this check will catch the vast majority of potential misuse, so I think it&apos;s a good check to have.

&gt; Can you describe the specific scenario that you are concerned about? &quot;Thread
&gt; safe&quot; has many different meanings, so it&apos;s rarely a good way to describe
&gt; threading related requirements or issues.

Goal is to prevent use of Environment::set and Environment::unset except *very* early in WebKit&apos;s initialization. (Ideally also only in secondary processes, although it&apos;s not clear how we could enforce that.) Using setenv() or unsetenv() directly would bypass these checks, but there&apos;s not much we can do about that besides add a style checker rule.

There&apos;s more discussion in https://bugs.webkit.org/show_bug.cgi?id=194370#c6 (a different bug from the one mentioned above).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506790</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-15 14:56:50 -0800</bug_when>
    <thetext>Making a note here that whatever we do here needs to be verified with `run-webkit-tests --guard-malloc` on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508237</commentid>
    <comment_count>7</comment_count>
      <attachid>362539</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-20 14:16:27 -0800</bug_when>
    <thetext>Created attachment 362539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508239</commentid>
    <comment_count>8</comment_count>
      <attachid>362539</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-02-20 14:21:17 -0800</bug_when>
    <thetext>Comment on attachment 362539
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        We shouldn&apos;t be writing API tests that get, modify, and check environment variables.

Is this true? I don&apos;t see what the problem with tests that do that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508240</commentid>
    <comment_count>9</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-20 14:22:00 -0800</bug_when>
    <thetext>While I&apos;m waiting for permission to reland bug 192405, here&apos;s a solution for this bug that just uses the POSIX API.

This patch replaces stripValuesEndingWithString with two very simple functions which just do string-processing and env var-processing -- the former is appropriate for API testing, the latter is still justified since the functionality is needed in three places.

I did copy over WTF::threadingIsInitialized() from bug 192405 so that we can ASSERT that it&apos;s false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508255</commentid>
    <comment_count>10</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-20 14:26:17 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Comment on attachment 362539 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=362539&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; +        We shouldn&apos;t be writing API tests that get, modify, and check environment variables.
&gt; 
&gt; Is this true? I don&apos;t see what the problem with tests that do that is.

That is at least the proposition I&apos;m basing this on. If we think it&apos;s an overstatement then I can replace the text somehow, but unless we have a better way to try and ensure setenv safety, it is a fact that it&apos;s already &quot;too late&quot; to use setenv by the time an API test has begun. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508265</commentid>
    <comment_count>11</comment_count>
      <attachid>362539</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-02-20 14:34:25 -0800</bug_when>
    <thetext>Comment on attachment 362539
Patch

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:8
&gt;&gt;&gt; +        We shouldn&apos;t be writing API tests that get, modify, and check environment variables.
&gt;&gt; 
&gt;&gt; Is this true? I don&apos;t see what the problem with tests that do that is.
&gt; 
&gt; That is at least the proposition I&apos;m basing this on. If we think it&apos;s an overstatement then I can replace the text somehow, but unless we have a better way to try and ensure setenv safety, it is a fact that it&apos;s already &quot;too late&quot; to use setenv by the time an API test has begun. :(

It seems fine and legitimate to change the environment in tests, so adding functionality that explicitly forbids that looks wrong to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508305</commentid>
    <comment_count>12</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-20 15:31:49 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #11)
&gt; It seems fine and legitimate to change the environment in tests, so adding
&gt; functionality that explicitly forbids that looks wrong to me.

I think it&apos;s noteworthy that no other API tests do so though (GLib platforms set some from test server main() functions but that&apos;s the type of usage one would be inclined to expect). And even if we are okay with modifying the environment in tests, I hope it&apos;s fair to say that we shouldn&apos;t be testing whether we successfully modified the actual environment...right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508316</commentid>
    <comment_count>13</comment_count>
      <attachid>362557</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-20 15:45:25 -0800</bug_when>
    <thetext>Created attachment 362557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508418</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-20 18:57:48 -0800</bug_when>
    <thetext>WinCairo failure here is a fluke...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508658</commentid>
    <comment_count>15</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-21 14:00:25 -0800</bug_when>
    <thetext>Anyway, if the ASSERT is an unresolved discussion from bug 192405, then it doesn&apos;t actually need to be part of this patch; it&apos;s really just a way to demonstrate the issue. The patch should stand on its own merits without it -- after all, we have TestWTF.WTF.StringOperators as a cautionary tale about what can happen when &quot;unit&quot; tests aren&apos;t properly self-contained!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508708</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-02-21 15:50:02 -0800</bug_when>
    <thetext>Splitting the function in two parts seems reasonable to me, but I&apos;m still unimpressed by threadingIsInitialized and by the ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508710</commentid>
    <comment_count>17</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-21 15:52:07 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #16)
&gt; Splitting the function in two parts seems reasonable to me, but I&apos;m still
&gt; unimpressed by threadingIsInitialized and by the ASSERT.

Fair enough. The conversation on the other bug is still quite open, so I&apos;ll just eliminate that part here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508722</commentid>
    <comment_count>18</comment_count>
      <attachid>362659</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-21 16:01:23 -0800</bug_when>
    <thetext>Created attachment 362659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509019</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-02-22 09:46:27 -0800</bug_when>
    <thetext>I won&apos;t have a chance to review line by line, but the direction looks good to me. Thank you!

What is the difference between EXPECT_STREQ and EXPECT_EQ in practical terms? Please explain the change in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509028</commentid>
    <comment_count>20</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-22 10:05:05 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #19)
&gt; What is the difference between EXPECT_STREQ and EXPECT_EQ in practical
&gt; terms? Please explain the change in ChangeLog.

It&apos;s just strcmp vs. operator==, since the return type changed. I can add that to the ChangeLog though, sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509748</commentid>
    <comment_count>21</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-02-25 12:29:58 -0800</bug_when>
    <thetext>Alex or Chris, could you take a look at this? It&apos;s really simple, it just happens to require an owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511470</commentid>
    <comment_count>22</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-01 11:07:29 -0800</bug_when>
    <thetext>Anyone have a moment to review here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511516</commentid>
    <comment_count>23</comment_count>
      <attachid>362659</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-01 12:09:51 -0800</bug_when>
    <thetext>Comment on attachment 362659
Patch

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

Seems good to me.  This simplifies the code quite a bit.  I guess the motivation was just to make the API test more reliable, right?

&gt; Source/WebKit/Platform/unix/EnvironmentUtilities.cpp:41
&gt; +    auto hasAppended = false;

StringBuilder::isEmpty could be used instead of this additional boolean tracking the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511610</commentid>
    <comment_count>24</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-01 14:11:58 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #23)
&gt; Comment on attachment 362659 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=362659&amp;action=review
&gt; 
&gt; Seems good to me.  This simplifies the code quite a bit.  I guess the
&gt; motivation was just to make the API test more reliable, right?

Yessir.


&gt; &gt; Source/WebKit/Platform/unix/EnvironmentUtilities.cpp:41
&gt; &gt; +    auto hasAppended = false;
&gt; 
&gt; StringBuilder::isEmpty could be used instead of this additional boolean
&gt; tracking the same thing.

Unfortunately, if the first preserved entry is empty, then output.isEmpty() is still false at the first point where we need to insert a separator &apos;:&apos;.
I figured people might have that exact knee-jerk reaction, but it seems avoidable...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511611</commentid>
    <comment_count>25</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-01 14:13:24 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #24)
&gt; ... then output.isEmpty() is still false ...

Whoops, still *true*, I mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511622</commentid>
    <comment_count>26</comment_count>
      <attachid>363377</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-01 14:40:52 -0800</bug_when>
    <thetext>Created attachment 363377
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511646</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-01 15:29:34 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 363377:

fetch/fetch-worker-crash.html bug 187257 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511647</commentid>
    <comment_count>28</comment_count>
      <attachid>363377</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-01 15:30:21 -0800</bug_when>
    <thetext>Comment on attachment 363377
Patch for landing

Clearing flags on attachment: 363377

Committed r242292: &lt;https://trac.webkit.org/changeset/242292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511648</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-01 15:30:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511650</commentid>
    <comment_count>30</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-01 15:33:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/48525786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511749</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-01 20:20:51 -0800</bug_when>
    <thetext>Switching from STREQ to plain EQ is not so great for tests. I’d prefer to use other techniques so we can continue to use STREQ and get good output when the strings don&apos;t match. There are examples in various other tests using things like utf8().data() for compatibility with STREQ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511881</commentid>
    <comment_count>32</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-02 17:00:39 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #31)
&gt; Switching from STREQ to plain EQ is not so great for tests. I’d prefer to
&gt; use other techniques so we can continue to use STREQ and get good output
&gt; when the strings don&apos;t match. There are examples in various other tests
&gt; using things like utf8().data() for compatibility with STREQ.

Makes sense. I just did this since it&apos;s a lifetime violation to return utf8().data(), but I can place it at each callsite if STREQ is worth preserving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511882</commentid>
    <comment_count>33</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-02 17:04:21 -0800</bug_when>
    <thetext>Committed r242323: &lt;https://trac.webkit.org/changeset/242323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511883</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-02 17:31:31 -0800</bug_when>
    <thetext>STREQ is worth preserving because you can see what&apos;s wrong when there’s a failure, whereas with EQ you end up seeing addresses, not strings, in the output. On success the two are the same.

However, I think it’s reasonable to continue to look for a more elegant way to do it, since explicit utf8().data() on every line are ugly. Various tests use different tricks to avoid that. Would be nice if there was a clean standard way to do it for new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512034</commentid>
    <comment_count>35</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-03 20:56:39 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #34)
&gt; However, I think it’s reasonable to continue to look for a more elegant way
&gt; to do it, since explicit utf8().data() on every line are ugly. Various tests
&gt; use different tricks to avoid that. Would be nice if there was a clean
&gt; standard way to do it for new tests.

I&apos;m seeing utf8().data() at callsites much more than code explicitly written to avoid it, but I guess AtomicString does a strncpy into a static char buffer (which seems...worse) while ApplicationManifestParser brings EXPECT_STREQ *into* the helper function (which is a lovely idea that I hadn&apos;t considered!):
https://github.com/WebKit/webkit/blob/master/Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp#L64-L69
https://github.com/WebKit/webkit/blob/master/Tools/TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp#L82-L87

I&apos;d be happy to adopt the latter approach here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512038</commentid>
    <comment_count>36</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-03 21:10:30 -0800</bug_when>
    <thetext>Committed r242338: &lt;https://trac.webkit.org/changeset/242338&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362539</attachid>
            <date>2019-02-20 14:16:27 -0800</date>
            <delta_ts>2019-02-20 15:45:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194612-20190220141626.patch</filename>
            <type>text/plain</type>
            <size>20760</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiNDAxNGM3MDZkZDIzMDFjYWQ1YTg4
ZTk2ZDI0ZjE4NmE5YmQ5NDUuLjEyODhlNGZkNWM1NmZhNjU4ZWY2NmE0NmUzMTQyZmU4Y2I2YmE3
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDItMjAgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJp
cFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDYxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6Cisg
ICAgICAgIChXVEY6OnRocmVhZGluZ0lzSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIElu
dHJvZHVjZSBXVEY6OnRocmVhZGluZ0lzSW5pdGlhbGl6ZWQoKSBzbyB3ZSBjYW4gQVNTRVJUIHRo
YXQgaXQncyBmYWxzZSBiZWZvcmUgbW9kaWZ5aW5nIGVudiB2YXJzLgorCiAyMDE5LTAyLTIwICBB
ZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV1bR1RLXSBFbmFibGUgc3VwcG9ydCBmb3IgQ09OVEVOVF9FWFRFTlNJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGY5YTMzNTIwYWZjNzc2ZDU5OTFjZmU3MGYzZTM0M2JlMWZlZmY4ZDUuLjU1OWVkZTI2NTI1NWVk
NTFlYjY3ODk3MWVlMzA5ZGI2MDIwY2M4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MTktMDItMjAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgaXNu
J3QgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDYxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIHNob3VsZG4ndCBiZSB3cml0aW5nIEFQSSB0ZXN0cyB0aGF0IGdldCwgbW9kaWZ5
LCBhbmQgY2hlY2sgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCisgICAgICAgIEFzIHN1Y2gsIHNw
bGl0IHN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyBpbnRvIHR3bzoKKyAgICAgICAgLSBhIGZ1
bmN0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBzdHJpbmcgcHJvY2Vzc2luZworICAgICAgICAtIGEg
ZnVuY3Rpb24gdGhhdCBqdXN0IGRvZXMgdGhlIGVudmlyb25tZW50IHByb2Nlc3NpbmcKKyAgICAg
ICAgLi4uYW5kIGp1c3QgdGVzdCB0aGUgZm9ybWVyLgorCisgICAgICAgIEluIHNvIGRvaW5nLCBy
ZXdyaXRlIHRoZSBzb3VyY2UgZnJvbSBzY3JhdGNoICh3aXRob3V0IGNoYW5naW5nIGZ1bmN0aW9u
YWxpdHkpIC0tCisgICAgICAgIGl0J3MgbGl0ZXJhbGx5IGp1c3Qgc3BsaXQtZmlsdGVyLWpvaW4s
IHRoZXJlJ3Mgbm8gbmVlZCBmb3IgaXRzIGN1cnJlbnQgdmVyYm9zaXR5IQorCisgICAgICAgICog
UGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcEVudHJpZXNFbmRpbmdXaXRoKToKKyAgICAgICAg
KFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnJlbW92ZVZhbHVlc0VuZGluZ1dpdGgpOgor
ICAgICAgICAoV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdX
aXRoU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L0Vudmlyb25tZW50
VXRpbGl0aWVzLmg6CisgICAgICAgIFJlcGxhY2Ugb2xkIGZ1bmN0aW9uIHdpdGggdHdvIGJyYW5k
LW5ldyBvbmVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9Y
UENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAgKE5ldHdvcmtT
ZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvRW50cnlQb2ludC9D
b2NvYS9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAgICAgICAoUGx1
Z2luU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAg
IChXZWJDb250ZW50U2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAgVXBkYXRlIGZ1bmN0aW9u
IG5hbWUuCisKIDIwMTktMDItMjAgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNv
bT4KIAogICAgICAgICBbTVNWQ10gRml4IGNvbXBpbGF0aW9uIGVycm9ycyB3aXRoIGxhbWJkYXMg
aW4gU2VydmljZSBXb3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCA4N2NlZDliZDBmZTJhMGQ3
NWIyODc1MzkwNjBiMTlhMzhlOGFlM2MyLi43ODY0M2JhNzRlYWZhNWEzOWY5OGQyZjg1MmQ2Y2Y0
NmY5OWFkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTMwNywxMCArMzA3LDE4IEBAIHZvaWQg
VGhyZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiBUaHJlYWRTcGVjaWZpY0tleSBU
aHJlYWQ6OnNfa2V5ID0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5OwogI2VuZGlmCiAKK3N0YXRp
YyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisKK2Jvb2wgdGhyZWFkaW5nSXNJbml0aWFsaXpl
ZCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkOworfQorCiB2b2lkIGluaXRpYWxpemVUaHJl
YWRpbmcoKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAg
ICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAjaWYgIUhBVkUoRkFTVF9U
TFMpCiAgICAgICAgIFRocmVhZDo6aW5pdGlhbGl6ZVRMU0tleSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRl
eCAzYTU3OWIzZDQ3MTE1YmNjZGYzNDRjZWM4ZjczYmVmM2JjMTBmMWU4Li44NWNkM2VkNjkyZjNh
ZTgyZmEyMmYyNjViYmQ0NjI3OGE4OTE1ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtNjIsNiArNjIs
OCBAQCBlbnVtIGNsYXNzIFRocmVhZEdyb3VwQWRkUmVzdWx0OwogY2xhc3MgVGhyZWFkR3JvdXA7
CiBjbGFzcyBQcmludFN0cmVhbTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdGhyZWFkaW5n
SXNJbml0aWFsaXplZCgpOworCiAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBh
bnkgdGhyZWFkcy4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50
L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1Nl
cnZpY2VFbnRyeVBvaW50Lm1tCmluZGV4IGI3ZjUzOTJjMGMwMTJkZGYwM2JmNTMzOTE4NjU1MTI2
MmJhZGJlMGIuLjRkNjRjZWQ1MTc0MDk0ZGJiNDNiZDdhNGE1ZGJjZDU1N2E2ZmJjNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0KQEAgLTU2LDYgKzU2LDYgQEAgdm9pZCBOZXR3b3JrU2VydmljZUluaXRpYWxp
emVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRpYWwKIHsK
ICAgICAvLyBSZW1vdmUgdGhlIFNlY0l0ZW1TaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJB
UklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKICAg
ICAvLyB0aGUgdGhpcyBwcm9jZXNzIGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNy
YXNoLgotICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJp
bmcoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsICIvU2VjSXRlbVNoaW0uZHlsaWIiKTsKKyAgICBF
bnZpcm9ubWVudFV0aWxpdGllczo6cmVtb3ZlVmFsdWVzRW5kaW5nV2l0aCgiRFlMRF9JTlNFUlRf
TElCUkFSSUVTIiwgIi9TZWNJdGVtU2hpbS5keWxpYiIpOwogICAgIFhQQ1NlcnZpY2VJbml0aWFs
aXplcjxOZXR3b3JrUHJvY2VzcywgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlPihh
ZG9wdE9TT2JqZWN0KGNvbm5lY3Rpb24pLCBpbml0aWFsaXplck1lc3NhZ2UsIHByaW9yaXR5Qm9v
c3RNZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9F
bnZpcm9ubWVudFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52
aXJvbm1lbnRVdGlsaXRpZXMuY3BwCmluZGV4IGJiODAxMjBmYzIyYzRiMjljZmU0NDZmOGY0ZmVm
YjQ2YjZjZmNhM2YuLmRhNzM1ZTJlMmM4ZDU1MDVlZTVhZjBjMjA3M2E5MmZmNmI0MjQ5ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0
aWVzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDEwNCArMjcsNDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJF
bnZpcm9ubWVudFV0aWxpdGllcy5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVz
cGFjZSBFbnZpcm9ubWVudFV0aWxpdGllcyB7CiAKLXZvaWQgc3RyaXBWYWx1ZXNFbmRpbmdXaXRo
U3RyaW5nKGNvbnN0IGNoYXIqIGVudmlyb25tZW50VmFyaWFibGUsIGNvbnN0IGNoYXIqIHNlYXJj
aFZhbHVlKQorU3RyaW5nIHN0cmlwRW50cmllc0VuZGluZ1dpdGgoU3RyaW5nVmlldyBpbnB1dCwg
U3RyaW5nVmlldyBzdWZmaXgpCiB7Ci0gICAgQVNTRVJUKGVudmlyb25tZW50VmFyaWFibGUpOwot
ICAgIEFTU0VSVChzZWFyY2hWYWx1ZSk7Ci0gICAgCi0gICAgLy8gR3JhYiB0aGUgY3VycmVudCB2
YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gICAgY2hhciogZW52aXJvbm1lbnRW
YWx1ZSA9IGdldGVudihlbnZpcm9ubWVudFZhcmlhYmxlKTsKKyAgICBTdHJpbmdCdWlsZGVyIG91
dHB1dDsKIAotICAgIGlmICghZW52aXJvbm1lbnRWYWx1ZSB8fCBlbnZpcm9ubWVudFZhbHVlWzBd
ID09ICdcMCcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IHNpemVfdCBlbnZpcm9ubWVu
dFZhbHVlTGVuZ3RoID0gc3RybGVuKGVudmlyb25tZW50VmFsdWUpOwotICAgIGNvbnN0IHNpemVf
dCBlbnZpcm9ubWVudFZhbHVlQnVmZmVyTGVuZ3RoID0gZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAr
IDE7Ci0KLSAgICAvLyBTZXQgdXAgdGhlIHN0cmluZ3Mgd2UnbGwgYmUgc2VhcmNoaW5nIGZvci4K
LSAgICBzaXplX3Qgc2VhcmNoTGVuZ3RoID0gc3RybGVuKHNlYXJjaFZhbHVlKTsKLSAgICBpZiAo
IXNlYXJjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPGNoYXI+IHNlYXJj
aFZhbHVlV2l0aENvbG9uVmVjdG9yOwotICAgIHNlYXJjaFZhbHVlV2l0aENvbG9uVmVjdG9yLmdy
b3coc2VhcmNoTGVuZ3RoICsgMik7Ci0gICAgY2hhciogc2VhcmNoVmFsdWVXaXRoQ29sb24gPSBz
ZWFyY2hWYWx1ZVdpdGhDb2xvblZlY3Rvci5kYXRhKCk7Ci0gICAgc2l6ZV90IHNlYXJjaExlbmd0
aFdpdGhDb2xvbiA9IHNlYXJjaExlbmd0aCArIDE7Ci0KLSAgICBtZW1jcHkoc2VhcmNoVmFsdWVX
aXRoQ29sb24sIHNlYXJjaFZhbHVlLCBzZWFyY2hMZW5ndGgpOwotICAgIHNlYXJjaFZhbHVlV2l0
aENvbG9uW3NlYXJjaExlbmd0aF0gPSAnOic7Ci0gICAgc2VhcmNoVmFsdWVXaXRoQ29sb25bc2Vh
cmNoTGVuZ3RoV2l0aENvbG9uXSA9ICdcMCc7Ci0gICAgCi0gICAgLy8gTG9vcCBvdmVyIGVudmly
b25tZW50VmFsdWVCdWZmZXIsIHJlbW92aW5nIGFueSBjb21wb25lbnRzIHRoYXQgbWF0Y2ggdGhl
IHNlYXJjaCB2YWx1ZSBlbmRpbmcgd2l0aCBhIGNvbG9uLgotICAgIGNoYXIqIGNvbXBvbmVudFN0
YXJ0ID0gZW52aXJvbm1lbnRWYWx1ZTsKLSAgICBjaGFyKiBtYXRjaCA9IHN0cm5zdHIoY29tcG9u
ZW50U3RhcnQsIHNlYXJjaFZhbHVlV2l0aENvbG9uLCBlbnZpcm9ubWVudFZhbHVlTGVuZ3RoIC0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21wb25lbnRTdGFydCAtIGVudmlyb25tZW50VmFsdWUpKTsK
LSAgICBib29sIGZvdW5kQW55TWF0Y2hlcyA9IG1hdGNoICE9IE5VTEw7Ci0gICAgd2hpbGUgKG1h
dGNoICE9IE5VTEwpIHsKLSAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudFN0YXJ0IHRvIHBvaW50
IHRvIHRoZSBjb2xvbiBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhlIG1hdGNoLgotICAgICAgICBj
aGFyKiBuZXh0Q29sb24gPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0LCAiOiIsIGVudmlyb25tZW50
VmFsdWVMZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0IC0gZW52aXJv
bm1lbnRWYWx1ZSkpOwotICAgICAgICB3aGlsZSAobmV4dENvbG9uICYmIG5leHRDb2xvbiA8IG1h
dGNoKSB7Ci0gICAgICAgICAgICBjb21wb25lbnRTdGFydCA9IG5leHRDb2xvbjsKLSAgICAgICAg
ICAgIG5leHRDb2xvbiA9IHN0cm5zdHIoY29tcG9uZW50U3RhcnQgKyAxLCAiOiIsIGVudmlyb25t
ZW50VmFsdWVMZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0ICsgMSAt
IGVudmlyb25tZW50VmFsdWUpKTsKLSAgICAgICAgfQorICAgIGF1dG8gaGFzQXBwZW5kZWQgPSBm
YWxzZTsKKyAgICBmb3IgKGF1dG8gZW50cnkgOiBpbnB1dC5zcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKCc6JykpIHsKKyAgICAgICAgaWYgKGVudHJ5LmVuZHNXaXRoKHN1ZmZpeCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb21wb25lbnRTdGFydCA+
PSBlbnZpcm9ubWVudFZhbHVlKTsKLSAgICAgICAgc2l6ZV90IGVudmlyb25tZW50VmFsdWVPZmZz
ZXQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0IC0gZW52aXJvbm1lbnRWYWx1
ZSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGVudmlyb25tZW50VmFsdWVPZmZzZXQgPCBlbnZp
cm9ubWVudFZhbHVlQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKGhhc0FwcGVuZGVkKQorICAg
ICAgICAgICAgb3V0cHV0LmFwcGVuZCgnOicpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBo
YXNBcHBlbmRlZCA9IHRydWU7CiAKLSAgICAgICAgLy8gQ29weSBvdmVyIGV2ZXJ5dGhpbmcgcmln
aHQgb2YgdGhlIG1hdGNoIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzdGFydCwgYW5kIHNlYXJj
aCBmcm9tIHRoZXJlIGFnYWluLgotICAgICAgICBpZiAoY29tcG9uZW50U3RhcnRbMF0gPT0gJzon
KSB7Ci0gICAgICAgICAgICAvLyBJZiBjb21wb25lbnRTdGFydCBwb2ludHMgdG8gYSBjb2xvbiwg
Y29weSB0aGUgY29sb24gb3Zlci4KLSAgICAgICAgICAgIHN0cmxjcHkoY29tcG9uZW50U3RhcnQs
IG1hdGNoICsgc2VhcmNoTGVuZ3RoLCBlbnZpcm9ubWVudFZhbHVlQnVmZmVyTGVuZ3RoIC0gZW52
aXJvbm1lbnRWYWx1ZU9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBP
dGhlcndpc2UsIGNvbXBvbmVudFN0YXJ0IHN0aWxsIHBvaW50cyB0byB0aGUgYmVnaW5uaW5nIG9m
IGVudmlyb25tZW50VmFsdWVCdWZmZXIsIHNvIGRvbid0IGNvcHkgb3ZlciB0aGUgY29sb24uCi0g
ICAgICAgICAgICAvLyBUaGUgZWRnZSBjYXNlIGlzIGlmIHRoZSBjb2xvbiBpcyB0aGUgbGFzdCBj
aGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgc28gIm1hdGNoICsgc2VhcmNoTGVuZ3RoV2l0aG91dENv
bG9uICsgMSIgaXMgdGhlCi0gICAgICAgICAgICAvLyBudWxsIHRlcm1pbmF0b3Igb2YgdGhlIG9y
aWdpbmFsIGlucHV0LCBpbiB3aGljaCBjYXNlIHRoaXMgaXMgc3RpbGwgc2FmZS4KLSAgICAgICAg
ICAgIHN0cmxjcHkoY29tcG9uZW50U3RhcnQsIG1hdGNoICsgc2VhcmNoTGVuZ3RoV2l0aENvbG9u
LCBlbnZpcm9ubWVudFZhbHVlQnVmZmVyTGVuZ3RoIC0gZW52aXJvbm1lbnRWYWx1ZU9mZnNldCk7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1hdGNoID0gc3RybnN0cihjb21wb25lbnRT
dGFydCwgc2VhcmNoVmFsdWVXaXRoQ29sb24sIGVudmlyb25tZW50VmFsdWVMZW5ndGggLSBzdGF0
aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0IC0gZW52aXJvbm1lbnRWYWx1ZSkpOworICAg
ICAgICBvdXRwdXQuYXBwZW5kKGVudHJ5KTsKICAgICB9Ci0gICAgCi0gICAgLy8gU2VhcmNoIGZv
ciB0aGUgdmFsdWUgd2l0aG91dCBhIHRyYWlsaW5nIGNvbG9uLCBzZWVpbmcgaWYgdGhlIG9yaWdp
bmFsIGlucHV0IGVuZHMgd2l0aCBpdC4KLSAgICBtYXRjaCA9IHN0cm5zdHIoY29tcG9uZW50U3Rh
cnQsIHNlYXJjaFZhbHVlLCBlbnZpcm9ubWVudFZhbHVlTGVuZ3RoIC0gc3RhdGljX2Nhc3Q8c2l6
ZV90Pihjb21wb25lbnRTdGFydCAtIGVudmlyb25tZW50VmFsdWUpKTsKLSAgICB3aGlsZSAobWF0
Y2ggIT0gTlVMTCkgewotICAgICAgICBpZiAobWF0Y2hbc2VhcmNoTGVuZ3RoXSA9PSAnXDAnKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG1hdGNoID0gc3RybnN0cihtYXRjaCArIDEsIHNl
YXJjaFZhbHVlLCBlbnZpcm9ubWVudFZhbHVlTGVuZ3RoIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Piht
YXRjaCArIDEgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgfQotICAgIAotICAgIC8vIFNpbmNl
IHRoZSBvcmlnaW5hbCBpbnB1dCBlbmRzIHdpdGggdGhlIHNlYXJjaCwgc3RyaXAgb3V0IHRoZSBs
YXN0IGNvbXBvbmVudC4KLSAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAgLy8gVXBkYXRlIGNvbXBv
bmVudFN0YXJ0IHRvIHBvaW50IHRvIHRoZSBjb2xvbiBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhl
IG1hdGNoLgotICAgICAgICBjaGFyKiBuZXh0Q29sb24gPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0
LCAiOiIsIGVudmlyb25tZW50VmFsdWVMZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBv
bmVudFN0YXJ0IC0gZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgICAgICB3aGlsZSAobmV4dENvbG9u
ICYmIG5leHRDb2xvbiA8IG1hdGNoKSB7Ci0gICAgICAgICAgICBjb21wb25lbnRTdGFydCA9IG5l
eHRDb2xvbjsKLSAgICAgICAgICAgIG5leHRDb2xvbiA9IHN0cm5zdHIoY29tcG9uZW50U3RhcnQg
KyAxLCAiOiIsIGVudmlyb25tZW50VmFsdWVMZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
bXBvbmVudFN0YXJ0ICsgMSAtIGVudmlyb25tZW50VmFsdWUpKTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgLy8gV2hldGhlciBjb21wb25lbnRTdGFydCBwb2ludHMgdG8gdGhlIG9yaWdp
bmFsIHN0cmluZyBvciB0aGUgbGFzdCBjb2xvbiwgcHV0dGluZyB0aGUgbnVsbCB0ZXJtaW5hdG9y
IHRoZXJlIHdpbGwgZ2V0IHVzIHRoZSBkZXNpcmVkIHJlc3VsdC4KLSAgICAgICAgY29tcG9uZW50
U3RhcnRbMF0gPSAnXDAnOwogCi0gICAgICAgIGZvdW5kQW55TWF0Y2hlcyA9IHRydWU7Ci0gICAg
fQorICAgIHJldHVybiBvdXRwdXQudG9TdHJpbmcoKTsKK30KIAotICAgIC8vIElmIHdlIGZvdW5k
IG5vIG1hdGNoZXMsIGRvbid0IGNoYW5nZSBhbnl0aGluZy4KLSAgICBpZiAoIWZvdW5kQW55TWF0
Y2hlcykKK3ZvaWQgcmVtb3ZlVmFsdWVzRW5kaW5nV2l0aChjb25zdCBjaGFyKiBlbnZpcm9ubWVu
dFZhcmlhYmxlLCBjb25zdCBjaGFyKiBzZWFyY2hWYWx1ZSkKK3sKKyAgICBBU1NFUlQoIVdURjo6
dGhyZWFkaW5nSXNJbml0aWFsaXplZCgpKTsKKworICAgIGNvbnN0IGNoYXIqIGJlZm9yZSA9IGdl
dGVudihlbnZpcm9ubWVudFZhcmlhYmxlKTsKKyAgICBpZiAoIWJlZm9yZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGxlZnQsIGp1c3QgdW5zZXQgdGhlIHZh
cmlhYmxlCi0gICAgaWYgKGVudmlyb25tZW50VmFsdWVbMF0gPT0gJ1wwJykgeworICAgIGF1dG8g
YWZ0ZXIgPSBzdHJpcEVudHJpZXNFbmRpbmdXaXRoKGJlZm9yZSwgc2VhcmNoVmFsdWUpOworICAg
IGlmIChhZnRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zZXRlbnYoZW52aXJvbm1lbnRWYXJp
YWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgc2V0ZW52KGVudmlyb25t
ZW50VmFyaWFibGUsIGVudmlyb25tZW50VmFsdWUsIDEpOworCisgICAgc2V0ZW52KGVudmlyb25t
ZW50VmFyaWFibGUsIGFmdGVyLnV0ZjgoKS5kYXRhKCksIDEpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBFbnZpcm9ubWVudFV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS91bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaAppbmRleCAyMGMzMWI5NDk5MTZlYmQxNjM3M2EzMDdi
ZGY4MjE5NjIyN2MyNDY5Li44OGVlOGJmYzIwZGJhMWVkNmYwNGQ4MzU3MmFjY2MzZjIxZmFlZjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGls
aXRpZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDEzICsyNywxNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXS0RlY2xh
cmF0aW9uU3BlY2lmaWVycy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5h
bWVzcGFjZSBFbnZpcm9ubWVudFV0aWxpdGllcyB7CiAKLVdLX0VYUE9SVCB2b2lkIHN0cmlwVmFs
dWVzRW5kaW5nV2l0aFN0cmluZyhjb25zdCBjaGFyKiBlbnZpcm9ubWVudFZhcmlhYmxlLCBjb25z
dCBjaGFyKiBzZWFyY2gpOworV0tfRVhQT1JUIFN0cmluZyBzdHJpcEVudHJpZXNFbmRpbmdXaXRo
KFN0cmluZ1ZpZXcgaW5wdXQsIFN0cmluZ1ZpZXcgc3VmZml4KTsKK3ZvaWQgcmVtb3ZlVmFsdWVz
RW5kaW5nV2l0aChjb25zdCBjaGFyKiBlbnZpcm9ubWVudFZhcmlhYmxlLCBjb25zdCBjaGFyKiBz
ZWFyY2gpOwogCiB9IC8vIG5hbWVzcGFjZSBFbnZpcm9ubWVudFV0aWxpdGllcwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2
aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5t
bQppbmRleCBhMWZlNTI3ZGU4MmZlMmRkZTMzN2RlYTNhNGVmODQ0ZTRhNDFmMzViLi5lMGRlMmQ2
MjgwNzgyZmZjYzgyNTMyOWRiMzZhMzA0NGI0ZmI0MTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1BsdWdpblNlcnZp
Y2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9FbnRyeVBv
aW50L0NvY29hL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTc4LDcg
Kzc4LDcgQEAgdm9pZCBQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGkKIAogICAgIC8vIFJlbW92ZSB0aGUgUGx1
Z2luUHJvY2VzcyBzaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzCiAgICAgLy8gc3Bhd25lZCBieSB0aGUgUGx1Z2lu
UHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KLSAgICBFbnZp
cm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VS
VF9MSUJSQVJJRVMiLCAiL1BsdWdpblByb2Nlc3NTaGltLmR5bGliIik7CisgICAgRW52aXJvbm1l
bnRVdGlsaXRpZXM6OnJlbW92ZVZhbHVlc0VuZGluZ1dpdGgoIkRZTERfSU5TRVJUX0xJQlJBUklF
UyIsICIvUGx1Z2luUHJvY2Vzc1NoaW0uZHlsaWIiKTsKICAgICBYUENTZXJ2aWNlSW5pdGlhbGl6
ZXI8UGx1Z2luUHJvY2VzcywgUGx1Z2luU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU+KGFkb3B0
T1NPYmplY3QoY29ubmVjdGlvbiksIGluaXRpYWxpemVyTWVzc2FnZSwgcHJpb3JpdHlCb29zdE1l
c3NhZ2UpOwogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2Vydmlj
ZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2lu
dC5tbQppbmRleCA4N2FjMTMyODlhMzQxMjMyNzAzY2Y2NjIwYmJhYTI4MDg4MzM0ZjE2Li4yOGNl
MDI0YzdjNTQ5MzA3NTU2NThiOTk4YjFmNGMwODRlZDljMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRT
ZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQ
b2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAt
NDEsNyArNDEsNyBAQCB2b2lkIFdlYkNvbnRlbnRTZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdAogewogICAgIC8vIFJlbW92ZSB0
aGUgV2ViUHJvY2Vzc1NoaW0gZnJvbSB0aGUgRFlMRF9JTlNFUlRfTElCUkFSSUVTIGVudmlyb25t
ZW50IHZhcmlhYmxlIHNvIGFueSBwcm9jZXNzZXMgc3Bhd25lZCBieQogICAgIC8vIHRoZSB0aGlz
IHByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0aGUgc2hpbSBhbmQgY3Jhc2guCi0gICAgV2Vi
S2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJE
WUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1dlYlByb2Nlc3NTaGltLmR5bGliIik7CisgICAgV2Vi
S2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6cmVtb3ZlVmFsdWVzRW5kaW5nV2l0aCgiRFlMRF9J
TlNFUlRfTElCUkFSSUVTIiwgIi9XZWJQcm9jZXNzU2hpbS5keWxpYiIpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBHU0luaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNzY2NjRkNjgxMzMyYzg5NjgxY2JlYmJk
NDM4YmMyOTNjODI5NWMxLi5hNGM5ZTA3NmExMTQxYWUxYTRkZWQ0YzY2YzkwY2UyOGY0NjVmYTIz
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTktMDItMjAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGlu
Z1dpdGhTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDYxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJv
bm1lbnRVdGlsaXRpZXNUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnN0cmlwKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBKdXN0IHRlc3QgdGhlIG5l
dyBzdHJpbmctcHJvY2Vzc2luZyBmdW5jdGlvbiBhbmQgZG9uJ3QgdG91Y2ggdGhlIGFjdHVhbCBl
bnZpcm9ubWVudC4KKwogMjAxOS0wMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXS1RSXSBBdm9pZCBzdGFydGluZyBuZXcgTmV0d29ya1Byb2Nlc3NlcyB1
bm5lY2Vzc2FyaWx5IHdoZW4gcnVubmluZyB0aGUgbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9FbnZpcm9ubWVudFV0aWxpdGllc1Rlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJvbm1lbnRVdGlsaXRp
ZXNUZXN0LmNwcAppbmRleCBlMWRlODMyNjVmYmY3MWRjNjgzZTdmM2M1MWI1NTNjYjM3N2NhOGE0
Li40MWQwMzVkMjNjYjhjYTExODM3Zjc4NjM0NjdiZDIxMmI5ZGI0NWQyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9FbnZpcm9ubWVudFV0aWxpdGllc1Rlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25tZW50VXRp
bGl0aWVzVGVzdC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNyw2MCArMjgsNTYgQEAKICNpbmNsdWRlICJUZXN0LmgiCiAKICNpbmNs
dWRlIDxXZWJLaXQvRW52aXJvbm1lbnRVdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4K
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jb25zdCBjaGFyKiBjb25zdCBlbnZpcm9u
bWVudFZhcmlhYmxlID0gIkRZTERfSU5TRVJUX0xJQlJBUklFUyI7CiAjZGVmaW5lIFBST0NFU1Nf
RFlMSUIgIlByb2Nlc3MuZHlsaWIiCiBjb25zdCBjaGFyKiBjb25zdCBzdHJpcFZhbHVlID0gIi8i
IFBST0NFU1NfRFlMSUI7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzdHJpcChjb25zdCBjaGFyKiBp
bnB1dCkKK3N0YXRpYyBTdHJpbmcgc3RyaXAoU3RyaW5nVmlldyBpbnB1dCkKIHsKLSAgICBzZXRl
bnYoZW52aXJvbm1lbnRWYXJpYWJsZSwgaW5wdXQsIDEpOwotICAgIFdlYktpdDo6RW52aXJvbm1l
bnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyhlbnZpcm9ubWVudFZhcmlh
YmxlLCBzdHJpcFZhbHVlKTsKLSAgICByZXR1cm4gZ2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUp
OworICAgIHJldHVybiBXZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcEVudHJpZXNF
bmRpbmdXaXRoKGlucHV0LCBzdHJpcFZhbHVlKTsKIH0KIAotVEVTVChXZWJLaXQsIFN0cmlwVmFs
dWVzRW5kaW5nV2l0aFN0cmluZykKK1RFU1QoV2ViS2l0LCBTdHJpcEVudHJpZXNFbmRpbmdXaXRo
KQogewotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiIiksICIiKTsKLSAgICBFWFBFQ1RfU1RSRVEo
c3RyaXAoIjoiKSwgIjoiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjo6IiksICI6OiIpOwot
ICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOjo6IiksICI6OjoiKTsKLSAgICBFWFBFQ1RfU1RSRVEo
c3RyaXAoIjo6OjoiKSwgIjo6OjoiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjo6Ojo6Iiks
ICI6Ojo6OiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiIiksICIiKTsKKyAgICBFWFBFQ1RfRVEo
c3RyaXAoIjoiKSwgIjoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjo6IiksICI6OiIpOworICAg
IEVYUEVDVF9FUShzdHJpcCgiOjo6IiksICI6OjoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjo6
OjoiKSwgIjo6OjoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjo6Ojo6IiksICI6Ojo6OiIpOwog
Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKFBST0NFU1NfRFlMSUIpLCBQUk9DRVNTX0RZTElCKTsK
LSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjoiIFBST0NFU1NfRFlMSUIpLCAiOiIgUFJPQ0VTU19E
WUxJQik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKFBST0NFU1NfRFlMSUIgIjoiKSwgUFJPQ0VT
U19EWUxJQiAiOiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJQiAi
OiIpLCAiOiIgUFJPQ0VTU19EWUxJQiAiOiIpOworICAgIEVYUEVDVF9FUShzdHJpcChQUk9DRVNT
X0RZTElCKSwgUFJPQ0VTU19EWUxJQik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6IiBQUk9DRVNT
X0RZTElCKSwgIjoiIFBST0NFU1NfRFlMSUIpOworICAgIEVYUEVDVF9FUShzdHJpcChQUk9DRVNT
X0RZTElCICI6IiksIFBST0NFU1NfRFlMSUIgIjoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjoi
IFBST0NFU1NfRFlMSUIgIjoiKSwgIjoiIFBST0NFU1NfRFlMSUIgIjoiKTsKIAotICAgIEVYUEVD
VF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIpOwotICAgIEVYUEVDVF9T
VFJFUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfU1RS
RVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIjoiKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1NU
UkVRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiAiOiIpLCAiOiIpOworICAgIEVYUEVDVF9FUShz
dHJpcCgiLyIgUFJPQ0VTU19EWUxJQiksICIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjovIiBQ
Uk9DRVNTX0RZTElCKSwgIiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJ
QiAiOiIpLCAiIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiAiOiIp
LCAiOiIpOwogCi0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKFBST0NFU1NfRFlMSUIgIi8iKSwgUFJP
Q0VTU19EWUxJQiAiLyIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJ
QiAiLyIpLCAiOiIgUFJPQ0VTU19EWUxJQiAiLyIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcChQ
Uk9DRVNTX0RZTElCICIvOiIpLCBQUk9DRVNTX0RZTElCICIvOiIpOwotICAgIEVYUEVDVF9TVFJF
UShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJQiAiLzoiKSwgIjoiIFBST0NFU1NfRFlMSUIgIi86Iik7
CisgICAgRVhQRUNUX0VRKHN0cmlwKFBST0NFU1NfRFlMSUIgIi8iKSwgUFJPQ0VTU19EWUxJQiAi
LyIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJQiAiLyIpLCAiOiIgUFJP
Q0VTU19EWUxJQiAiLyIpOworICAgIEVYUEVDVF9FUShzdHJpcChQUk9DRVNTX0RZTElCICIvOiIp
LCBQUk9DRVNTX0RZTElCICIvOiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOiIgUFJPQ0VTU19E
WUxJQiAiLzoiKSwgIjoiIFBST0NFU1NfRFlMSUIgIi86Iik7CiAKLSAgICBFWFBFQ1RfU1RSRVEo
c3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIi8iKSwgIi8iIFBST0NFU1NfRFlMSUIgIi8iKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZTElCICIvIiksICI6LyIgUFJPQ0VT
U19EWUxJQiAiLyIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAi
LzoiKSwgIi8iIFBST0NFU1NfRFlMSUIgIi86Iik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6
LyIgUFJPQ0VTU19EWUxJQiAiLzoiKSwgIjovIiBQUk9DRVNTX0RZTElCICIvOiIpOworICAgIEVY
UEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIpLCAiLyIgUFJPQ0VTU19EWUxJQiAi
LyIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIgIi8iKSwgIjovIiBQ
Uk9DRVNTX0RZTElCICIvIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElC
ICIvOiIpLCAiLyIgUFJPQ0VTU19EWUxJQiAiLzoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjov
IiBQUk9DRVNTX0RZTElCICIvOiIpLCAiOi8iIFBST0NFU1NfRFlMSUIgIi86Iik7CiAKLSAgICBF
WFBFQ1RfU1RSRVEoc3RyaXAoIi9CZWZvcmUuZHlsaWI6LyIgUFJPQ0VTU19EWUxJQiksICIvQmVm
b3JlLmR5bGliIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICI6
L0FmdGVyLmR5bGliIiksICIvQWZ0ZXIuZHlsaWIiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAo
Ii9CZWZvcmUuZHlsaWI6LyIgUFJPQ0VTU19EWUxJQiAiOi9BZnRlci5keWxpYiIpLCAiL0JlZm9y
ZS5keWxpYjovQWZ0ZXIuZHlsaWIiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi9CZWZvcmUu
ZHlsaWI6LyIgUFJPQ0VTU19EWUxJQiAiOi9NaWRkbGUuZHlsaWI6LyIgUFJPQ0VTU19EWUxJQiAi
Oi9BZnRlci5keWxpYiIpLCAiL0JlZm9yZS5keWxpYjovTWlkZGxlLmR5bGliOi9BZnRlci5keWxp
YiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiL0JlZm9yZS5keWxpYjovIiBQUk9DRVNTX0RZTElC
KSwgIi9CZWZvcmUuZHlsaWIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlM
SUIgIjovQWZ0ZXIuZHlsaWIiKSwgIi9BZnRlci5keWxpYiIpOworICAgIEVYUEVDVF9FUShzdHJp
cCgiL0JlZm9yZS5keWxpYjovIiBQUk9DRVNTX0RZTElCICI6L0FmdGVyLmR5bGliIiksICIvQmVm
b3JlLmR5bGliOi9BZnRlci5keWxpYiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiL0JlZm9yZS5k
eWxpYjovIiBQUk9DRVNTX0RZTElCICI6L01pZGRsZS5keWxpYjovIiBQUk9DRVNTX0RZTElCICI6
L0FmdGVyLmR5bGliIiksICIvQmVmb3JlLmR5bGliOi9NaWRkbGUuZHlsaWI6L0FmdGVyLmR5bGli
Iik7CiAKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIjovIiBQUk9D
RVNTX0RZTElCKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNT
X0RZTElCICI6LyIgUFJPQ0VTU19EWUxJQiAiOi8iIFBST0NFU1NfRFlMSUIpLCBudWxscHRyKTsK
KyAgICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIjovIiBQUk9DRVNTX0RZTElC
KSwgIiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiOi8iIFBST0NF
U1NfRFlMSUIgIjovIiBQUk9DRVNTX0RZTElCKSwgIiIpOwogCi0gICAgRVhQRUNUX1NUUkVRKHN0
cmlwKCIvdXNyL2xpYi8iIFBST0NFU1NfRFlMSUIpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfU1RS
RVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIi8iIFBST0NFU1NfRFlMSUIpLCBudWxscHRyKTsK
KyAgICBFWFBFQ1RfRVEoc3RyaXAoIi91c3IvbGliLyIgUFJPQ0VTU19EWUxJQiksICIiKTsKKyAg
ICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIi8iIFBST0NFU1NfRFlMSUIpLCAi
Iik7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362557</attachid>
            <date>2019-02-20 15:45:25 -0800</date>
            <delta_ts>2019-02-21 16:01:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194612-20190220154524.patch</filename>
            <type>text/plain</type>
            <size>20645</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiNDAxNGM3MDZkZDIzMDFjYWQ1YTg4
ZTk2ZDI0ZjE4NmE5YmQ5NDUuLjEyODhlNGZkNWM1NmZhNjU4ZWY2NmE0NmUzMTQyZmU4Y2I2YmE3
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDItMjAgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJp
cFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDYxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6Cisg
ICAgICAgIChXVEY6OnRocmVhZGluZ0lzSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIElu
dHJvZHVjZSBXVEY6OnRocmVhZGluZ0lzSW5pdGlhbGl6ZWQoKSBzbyB3ZSBjYW4gQVNTRVJUIHRo
YXQgaXQncyBmYWxzZSBiZWZvcmUgbW9kaWZ5aW5nIGVudiB2YXJzLgorCiAyMDE5LTAyLTIwICBB
ZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV1bR1RLXSBFbmFibGUgc3VwcG9ydCBmb3IgQ09OVEVOVF9FWFRFTlNJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGY5YTMzNTIwYWZjNzc2ZDU5OTFjZmU3MGYzZTM0M2JlMWZlZmY4ZDUuLmZkZmFlNzFhM2QyMzg2
NThlYmRlOTcyNjM5ZTJjYTQzNjY3MmZhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIw
MTktMDItMjAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgaXNu
J3QgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDYxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgQVBJIHRlc3QgcmVhbGx5IHNob3VsZG4ndCBiZSB2ZXJpZnlpbmcgdGhhdCB0
aGUgYWN0dWFsIGVudmlyb25tZW50IHdhcyBzdWNjZXNzZnVsbHkgbW9kaWZpZWQuCisKKyAgICAg
ICAgQXQgaXRzIGNvcmUsIHN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyBpcyByZWFsbHkganVz
dCBhIHNwbGl0LWZpbHRlci1qb2luLiBCeSByZXBsYWNpbmcgaXQgd2l0aCBhIHBhaXIgb2YKKyAg
ICAgICAgc2ltcGxlIGZ1bmN0aW9ucyAtLSBvbmUgZm9yIHN0cmluZyBwcm9jZXNzaW5nLCBvbmUg
Zm9yIGVudmlyb25tZW50IHByb2Nlc3NpbmcgLS0gdGhlIEFQSSB0ZXN0IG9ubHkgbmVlZHMgdG8K
KyAgICAgICAgd29ycnkgYWJvdXQgdGhlIGZvcm1lci4KKworICAgICAgICAqIFBsYXRmb3JtL3Vu
aXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpFbnZpcm9ubWVu
dFV0aWxpdGllczo6c3RyaXBFbnRyaWVzRW5kaW5nV2l0aCk6CisgICAgICAgIChXZWJLaXQ6OkVu
dmlyb25tZW50VXRpbGl0aWVzOjpyZW1vdmVWYWx1ZXNFbmRpbmdXaXRoKToKKyAgICAgICAgKFdl
YktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5o
OgorICAgICAgICBSZXBsYWNlIG9sZCBmdW5jdGlvbiB3aXRoIHR3byBicmFuZC1uZXcgb25lcy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9O
ZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChOZXR3b3JrU2VydmljZUluaXRp
YWxpemVyKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2Vy
dmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAgKFBsdWdpblNlcnZpY2VJ
bml0aWFsaXplcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1Nl
cnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViQ29udGVu
dFNlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgIFVwZGF0ZSBmdW5jdGlvbiBuYW1lLgorCiAy
MDE5LTAyLTIwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW01TVkNdIEZpeCBjb21waWxhdGlvbiBlcnJvcnMgd2l0aCBsYW1iZGFzIGluIFNlcnZpY2Ug
V29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggODdjZWQ5YmQwZmUyYTBkNzViMjg3NTM5MDYw
YjE5YTM4ZThhZTNjMi4uNzg2NDNiYTc0ZWFmYTVhMzlmOThkMmY4NTJkNmNmNDZmOTlhZGEwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0zMDcsMTAgKzMwNywxOCBAQCB2b2lkIFRocmVhZDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogVGhyZWFkU3BlY2lmaWNLZXkgVGhyZWFkOjpzX2tl
eSA9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleTsKICNlbmRpZgogCitzdGF0aWMgYm9vbCBpbml0
aWFsaXplZCA9IGZhbHNlOworCitib29sIHRocmVhZGluZ0lzSW5pdGlhbGl6ZWQoKQoreworICAg
IHJldHVybiBpbml0aWFsaXplZDsKK30KKwogdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbXSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAgaW5pdGlh
bGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwogI2lmICFIQVZFKEZBU1RfVExTKQogICAgICAg
ICBUaHJlYWQ6OmluaXRpYWxpemVUTFNLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggM2E1NzliM2Q0
NzExNWJjY2RmMzQ0Y2VjOGY3M2JlZjNiYzEwZjFlOC4uODVjZDNlZDY5MmYzYWU4MmZhMjJmMjY1
YmJkNDYyNzhhODkxNWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgK
KysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTYyLDYgKzYyLDggQEAgZW51bSBj
bGFzcyBUaHJlYWRHcm91cEFkZFJlc3VsdDsKIGNsYXNzIFRocmVhZEdyb3VwOwogY2xhc3MgUHJp
bnRTdHJlYW07CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHRocmVhZGluZ0lzSW5pdGlhbGl6
ZWQoKTsKKwogLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZHMu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQ
b2ludC5tbQppbmRleCBiN2Y1MzkyYzBjMDEyZGRmMDNiZjUzMzkxODY1NTEyNjJiYWRiZTBiLi40
ZDY0Y2VkNTE3NDA5NGRiYjQzYmQ3YTRhNWRiY2Q1NTdhNmZiYzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3
b3JrU2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1t
CkBAIC01Niw2ICs1Niw2IEBAIHZvaWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsCiB7CiAgICAgLy8gUmVt
b3ZlIHRoZSBTZWNJdGVtU2hpbSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJv
bm1lbnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRo
aXMgcHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KLSAgICBF
bnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lO
U0VSVF9MSUJSQVJJRVMiLCAiL1NlY0l0ZW1TaGltLmR5bGliIik7CisgICAgRW52aXJvbm1lbnRV
dGlsaXRpZXM6OnJlbW92ZVZhbHVlc0VuZGluZ1dpdGgoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIs
ICIvU2VjSXRlbVNoaW0uZHlsaWIiKTsKICAgICBYUENTZXJ2aWNlSW5pdGlhbGl6ZXI8TmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZT4oYWRvcHRPU09iamVj
dChjb25uZWN0aW9uKSwgaW5pdGlhbGl6ZXJNZXNzYWdlLCBwcmlvcml0eUJvb3N0TWVzc2FnZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRp
bGl0aWVzLmNwcAppbmRleCBiYjgwMTIwZmMyMmM0YjI5Y2ZlNDQ2ZjhmNGZlZmI0NmI2Y2ZjYTNm
Li5kYTczNWUyZTJjOGQ1NTA1ZWU1YWYwYzIwNzNhOTJmZjZiNDI0OWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5jcHAKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwx
MDQgKzI3LDQ5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW52aXJvbm1lbnRV
dGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDxj
c3RkbGliPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgRW52aXJv
bm1lbnRVdGlsaXRpZXMgewogCi12b2lkIHN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyhjb25z
dCBjaGFyKiBlbnZpcm9ubWVudFZhcmlhYmxlLCBjb25zdCBjaGFyKiBzZWFyY2hWYWx1ZSkKK1N0
cmluZyBzdHJpcEVudHJpZXNFbmRpbmdXaXRoKFN0cmluZ1ZpZXcgaW5wdXQsIFN0cmluZ1ZpZXcg
c3VmZml4KQogewotICAgIEFTU0VSVChlbnZpcm9ubWVudFZhcmlhYmxlKTsKLSAgICBBU1NFUlQo
c2VhcmNoVmFsdWUpOwotICAgIAotICAgIC8vIEdyYWIgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhl
IGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgIGNoYXIqIGVudmlyb25tZW50VmFsdWUgPSBnZXRl
bnYoZW52aXJvbm1lbnRWYXJpYWJsZSk7CisgICAgU3RyaW5nQnVpbGRlciBvdXRwdXQ7CiAKLSAg
ICBpZiAoIWVudmlyb25tZW50VmFsdWUgfHwgZW52aXJvbm1lbnRWYWx1ZVswXSA9PSAnXDAnKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBzaXplX3QgZW52aXJvbm1lbnRWYWx1ZUxlbmd0
aCA9IHN0cmxlbihlbnZpcm9ubWVudFZhbHVlKTsKLSAgICBjb25zdCBzaXplX3QgZW52aXJvbm1l
bnRWYWx1ZUJ1ZmZlckxlbmd0aCA9IGVudmlyb25tZW50VmFsdWVMZW5ndGggKyAxOwotCi0gICAg
Ly8gU2V0IHVwIHRoZSBzdHJpbmdzIHdlJ2xsIGJlIHNlYXJjaGluZyBmb3IuCi0gICAgc2l6ZV90
IHNlYXJjaExlbmd0aCA9IHN0cmxlbihzZWFyY2hWYWx1ZSk7Ci0gICAgaWYgKCFzZWFyY2hMZW5n
dGgpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxjaGFyPiBzZWFyY2hWYWx1ZVdpdGhD
b2xvblZlY3RvcjsKLSAgICBzZWFyY2hWYWx1ZVdpdGhDb2xvblZlY3Rvci5ncm93KHNlYXJjaExl
bmd0aCArIDIpOwotICAgIGNoYXIqIHNlYXJjaFZhbHVlV2l0aENvbG9uID0gc2VhcmNoVmFsdWVX
aXRoQ29sb25WZWN0b3IuZGF0YSgpOwotICAgIHNpemVfdCBzZWFyY2hMZW5ndGhXaXRoQ29sb24g
PSBzZWFyY2hMZW5ndGggKyAxOwotCi0gICAgbWVtY3B5KHNlYXJjaFZhbHVlV2l0aENvbG9uLCBz
ZWFyY2hWYWx1ZSwgc2VhcmNoTGVuZ3RoKTsKLSAgICBzZWFyY2hWYWx1ZVdpdGhDb2xvbltzZWFy
Y2hMZW5ndGhdID0gJzonOwotICAgIHNlYXJjaFZhbHVlV2l0aENvbG9uW3NlYXJjaExlbmd0aFdp
dGhDb2xvbl0gPSAnXDAnOwotICAgIAotICAgIC8vIExvb3Agb3ZlciBlbnZpcm9ubWVudFZhbHVl
QnVmZmVyLCByZW1vdmluZyBhbnkgY29tcG9uZW50cyB0aGF0IG1hdGNoIHRoZSBzZWFyY2ggdmFs
dWUgZW5kaW5nIHdpdGggYSBjb2xvbi4KLSAgICBjaGFyKiBjb21wb25lbnRTdGFydCA9IGVudmly
b25tZW50VmFsdWU7Ci0gICAgY2hhciogbWF0Y2ggPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0LCBz
ZWFyY2hWYWx1ZVdpdGhDb2xvbiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0
PHNpemVfdD4oY29tcG9uZW50U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgYm9vbCBm
b3VuZEFueU1hdGNoZXMgPSBtYXRjaCAhPSBOVUxMOwotICAgIHdoaWxlIChtYXRjaCAhPSBOVUxM
KSB7Ci0gICAgICAgIC8vIFVwZGF0ZSBjb21wb25lbnRTdGFydCB0byBwb2ludCB0byB0aGUgY29s
b24gaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoZSBtYXRjaC4KLSAgICAgICAgY2hhciogbmV4dENv
bG9uID0gc3RybnN0cihjb21wb25lbnRTdGFydCwgIjoiLCBlbnZpcm9ubWVudFZhbHVlTGVuZ3Ro
IC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21wb25lbnRTdGFydCAtIGVudmlyb25tZW50VmFsdWUp
KTsKLSAgICAgICAgd2hpbGUgKG5leHRDb2xvbiAmJiBuZXh0Q29sb24gPCBtYXRjaCkgewotICAg
ICAgICAgICAgY29tcG9uZW50U3RhcnQgPSBuZXh0Q29sb247Ci0gICAgICAgICAgICBuZXh0Q29s
b24gPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0ICsgMSwgIjoiLCBlbnZpcm9ubWVudFZhbHVlTGVu
Z3RoIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21wb25lbnRTdGFydCArIDEgLSBlbnZpcm9ubWVu
dFZhbHVlKSk7Ci0gICAgICAgIH0KKyAgICBhdXRvIGhhc0FwcGVuZGVkID0gZmFsc2U7CisgICAg
Zm9yIChhdXRvIGVudHJ5IDogaW5wdXQuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7
CisgICAgICAgIGlmIChlbnRyeS5lbmRzV2l0aChzdWZmaXgpKQorICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29tcG9uZW50U3RhcnQgPj0gZW52aXJvbm1l
bnRWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBlbnZpcm9ubWVudFZhbHVlT2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb21wb25lbnRTdGFydCAtIGVudmlyb25tZW50VmFsdWUpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlbnZpcm9ubWVudFZhbHVlT2Zmc2V0IDwgZW52aXJvbm1lbnRWYWx1
ZUJ1ZmZlckxlbmd0aCk7CisgICAgICAgIGlmIChoYXNBcHBlbmRlZCkKKyAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoJzonKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFzQXBwZW5kZWQg
PSB0cnVlOwogCi0gICAgICAgIC8vIENvcHkgb3ZlciBldmVyeXRoaW5nIHJpZ2h0IG9mIHRoZSBt
YXRjaCB0byB0aGUgY3VycmVudCBjb21wb25lbnQgc3RhcnQsIGFuZCBzZWFyY2ggZnJvbSB0aGVy
ZSBhZ2Fpbi4KLSAgICAgICAgaWYgKGNvbXBvbmVudFN0YXJ0WzBdID09ICc6JykgewotICAgICAg
ICAgICAgLy8gSWYgY29tcG9uZW50U3RhcnQgcG9pbnRzIHRvIGEgY29sb24sIGNvcHkgdGhlIGNv
bG9uIG92ZXIuCi0gICAgICAgICAgICBzdHJsY3B5KGNvbXBvbmVudFN0YXJ0LCBtYXRjaCArIHNl
YXJjaExlbmd0aCwgZW52aXJvbm1lbnRWYWx1ZUJ1ZmZlckxlbmd0aCAtIGVudmlyb25tZW50VmFs
dWVPZmZzZXQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBj
b21wb25lbnRTdGFydCBzdGlsbCBwb2ludHMgdG8gdGhlIGJlZ2lubmluZyBvZiBlbnZpcm9ubWVu
dFZhbHVlQnVmZmVyLCBzbyBkb24ndCBjb3B5IG92ZXIgdGhlIGNvbG9uLgotICAgICAgICAgICAg
Ly8gVGhlIGVkZ2UgY2FzZSBpcyBpZiB0aGUgY29sb24gaXMgdGhlIGxhc3QgY2hhcmFjdGVyIGlu
IHRoZSBzdHJpbmcsIHNvICJtYXRjaCArIHNlYXJjaExlbmd0aFdpdGhvdXRDb2xvbiArIDEiIGlz
IHRoZQotICAgICAgICAgICAgLy8gbnVsbCB0ZXJtaW5hdG9yIG9mIHRoZSBvcmlnaW5hbCBpbnB1
dCwgaW4gd2hpY2ggY2FzZSB0aGlzIGlzIHN0aWxsIHNhZmUuCi0gICAgICAgICAgICBzdHJsY3B5
KGNvbXBvbmVudFN0YXJ0LCBtYXRjaCArIHNlYXJjaExlbmd0aFdpdGhDb2xvbiwgZW52aXJvbm1l
bnRWYWx1ZUJ1ZmZlckxlbmd0aCAtIGVudmlyb25tZW50VmFsdWVPZmZzZXQpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBtYXRjaCA9IHN0cm5zdHIoY29tcG9uZW50U3RhcnQsIHNlYXJj
aFZhbHVlV2l0aENvbG9uLCBlbnZpcm9ubWVudFZhbHVlTGVuZ3RoIC0gc3RhdGljX2Nhc3Q8c2l6
ZV90Pihjb21wb25lbnRTdGFydCAtIGVudmlyb25tZW50VmFsdWUpKTsKKyAgICAgICAgb3V0cHV0
LmFwcGVuZChlbnRyeSk7CiAgICAgfQotICAgIAotICAgIC8vIFNlYXJjaCBmb3IgdGhlIHZhbHVl
IHdpdGhvdXQgYSB0cmFpbGluZyBjb2xvbiwgc2VlaW5nIGlmIHRoZSBvcmlnaW5hbCBpbnB1dCBl
bmRzIHdpdGggaXQuCi0gICAgbWF0Y2ggPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0LCBzZWFyY2hW
YWx1ZSwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9u
ZW50U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgd2hpbGUgKG1hdGNoICE9IE5VTEwp
IHsKLSAgICAgICAgaWYgKG1hdGNoW3NlYXJjaExlbmd0aF0gPT0gJ1wwJykKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBtYXRjaCA9IHN0cm5zdHIobWF0Y2ggKyAxLCBzZWFyY2hWYWx1ZSwg
ZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVfdD4obWF0Y2ggKyAxIC0g
ZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgIH0KLSAgICAKLSAgICAvLyBTaW5jZSB0aGUgb3JpZ2lu
YWwgaW5wdXQgZW5kcyB3aXRoIHRoZSBzZWFyY2gsIHN0cmlwIG91dCB0aGUgbGFzdCBjb21wb25l
bnQuCi0gICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgIC8vIFVwZGF0ZSBjb21wb25lbnRTdGFydCB0
byBwb2ludCB0byB0aGUgY29sb24gaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoZSBtYXRjaC4KLSAg
ICAgICAgY2hhciogbmV4dENvbG9uID0gc3RybnN0cihjb21wb25lbnRTdGFydCwgIjoiLCBlbnZp
cm9ubWVudFZhbHVlTGVuZ3RoIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21wb25lbnRTdGFydCAt
IGVudmlyb25tZW50VmFsdWUpKTsKLSAgICAgICAgd2hpbGUgKG5leHRDb2xvbiAmJiBuZXh0Q29s
b24gPCBtYXRjaCkgewotICAgICAgICAgICAgY29tcG9uZW50U3RhcnQgPSBuZXh0Q29sb247Ci0g
ICAgICAgICAgICBuZXh0Q29sb24gPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0ICsgMSwgIjoiLCBl
bnZpcm9ubWVudFZhbHVlTGVuZ3RoIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21wb25lbnRTdGFy
dCArIDEgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IC8vIFdoZXRoZXIgY29tcG9uZW50U3RhcnQgcG9pbnRzIHRvIHRoZSBvcmlnaW5hbCBzdHJpbmcg
b3IgdGhlIGxhc3QgY29sb24sIHB1dHRpbmcgdGhlIG51bGwgdGVybWluYXRvciB0aGVyZSB3aWxs
IGdldCB1cyB0aGUgZGVzaXJlZCByZXN1bHQuCi0gICAgICAgIGNvbXBvbmVudFN0YXJ0WzBdID0g
J1wwJzsKIAotICAgICAgICBmb3VuZEFueU1hdGNoZXMgPSB0cnVlOwotICAgIH0KKyAgICByZXR1
cm4gb3V0cHV0LnRvU3RyaW5nKCk7Cit9CiAKLSAgICAvLyBJZiB3ZSBmb3VuZCBubyBtYXRjaGVz
LCBkb24ndCBjaGFuZ2UgYW55dGhpbmcuCi0gICAgaWYgKCFmb3VuZEFueU1hdGNoZXMpCit2b2lk
IHJlbW92ZVZhbHVlc0VuZGluZ1dpdGgoY29uc3QgY2hhciogZW52aXJvbm1lbnRWYXJpYWJsZSwg
Y29uc3QgY2hhciogc2VhcmNoVmFsdWUpCit7CisgICAgQVNTRVJUKCFXVEY6OnRocmVhZGluZ0lz
SW5pdGlhbGl6ZWQoKSk7CisKKyAgICBjb25zdCBjaGFyKiBiZWZvcmUgPSBnZXRlbnYoZW52aXJv
bm1lbnRWYXJpYWJsZSk7CisgICAgaWYgKCFiZWZvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IC8vIElmIHdlIGhhdmUgbm90aGluZyBsZWZ0LCBqdXN0IHVuc2V0IHRoZSB2YXJpYWJsZQotICAg
IGlmIChlbnZpcm9ubWVudFZhbHVlWzBdID09ICdcMCcpIHsKKyAgICBhdXRvIGFmdGVyID0gc3Ry
aXBFbnRyaWVzRW5kaW5nV2l0aChiZWZvcmUsIHNlYXJjaFZhbHVlKTsKKyAgICBpZiAoYWZ0ZXIu
aXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIHNldGVudihlbnZpcm9ubWVudFZhcmlhYmxl
LCBlbnZpcm9ubWVudFZhbHVlLCAxKTsKKworICAgIHNldGVudihlbnZpcm9ubWVudFZhcmlhYmxl
LCBhZnRlci51dGY4KCkuZGF0YSgpLCAxKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRW52aXJvbm1l
bnRVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZp
cm9ubWVudFV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25t
ZW50VXRpbGl0aWVzLmgKaW5kZXggMjBjMzFiOTQ5OTE2ZWJkMTYzNzNhMzA3YmRmODIxOTYyMjdj
MjQ2OS4uZTgyOGQ3NGVhNTNiOTcxZDMxMzUzNjcxODE3MjEwYTliNGIyNTA4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwx
MyArMjcsMTUgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV0tEZWNsYXJhdGlvblNwZWNp
ZmllcnMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgRW52
aXJvbm1lbnRVdGlsaXRpZXMgewogCi1XS19FWFBPUlQgdm9pZCBzdHJpcFZhbHVlc0VuZGluZ1dp
dGhTdHJpbmcoY29uc3QgY2hhciogZW52aXJvbm1lbnRWYXJpYWJsZSwgY29uc3QgY2hhciogc2Vh
cmNoKTsKK1dLX0VYUE9SVCBTdHJpbmcgc3RyaXBFbnRyaWVzRW5kaW5nV2l0aChTdHJpbmdWaWV3
IGlucHV0LCBTdHJpbmdWaWV3IHN1ZmZpeCk7CitXS19FWFBPUlQgdm9pZCByZW1vdmVWYWx1ZXNF
bmRpbmdXaXRoKGNvbnN0IGNoYXIqIGVudmlyb25tZW50VmFyaWFibGUsIGNvbnN0IGNoYXIqIHNl
YXJjaCk7CiAKIH0gLy8gbmFtZXNwYWNlIEVudmlyb25tZW50VXRpbGl0aWVzCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZp
Y2UvUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1t
CmluZGV4IGExZmU1MjdkZTgyZmUyZGRlMzM3ZGVhM2E0ZWY4NDRlNGE0MWYzNWIuLmUwZGUyZDYy
ODA3ODJmZmNjODI1MzI5ZGIzNmEzMDQ0YjRmYjQxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvUGx1Z2luU2Vydmlj
ZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9p
bnQvQ29jb2EvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtNzgsNyAr
NzgsNyBAQCB2b2lkIFBsdWdpblNlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmVjdGlvbl90IGNv
bm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsaQogCiAgICAgLy8gUmVtb3ZlIHRoZSBQbHVn
aW5Qcm9jZXNzIHNoaW0gZnJvbSB0aGUgRFlMRF9JTlNFUlRfTElCUkFSSUVTIGVudmlyb25tZW50
IHZhcmlhYmxlIHNvIGFueSBwcm9jZXNzZXMKICAgICAvLyBzcGF3bmVkIGJ5IHRoZSBQbHVnaW5Q
cm9jZXNzIGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNyYXNoLgotICAgIEVudmly
b25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJU
X0xJQlJBUklFUyIsICIvUGx1Z2luUHJvY2Vzc1NoaW0uZHlsaWIiKTsKKyAgICBFbnZpcm9ubWVu
dFV0aWxpdGllczo6cmVtb3ZlVmFsdWVzRW5kaW5nV2l0aCgiRFlMRF9JTlNFUlRfTElCUkFSSUVT
IiwgIi9QbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiIpOwogICAgIFhQQ1NlcnZpY2VJbml0aWFsaXpl
cjxQbHVnaW5Qcm9jZXNzLCBQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZT4oYWRvcHRP
U09iamVjdChjb25uZWN0aW9uKSwgaW5pdGlhbGl6ZXJNZXNzYWdlLCBwcmlvcml0eUJvb3N0TWVz
c2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNl
L1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50
Lm1tCmluZGV4IDg3YWMxMzI4OWEzNDEyMzI3MDNjZjY2MjBiYmFhMjgwODgzMzRmMTYuLjI4Y2Uw
MjRjN2M1NDkzMDc1NTY1OGI5OThiMWY0YzA4NGVkOWMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNl
cnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FbnRyeVBv
aW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29udGVudFNlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0CiB7CiAgICAgLy8gUmVtb3ZlIHRo
ZSBXZWJQcm9jZXNzU2hpbSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1l
bnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRoaXMg
cHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KLSAgICBXZWJL
aXQ6OkVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZ
TERfSU5TRVJUX0xJQlJBUklFUyIsICIvV2ViUHJvY2Vzc1NoaW0uZHlsaWIiKTsKKyAgICBXZWJL
aXQ6OkVudmlyb25tZW50VXRpbGl0aWVzOjpyZW1vdmVWYWx1ZXNFbmRpbmdXaXRoKCJEWUxEX0lO
U0VSVF9MSUJSQVJJRVMiLCAiL1dlYlByb2Nlc3NTaGltLmR5bGliIik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEdTSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE3NjY2NGQ2ODEzMzJjODk2ODFjYmViYmQ0
MzhiYzI5M2M4Mjk1YzEuLmE0YzllMDc2YTExNDFhZTFhNGRlZDRjNjZjOTBjZTI4ZjQ2NWZhMjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMi0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgRW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5n
V2l0aFN0cmluZyBpc24ndCB0aHJlYWQtc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9FbnZpcm9u
bWVudFV0aWxpdGllc1Rlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3RyaXApOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIEp1c3QgdGVzdCB0aGUgbmV3
IHN0cmluZy1wcm9jZXNzaW5nIGZ1bmN0aW9uIGFuZCBkb24ndCB0b3VjaCB0aGUgYWN0dWFsIGVu
dmlyb25tZW50LgorCiAyMDE5LTAyLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dLVFJdIEF2b2lkIHN0YXJ0aW5nIG5ldyBOZXR3b3JrUHJvY2Vzc2VzIHVu
bmVjZXNzYXJpbHkgd2hlbiBydW5uaW5nIHRoZSBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25tZW50VXRpbGl0aWVzVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9FbnZpcm9ubWVudFV0aWxpdGll
c1Rlc3QuY3BwCmluZGV4IGUxZGU4MzI2NWZiZjcxZGM2ODNlN2YzYzUxYjU1M2NiMzc3Y2E4YTQu
LjQxZDAzNWQyM2NiOGNhMTE4MzdmNzg2MzQ2N2JkMjEyYjlkYjQ1ZDIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25tZW50VXRpbGl0aWVzVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJvbm1lbnRVdGls
aXRpZXNUZXN0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDYwICsyOCw1NiBAQAogI2luY2x1ZGUgIlRlc3QuaCIKIAogI2luY2x1
ZGUgPFdlYktpdC9FbnZpcm9ubWVudFV0aWxpdGllcy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IGVudmlyb25t
ZW50VmFyaWFibGUgPSAiRFlMRF9JTlNFUlRfTElCUkFSSUVTIjsKICNkZWZpbmUgUFJPQ0VTU19E
WUxJQiAiUHJvY2Vzcy5keWxpYiIKIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmlwVmFsdWUgPSAiLyIg
UFJPQ0VTU19EWUxJQjsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwKGNvbnN0IGNoYXIqIGlu
cHV0KQorc3RhdGljIFN0cmluZyBzdHJpcChTdHJpbmdWaWV3IGlucHV0KQogewotICAgIHNldGVu
dihlbnZpcm9ubWVudFZhcmlhYmxlLCBpbnB1dCwgMSk7Ci0gICAgV2ViS2l0OjpFbnZpcm9ubWVu
dFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKGVudmlyb25tZW50VmFyaWFi
bGUsIHN0cmlwVmFsdWUpOwotICAgIHJldHVybiBnZXRlbnYoZW52aXJvbm1lbnRWYXJpYWJsZSk7
CisgICAgcmV0dXJuIFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwRW50cmllc0Vu
ZGluZ1dpdGgoaW5wdXQsIHN0cmlwVmFsdWUpOwogfQogCi1URVNUKFdlYktpdCwgU3RyaXBWYWx1
ZXNFbmRpbmdXaXRoU3RyaW5nKQorVEVTVChXZWJLaXQsIFN0cmlwRW50cmllc0VuZGluZ1dpdGgp
CiB7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIiKSwgIiIpOwotICAgIEVYUEVDVF9TVFJFUShz
dHJpcCgiOiIpLCAiOiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOjoiKSwgIjo6Iik7Ci0g
ICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6OjoiKSwgIjo6OiIpOwotICAgIEVYUEVDVF9TVFJFUShz
dHJpcCgiOjo6OiIpLCAiOjo6OiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOjo6OjoiKSwg
Ijo6Ojo6Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIiKSwgIiIpOworICAgIEVYUEVDVF9FUShz
dHJpcCgiOiIpLCAiOiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOjoiKSwgIjo6Iik7CisgICAg
RVhQRUNUX0VRKHN0cmlwKCI6OjoiKSwgIjo6OiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOjo6
OiIpLCAiOjo6OiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOjo6OjoiKSwgIjo6Ojo6Iik7CiAK
LSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiksIFBST0NFU1NfRFlMSUIpOwot
ICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJQiksICI6IiBQUk9DRVNTX0RZ
TElCKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiAiOiIpLCBQUk9DRVNT
X0RZTElCICI6Iik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6IiBQUk9DRVNTX0RZTElCICI6
IiksICI6IiBQUk9DRVNTX0RZTElCICI6Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKFBST0NFU1Nf
RFlMSUIpLCBQUk9DRVNTX0RZTElCKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjoiIFBST0NFU1Nf
RFlMSUIpLCAiOiIgUFJPQ0VTU19EWUxJQik7CisgICAgRVhQRUNUX0VRKHN0cmlwKFBST0NFU1Nf
RFlMSUIgIjoiKSwgUFJPQ0VTU19EWUxJQiAiOiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOiIg
UFJPQ0VTU19EWUxJQiAiOiIpLCAiOiIgUFJPQ0VTU19EWUxJQiAiOiIpOwogCi0gICAgRVhQRUNU
X1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1NU
UkVRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIpOwotICAgIEVYUEVDVF9TVFJF
UShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiOiIpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfU1RS
RVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZTElCICI6IiksICI6Iik7CisgICAgRVhQRUNUX0VRKHN0
cmlwKCIvIiBQUk9DRVNTX0RZTElCKSwgIiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOi8iIFBS
T0NFU1NfRFlMSUIpLCAiIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElC
ICI6IiksICIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZTElCICI6Iiks
ICI6Iik7CiAKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiAiLyIpLCBQUk9D
RVNTX0RZTElCICIvIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6IiBQUk9DRVNTX0RZTElC
ICIvIiksICI6IiBQUk9DRVNTX0RZTElCICIvIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKFBS
T0NFU1NfRFlMSUIgIi86IiksIFBST0NFU1NfRFlMSUIgIi86Iik7Ci0gICAgRVhQRUNUX1NUUkVR
KHN0cmlwKCI6IiBQUk9DRVNTX0RZTElCICIvOiIpLCAiOiIgUFJPQ0VTU19EWUxJQiAiLzoiKTsK
KyAgICBFWFBFQ1RfRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiAiLyIpLCBQUk9DRVNTX0RZTElCICIv
Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6IiBQUk9DRVNTX0RZTElCICIvIiksICI6IiBQUk9D
RVNTX0RZTElCICIvIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKFBST0NFU1NfRFlMSUIgIi86Iiks
IFBST0NFU1NfRFlMSUIgIi86Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6IiBQUk9DRVNTX0RZ
TElCICIvOiIpLCAiOiIgUFJPQ0VTU19EWUxJQiAiLzoiKTsKIAotICAgIEVYUEVDVF9TVFJFUShz
dHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIpLCAiLyIgUFJPQ0VTU19EWUxJQiAiLyIpOwotICAg
IEVYUEVDVF9TVFJFUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIgIi8iKSwgIjovIiBQUk9DRVNT
X0RZTElCICIvIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICIv
OiIpLCAiLyIgUFJPQ0VTU19EWUxJQiAiLzoiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjov
IiBQUk9DRVNTX0RZTElCICIvOiIpLCAiOi8iIFBST0NFU1NfRFlMSUIgIi86Iik7CisgICAgRVhQ
RUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICIvIiksICIvIiBQUk9DRVNTX0RZTElCICIv
Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiAiLyIpLCAiOi8iIFBS
T0NFU1NfRFlMSUIgIi8iKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIg
Ii86IiksICIvIiBQUk9DRVNTX0RZTElCICIvOiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOi8i
IFBST0NFU1NfRFlMSUIgIi86IiksICI6LyIgUFJPQ0VTU19EWUxJQiAiLzoiKTsKIAotICAgIEVY
UEVDVF9TVFJFUShzdHJpcCgiL0JlZm9yZS5keWxpYjovIiBQUk9DRVNTX0RZTElCKSwgIi9CZWZv
cmUuZHlsaWIiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIjov
QWZ0ZXIuZHlsaWIiKSwgIi9BZnRlci5keWxpYiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgi
L0JlZm9yZS5keWxpYjovIiBQUk9DRVNTX0RZTElCICI6L0FmdGVyLmR5bGliIiksICIvQmVmb3Jl
LmR5bGliOi9BZnRlci5keWxpYiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiL0JlZm9yZS5k
eWxpYjovIiBQUk9DRVNTX0RZTElCICI6L01pZGRsZS5keWxpYjovIiBQUk9DRVNTX0RZTElCICI6
L0FmdGVyLmR5bGliIiksICIvQmVmb3JlLmR5bGliOi9NaWRkbGUuZHlsaWI6L0FmdGVyLmR5bGli
Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvQmVmb3JlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIp
LCAiL0JlZm9yZS5keWxpYiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJ
QiAiOi9BZnRlci5keWxpYiIpLCAiL0FmdGVyLmR5bGliIik7CisgICAgRVhQRUNUX0VRKHN0cmlw
KCIvQmVmb3JlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIgIjovQWZ0ZXIuZHlsaWIiKSwgIi9CZWZv
cmUuZHlsaWI6L0FmdGVyLmR5bGliIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvQmVmb3JlLmR5
bGliOi8iIFBST0NFU1NfRFlMSUIgIjovTWlkZGxlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIgIjov
QWZ0ZXIuZHlsaWIiKSwgIi9CZWZvcmUuZHlsaWI6L01pZGRsZS5keWxpYjovQWZ0ZXIuZHlsaWIi
KTsKIAotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiOi8iIFBST0NF
U1NfRFlMSUIpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi8iIFBST0NFU1Nf
RFlMSUIgIjovIiBQUk9DRVNTX0RZTElCICI6LyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIpOwor
ICAgIEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiOi8iIFBST0NFU1NfRFlMSUIp
LCAiIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICI6LyIgUFJPQ0VT
U19EWUxJQiAiOi8iIFBST0NFU1NfRFlMSUIpLCAiIik7CiAKLSAgICBFWFBFQ1RfU1RSRVEoc3Ry
aXAoIi91c3IvbGliLyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIpOwotICAgIEVYUEVDVF9TVFJF
UShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIpOwor
ICAgIEVYUEVDVF9FUShzdHJpcCgiL3Vzci9saWIvIiBQUk9DRVNTX0RZTElCKSwgIiIpOworICAg
IEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIgUFJPQ0VTU19EWUxJQiksICIi
KTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362659</attachid>
            <date>2019-02-21 16:01:23 -0800</date>
            <delta_ts>2019-03-01 14:40:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194612-20190221160122.patch</filename>
            <type>text/plain</type>
            <size>18440</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiYTU5NzY4YzIwMTk4Y2Y5
NTBlYmZjOWVjZmUyYWJkZDc2YzdjODYuLmRhM2JmNjViMTYxOWI3NzQ4YWFlY2VjODNjYjI1MmU3
NDljODQzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDItMjEgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIEVudmlyb25tZW50VXRp
bGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDYxMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgQVBJIHRl
c3QgcmVhbGx5IHNob3VsZG4ndCBiZSB2ZXJpZnlpbmcgdGhhdCB0aGUgYWN0dWFsIGVudmlyb25t
ZW50IHdhcyBzdWNjZXNzZnVsbHkgbW9kaWZpZWQuCisKKyAgICAgICAgQXQgaXRzIGNvcmUsIHN0
cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyBpcyByZWFsbHkganVzdCBzcGxpdC1maWx0ZXItam9p
bi4gQnkgcmVwbGFjaW5nIGl0IHdpdGggYSBwYWlyIG9mCisgICAgICAgIHNpbXBsZSBmdW5jdGlv
bnMgLS0gb25lIGZvciBzdHJpbmcgcHJvY2Vzc2luZywgb25lIGZvciBlbnZpcm9ubWVudCBwcm9j
ZXNzaW5nIC0tIHRoZSBBUEkgdGVzdCBvbmx5IG5lZWRzIHRvCisgICAgICAgIHdvcnJ5IGFib3V0
IHRoZSBmb3JtZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwRW50
cmllc0VuZGluZ1dpdGgpOgorICAgICAgICAoV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6
cmVtb3ZlVmFsdWVzRW5kaW5nV2l0aCk6CisgICAgICAgIChXZWJLaXQ6OkVudmlyb25tZW50VXRp
bGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IFBsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaDoKKyAgICAgICAgUmVwbGFjZSBv
bGQgZnVuY3Rpb24gd2l0aCBhIHBhaXIgb2Ygc2ltcGxlciBvbmVzLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50
cnlQb2ludC5tbToKKyAgICAgICAgKE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1BsdWdpblNlcnZp
Y2VFbnRyeVBvaW50Lm1tOgorICAgICAgICAoUGx1Z2luU2VydmljZUluaXRpYWxpemVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50
U2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJDb250ZW50U2VydmljZUluaXRpYWxp
emVyKToKKyAgICAgICAgVXBkYXRlIGZ1bmN0aW9uIG5hbWUuCisKIDIwMTktMDItMjEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBUEk6OkhU
VFBDb29raWVTdG9yZSBzaG91bGQgZXhwb3NlIHNldENvb2tpZXMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0
d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9F
bnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCmlu
ZGV4IGI3ZjUzOTJjMGMwMTJkZGYwM2JmNTMzOTE4NjU1MTI2MmJhZGJlMGIuLjRkNjRjZWQ1MTc0
MDk0ZGJiNDNiZDdhNGE1ZGJjZDU1N2E2ZmJjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNl
RW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9p
bnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTU2LDYg
KzU2LDYgQEAgdm9pZCBOZXR3b3JrU2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3Qg
Y29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRpYWwKIHsKICAgICAvLyBSZW1vdmUgdGhlIFNl
Y0l0ZW1TaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJp
YWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKICAgICAvLyB0aGUgdGhpcyBwcm9jZXNz
IGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNyYXNoLgotICAgIEVudmlyb25tZW50
VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJB
UklFUyIsICIvU2VjSXRlbVNoaW0uZHlsaWIiKTsKKyAgICBFbnZpcm9ubWVudFV0aWxpdGllczo6
cmVtb3ZlVmFsdWVzRW5kaW5nV2l0aCgiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9TZWNJdGVt
U2hpbS5keWxpYiIpOwogICAgIFhQQ1NlcnZpY2VJbml0aWFsaXplcjxOZXR3b3JrUHJvY2Vzcywg
TmV0d29ya1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlPihhZG9wdE9TT2JqZWN0KGNvbm5lY3Rp
b24pLCBpbml0aWFsaXplck1lc3NhZ2UsIHByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuY3Bw
CmluZGV4IGJiODAxMjBmYzIyYzRiMjljZmU0NDZmOGY0ZmVmYjQ2YjZjZmNhM2YuLjlhMmM2YWFi
NDE3ZGNhYTJkYzdmZjBmNzhhN2QxNTNhN2U3MmMyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmNwcApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwNCArMjcsNDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbnZpcm9ubWVudFV0aWxpdGllcy5o
IgogCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRsaWI+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIEVudmlyb25tZW50VXRpbGl0aWVzIHsKIAotdm9pZCBzdHJpcFZhbHVlc0Vu
ZGluZ1dpdGhTdHJpbmcoY29uc3QgY2hhciogZW52aXJvbm1lbnRWYXJpYWJsZSwgY29uc3QgY2hh
ciogc2VhcmNoVmFsdWUpCitTdHJpbmcgc3RyaXBFbnRyaWVzRW5kaW5nV2l0aChTdHJpbmdWaWV3
IGlucHV0LCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsKLSAgICBBU1NFUlQoZW52aXJvbm1lbnRWYXJp
YWJsZSk7Ci0gICAgQVNTRVJUKHNlYXJjaFZhbHVlKTsKLSAgICAKLSAgICAvLyBHcmFiIHRoZSBj
dXJyZW50IHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICBjaGFyKiBlbnZp
cm9ubWVudFZhbHVlID0gZ2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUpOworICAgIFN0cmluZ0J1
aWxkZXIgb3V0cHV0OwogCi0gICAgaWYgKCFlbnZpcm9ubWVudFZhbHVlIHx8IGVudmlyb25tZW50
VmFsdWVbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3Qgc2l6ZV90IGVu
dmlyb25tZW50VmFsdWVMZW5ndGggPSBzdHJsZW4oZW52aXJvbm1lbnRWYWx1ZSk7Ci0gICAgY29u
c3Qgc2l6ZV90IGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5ndGggPSBlbnZpcm9ubWVudFZhbHVl
TGVuZ3RoICsgMTsKLQotICAgIC8vIFNldCB1cCB0aGUgc3RyaW5ncyB3ZSdsbCBiZSBzZWFyY2hp
bmcgZm9yLgotICAgIHNpemVfdCBzZWFyY2hMZW5ndGggPSBzdHJsZW4oc2VhcmNoVmFsdWUpOwot
ICAgIGlmICghc2VhcmNoTGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8Y2hh
cj4gc2VhcmNoVmFsdWVXaXRoQ29sb25WZWN0b3I7Ci0gICAgc2VhcmNoVmFsdWVXaXRoQ29sb25W
ZWN0b3IuZ3JvdyhzZWFyY2hMZW5ndGggKyAyKTsKLSAgICBjaGFyKiBzZWFyY2hWYWx1ZVdpdGhD
b2xvbiA9IHNlYXJjaFZhbHVlV2l0aENvbG9uVmVjdG9yLmRhdGEoKTsKLSAgICBzaXplX3Qgc2Vh
cmNoTGVuZ3RoV2l0aENvbG9uID0gc2VhcmNoTGVuZ3RoICsgMTsKLQotICAgIG1lbWNweShzZWFy
Y2hWYWx1ZVdpdGhDb2xvbiwgc2VhcmNoVmFsdWUsIHNlYXJjaExlbmd0aCk7Ci0gICAgc2VhcmNo
VmFsdWVXaXRoQ29sb25bc2VhcmNoTGVuZ3RoXSA9ICc6JzsKLSAgICBzZWFyY2hWYWx1ZVdpdGhD
b2xvbltzZWFyY2hMZW5ndGhXaXRoQ29sb25dID0gJ1wwJzsKLSAgICAKLSAgICAvLyBMb29wIG92
ZXIgZW52aXJvbm1lbnRWYWx1ZUJ1ZmZlciwgcmVtb3ZpbmcgYW55IGNvbXBvbmVudHMgdGhhdCBt
YXRjaCB0aGUgc2VhcmNoIHZhbHVlIGVuZGluZyB3aXRoIGEgY29sb24uCi0gICAgY2hhciogY29t
cG9uZW50U3RhcnQgPSBlbnZpcm9ubWVudFZhbHVlOwotICAgIGNoYXIqIG1hdGNoID0gc3RybnN0
cihjb21wb25lbnRTdGFydCwgc2VhcmNoVmFsdWVXaXRoQ29sb24sIGVudmlyb25tZW50VmFsdWVM
ZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0IC0gZW52aXJvbm1lbnRW
YWx1ZSkpOwotICAgIGJvb2wgZm91bmRBbnlNYXRjaGVzID0gbWF0Y2ggIT0gTlVMTDsKLSAgICB3
aGlsZSAobWF0Y2ggIT0gTlVMTCkgewotICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50U3RhcnQg
dG8gcG9pbnQgdG8gdGhlIGNvbG9uIGltbWVkaWF0ZWx5IHByZWNlZGluZyB0aGUgbWF0Y2guCi0g
ICAgICAgIGNoYXIqIG5leHRDb2xvbiA9IHN0cm5zdHIoY29tcG9uZW50U3RhcnQsICI6IiwgZW52
aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3RhcnQg
LSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgICAgIHdoaWxlIChuZXh0Q29sb24gJiYgbmV4dENv
bG9uIDwgbWF0Y2gpIHsKLSAgICAgICAgICAgIGNvbXBvbmVudFN0YXJ0ID0gbmV4dENvbG9uOwot
ICAgICAgICAgICAgbmV4dENvbG9uID0gc3RybnN0cihjb21wb25lbnRTdGFydCArIDEsICI6Iiwg
ZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3Rh
cnQgKyAxIC0gZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgICAgICB9CisgICAgYXV0byBoYXNBcHBl
bmRlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byBlbnRyeSA6IGlucHV0LnNwbGl0QWxsb3dpbmdF
bXB0eUVudHJpZXMoJzonKSkgeworICAgICAgICBpZiAoZW50cnkuZW5kc1dpdGgoc3VmZml4KSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbXBvbmVu
dFN0YXJ0ID49IGVudmlyb25tZW50VmFsdWUpOwotICAgICAgICBzaXplX3QgZW52aXJvbm1lbnRW
YWx1ZU9mZnNldCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3RhcnQgLSBlbnZpcm9u
bWVudFZhbHVlKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW52aXJvbm1lbnRWYWx1ZU9mZnNl
dCA8IGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5ndGgpOworICAgICAgICBpZiAoaGFzQXBwZW5k
ZWQpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCc6Jyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGhhc0FwcGVuZGVkID0gdHJ1ZTsKIAotICAgICAgICAvLyBDb3B5IG92ZXIgZXZlcnl0
aGluZyByaWdodCBvZiB0aGUgbWF0Y2ggdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IHN0YXJ0LCBh
bmQgc2VhcmNoIGZyb20gdGhlcmUgYWdhaW4uCi0gICAgICAgIGlmIChjb21wb25lbnRTdGFydFsw
XSA9PSAnOicpIHsKLSAgICAgICAgICAgIC8vIElmIGNvbXBvbmVudFN0YXJ0IHBvaW50cyB0byBh
IGNvbG9uLCBjb3B5IHRoZSBjb2xvbiBvdmVyLgotICAgICAgICAgICAgc3RybGNweShjb21wb25l
bnRTdGFydCwgbWF0Y2ggKyBzZWFyY2hMZW5ndGgsIGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5n
dGggLSBlbnZpcm9ubWVudFZhbHVlT2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIE90aGVyd2lzZSwgY29tcG9uZW50U3RhcnQgc3RpbGwgcG9pbnRzIHRvIHRoZSBiZWdp
bm5pbmcgb2YgZW52aXJvbm1lbnRWYWx1ZUJ1ZmZlciwgc28gZG9uJ3QgY29weSBvdmVyIHRoZSBj
b2xvbi4KLSAgICAgICAgICAgIC8vIFRoZSBlZGdlIGNhc2UgaXMgaWYgdGhlIGNvbG9uIGlzIHRo
ZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBzbyAibWF0Y2ggKyBzZWFyY2hMZW5ndGhX
aXRob3V0Q29sb24gKyAxIiBpcyB0aGUKLSAgICAgICAgICAgIC8vIG51bGwgdGVybWluYXRvciBv
ZiB0aGUgb3JpZ2luYWwgaW5wdXQsIGluIHdoaWNoIGNhc2UgdGhpcyBpcyBzdGlsbCBzYWZlLgot
ICAgICAgICAgICAgc3RybGNweShjb21wb25lbnRTdGFydCwgbWF0Y2ggKyBzZWFyY2hMZW5ndGhX
aXRoQ29sb24sIGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5ndGggLSBlbnZpcm9ubWVudFZhbHVl
T2Zmc2V0KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbWF0Y2ggPSBzdHJuc3RyKGNv
bXBvbmVudFN0YXJ0LCBzZWFyY2hWYWx1ZVdpdGhDb2xvbiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0
aCAtIHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVl
KSk7CisgICAgICAgIG91dHB1dC5hcHBlbmQoZW50cnkpOwogICAgIH0KLSAgICAKLSAgICAvLyBT
ZWFyY2ggZm9yIHRoZSB2YWx1ZSB3aXRob3V0IGEgdHJhaWxpbmcgY29sb24sIHNlZWluZyBpZiB0
aGUgb3JpZ2luYWwgaW5wdXQgZW5kcyB3aXRoIGl0LgotICAgIG1hdGNoID0gc3RybnN0cihjb21w
b25lbnRTdGFydCwgc2VhcmNoVmFsdWUsIGVudmlyb25tZW50VmFsdWVMZW5ndGggLSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0IC0gZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgIHdo
aWxlIChtYXRjaCAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChtYXRjaFtzZWFyY2hMZW5ndGhdID09
ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbWF0Y2ggPSBzdHJuc3RyKG1hdGNo
ICsgMSwgc2VhcmNoVmFsdWUsIGVudmlyb25tZW50VmFsdWVMZW5ndGggLSBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1hdGNoICsgMSAtIGVudmlyb25tZW50VmFsdWUpKTsKLSAgICB9Ci0gICAgCi0gICAg
Ly8gU2luY2UgdGhlIG9yaWdpbmFsIGlucHV0IGVuZHMgd2l0aCB0aGUgc2VhcmNoLCBzdHJpcCBv
dXQgdGhlIGxhc3QgY29tcG9uZW50LgotICAgIGlmIChtYXRjaCkgewotICAgICAgICAvLyBVcGRh
dGUgY29tcG9uZW50U3RhcnQgdG8gcG9pbnQgdG8gdGhlIGNvbG9uIGltbWVkaWF0ZWx5IHByZWNl
ZGluZyB0aGUgbWF0Y2guCi0gICAgICAgIGNoYXIqIG5leHRDb2xvbiA9IHN0cm5zdHIoY29tcG9u
ZW50U3RhcnQsICI6IiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVf
dD4oY29tcG9uZW50U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgICAgIHdoaWxlIChu
ZXh0Q29sb24gJiYgbmV4dENvbG9uIDwgbWF0Y2gpIHsKLSAgICAgICAgICAgIGNvbXBvbmVudFN0
YXJ0ID0gbmV4dENvbG9uOwotICAgICAgICAgICAgbmV4dENvbG9uID0gc3RybnN0cihjb21wb25l
bnRTdGFydCArIDEsICI6IiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNp
emVfdD4oY29tcG9uZW50U3RhcnQgKyAxIC0gZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICAvLyBXaGV0aGVyIGNvbXBvbmVudFN0YXJ0IHBvaW50cyB0byB0
aGUgb3JpZ2luYWwgc3RyaW5nIG9yIHRoZSBsYXN0IGNvbG9uLCBwdXR0aW5nIHRoZSBudWxsIHRl
cm1pbmF0b3IgdGhlcmUgd2lsbCBnZXQgdXMgdGhlIGRlc2lyZWQgcmVzdWx0LgotICAgICAgICBj
b21wb25lbnRTdGFydFswXSA9ICdcMCc7CiAKLSAgICAgICAgZm91bmRBbnlNYXRjaGVzID0gdHJ1
ZTsKLSAgICB9CisgICAgcmV0dXJuIG91dHB1dC50b1N0cmluZygpOworfQogCi0gICAgLy8gSWYg
d2UgZm91bmQgbm8gbWF0Y2hlcywgZG9uJ3QgY2hhbmdlIGFueXRoaW5nLgotICAgIGlmICghZm91
bmRBbnlNYXRjaGVzKQordm9pZCByZW1vdmVWYWx1ZXNFbmRpbmdXaXRoKGNvbnN0IGNoYXIqIGVu
dmlyb25tZW50VmFyaWFibGUsIGNvbnN0IGNoYXIqIHNlYXJjaFZhbHVlKQoreworICAgIGNvbnN0
IGNoYXIqIGJlZm9yZSA9IGdldGVudihlbnZpcm9ubWVudFZhcmlhYmxlKTsKKyAgICBpZiAoIWJl
Zm9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGxlZnQs
IGp1c3QgdW5zZXQgdGhlIHZhcmlhYmxlCi0gICAgaWYgKGVudmlyb25tZW50VmFsdWVbMF0gPT0g
J1wwJykgeworICAgIGF1dG8gYWZ0ZXIgPSBzdHJpcEVudHJpZXNFbmRpbmdXaXRoKGJlZm9yZSwg
c2VhcmNoVmFsdWUpOworICAgIGlmIChhZnRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zZXRl
bnYoZW52aXJvbm1lbnRWYXJpYWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0g
ICAgc2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUsIGVudmlyb25tZW50VmFsdWUsIDEpOworCisg
ICAgc2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUsIGFmdGVyLnV0ZjgoKS5kYXRhKCksIDEpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBFbnZpcm9ubWVudFV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaAppbmRleCAyMGMzMWI5
NDk5MTZlYmQxNjM3M2EzMDdiZGY4MjE5NjIyN2MyNDY5Li5lODI4ZDc0ZWE1M2I5NzFkMzEzNTM2
NzE4MTcyMTBhOWI0YjI1MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEzICsyNywxNSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJXS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBFbnZpcm9ubWVudFV0aWxpdGllcyB7CiAKLVdLX0VY
UE9SVCB2b2lkIHN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyhjb25zdCBjaGFyKiBlbnZpcm9u
bWVudFZhcmlhYmxlLCBjb25zdCBjaGFyKiBzZWFyY2gpOworV0tfRVhQT1JUIFN0cmluZyBzdHJp
cEVudHJpZXNFbmRpbmdXaXRoKFN0cmluZ1ZpZXcgaW5wdXQsIFN0cmluZ1ZpZXcgc3VmZml4KTsK
K1dLX0VYUE9SVCB2b2lkIHJlbW92ZVZhbHVlc0VuZGluZ1dpdGgoY29uc3QgY2hhciogZW52aXJv
bm1lbnRWYXJpYWJsZSwgY29uc3QgY2hhciogc2VhcmNoKTsKIAogfSAvLyBuYW1lc3BhY2UgRW52
aXJvbm1lbnRVdGlsaXRpZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5t
bSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZp
Y2UvUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggYTFmZTUyN2RlODJmZTJkZGUzMzdk
ZWEzYTRlZjg0NGU0YTQxZjM1Yi4uZTBkZTJkNjI4MDc4MmZmY2M4MjUzMjlkYjM2YTMwNDRiNGZi
NDE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1BsdWdpblNl
cnZpY2VFbnRyeVBvaW50Lm1tCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUGx1Z2luU2VydmljZUlu
aXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRp
YWxpCiAKICAgICAvLyBSZW1vdmUgdGhlIFBsdWdpblByb2Nlc3Mgc2hpbSBmcm9tIHRoZSBEWUxE
X0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3Nlcwog
ICAgIC8vIHNwYXduZWQgYnkgdGhlIFBsdWdpblByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0
aGUgc2hpbSBhbmQgY3Jhc2guCi0gICAgRW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVz
RW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9QbHVnaW5Qcm9jZXNz
U2hpbS5keWxpYiIpOworICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpyZW1vdmVWYWx1ZXNFbmRp
bmdXaXRoKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1BsdWdpblByb2Nlc3NTaGltLmR5bGli
Iik7CiAgICAgWFBDU2VydmljZUluaXRpYWxpemVyPFBsdWdpblByb2Nlc3MsIFBsdWdpblNlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlPihhZG9wdE9TT2JqZWN0KGNvbm5lY3Rpb24pLCBpbml0aWFs
aXplck1lc3NhZ2UsIHByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2Vydmlj
ZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggODdhYzEzMjg5YTM0MTIzMjcw
M2NmNjYyMGJiYWEyODA4ODMzNGYxNi4uMjhjZTAyNGM3YzU0OTMwNzU1NjU4Yjk5OGIxZjRjMDg0
ZWQ5YzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250
ZW50U2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBXZWJDb250ZW50
U2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVj
dF90IGluaXQKIHsKICAgICAvLyBSZW1vdmUgdGhlIFdlYlByb2Nlc3NTaGltIGZyb20gdGhlIERZ
TERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2Vz
IHNwYXduZWQgYnkKICAgICAvLyB0aGUgdGhpcyBwcm9jZXNzIGRvbid0IHRyeSB0byBpbnNlcnQg
dGhlIHNoaW0gYW5kIGNyYXNoLgotICAgIFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0
cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9XZWJQ
cm9jZXNzU2hpbS5keWxpYiIpOworICAgIFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnJl
bW92ZVZhbHVlc0VuZGluZ1dpdGgoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsICIvV2ViUHJvY2Vz
c1NoaW0uZHlsaWIiKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgR1NJbml0aWFs
aXplKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggN2IyNGE4Nzc3M2E1M2Y2ZDg0YWVhMjI0YTdkYmRiMmYyNTcyZmQ0Yy4uOTdkNTE4MGZmMDM2
MDEwZTE1N2Y2ZTAzNTFiM2M2OGFiZDM4ZDk4MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAyLTIxICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBFbnZpcm9ubWVu
dFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nIGlzbid0IHRocmVhZC1zYWZl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25tZW50VXRpbGl0aWVzVGVzdC5jcHA6CisgICAg
ICAgIEp1c3QgdGVzdCB0aGUgbmV3IHN0cmluZy1wcm9jZXNzaW5nIGZ1bmN0aW9uIGFuZCBkb24n
dCB0b3VjaCB0aGUgYWN0dWFsIGVudmlyb25tZW50LgorCiAyMDE5LTAyLTIxICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgbWFjT1MgYnVp
bGQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25t
ZW50VXRpbGl0aWVzVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9F
bnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGUxZGU4MzI2NWZiZjcxZGM2ODNlN2Yz
YzUxYjU1M2NiMzc3Y2E4YTQuLjQxZDAzNWQyM2NiOGNhMTE4MzdmNzg2MzQ2N2JkMjEyYjlkYjQ1
ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25t
ZW50VXRpbGl0aWVzVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYwICsyOCw1NiBAQAogI2luY2x1ZGUg
IlRlc3QuaCIKIAogI2luY2x1ZGUgPFdlYktpdC9FbnZpcm9ubWVudFV0aWxpdGllcy5oPgotI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNvbnN0IGNo
YXIqIGNvbnN0IGVudmlyb25tZW50VmFyaWFibGUgPSAiRFlMRF9JTlNFUlRfTElCUkFSSUVTIjsK
ICNkZWZpbmUgUFJPQ0VTU19EWUxJQiAiUHJvY2Vzcy5keWxpYiIKIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmlwVmFsdWUgPSAiLyIgUFJPQ0VTU19EWUxJQjsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHN0
cmlwKGNvbnN0IGNoYXIqIGlucHV0KQorc3RhdGljIFN0cmluZyBzdHJpcChTdHJpbmdWaWV3IGlu
cHV0KQogewotICAgIHNldGVudihlbnZpcm9ubWVudFZhcmlhYmxlLCBpbnB1dCwgMSk7Ci0gICAg
V2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5n
KGVudmlyb25tZW50VmFyaWFibGUsIHN0cmlwVmFsdWUpOwotICAgIHJldHVybiBnZXRlbnYoZW52
aXJvbm1lbnRWYXJpYWJsZSk7CisgICAgcmV0dXJuIFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRp
ZXM6OnN0cmlwRW50cmllc0VuZGluZ1dpdGgoaW5wdXQsIHN0cmlwVmFsdWUpOwogfQogCi1URVNU
KFdlYktpdCwgU3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKQorVEVTVChXZWJLaXQsIFN0cmlw
RW50cmllc0VuZGluZ1dpdGgpCiB7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIiKSwgIiIpOwot
ICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOiIpLCAiOiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJp
cCgiOjoiKSwgIjo6Iik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6OjoiKSwgIjo6OiIpOwot
ICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOjo6OiIpLCAiOjo6OiIpOwotICAgIEVYUEVDVF9TVFJF
UShzdHJpcCgiOjo6OjoiKSwgIjo6Ojo6Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIiKSwgIiIp
OworICAgIEVYUEVDVF9FUShzdHJpcCgiOiIpLCAiOiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgi
OjoiKSwgIjo6Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6OjoiKSwgIjo6OiIpOworICAgIEVY
UEVDVF9FUShzdHJpcCgiOjo6OiIpLCAiOjo6OiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOjo6
OjoiKSwgIjo6Ojo6Iik7CiAKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiks
IFBST0NFU1NfRFlMSUIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJ
QiksICI6IiBQUk9DRVNTX0RZTElCKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoUFJPQ0VTU19E
WUxJQiAiOiIpLCBQUk9DRVNTX0RZTElCICI6Iik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6
IiBQUk9DRVNTX0RZTElCICI6IiksICI6IiBQUk9DRVNTX0RZTElCICI6Iik7CisgICAgRVhQRUNU
X0VRKHN0cmlwKFBST0NFU1NfRFlMSUIpLCBQUk9DRVNTX0RZTElCKTsKKyAgICBFWFBFQ1RfRVEo
c3RyaXAoIjoiIFBST0NFU1NfRFlMSUIpLCAiOiIgUFJPQ0VTU19EWUxJQik7CisgICAgRVhQRUNU
X0VRKHN0cmlwKFBST0NFU1NfRFlMSUIgIjoiKSwgUFJPQ0VTU19EWUxJQiAiOiIpOworICAgIEVY
UEVDVF9FUShzdHJpcCgiOiIgUFJPQ0VTU19EWUxJQiAiOiIpLCAiOiIgUFJPQ0VTU19EWUxJQiAi
OiIpOwogCi0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCKSwgbnVsbHB0
cik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIp
OwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiOiIpLCBudWxscHRy
KTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZTElCICI6IiksICI6Iik7
CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCKSwgIiIpOworICAgIEVYUEVD
VF9FUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIpLCAiIik7CisgICAgRVhQRUNUX0VRKHN0cmlw
KCIvIiBQUk9DRVNTX0RZTElCICI6IiksICIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjovIiBQ
Uk9DRVNTX0RZTElCICI6IiksICI6Iik7CiAKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoUFJPQ0VT
U19EWUxJQiAiLyIpLCBQUk9DRVNTX0RZTElCICIvIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlw
KCI6IiBQUk9DRVNTX0RZTElCICIvIiksICI6IiBQUk9DRVNTX0RZTElCICIvIik7Ci0gICAgRVhQ
RUNUX1NUUkVRKHN0cmlwKFBST0NFU1NfRFlMSUIgIi86IiksIFBST0NFU1NfRFlMSUIgIi86Iik7
Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6IiBQUk9DRVNTX0RZTElCICIvOiIpLCAiOiIgUFJP
Q0VTU19EWUxJQiAiLzoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiAiLyIp
LCBQUk9DRVNTX0RZTElCICIvIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6IiBQUk9DRVNTX0RZ
TElCICIvIiksICI6IiBQUk9DRVNTX0RZTElCICIvIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKFBS
T0NFU1NfRFlMSUIgIi86IiksIFBST0NFU1NfRFlMSUIgIi86Iik7CisgICAgRVhQRUNUX0VRKHN0
cmlwKCI6IiBQUk9DRVNTX0RZTElCICIvOiIpLCAiOiIgUFJPQ0VTU19EWUxJQiAiLzoiKTsKIAot
ICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIpLCAiLyIgUFJPQ0VT
U19EWUxJQiAiLyIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIg
Ii8iKSwgIjovIiBQUk9DRVNTX0RZTElCICIvIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIv
IiBQUk9DRVNTX0RZTElCICIvOiIpLCAiLyIgUFJPQ0VTU19EWUxJQiAiLzoiKTsKLSAgICBFWFBF
Q1RfU1RSRVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZTElCICIvOiIpLCAiOi8iIFBST0NFU1NfRFlM
SUIgIi86Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICIvIiksICIv
IiBQUk9DRVNTX0RZTElCICIvIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6LyIgUFJPQ0VTU19E
WUxJQiAiLyIpLCAiOi8iIFBST0NFU1NfRFlMSUIgIi8iKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAo
Ii8iIFBST0NFU1NfRFlMSUIgIi86IiksICIvIiBQUk9DRVNTX0RZTElCICIvOiIpOworICAgIEVY
UEVDVF9FUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIgIi86IiksICI6LyIgUFJPQ0VTU19EWUxJ
QiAiLzoiKTsKIAotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiL0JlZm9yZS5keWxpYjovIiBQUk9D
RVNTX0RZTElCKSwgIi9CZWZvcmUuZHlsaWIiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi8i
IFBST0NFU1NfRFlMSUIgIjovQWZ0ZXIuZHlsaWIiKSwgIi9BZnRlci5keWxpYiIpOwotICAgIEVY
UEVDVF9TVFJFUShzdHJpcCgiL0JlZm9yZS5keWxpYjovIiBQUk9DRVNTX0RZTElCICI6L0FmdGVy
LmR5bGliIiksICIvQmVmb3JlLmR5bGliOi9BZnRlci5keWxpYiIpOwotICAgIEVYUEVDVF9TVFJF
UShzdHJpcCgiL0JlZm9yZS5keWxpYjovIiBQUk9DRVNTX0RZTElCICI6L01pZGRsZS5keWxpYjov
IiBQUk9DRVNTX0RZTElCICI6L0FmdGVyLmR5bGliIiksICIvQmVmb3JlLmR5bGliOi9NaWRkbGUu
ZHlsaWI6L0FmdGVyLmR5bGliIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvQmVmb3JlLmR5bGli
Oi8iIFBST0NFU1NfRFlMSUIpLCAiL0JlZm9yZS5keWxpYiIpOworICAgIEVYUEVDVF9FUShzdHJp
cCgiLyIgUFJPQ0VTU19EWUxJQiAiOi9BZnRlci5keWxpYiIpLCAiL0FmdGVyLmR5bGliIik7Cisg
ICAgRVhQRUNUX0VRKHN0cmlwKCIvQmVmb3JlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIgIjovQWZ0
ZXIuZHlsaWIiKSwgIi9CZWZvcmUuZHlsaWI6L0FmdGVyLmR5bGliIik7CisgICAgRVhQRUNUX0VR
KHN0cmlwKCIvQmVmb3JlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIgIjovTWlkZGxlLmR5bGliOi8i
IFBST0NFU1NfRFlMSUIgIjovQWZ0ZXIuZHlsaWIiKSwgIi9CZWZvcmUuZHlsaWI6L01pZGRsZS5k
eWxpYjovQWZ0ZXIuZHlsaWIiKTsKIAotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VT
U19EWUxJQiAiOi8iIFBST0NFU1NfRFlMSUIpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfU1RSRVEo
c3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIjovIiBQUk9DRVNTX0RZTElCICI6LyIgUFJPQ0VTU19E
WUxJQiksIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAi
Oi8iIFBST0NFU1NfRFlMSUIpLCAiIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNT
X0RZTElCICI6LyIgUFJPQ0VTU19EWUxJQiAiOi8iIFBST0NFU1NfRFlMSUIpLCAiIik7CiAKLSAg
ICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi91c3IvbGliLyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIp
OwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIgUFJPQ0VTU19E
WUxJQiksIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiL3Vzci9saWIvIiBQUk9DRVNT
X0RZTElCKSwgIiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiLyIg
UFJPQ0VTU19EWUxJQiksICIiKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363377</attachid>
            <date>2019-03-01 14:40:52 -0800</date>
            <delta_ts>2019-03-01 15:30:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-194612-20190301144051.patch</filename>
            <type>text/plain</type>
            <size>18553</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNjAyZmU4OTZmNjVjYzll
Njk1ZDk0NzY0N2I2MzhiYmQzM2U4YTIuLmU5YjJiMTAxZjhmMmU2OWFhNzBhY2NiZGYwNmFkYmM3
N2QwOTY4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDMtMDEgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIEVudmlyb25tZW50VXRp
bGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDYxMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBBUEkg
dGVzdCByZWFsbHkgc2hvdWxkbid0IGJlIHZlcmlmeWluZyB0aGF0IHRoZSBhY3R1YWwgZW52aXJv
bm1lbnQgd2FzIHN1Y2Nlc3NmdWxseSBtb2RpZmllZC4KKworICAgICAgICBBdCBpdHMgY29yZSwg
c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nIGlzIHJlYWxseSBqdXN0IHNwbGl0LWZpbHRlci1q
b2luLiBCeSByZXBsYWNpbmcgaXQgd2l0aCBhIHBhaXIgb2YKKyAgICAgICAgc2ltcGxlIGZ1bmN0
aW9ucyAtLSBvbmUgZm9yIHN0cmluZyBwcm9jZXNzaW5nLCBvbmUgZm9yIGVudmlyb25tZW50IHBy
b2Nlc3NpbmcgLS0gdGhlIEFQSSB0ZXN0IG9ubHkgbmVlZHMgdG8KKyAgICAgICAgd29ycnkgYWJv
dXQgdGhlIGZvcm1lci4KKworICAgICAgICAqIFBsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBF
bnRyaWVzRW5kaW5nV2l0aCk6CisgICAgICAgIChXZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVz
OjpyZW1vdmVWYWx1ZXNFbmRpbmdXaXRoKToKKyAgICAgICAgKFdlYktpdDo6RW52aXJvbm1lbnRV
dGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5oOgorICAgICAgICBSZXBsYWNl
IG9sZCBmdW5jdGlvbiB3aXRoIGEgcGFpciBvZiBzaW1wbGVyIG9uZXMuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VF
bnRyeVBvaW50Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvUGx1Z2luU2Vy
dmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRl
bnRTZXJ2aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAgKFdlYkNvbnRlbnRTZXJ2aWNlSW5pdGlh
bGl6ZXIpOgorICAgICAgICBVcGRhdGUgZnVuY3Rpb24gbmFtZS4KKwogMjAxOS0wMy0wMSAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFVuaWZ5IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uIGFjcm9zcyBwb3J0cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29h
L1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VF
bnRyeVBvaW50Lm1tCmluZGV4IGI3ZjUzOTJjMGMwMTJkZGYwM2JmNTMzOTE4NjU1MTI2MmJhZGJl
MGIuLjRkNjRjZWQ1MTc0MDk0ZGJiNDNiZDdhNGE1ZGJjZDU1N2E2ZmJjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNl
L05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9p
bnQubW0KQEAgLTU2LDYgKzU2LDYgQEAgdm9pZCBOZXR3b3JrU2VydmljZUluaXRpYWxpemVyKHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRpYWwKIHsKICAgICAv
LyBSZW1vdmUgdGhlIFNlY0l0ZW1TaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBl
bnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKICAgICAvLyB0
aGUgdGhpcyBwcm9jZXNzIGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNyYXNoLgot
ICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZ
TERfSU5TRVJUX0xJQlJBUklFUyIsICIvU2VjSXRlbVNoaW0uZHlsaWIiKTsKKyAgICBFbnZpcm9u
bWVudFV0aWxpdGllczo6cmVtb3ZlVmFsdWVzRW5kaW5nV2l0aCgiRFlMRF9JTlNFUlRfTElCUkFS
SUVTIiwgIi9TZWNJdGVtU2hpbS5keWxpYiIpOwogICAgIFhQQ1NlcnZpY2VJbml0aWFsaXplcjxO
ZXR3b3JrUHJvY2VzcywgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlPihhZG9wdE9T
T2JqZWN0KGNvbm5lY3Rpb24pLCBpbml0aWFsaXplck1lc3NhZ2UsIHByaW9yaXR5Qm9vc3RNZXNz
YWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZpcm9u
bWVudFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1l
bnRVdGlsaXRpZXMuY3BwCmluZGV4IGJiODAxMjBmYzIyYzRiMjljZmU0NDZmOGY0ZmVmYjQ2YjZj
ZmNhM2YuLjlhMmM2YWFiNDE3ZGNhYTJkYzdmZjBmNzhhN2QxNTNhN2U3MmMyNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDEwNCArMjcsNDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbnZpcm9u
bWVudFV0aWxpdGllcy5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIEVudmlyb25tZW50VXRpbGl0aWVzIHsKIAotdm9p
ZCBzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoY29uc3QgY2hhciogZW52aXJvbm1lbnRWYXJp
YWJsZSwgY29uc3QgY2hhciogc2VhcmNoVmFsdWUpCitTdHJpbmcgc3RyaXBFbnRyaWVzRW5kaW5n
V2l0aChTdHJpbmdWaWV3IGlucHV0LCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsKLSAgICBBU1NFUlQo
ZW52aXJvbm1lbnRWYXJpYWJsZSk7Ci0gICAgQVNTRVJUKHNlYXJjaFZhbHVlKTsKLSAgICAKLSAg
ICAvLyBHcmFiIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4K
LSAgICBjaGFyKiBlbnZpcm9ubWVudFZhbHVlID0gZ2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUp
OworICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0OwogCi0gICAgaWYgKCFlbnZpcm9ubWVudFZhbHVl
IHx8IGVudmlyb25tZW50VmFsdWVbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y29uc3Qgc2l6ZV90IGVudmlyb25tZW50VmFsdWVMZW5ndGggPSBzdHJsZW4oZW52aXJvbm1lbnRW
YWx1ZSk7Ci0gICAgY29uc3Qgc2l6ZV90IGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5ndGggPSBl
bnZpcm9ubWVudFZhbHVlTGVuZ3RoICsgMTsKLQotICAgIC8vIFNldCB1cCB0aGUgc3RyaW5ncyB3
ZSdsbCBiZSBzZWFyY2hpbmcgZm9yLgotICAgIHNpemVfdCBzZWFyY2hMZW5ndGggPSBzdHJsZW4o
c2VhcmNoVmFsdWUpOwotICAgIGlmICghc2VhcmNoTGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBWZWN0b3I8Y2hhcj4gc2VhcmNoVmFsdWVXaXRoQ29sb25WZWN0b3I7Ci0gICAgc2VhcmNo
VmFsdWVXaXRoQ29sb25WZWN0b3IuZ3JvdyhzZWFyY2hMZW5ndGggKyAyKTsKLSAgICBjaGFyKiBz
ZWFyY2hWYWx1ZVdpdGhDb2xvbiA9IHNlYXJjaFZhbHVlV2l0aENvbG9uVmVjdG9yLmRhdGEoKTsK
LSAgICBzaXplX3Qgc2VhcmNoTGVuZ3RoV2l0aENvbG9uID0gc2VhcmNoTGVuZ3RoICsgMTsKLQot
ICAgIG1lbWNweShzZWFyY2hWYWx1ZVdpdGhDb2xvbiwgc2VhcmNoVmFsdWUsIHNlYXJjaExlbmd0
aCk7Ci0gICAgc2VhcmNoVmFsdWVXaXRoQ29sb25bc2VhcmNoTGVuZ3RoXSA9ICc6JzsKLSAgICBz
ZWFyY2hWYWx1ZVdpdGhDb2xvbltzZWFyY2hMZW5ndGhXaXRoQ29sb25dID0gJ1wwJzsKLSAgICAK
LSAgICAvLyBMb29wIG92ZXIgZW52aXJvbm1lbnRWYWx1ZUJ1ZmZlciwgcmVtb3ZpbmcgYW55IGNv
bXBvbmVudHMgdGhhdCBtYXRjaCB0aGUgc2VhcmNoIHZhbHVlIGVuZGluZyB3aXRoIGEgY29sb24u
Ci0gICAgY2hhciogY29tcG9uZW50U3RhcnQgPSBlbnZpcm9ubWVudFZhbHVlOwotICAgIGNoYXIq
IG1hdGNoID0gc3RybnN0cihjb21wb25lbnRTdGFydCwgc2VhcmNoVmFsdWVXaXRoQ29sb24sIGVu
dmlyb25tZW50VmFsdWVMZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0
IC0gZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgIGJvb2wgZm91bmRBbnlNYXRjaGVzID0gbWF0Y2gg
IT0gTlVMTDsKLSAgICB3aGlsZSAobWF0Y2ggIT0gTlVMTCkgewotICAgICAgICAvLyBVcGRhdGUg
Y29tcG9uZW50U3RhcnQgdG8gcG9pbnQgdG8gdGhlIGNvbG9uIGltbWVkaWF0ZWx5IHByZWNlZGlu
ZyB0aGUgbWF0Y2guCi0gICAgICAgIGNoYXIqIG5leHRDb2xvbiA9IHN0cm5zdHIoY29tcG9uZW50
U3RhcnQsICI6IiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVfdD4o
Y29tcG9uZW50U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0gICAgICAgIHdoaWxlIChuZXh0
Q29sb24gJiYgbmV4dENvbG9uIDwgbWF0Y2gpIHsKLSAgICAgICAgICAgIGNvbXBvbmVudFN0YXJ0
ID0gbmV4dENvbG9uOwotICAgICAgICAgICAgbmV4dENvbG9uID0gc3RybnN0cihjb21wb25lbnRT
dGFydCArIDEsICI6IiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVf
dD4oY29tcG9uZW50U3RhcnQgKyAxIC0gZW52aXJvbm1lbnRWYWx1ZSkpOwotICAgICAgICB9Cisg
ICAgYXV0byBoYXNBcHBlbmRlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byBlbnRyeSA6IGlucHV0
LnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJzonKSkgeworICAgICAgICBpZiAoZW50cnkuZW5k
c1dpdGgoc3VmZml4KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNvbXBvbmVudFN0YXJ0ID49IGVudmlyb25tZW50VmFsdWUpOwotICAgICAgICBzaXpl
X3QgZW52aXJvbm1lbnRWYWx1ZU9mZnNldCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50
U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVlKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW52aXJv
bm1lbnRWYWx1ZU9mZnNldCA8IGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5ndGgpOworICAgICAg
ICBpZiAoaGFzQXBwZW5kZWQpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCc6Jyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGhhc0FwcGVuZGVkID0gdHJ1ZTsKIAotICAgICAgICAvLyBD
b3B5IG92ZXIgZXZlcnl0aGluZyByaWdodCBvZiB0aGUgbWF0Y2ggdG8gdGhlIGN1cnJlbnQgY29t
cG9uZW50IHN0YXJ0LCBhbmQgc2VhcmNoIGZyb20gdGhlcmUgYWdhaW4uCi0gICAgICAgIGlmIChj
b21wb25lbnRTdGFydFswXSA9PSAnOicpIHsKLSAgICAgICAgICAgIC8vIElmIGNvbXBvbmVudFN0
YXJ0IHBvaW50cyB0byBhIGNvbG9uLCBjb3B5IHRoZSBjb2xvbiBvdmVyLgotICAgICAgICAgICAg
c3RybGNweShjb21wb25lbnRTdGFydCwgbWF0Y2ggKyBzZWFyY2hMZW5ndGgsIGVudmlyb25tZW50
VmFsdWVCdWZmZXJMZW5ndGggLSBlbnZpcm9ubWVudFZhbHVlT2Zmc2V0KTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY29tcG9uZW50U3RhcnQgc3RpbGwgcG9p
bnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgZW52aXJvbm1lbnRWYWx1ZUJ1ZmZlciwgc28gZG9uJ3Qg
Y29weSBvdmVyIHRoZSBjb2xvbi4KLSAgICAgICAgICAgIC8vIFRoZSBlZGdlIGNhc2UgaXMgaWYg
dGhlIGNvbG9uIGlzIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBzbyAibWF0Y2gg
KyBzZWFyY2hMZW5ndGhXaXRob3V0Q29sb24gKyAxIiBpcyB0aGUKLSAgICAgICAgICAgIC8vIG51
bGwgdGVybWluYXRvciBvZiB0aGUgb3JpZ2luYWwgaW5wdXQsIGluIHdoaWNoIGNhc2UgdGhpcyBp
cyBzdGlsbCBzYWZlLgotICAgICAgICAgICAgc3RybGNweShjb21wb25lbnRTdGFydCwgbWF0Y2gg
KyBzZWFyY2hMZW5ndGhXaXRoQ29sb24sIGVudmlyb25tZW50VmFsdWVCdWZmZXJMZW5ndGggLSBl
bnZpcm9ubWVudFZhbHVlT2Zmc2V0KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbWF0
Y2ggPSBzdHJuc3RyKGNvbXBvbmVudFN0YXJ0LCBzZWFyY2hWYWx1ZVdpdGhDb2xvbiwgZW52aXJv
bm1lbnRWYWx1ZUxlbmd0aCAtIHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3RhcnQgLSBl
bnZpcm9ubWVudFZhbHVlKSk7CisgICAgICAgIG91dHB1dC5hcHBlbmQoZW50cnkpOwogICAgIH0K
LSAgICAKLSAgICAvLyBTZWFyY2ggZm9yIHRoZSB2YWx1ZSB3aXRob3V0IGEgdHJhaWxpbmcgY29s
b24sIHNlZWluZyBpZiB0aGUgb3JpZ2luYWwgaW5wdXQgZW5kcyB3aXRoIGl0LgotICAgIG1hdGNo
ID0gc3RybnN0cihjb21wb25lbnRTdGFydCwgc2VhcmNoVmFsdWUsIGVudmlyb25tZW50VmFsdWVM
ZW5ndGggLSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBvbmVudFN0YXJ0IC0gZW52aXJvbm1lbnRW
YWx1ZSkpOwotICAgIHdoaWxlIChtYXRjaCAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChtYXRjaFtz
ZWFyY2hMZW5ndGhdID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbWF0Y2gg
PSBzdHJuc3RyKG1hdGNoICsgMSwgc2VhcmNoVmFsdWUsIGVudmlyb25tZW50VmFsdWVMZW5ndGgg
LSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1hdGNoICsgMSAtIGVudmlyb25tZW50VmFsdWUpKTsKLSAg
ICB9Ci0gICAgCi0gICAgLy8gU2luY2UgdGhlIG9yaWdpbmFsIGlucHV0IGVuZHMgd2l0aCB0aGUg
c2VhcmNoLCBzdHJpcCBvdXQgdGhlIGxhc3QgY29tcG9uZW50LgotICAgIGlmIChtYXRjaCkgewot
ICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50U3RhcnQgdG8gcG9pbnQgdG8gdGhlIGNvbG9uIGlt
bWVkaWF0ZWx5IHByZWNlZGluZyB0aGUgbWF0Y2guCi0gICAgICAgIGNoYXIqIG5leHRDb2xvbiA9
IHN0cm5zdHIoY29tcG9uZW50U3RhcnQsICI6IiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAtIHN0
YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3RhcnQgLSBlbnZpcm9ubWVudFZhbHVlKSk7Ci0g
ICAgICAgIHdoaWxlIChuZXh0Q29sb24gJiYgbmV4dENvbG9uIDwgbWF0Y2gpIHsKLSAgICAgICAg
ICAgIGNvbXBvbmVudFN0YXJ0ID0gbmV4dENvbG9uOwotICAgICAgICAgICAgbmV4dENvbG9uID0g
c3RybnN0cihjb21wb25lbnRTdGFydCArIDEsICI6IiwgZW52aXJvbm1lbnRWYWx1ZUxlbmd0aCAt
IHN0YXRpY19jYXN0PHNpemVfdD4oY29tcG9uZW50U3RhcnQgKyAxIC0gZW52aXJvbm1lbnRWYWx1
ZSkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBXaGV0aGVyIGNvbXBvbmVudFN0
YXJ0IHBvaW50cyB0byB0aGUgb3JpZ2luYWwgc3RyaW5nIG9yIHRoZSBsYXN0IGNvbG9uLCBwdXR0
aW5nIHRoZSBudWxsIHRlcm1pbmF0b3IgdGhlcmUgd2lsbCBnZXQgdXMgdGhlIGRlc2lyZWQgcmVz
dWx0LgotICAgICAgICBjb21wb25lbnRTdGFydFswXSA9ICdcMCc7CiAKLSAgICAgICAgZm91bmRB
bnlNYXRjaGVzID0gdHJ1ZTsKLSAgICB9CisgICAgcmV0dXJuIG91dHB1dC50b1N0cmluZygpOwor
fQogCi0gICAgLy8gSWYgd2UgZm91bmQgbm8gbWF0Y2hlcywgZG9uJ3QgY2hhbmdlIGFueXRoaW5n
LgotICAgIGlmICghZm91bmRBbnlNYXRjaGVzKQordm9pZCByZW1vdmVWYWx1ZXNFbmRpbmdXaXRo
KGNvbnN0IGNoYXIqIGVudmlyb25tZW50VmFyaWFibGUsIGNvbnN0IGNoYXIqIHNlYXJjaFZhbHVl
KQoreworICAgIGNvbnN0IGNoYXIqIGJlZm9yZSA9IGdldGVudihlbnZpcm9ubWVudFZhcmlhYmxl
KTsKKyAgICBpZiAoIWJlZm9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgd2UgaGF2
ZSBub3RoaW5nIGxlZnQsIGp1c3QgdW5zZXQgdGhlIHZhcmlhYmxlCi0gICAgaWYgKGVudmlyb25t
ZW50VmFsdWVbMF0gPT0gJ1wwJykgeworICAgIGF1dG8gYWZ0ZXIgPSBzdHJpcEVudHJpZXNFbmRp
bmdXaXRoKGJlZm9yZSwgc2VhcmNoVmFsdWUpOworICAgIGlmIChhZnRlci5pc0VtcHR5KCkpIHsK
ICAgICAgICAgdW5zZXRlbnYoZW52aXJvbm1lbnRWYXJpYWJsZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgCi0gICAgc2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUsIGVudmlyb25tZW50
VmFsdWUsIDEpOworCisgICAgc2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUsIGFmdGVyLnV0Zjgo
KS5kYXRhKCksIDEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBFbnZpcm9ubWVudFV0aWxpdGllcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L0Vudmlyb25tZW50VXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMu
aAppbmRleCAyMGMzMWI5NDk5MTZlYmQxNjM3M2EzMDdiZGY4MjE5NjIyN2MyNDY5Li5lODI4ZDc0
ZWE1M2I5NzFkMzEzNTM2NzE4MTcyMTBhOWI0YjI1MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEzICsyNywxNSBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBFbnZpcm9ubWVudFV0aWxp
dGllcyB7CiAKLVdLX0VYUE9SVCB2b2lkIHN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZyhjb25z
dCBjaGFyKiBlbnZpcm9ubWVudFZhcmlhYmxlLCBjb25zdCBjaGFyKiBzZWFyY2gpOworV0tfRVhQ
T1JUIFN0cmluZyBzdHJpcEVudHJpZXNFbmRpbmdXaXRoKFN0cmluZ1ZpZXcgaW5wdXQsIFN0cmlu
Z1ZpZXcgc3VmZml4KTsKK1dLX0VYUE9SVCB2b2lkIHJlbW92ZVZhbHVlc0VuZGluZ1dpdGgoY29u
c3QgY2hhciogZW52aXJvbm1lbnRWYXJpYWJsZSwgY29uc3QgY2hhciogc2VhcmNoKTsKIAogfSAv
LyBuYW1lc3BhY2UgRW52aXJvbm1lbnRVdGlsaXRpZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9QbHVnaW5TZXJ2
aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50
L0NvY29hL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggYTFmZTUy
N2RlODJmZTJkZGUzMzdkZWEzYTRlZjg0NGU0YTQxZjM1Yi4uZTBkZTJkNjI4MDc4MmZmY2M4MjUz
MjlkYjM2YTMwNDRiNGZiNDE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENT
ZXJ2aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
UGx1Z2luU2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBj
X29iamVjdF90IGluaXRpYWxpCiAKICAgICAvLyBSZW1vdmUgdGhlIFBsdWdpblByb2Nlc3Mgc2hp
bSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28g
YW55IHByb2Nlc3NlcwogICAgIC8vIHNwYXduZWQgYnkgdGhlIFBsdWdpblByb2Nlc3MgZG9uJ3Qg
dHJ5IHRvIGluc2VydCB0aGUgc2hpbSBhbmQgY3Jhc2guCi0gICAgRW52aXJvbm1lbnRVdGlsaXRp
ZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwg
Ii9QbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiIpOworICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpy
ZW1vdmVWYWx1ZXNFbmRpbmdXaXRoKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1BsdWdpblBy
b2Nlc3NTaGltLmR5bGliIik7CiAgICAgWFBDU2VydmljZUluaXRpYWxpemVyPFBsdWdpblByb2Nl
c3MsIFBsdWdpblNlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlPihhZG9wdE9TT2JqZWN0KGNvbm5l
Y3Rpb24pLCBpbml0aWFsaXplck1lc3NhZ2UsIHByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKICNlbmRp
ZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNl
cnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggODdh
YzEzMjg5YTM0MTIzMjcwM2NmNjYyMGJiYWEyODA4ODMzNGYxNi4uMjhjZTAyNGM3YzU0OTMwNzU1
NjU4Yjk5OGIxZjRjMDg0ZWQ5YzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9p
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBD
U2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTQxLDcgKzQxLDcgQEAg
dm9pZCBXZWJDb250ZW50U2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbiwgeHBjX29iamVjdF90IGluaXQKIHsKICAgICAvLyBSZW1vdmUgdGhlIFdlYlByb2Nlc3NT
aGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBz
byBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKICAgICAvLyB0aGUgdGhpcyBwcm9jZXNzIGRvbid0
IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNyYXNoLgotICAgIFdlYktpdDo6RW52aXJvbm1l
bnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElC
UkFSSUVTIiwgIi9XZWJQcm9jZXNzU2hpbS5keWxpYiIpOworICAgIFdlYktpdDo6RW52aXJvbm1l
bnRVdGlsaXRpZXM6OnJlbW92ZVZhbHVlc0VuZGluZ1dpdGgoIkRZTERfSU5TRVJUX0xJQlJBUklF
UyIsICIvV2ViUHJvY2Vzc1NoaW0uZHlsaWIiKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgR1NJbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOTM0NDhiNTI0MjQ1OWU5YjFjNTQwODE5ZjgyMDk2ZDY4YmE4NjU4
Mi4uYTM3MGZiZDA0OGYxOThjZTA2MGM4ZTA4NTgyNWI3ZmM4YTkzY2IxNSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE5LTAzLTAxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nIGlz
bid0IHRocmVhZC1zYWZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQ2MTIKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJvbm1lbnRVdGlsaXRp
ZXNUZXN0LmNwcDoKKyAgICAgICAgSnVzdCB0ZXN0IHRoZSBuZXcgc3RyaW5nLXByb2Nlc3Npbmcg
ZnVuY3Rpb24gYW5kIGRvbid0IHRvdWNoIHRoZSBhY3R1YWwgZW52aXJvbm1lbnQuCisgICAgICAg
IChUZXN0IGNhc2VzIGFyZSBhbGwgYXMgYmVmb3JlLCBidXQgYmFzZWQgb24gb3BlcmF0b3I9PSBp
bnN0ZWFkIG9mIHN0cmNtcC4pCisKIDIwMTktMDMtMDEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBzZXJ2aWNlIHdvcmtl
cgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJvbm1l
bnRVdGlsaXRpZXNUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vu
dmlyb25tZW50VXRpbGl0aWVzVGVzdC5jcHAKaW5kZXggZTFkZTgzMjY1ZmJmNzFkYzY4M2U3ZjNj
NTFiNTUzY2IzNzdjYThhNC4uNDFkMDM1ZDIzY2I4Y2ExMTgzN2Y3ODYzNDY3YmQyMTJiOWRiNDVk
MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJvbm1l
bnRVdGlsaXRpZXNUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9FbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNjAgKzI4LDU2IEBACiAjaW5jbHVkZSAi
VGVzdC5oIgogCiAjaW5jbHVkZSA8V2ViS2l0L0Vudmlyb25tZW50VXRpbGl0aWVzLmg+Ci0jaW5j
bHVkZSA8c3RkbGliLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY29uc3QgY2hh
ciogY29uc3QgZW52aXJvbm1lbnRWYXJpYWJsZSA9ICJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiOwog
I2RlZmluZSBQUk9DRVNTX0RZTElCICJQcm9jZXNzLmR5bGliIgogY29uc3QgY2hhciogY29uc3Qg
c3RyaXBWYWx1ZSA9ICIvIiBQUk9DRVNTX0RZTElCOwogCi1zdGF0aWMgY29uc3QgY2hhciogc3Ry
aXAoY29uc3QgY2hhciogaW5wdXQpCitzdGF0aWMgU3RyaW5nIHN0cmlwKFN0cmluZ1ZpZXcgaW5w
dXQpCiB7Ci0gICAgc2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUsIGlucHV0LCAxKTsKLSAgICBX
ZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmco
ZW52aXJvbm1lbnRWYXJpYWJsZSwgc3RyaXBWYWx1ZSk7Ci0gICAgcmV0dXJuIGdldGVudihlbnZp
cm9ubWVudFZhcmlhYmxlKTsKKyAgICByZXR1cm4gV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGll
czo6c3RyaXBFbnRyaWVzRW5kaW5nV2l0aChpbnB1dCwgc3RyaXBWYWx1ZSk7CiB9CiAKLVRFU1Qo
V2ViS2l0LCBTdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcpCitURVNUKFdlYktpdCwgU3RyaXBF
bnRyaWVzRW5kaW5nV2l0aCkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIiIpLCAiIik7Ci0g
ICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6IiksICI6Iik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlw
KCI6OiIpLCAiOjoiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjo6OiIpLCAiOjo6Iik7Ci0g
ICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6Ojo6IiksICI6Ojo6Iik7Ci0gICAgRVhQRUNUX1NUUkVR
KHN0cmlwKCI6Ojo6OiIpLCAiOjo6OjoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIiIpLCAiIik7
CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6IiksICI6Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6
OiIpLCAiOjoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjo6OiIpLCAiOjo6Iik7CisgICAgRVhQ
RUNUX0VRKHN0cmlwKCI6Ojo6IiksICI6Ojo6Iik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCI6Ojo6
OiIpLCAiOjo6OjoiKTsKIAotICAgIEVYUEVDVF9TVFJFUShzdHJpcChQUk9DRVNTX0RZTElCKSwg
UFJPQ0VTU19EWUxJQik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6IiBQUk9DRVNTX0RZTElC
KSwgIjoiIFBST0NFU1NfRFlMSUIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcChQUk9DRVNTX0RZ
TElCICI6IiksIFBST0NFU1NfRFlMSUIgIjoiKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjoi
IFBST0NFU1NfRFlMSUIgIjoiKSwgIjoiIFBST0NFU1NfRFlMSUIgIjoiKTsKKyAgICBFWFBFQ1Rf
RVEoc3RyaXAoUFJPQ0VTU19EWUxJQiksIFBST0NFU1NfRFlMSUIpOworICAgIEVYUEVDVF9FUShz
dHJpcCgiOiIgUFJPQ0VTU19EWUxJQiksICI6IiBQUk9DRVNTX0RZTElCKTsKKyAgICBFWFBFQ1Rf
RVEoc3RyaXAoUFJPQ0VTU19EWUxJQiAiOiIpLCBQUk9DRVNTX0RZTElCICI6Iik7CisgICAgRVhQ
RUNUX0VRKHN0cmlwKCI6IiBQUk9DRVNTX0RZTElCICI6IiksICI6IiBQUk9DRVNTX0RZTElCICI6
Iik7CiAKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIpLCBudWxscHRy
KTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZTElCKSwgbnVsbHB0cik7
Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICI6IiksIG51bGxwdHIp
OwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIgIjoiKSwgIjoiKTsK
KyAgICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIpLCAiIik7CisgICAgRVhQRUNU
X0VRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiksICIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAo
Ii8iIFBST0NFU1NfRFlMSUIgIjoiKSwgIiIpOworICAgIEVYUEVDVF9FUShzdHJpcCgiOi8iIFBS
T0NFU1NfRFlMSUIgIjoiKSwgIjoiKTsKIAotICAgIEVYUEVDVF9TVFJFUShzdHJpcChQUk9DRVNT
X0RZTElCICIvIiksIFBST0NFU1NfRFlMSUIgIi8iKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAo
IjoiIFBST0NFU1NfRFlMSUIgIi8iKSwgIjoiIFBST0NFU1NfRFlMSUIgIi8iKTsKLSAgICBFWFBF
Q1RfU1RSRVEoc3RyaXAoUFJPQ0VTU19EWUxJQiAiLzoiKSwgUFJPQ0VTU19EWUxJQiAiLzoiKTsK
LSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIjoiIFBST0NFU1NfRFlMSUIgIi86IiksICI6IiBQUk9D
RVNTX0RZTElCICIvOiIpOworICAgIEVYUEVDVF9FUShzdHJpcChQUk9DRVNTX0RZTElCICIvIiks
IFBST0NFU1NfRFlMSUIgIi8iKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjoiIFBST0NFU1NfRFlM
SUIgIi8iKSwgIjoiIFBST0NFU1NfRFlMSUIgIi8iKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoUFJP
Q0VTU19EWUxJQiAiLzoiKSwgUFJPQ0VTU19EWUxJQiAiLzoiKTsKKyAgICBFWFBFQ1RfRVEoc3Ry
aXAoIjoiIFBST0NFU1NfRFlMSUIgIi86IiksICI6IiBQUk9DRVNTX0RZTElCICIvOiIpOwogCi0g
ICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICIvIiksICIvIiBQUk9DRVNT
X0RZTElCICIvIik7Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiAi
LyIpLCAiOi8iIFBST0NFU1NfRFlMSUIgIi8iKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyaXAoIi8i
IFBST0NFU1NfRFlMSUIgIi86IiksICIvIiBQUk9DRVNTX0RZTElCICIvOiIpOwotICAgIEVYUEVD
VF9TVFJFUShzdHJpcCgiOi8iIFBST0NFU1NfRFlMSUIgIi86IiksICI6LyIgUFJPQ0VTU19EWUxJ
QiAiLzoiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1NfRFlMSUIgIi8iKSwgIi8i
IFBST0NFU1NfRFlMSUIgIi8iKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIjovIiBQUk9DRVNTX0RZ
TElCICIvIiksICI6LyIgUFJPQ0VTU19EWUxJQiAiLyIpOworICAgIEVYUEVDVF9FUShzdHJpcCgi
LyIgUFJPQ0VTU19EWUxJQiAiLzoiKSwgIi8iIFBST0NFU1NfRFlMSUIgIi86Iik7CisgICAgRVhQ
RUNUX0VRKHN0cmlwKCI6LyIgUFJPQ0VTU19EWUxJQiAiLzoiKSwgIjovIiBQUk9DRVNTX0RZTElC
ICIvOiIpOwogCi0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvQmVmb3JlLmR5bGliOi8iIFBST0NF
U1NfRFlMSUIpLCAiL0JlZm9yZS5keWxpYiIpOwotICAgIEVYUEVDVF9TVFJFUShzdHJpcCgiLyIg
UFJPQ0VTU19EWUxJQiAiOi9BZnRlci5keWxpYiIpLCAiL0FmdGVyLmR5bGliIik7Ci0gICAgRVhQ
RUNUX1NUUkVRKHN0cmlwKCIvQmVmb3JlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIgIjovQWZ0ZXIu
ZHlsaWIiKSwgIi9CZWZvcmUuZHlsaWI6L0FmdGVyLmR5bGliIik7Ci0gICAgRVhQRUNUX1NUUkVR
KHN0cmlwKCIvQmVmb3JlLmR5bGliOi8iIFBST0NFU1NfRFlMSUIgIjovTWlkZGxlLmR5bGliOi8i
IFBST0NFU1NfRFlMSUIgIjovQWZ0ZXIuZHlsaWIiKSwgIi9CZWZvcmUuZHlsaWI6L01pZGRsZS5k
eWxpYjovQWZ0ZXIuZHlsaWIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIi9CZWZvcmUuZHlsaWI6
LyIgUFJPQ0VTU19EWUxJQiksICIvQmVmb3JlLmR5bGliIik7CisgICAgRVhQRUNUX0VRKHN0cmlw
KCIvIiBQUk9DRVNTX0RZTElCICI6L0FmdGVyLmR5bGliIiksICIvQWZ0ZXIuZHlsaWIiKTsKKyAg
ICBFWFBFQ1RfRVEoc3RyaXAoIi9CZWZvcmUuZHlsaWI6LyIgUFJPQ0VTU19EWUxJQiAiOi9BZnRl
ci5keWxpYiIpLCAiL0JlZm9yZS5keWxpYjovQWZ0ZXIuZHlsaWIiKTsKKyAgICBFWFBFQ1RfRVEo
c3RyaXAoIi9CZWZvcmUuZHlsaWI6LyIgUFJPQ0VTU19EWUxJQiAiOi9NaWRkbGUuZHlsaWI6LyIg
UFJPQ0VTU19EWUxJQiAiOi9BZnRlci5keWxpYiIpLCAiL0JlZm9yZS5keWxpYjovTWlkZGxlLmR5
bGliOi9BZnRlci5keWxpYiIpOwogCi0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNT
X0RZTElCICI6LyIgUFJPQ0VTU19EWUxJQiksIG51bGxwdHIpOwotICAgIEVYUEVDVF9TVFJFUShz
dHJpcCgiLyIgUFJPQ0VTU19EWUxJQiAiOi8iIFBST0NFU1NfRFlMSUIgIjovIiBQUk9DRVNTX0RZ
TElCKSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICI6
LyIgUFJPQ0VTU19EWUxJQiksICIiKTsKKyAgICBFWFBFQ1RfRVEoc3RyaXAoIi8iIFBST0NFU1Nf
RFlMSUIgIjovIiBQUk9DRVNTX0RZTElCICI6LyIgUFJPQ0VTU19EWUxJQiksICIiKTsKIAotICAg
IEVYUEVDVF9TVFJFUShzdHJpcCgiL3Vzci9saWIvIiBQUk9DRVNTX0RZTElCKSwgbnVsbHB0cik7
Ci0gICAgRVhQRUNUX1NUUkVRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICIvIiBQUk9DRVNTX0RZ
TElCKSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvdXNyL2xpYi8iIFBST0NFU1Nf
RFlMSUIpLCAiIik7CisgICAgRVhQRUNUX0VRKHN0cmlwKCIvIiBQUk9DRVNTX0RZTElCICIvIiBQ
Uk9DRVNTX0RZTElCKSwgIiIpOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>