<?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>171693</bug_id>
          
          <creation_ts>2017-05-04 14:50:45 -0700</creation_ts>
          <short_desc>[Win] Implement memoryFootprint for Windows</short_desc>
          <delta_ts>2017-05-12 00:57:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>dbates</cc>
    
    <cc>ossy</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1304849</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-05-04 14:50:45 -0700</bug_when>
    <thetext>Provide an implementation of memoryFootprint for Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306264</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-08 22:28:05 -0700</bug_when>
    <thetext>OK, I&apos;ll upload the patch for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306268</commentid>
    <comment_count>2</comment_count>
      <attachid>309472</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-08 22:50:18 -0700</bug_when>
    <thetext>Created attachment 309472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306269</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-08 22:51:58 -0700</bug_when>
    <thetext>Attachment 309472 did not pass style-queue:


ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306273</commentid>
    <comment_count>4</comment_count>
      <attachid>309473</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-08 23:08:51 -0700</bug_when>
    <thetext>Created attachment 309473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306274</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-08 23:11:02 -0700</bug_when>
    <thetext>Attachment 309473 did not pass style-queue:


ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306280</commentid>
    <comment_count>6</comment_count>
      <attachid>309474</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-08 23:37:14 -0700</bug_when>
    <thetext>Created attachment 309474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306281</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-08 23:40:10 -0700</bug_when>
    <thetext>Attachment 309474 did not pass style-queue:


ERROR: Source/WTF/wtf/win/MemoryFootprintWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306285</commentid>
    <comment_count>8</comment_count>
      <attachid>309476</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 00:04:05 -0700</bug_when>
    <thetext>Created attachment 309476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306287</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-09 00:06:08 -0700</bug_when>
    <thetext>Attachment 309476 did not pass style-queue:


ERROR: Source/WTF/wtf/win/MemoryFootprintWin.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306361</commentid>
    <comment_count>10</comment_count>
      <attachid>309476</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-09 07:18:59 -0700</bug_when>
    <thetext>Comment on attachment 309476
Patch

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

&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:29
&gt; +#if OS(LINUX)

We shouldn&apos;t need these any more.  3x

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:31
&gt; +#include &lt;windows.h&gt;
&gt; +#include &lt;psapi.h&gt; // psapi.h requires that windows.h is included.

This comment might be unnecessary.

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:40
&gt; +    // https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms684891(v=vs.85).aspx

Your other link is to an en-us page.

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:55
&gt; +    size_t retryCount = 3;

Why 3?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306367</commentid>
    <comment_count>11</comment_count>
      <attachid>309476</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 07:51:33 -0700</bug_when>
    <thetext>Comment on attachment 309476
Patch

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

&gt;&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:29
&gt;&gt; +#if OS(LINUX)
&gt; 
&gt; We shouldn&apos;t need these any more.  3x

This is a way to handle non-Linux builds in GTK. You can see that linux/MemoryPressureHandlerLinux.cpp is included in GTK port exclusively. However, MemoryPressureHandlerLinux has OS(LINUX) ifdefs because GTK ports can be built in the other OSes (such as FreeBSD).
For the consistency, I put it under linux/. But if it is not preferable, I&apos;m ok to move this to unix/ and rename it to MemoryFootprintUnix.cpp.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:31
&gt;&gt; +#include &lt;psapi.h&gt; // psapi.h requires that windows.h is included.
&gt; 
&gt; This comment might be unnecessary.

OK, dropped.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:40
&gt;&gt; +    // https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms684891(v=vs.85).aspx
&gt; 
&gt; Your other link is to an en-us page.

Oooooooops! Fixed :)

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:55
&gt;&gt; +    size_t retryCount = 3;
&gt; 
&gt; Why 3?

It is just a heuristics. We can increase / decrease it, or remove retryCount limitation.
Maybe, retryCount is not necessary here since numberOfEntries is monotonically increasing.
Dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306372</commentid>
    <comment_count>12</comment_count>
      <attachid>309493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 07:57:26 -0700</bug_when>
    <thetext>Created attachment 309493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306373</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-09 07:59:02 -0700</bug_when>
    <thetext>Attachment 309493 did not pass style-queue:


ERROR: Source/WTF/wtf/win/MemoryFootprintWin.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306416</commentid>
    <comment_count>14</comment_count>
      <attachid>309493</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-09 09:34:40 -0700</bug_when>
    <thetext>Comment on attachment 309493
Patch

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

&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:29
&gt; +#if OS(LINUX)

I guess I don&apos;t really care about this.  If someone working on some kind of experimental GTK on a strange OS runs into a problem, they can fix it.

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:52
&gt; +    PSAPI_WORKING_SET_INFORMATION count;
&gt; +    QueryWorkingSet(process.get(), &amp;count, sizeof(count));

As long as we&apos;re calling this once before the loop, let&apos;s put some bytes on the stack and if it succeeds, then we can return without doing any dynamic memory allocation.  We&apos;ll just need to allocate a growing buffer if the first one fails.

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:53
&gt; +    size_t minNumberOfEntries = 16;

const static?

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:55
&gt; +    while (true) {

This does always end, and I&apos;m a big fan of while (true), but I think it would be less concerning to future readers if you did something like this so we can see that there is an invariant:
for (size_t numberOfEntries = ...; (maybe something here, maybe not); numberOfEntries *= 2) {
    ...
}

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:64
&gt; +            numberOfEntries = std::max(minNumberOfEntries, numberOfEntries + numberOfEntries / 4 + 1);

Why not just double the size?  I know we try to grow other data structures slowly to save memory, but I think we would want to grow this one quickly to return quickly, knowing that the memory is always immediately going to be freed.

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:75
&gt; +        return numberOfPrivateWorkingSetPages * (4 * KB);

Let&apos;s give 4kb a name.
const size_t pageSize = 4 * KB;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306851</commentid>
    <comment_count>15</comment_count>
      <attachid>309493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-10 07:50:46 -0700</bug_when>
    <thetext>Comment on attachment 309493
Patch

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

Thanks!

&gt;&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:29
&gt;&gt; +#if OS(LINUX)
&gt; 
&gt; I guess I don&apos;t really care about this.  If someone working on some kind of experimental GTK on a strange OS runs into a problem, they can fix it.

OK, I leave it as is.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:52
&gt;&gt; +    QueryWorkingSet(process.get(), &amp;count, sizeof(count));
&gt; 
&gt; As long as we&apos;re calling this once before the loop, let&apos;s put some bytes on the stack and if it succeeds, then we can return without doing any dynamic memory allocation.  We&apos;ll just need to allocate a growing buffer if the first one fails.

OK, I&apos;ll allocate aligned_storage on stack with 16 entries.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:53
&gt;&gt; +    size_t minNumberOfEntries = 16;
&gt; 
&gt; const static?

Changed it to `constexpr const size_t minNumberOfEntries = 16`.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:55
&gt;&gt; +    while (true) {
&gt; 
&gt; This does always end, and I&apos;m a big fan of while (true), but I think it would be less concerning to future readers if you did something like this so we can see that there is an invariant:
&gt; for (size_t numberOfEntries = ...; (maybe something here, maybe not); numberOfEntries *= 2) {
&gt;     ...
&gt; }

numberOfEntries is updated by the formula and `workingSets-&gt;NumberOfEntries`. So, we cannot place the update code in for&apos;s enumeration step.
Of course, we can do this if we move MallocPtr&lt;&gt; out of the loop. But I think it is not so good, I would like to limit the lifetime of the MallocPtr explicitly by the block of the for-loop.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:64
&gt;&gt; +            numberOfEntries = std::max(minNumberOfEntries, numberOfEntries + numberOfEntries / 4 + 1);
&gt; 
&gt; Why not just double the size?  I know we try to grow other data structures slowly to save memory, but I think we would want to grow this one quickly to return quickly, knowing that the memory is always immediately going to be freed.

This is because the value `numberOfEntries` is now updated by `workingSets-&gt;NumberOfEntries`. So, the current `numberOfEntries` is likely to be the value we want.
But of course, during executing this loop, the number can be fluctuated. So slightly increasing the value before re-executing QueryWorkingSet is good idea (So I do this here).
But I think doubling it here is a bit too big. This is why I choose `n + n / 4 + 1`.

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:75
&gt;&gt; +        return numberOfPrivateWorkingSetPages * (4 * KB);
&gt; 
&gt; Let&apos;s give 4kb a name.
&gt; const size_t pageSize = 4 * KB;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306852</commentid>
    <comment_count>16</comment_count>
      <attachid>309605</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-10 07:52:18 -0700</bug_when>
    <thetext>Created attachment 309605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306853</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-10 07:55:00 -0700</bug_when>
    <thetext>Attachment 309605 did not pass style-queue:


ERROR: Source/WTF/wtf/win/MemoryFootprintWin.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306859</commentid>
    <comment_count>18</comment_count>
      <attachid>309605</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-10 08:35:33 -0700</bug_when>
    <thetext>Comment on attachment 309605
Patch

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

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:32
&gt; +#include &lt;psapi.h&gt; // psapi.h requires that windows.h is included.

This comment came back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307670</commentid>
    <comment_count>19</comment_count>
      <attachid>309605</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-11 19:06:06 -0700</bug_when>
    <thetext>Comment on attachment 309605
Patch

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

&gt;&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:32
&gt;&gt; +#include &lt;psapi.h&gt; // psapi.h requires that windows.h is included.
&gt; 
&gt; This comment came back.

Oops, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307701</commentid>
    <comment_count>20</comment_count>
      <attachid>309605</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-11 19:50:55 -0700</bug_when>
    <thetext>Comment on attachment 309605
Patch

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

&gt; Source/WTF/wtf/win/MemoryFootprintWin.cpp:71
&gt; +    for (size_t numberOfEntries = std::max&lt;size_t&gt;(minNumberOfEntries, workingSetsOnStack-&gt;NumberOfEntries);;) {

I&apos;ll also apply std::max(minNumberOfEntries, numberOfEntries + numberOfEntries / 4 + 1); update here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307712</commentid>
    <comment_count>21</comment_count>
      <attachid>309853</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-11 19:55:04 -0700</bug_when>
    <thetext>Created attachment 309853
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307717</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-11 19:58:55 -0700</bug_when>
    <thetext>Attachment 309853 did not pass style-queue:


ERROR: Source/WTF/wtf/win/MemoryFootprintWin.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:62:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307773</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-11 22:21:52 -0700</bug_when>
    <thetext>Committed r216731: &lt;http://trac.webkit.org/changeset/216731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307814</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-05-12 00:57:16 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #23)
&gt; Committed r216731: &lt;http://trac.webkit.org/changeset/216731&gt;

and the JSCOnly buildfix landed in https://trac.webkit.org/changeset/216737/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309472</attachid>
            <date>2017-05-08 22:50:18 -0700</date>
            <delta_ts>2017-05-08 23:08:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170509145017.patch</filename>
            <type>text/plain</type>
            <size>22803</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYwN2NlYWI0NWUzNTY3ZGJkMjdiMTVm
OTEwZGIyMTA5ZWVhZDk1ZTEuLmNlMzBlMzBjOWZhZjkwMTRkNzQzNDM5NGMzZTU1ZjQzMDQ4NjEw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxh
dGl2ZSBXaW5kb3dzIGJ1aWxkIGZpeCBhZnRlciByMjE2NDI4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY0NTI4N2Y2ZTNjNjg4NWIyMmJhMjc3NmNmYmM2
YTMzMjNiZDA1Yi4uZjU2ZTE1Y2JkZTlmNGM2YWZkOTdhOTk0NTRmZWExNTIyN2RiOGUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjYsNyArMTI2LDcg
QEAKIAkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4
MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcw
N0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07Ci0JCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5jcHAgKi87IH07CisJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3Bw
ICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlEQ0VFMjIwMTFDRUE3NTUxMDAw
QzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09i
akNFeGNlcHRpb25zLm1tICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKQEAgLTUxOCw3ICs1MTgsNyBA
QAogCQlBRDg5QjZCNjFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZv
b3RwcmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJp
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4
OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5
NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYx
OUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3
Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQwLDcgKzg0MCw2IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywK
LQkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLywK
IAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCiAJ
CQkJQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAg
Ki8sCiAJCQkJQUQ4OUI2QjYxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5oICovLApAQCAtMTE2OCw2ICsxMTY3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5t
bSAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29j
b2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29y
a1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKQEAgLTEzMzAsNyArMTMzMCw3IEBACiAJCQkJQThB
NDczRTQxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmQ3NGNjYTk0MTUz
YjBiMWFmNDRhNjRhNjFjZTI4Y2FlZmU0ODE0NS4uMmI3NjE0ZjY0ZmRkMjg2NmE1MDc2Zjc1MzM4
NzRjYmM3M2YyNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIyNSw3ICsyMjUsNiBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRp
YVRpbWUuY3BwCi0gICAgTWVtb3J5Rm9vdHByaW50LmNwcAogICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCmluZGV4IDAxODRiNGY3MjdiN2M0M2Y5N2NmYjdlZTQ4OWQxZTQzM2E1Y2EwMzYu
LmQ2MThiYTJhNTUzYWQyYTVjNDljNGJlMzM2ZWQ3YWE5NGRiMDA1ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5o
CkBAIC02OSw2ICs2OSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBNYWxsb2NQdHIg
ewogICAgICAgICByZXR1cm4gIW1fcHRyOwogICAgIH0KIAorICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRy
OworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKwogICAgIE1hbGxvY1B0ciYgb3BlcmF0b3I9KE1hbGxvY1B0ciYm
IG90aGVyKQogICAgIHsKICAgICAgICAgTWFsbG9jUHRyIHB0ciA9IFdURk1vdmUob3RoZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlMzM1OGZmOGM4ZDg3ZGMwNDcxYzRjZWRhNGM0YmEzZTY0MGFjZmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9v
dHByaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lbW9yeUZvb3RwcmludC5oIgotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPG1h
Y2gvbWFjaC5oPgotI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Ci0jZW5kaWYKLQotI2lmIE9T
KExJTlVYKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotI2lmIE9TKExJTlVYKQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIGZvckVhY2hMaW5lKEZJTEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikKLXsKLSAgICBj
aGFyKiBidWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAo
Z2V0bGluZSgmYnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKLSAgICAgICAgZnVuY3Rvcihi
dWZmZXIsIHNpemUpOwotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgICAgIHNpemUgPSAwOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgdGFz
a192bV9pbmZvX2RhdGFfdCB2bUluZm87Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3Vu
dCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKLSAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tf
aW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5m
bywgJmNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8u
cGh5c19mb290cHJpbnQpOwotI2VsaWYgT1MoTElOVVgpCi0gICAgRklMRSogZmlsZSA9IGZvcGVu
KCIvcHJvYy9zZWxmL3NtYXBzIiwgInIiKTsKLSAgICBpZiAoIWZpbGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsUHJpdmF0ZURpcnR5SW5L
QiA9IDA7Ci0gICAgYm9vbCBpc0Fub255bW91cyA9IGZhbHNlOwotICAgIGZvckVhY2hMaW5lKGZp
bGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKLSAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFydDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwotICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGlub2RlOwotICAgICAgICAgICAgY2hhciBkZXZbMzJdOwotICAgICAgICAgICAgY2hhciBwZXJt
c1s1XTsKLSAgICAgICAgICAgIGNoYXIgcGF0aFs3XTsKLSAgICAgICAgICAgIGludCBzY2FubmVk
Q291bnQgPSBzc2NhbmYoYnVmZmVyLCAiJWx4LSVseCAlNHMgJWx4ICUzMXMgJWx1ICU2cyIsICZz
dGFydCwgJmVuZCwgcGVybXMsICZvZmZzZXQsIGRldiwgJmlub2RlLCBwYXRoKTsKLSAgICAgICAg
ICAgIGlmIChzY2FubmVkQ291bnQgPT0gNikgewotICAgICAgICAgICAgICAgIGlzQW5vbnltb3Vz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2Nhbm5lZENvdW50ID09IDcpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3
IHBhdGhTdHJpbmcocGF0aCk7Ci0gICAgICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSBwYXRoU3Ry
aW5nID09IEFTQ0lJTGl0ZXJhbCgiW2hlYXBdIikgfHwgcGF0aFN0cmluZy5zdGFydHNXaXRoKCJb
c3RhY2siKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWlzQW5vbnltb3VzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZURpcnR5SW5LQjsKLSAgICAgICAgaWYgKHNzY2Fu
ZihidWZmZXIsICJQcml2YXRlX0RpcnR5OiAlbHUiLCAmcHJpdmF0ZURpcnR5SW5LQikgPT0gMSkK
LSAgICAgICAgICAgIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiArPSBwcml2YXRlRGlydHlJbktCOwot
ICAgIH0pOwotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gdG90YWxQcml2YXRlRGlydHlJ
bktCICogS0I7Ci0jZW5kaWYKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk4MDJiMDMwN2VkMTdhZWZjNjQzNWYwOTc1YTc4N2Fk
MjZkYmQzZWIuLjQ0YTYwZWFjM2U5OTVmNjMwZmQzZDc3NzNiNWQ5OGM2NDMyMjFkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vz
c01lbW9yeVN0YXR1cy5jcHAKKyAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKICAg
ICBsaW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHVuaXgvQ1BVVGlt
ZVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggZmM3MzIxZGQw
OGVlNjBhYjZjMWQ1ZmYyYmI0M2EwMDg2ODgwYmQxYi4uNWQ5MjQ5ZTE4NDM3OWQxNTY4YjUzNzJi
ODI3ZGU4MWRhMTY1OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NP
bmx5LmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAt
MTcsNiArMTcsMjAgQEAgZWxzZSAoKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChXSU4zMikKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAorICAgICkKK2Vsc2UgKEFQUExFKQorICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCisg
ICAgICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAorICAgICkKK2Vsc2UgKCkKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRM
aW51eC5jcHAKKyAgICApCitlbmRpZiAoKQorCiBpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAg
Z2xpYi9HUmVmUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4M2U5ODdlYzBj
Y2IwYTlkZTA0Y2RhMDY0MGM3YTAzNWM1YmE2Y2ZiLi5iNDY4YTVkZDgzYjA4NzVlYzZkZjljYTY0
MTRlYmE5NmFmYTNjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjMsNiArMjMs
NyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAg
IGNvY29hL0NQVVRpbWVDb2NvYS5tbQorICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNw
cAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCiAgICAgY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOTVkMzNjMjYx
Y2U1ZWYyY2Y3NjI4Njg3MzYxMDYxZjgyMGY2Nzc3NS4uM2E0YTYxYmEzYWQ2MWU3OTdkN2Q4NmIx
M2ZjZjk3MGIwMjZiZGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwLDYgKzEw
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAog
ICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAorICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3Bw
CiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3aW4vUnVuTG9vcFdp
bi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMGE2OGIwMGFmNmUwZWRjMDRi
M2E2ZTQ5OThiYmU0YzUyNTZiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgor
I2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyAgICB0YXNrX3ZtX2luZm9fZGF0
YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9J
TkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFz
a19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOwor
ICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3Rwcmlu
dCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3Rw
cmludExpbnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MmMxZWVlNTI2YzE3YTc4YTI4MWMyYWE0NzE3NmRjOTlkYmExYWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
bW9yeUZvb3RwcmludC5oIgorCisjaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgT1MoTElOVVgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIHZvaWQgZm9yRWFjaExpbmUoRklMRSogZmlsZSwg
RnVuY3RvciBmdW5jdG9yKQoreworICAgIGNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZzaXplLCBmaWxlKSAh
PSAtMSkgeworICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7CisgICAgICAgIGZyZWUoYnVm
ZmVyKTsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgc2l6ZSA9IDA7CisgICAg
fQorfQorI2VuZGlmCisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQor
eworI2lmIE9TKExJTlVYKQorICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFw
cyIsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZhdGVEaXJ0eUluS0IgPSAwOworICAgIGJvb2wg
aXNBbm9ueW1vdXMgPSBmYWxzZTsKKyAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1
ZmZlciwgc2l6ZV90KSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0OworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbm9kZTsKKyAgICAgICAg
ICAgIGNoYXIgZGV2WzMyXTsKKyAgICAgICAgICAgIGNoYXIgcGVybXNbNV07CisgICAgICAgICAg
ICBjaGFyIHBhdGhbN107CisgICAgICAgICAgICBpbnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1
ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVsdSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1z
LCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7CisgICAgICAgICAgICBpZiAoc2Nhbm5lZENv
dW50ID09IDYpIHsKKyAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNjYW5uZWRD
b3VudCA9PSA3KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgp
OworICAgICAgICAgICAgICAgIGlzQW5vbnltb3VzID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVy
YWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3RhcnRzV2l0aCgiW3N0YWNrIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpc0Fub255bW91cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBs
b25nIHByaXZhdGVEaXJ0eUluS0I7CisgICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0
ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUluS0IpID09IDEpCisgICAgICAgICAgICB0b3Rh
bFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURpcnR5SW5LQjsKKyAgICB9KTsKKyAgICBmY2xv
c2UoZmlsZSk7CisgICAgcmV0dXJuIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiAqIEtCOworI2VuZGlm
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVt
b3J5Rm9vdHByaW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzliY2IwNjIwODhmNjQzNmU1ZjZkZjZj
NWQ3ODc1OGFkZDg2MTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL01l
bW9yeUZvb3RwcmludFdpbi5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDx3dGYvTWFsbG9jUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG1lbW9yeUZvb3RwcmludCgpCit7CisgICAgLy8gV2Ugd291
bGQgbGlrZSB0byBjYWxjdWxhdGUgc2l6ZSBvZiBwcml2YXRlIHdvcmtpbmcgc2V0LgorICAgIC8v
IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2phLWpwL2xpYnJhcnkvd2luZG93cy9kZXNrdG9w
L21zNjg0ODkxKHY9dnMuODUpLmFzcHgKKyAgICAvLyA+IFRoZSB3b3JraW5nIHNldCBvZiBhIHBy
b2dyYW0gaXMgYSBjb2xsZWN0aW9uIG9mIHRob3NlIHBhZ2VzIGluIGl0cyB2aXJ0dWFsIGFkZHJl
c3MKKyAgICAvLyA+IHNwYWNlIHRoYXQgaGF2ZSBiZWVuIHJlY2VudGx5IHJlZmVyZW5jZWQuIEl0
IGluY2x1ZGVzIGJvdGggc2hhcmVkIGFuZCBwcml2YXRlIGRhdGEuCisgICAgLy8gPiBUaGUgc2hh
cmVkIGRhdGEgaW5jbHVkZXMgcGFnZXMgdGhhdCBjb250YWluIGFsbCBpbnN0cnVjdGlvbnMgeW91
ciBhcHBsaWNhdGlvbiBleGVjdXRlcywKKyAgICAvLyA+IGluY2x1ZGluZyB0aG9zZSBpbiB5b3Vy
IERMTHMgYW5kIHRoZSBzeXN0ZW0gRExMcy4gQXMgdGhlIHdvcmtpbmcgc2V0IHNpemUgaW5jcmVh
c2VzLAorICAgIC8vID4gbWVtb3J5IGRlbWFuZCBpbmNyZWFzZXMuCisgICAgV2luMzJIYW5kbGUg
cHJvY2VzcyhPcGVuUHJvY2VzcyhQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OLCBGQUxTRSwgR2V0
Q3VycmVudFByb2Nlc3NJZCgpKSk7CisgICAgaWYgKCFwcm9jZXNzLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg0OTQ2KHY9dnMuODUpLmFzcHgK
KyAgICBQU0FQSV9XT1JLSU5HX1NFVF9JTkZPUk1BVElPTiBjb3VudDsKKyAgICBRdWVyeVdvcmtp
bmdTZXQocHJvY2Vzcy5nZXQoKSwgJmNvdW50LCBzaXplb2YoY291bnQpKTsKKyAgICBzaXplX3Qg
bWluTnVtYmVyT2ZFbnRyaWVzID0gMTY7CisgICAgc2l6ZV90IG51bWJlck9mRW50cmllcyA9IHN0
ZDo6bWF4KG1pbk51bWJlck9mRW50cmllcywgY291bnQuTnVtYmVyT2ZFbnRyaWVzKTsKKyAgICBz
aXplX3QgcmV0cnlDb3VudCA9IDM7CisgICAgZG8geworICAgICAgICBzaXplX3Qgd29ya2luZ1Nl
dFNpemVJbkJ5dGVzID0gc2l6ZW9mKFBTQVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9OKSArIHNp
emVvZihQU0FQSV9XT1JLSU5HX1NFVF9CTE9DSykgKiBudW1iZXJPZkVudHJpZXM7CisgICAgICAg
IE1hbGxvY1B0cjxQU0FQSV9XT1JLSU5HX1NFVF9JTkZPUk1BVElPTj4gd29ya2luZ1NldHMgPSBN
YWxsb2NQdHI6Om1hbGxvYyh3b3JraW5nU2V0U2l6ZUluQnl0ZXMpOworICAgICAgICBpZiAoIVF1
ZXJ5V29ya2luZ1NldChwcm9jZXNzLmdldCgpLCB3b3JraW5nU2V0cy5nZXQoKSwgd29ya2luZ1Nl
dFNpemVJbkJ5dGVzKSkgeworICAgICAgICAgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9S
X0JBRF9MRU5HVEgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIC8vIElmIHdvcmtpbmcgc2V0IGluY3JlYXNlcyBiZXR3ZWVuIGZpcnN0IFF1ZXJ5V29y
a2luZ1NldCBhbmQgc2Vjb25kIFF1ZXJ5V29ya2luZ1NldCwgdGhlIHNlY29uZCBvbmUgY2FuIGZh
aWwuCisgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHdlIHNob3VsZCBpbmNyZWFzZSBudW1i
ZXJPZkVudHJpZXMuCisgICAgICAgICAgICBudW1iZXJPZkVudHJpZXMgPSB3b3JraW5nU2V0cy0+
TnVtYmVyT2ZFbnRyaWVzOworICAgICAgICAgICAgbnVtYmVyT2ZFbnRyaWVzID0gc3RkOjptYXgo
bWluTnVtYmVyT2ZFbnRyaWVzLCBudW1iZXJPZkVudHJpZXMgKyBudW1iZXJPZkVudHJpZXMgLyA0
ICsgMSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVf
dCBudW1iZXJPZlByaXZhdGVXb3JraW5nU2V0UGFnZXMgPSAwOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdvcmtpbmdTZXRzLT5OdW1iZXJPZkVudHJpZXM7ICsraSkgeworICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dz
L2Rlc2t0b3AvbXM2ODQ5MDIodj12cy44NSkuYXNweAorICAgICAgICAgICAgUFNBUElfV09SS0lO
R19TRVRfQkxPQ0sgd29ya2luZ1NldEJsb2NrID0gd29ya2luZ1NldHMtPldvcmtpbmdTZXRJbmZv
W2ldOworICAgICAgICAgICAgaWYgKCF3b3JraW5nU2V0QmxvY2suU2hhcmVkKQorICAgICAgICAg
ICAgICAgIG51bWJlck9mUHJpdmF0ZVdvcmtpbmdTZXRQYWdlcysrOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBudW1iZXJPZlByaXZhdGVXb3JraW5nU2V0UGFnZXMgKiAoNCAqIEtCKTsKKyAg
ICB9IHdoaWxlIChyZXRyeUNvdW50LS0pOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309473</attachid>
            <date>2017-05-08 23:08:51 -0700</date>
            <delta_ts>2017-05-08 23:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170509150850.patch</filename>
            <type>text/plain</type>
            <size>22823</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYwN2NlYWI0NWUzNTY3ZGJkMjdiMTVm
OTEwZGIyMTA5ZWVhZDk1ZTEuLmNlMzBlMzBjOWZhZjkwMTRkNzQzNDM5NGMzZTU1ZjQzMDQ4NjEw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxh
dGl2ZSBXaW5kb3dzIGJ1aWxkIGZpeCBhZnRlciByMjE2NDI4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY0NTI4N2Y2ZTNjNjg4NWIyMmJhMjc3NmNmYmM2
YTMzMjNiZDA1Yi4uZjU2ZTE1Y2JkZTlmNGM2YWZkOTdhOTk0NTRmZWExNTIyN2RiOGUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjYsNyArMTI2LDcg
QEAKIAkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4
MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcw
N0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07Ci0JCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5jcHAgKi87IH07CisJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3Bw
ICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlEQ0VFMjIwMTFDRUE3NTUxMDAw
QzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09i
akNFeGNlcHRpb25zLm1tICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKQEAgLTUxOCw3ICs1MTgsNyBA
QAogCQlBRDg5QjZCNjFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZv
b3RwcmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJp
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4
OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5
NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYx
OUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3
Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQwLDcgKzg0MCw2IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywK
LQkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLywK
IAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCiAJ
CQkJQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAg
Ki8sCiAJCQkJQUQ4OUI2QjYxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5oICovLApAQCAtMTE2OCw2ICsxMTY3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5t
bSAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29j
b2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29y
a1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKQEAgLTEzMzAsNyArMTMzMCw3IEBACiAJCQkJQThB
NDczRTQxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmQ3NGNjYTk0MTUz
YjBiMWFmNDRhNjRhNjFjZTI4Y2FlZmU0ODE0NS4uMmI3NjE0ZjY0ZmRkMjg2NmE1MDc2Zjc1MzM4
NzRjYmM3M2YyNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIyNSw3ICsyMjUsNiBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRp
YVRpbWUuY3BwCi0gICAgTWVtb3J5Rm9vdHByaW50LmNwcAogICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCmluZGV4IDAxODRiNGY3MjdiN2M0M2Y5N2NmYjdlZTQ4OWQxZTQzM2E1Y2EwMzYu
LmQ2MThiYTJhNTUzYWQyYTVjNDljNGJlMzM2ZWQ3YWE5NGRiMDA1ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5o
CkBAIC02OSw2ICs2OSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBNYWxsb2NQdHIg
ewogICAgICAgICByZXR1cm4gIW1fcHRyOwogICAgIH0KIAorICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRy
OworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKwogICAgIE1hbGxvY1B0ciYgb3BlcmF0b3I9KE1hbGxvY1B0ciYm
IG90aGVyKQogICAgIHsKICAgICAgICAgTWFsbG9jUHRyIHB0ciA9IFdURk1vdmUob3RoZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlMzM1OGZmOGM4ZDg3ZGMwNDcxYzRjZWRhNGM0YmEzZTY0MGFjZmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9v
dHByaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lbW9yeUZvb3RwcmludC5oIgotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPG1h
Y2gvbWFjaC5oPgotI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Ci0jZW5kaWYKLQotI2lmIE9T
KExJTlVYKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotI2lmIE9TKExJTlVYKQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIGZvckVhY2hMaW5lKEZJTEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikKLXsKLSAgICBj
aGFyKiBidWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAo
Z2V0bGluZSgmYnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKLSAgICAgICAgZnVuY3Rvcihi
dWZmZXIsIHNpemUpOwotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgICAgIHNpemUgPSAwOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgdGFz
a192bV9pbmZvX2RhdGFfdCB2bUluZm87Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3Vu
dCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKLSAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tf
aW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5m
bywgJmNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8u
cGh5c19mb290cHJpbnQpOwotI2VsaWYgT1MoTElOVVgpCi0gICAgRklMRSogZmlsZSA9IGZvcGVu
KCIvcHJvYy9zZWxmL3NtYXBzIiwgInIiKTsKLSAgICBpZiAoIWZpbGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsUHJpdmF0ZURpcnR5SW5L
QiA9IDA7Ci0gICAgYm9vbCBpc0Fub255bW91cyA9IGZhbHNlOwotICAgIGZvckVhY2hMaW5lKGZp
bGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKLSAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFydDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwotICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGlub2RlOwotICAgICAgICAgICAgY2hhciBkZXZbMzJdOwotICAgICAgICAgICAgY2hhciBwZXJt
c1s1XTsKLSAgICAgICAgICAgIGNoYXIgcGF0aFs3XTsKLSAgICAgICAgICAgIGludCBzY2FubmVk
Q291bnQgPSBzc2NhbmYoYnVmZmVyLCAiJWx4LSVseCAlNHMgJWx4ICUzMXMgJWx1ICU2cyIsICZz
dGFydCwgJmVuZCwgcGVybXMsICZvZmZzZXQsIGRldiwgJmlub2RlLCBwYXRoKTsKLSAgICAgICAg
ICAgIGlmIChzY2FubmVkQ291bnQgPT0gNikgewotICAgICAgICAgICAgICAgIGlzQW5vbnltb3Vz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2Nhbm5lZENvdW50ID09IDcpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3
IHBhdGhTdHJpbmcocGF0aCk7Ci0gICAgICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSBwYXRoU3Ry
aW5nID09IEFTQ0lJTGl0ZXJhbCgiW2hlYXBdIikgfHwgcGF0aFN0cmluZy5zdGFydHNXaXRoKCJb
c3RhY2siKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWlzQW5vbnltb3VzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZURpcnR5SW5LQjsKLSAgICAgICAgaWYgKHNzY2Fu
ZihidWZmZXIsICJQcml2YXRlX0RpcnR5OiAlbHUiLCAmcHJpdmF0ZURpcnR5SW5LQikgPT0gMSkK
LSAgICAgICAgICAgIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiArPSBwcml2YXRlRGlydHlJbktCOwot
ICAgIH0pOwotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gdG90YWxQcml2YXRlRGlydHlJ
bktCICogS0I7Ci0jZW5kaWYKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk4MDJiMDMwN2VkMTdhZWZjNjQzNWYwOTc1YTc4N2Fk
MjZkYmQzZWIuLjQ0YTYwZWFjM2U5OTVmNjMwZmQzZDc3NzNiNWQ5OGM2NDMyMjFkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vz
c01lbW9yeVN0YXR1cy5jcHAKKyAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKICAg
ICBsaW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHVuaXgvQ1BVVGlt
ZVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggZmM3MzIxZGQw
OGVlNjBhYjZjMWQ1ZmYyYmI0M2EwMDg2ODgwYmQxYi4uNWQ5MjQ5ZTE4NDM3OWQxNTY4YjUzNzJi
ODI3ZGU4MWRhMTY1OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NP
bmx5LmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAt
MTcsNiArMTcsMjAgQEAgZWxzZSAoKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChXSU4zMikKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAorICAgICkKK2Vsc2UgKEFQUExFKQorICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCisg
ICAgICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAorICAgICkKK2Vsc2UgKCkKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRM
aW51eC5jcHAKKyAgICApCitlbmRpZiAoKQorCiBpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAg
Z2xpYi9HUmVmUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4M2U5ODdlYzBj
Y2IwYTlkZTA0Y2RhMDY0MGM3YTAzNWM1YmE2Y2ZiLi5iNDY4YTVkZDgzYjA4NzVlYzZkZjljYTY0
MTRlYmE5NmFmYTNjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjMsNiArMjMs
NyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAg
IGNvY29hL0NQVVRpbWVDb2NvYS5tbQorICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNw
cAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCiAgICAgY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOTVkMzNjMjYx
Y2U1ZWYyY2Y3NjI4Njg3MzYxMDYxZjgyMGY2Nzc3NS4uM2E0YTYxYmEzYWQ2MWU3OTdkN2Q4NmIx
M2ZjZjk3MGIwMjZiZGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwLDYgKzEw
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAog
ICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAorICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3Bw
CiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3aW4vUnVuTG9vcFdp
bi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMGE2OGIwMGFmNmUwZWRjMDRi
M2E2ZTQ5OThiYmU0YzUyNTZiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgor
I2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyAgICB0YXNrX3ZtX2luZm9fZGF0
YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9J
TkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFz
a19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOwor
ICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3Rwcmlu
dCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3Rw
cmludExpbnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MmMxZWVlNTI2YzE3YTc4YTI4MWMyYWE0NzE3NmRjOTlkYmExYWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
bW9yeUZvb3RwcmludC5oIgorCisjaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgT1MoTElOVVgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIHZvaWQgZm9yRWFjaExpbmUoRklMRSogZmlsZSwg
RnVuY3RvciBmdW5jdG9yKQoreworICAgIGNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZzaXplLCBmaWxlKSAh
PSAtMSkgeworICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7CisgICAgICAgIGZyZWUoYnVm
ZmVyKTsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgc2l6ZSA9IDA7CisgICAg
fQorfQorI2VuZGlmCisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQor
eworI2lmIE9TKExJTlVYKQorICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFw
cyIsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZhdGVEaXJ0eUluS0IgPSAwOworICAgIGJvb2wg
aXNBbm9ueW1vdXMgPSBmYWxzZTsKKyAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1
ZmZlciwgc2l6ZV90KSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0OworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbm9kZTsKKyAgICAgICAg
ICAgIGNoYXIgZGV2WzMyXTsKKyAgICAgICAgICAgIGNoYXIgcGVybXNbNV07CisgICAgICAgICAg
ICBjaGFyIHBhdGhbN107CisgICAgICAgICAgICBpbnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1
ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVsdSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1z
LCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7CisgICAgICAgICAgICBpZiAoc2Nhbm5lZENv
dW50ID09IDYpIHsKKyAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNjYW5uZWRD
b3VudCA9PSA3KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgp
OworICAgICAgICAgICAgICAgIGlzQW5vbnltb3VzID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVy
YWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3RhcnRzV2l0aCgiW3N0YWNrIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpc0Fub255bW91cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBs
b25nIHByaXZhdGVEaXJ0eUluS0I7CisgICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0
ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUluS0IpID09IDEpCisgICAgICAgICAgICB0b3Rh
bFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURpcnR5SW5LQjsKKyAgICB9KTsKKyAgICBmY2xv
c2UoZmlsZSk7CisgICAgcmV0dXJuIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiAqIEtCOworI2VuZGlm
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVt
b3J5Rm9vdHByaW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmNlNThmZmFjNmI5ZWNiNmQ3Y2FjYzlj
MDQyZTg3ZTQwOTNlNmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL01l
bW9yeUZvb3RwcmludFdpbi5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDxwc2FwaS5oPgorI2luY2x1
ZGUgPHd0Zi9NYWxsb2NQdHIuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50
KCkKK3sKKyAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGNhbGN1bGF0ZSBzaXplIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuCisgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vamEtanAvbGli
cmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODQ4OTEodj12cy44NSkuYXNweAorICAgIC8vID4gVGhl
IHdvcmtpbmcgc2V0IG9mIGEgcHJvZ3JhbSBpcyBhIGNvbGxlY3Rpb24gb2YgdGhvc2UgcGFnZXMg
aW4gaXRzIHZpcnR1YWwgYWRkcmVzcworICAgIC8vID4gc3BhY2UgdGhhdCBoYXZlIGJlZW4gcmVj
ZW50bHkgcmVmZXJlbmNlZC4gSXQgaW5jbHVkZXMgYm90aCBzaGFyZWQgYW5kIHByaXZhdGUgZGF0
YS4KKyAgICAvLyA+IFRoZSBzaGFyZWQgZGF0YSBpbmNsdWRlcyBwYWdlcyB0aGF0IGNvbnRhaW4g
YWxsIGluc3RydWN0aW9ucyB5b3VyIGFwcGxpY2F0aW9uIGV4ZWN1dGVzLAorICAgIC8vID4gaW5j
bHVkaW5nIHRob3NlIGluIHlvdXIgRExMcyBhbmQgdGhlIHN5c3RlbSBETExzLiBBcyB0aGUgd29y
a2luZyBzZXQgc2l6ZSBpbmNyZWFzZXMsCisgICAgLy8gPiBtZW1vcnkgZGVtYW5kIGluY3JlYXNl
cy4KKyAgICBXaW4zMkhhbmRsZSBwcm9jZXNzKE9wZW5Qcm9jZXNzKFBST0NFU1NfUVVFUllfSU5G
T1JNQVRJT04sIEZBTFNFLCBHZXRDdXJyZW50UHJvY2Vzc0lkKCkpKTsKKyAgICBpZiAoIXByb2Nl
c3MuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLy8gaHR0
cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2
ODQ5NDYodj12cy44NSkuYXNweAorICAgIFBTQVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9OIGNv
dW50OworICAgIFF1ZXJ5V29ya2luZ1NldChwcm9jZXNzLmdldCgpLCAmY291bnQsIHNpemVvZihj
b3VudCkpOworICAgIHNpemVfdCBtaW5OdW1iZXJPZkVudHJpZXMgPSAxNjsKKyAgICBzaXplX3Qg
bnVtYmVyT2ZFbnRyaWVzID0gc3RkOjptYXgobWluTnVtYmVyT2ZFbnRyaWVzLCBjb3VudC5OdW1i
ZXJPZkVudHJpZXMpOworICAgIHNpemVfdCByZXRyeUNvdW50ID0gMzsKKyAgICBkbyB7CisgICAg
ICAgIHNpemVfdCB3b3JraW5nU2V0U2l6ZUluQnl0ZXMgPSBzaXplb2YoUFNBUElfV09SS0lOR19T
RVRfSU5GT1JNQVRJT04pICsgc2l6ZW9mKFBTQVBJX1dPUktJTkdfU0VUX0JMT0NLKSAqIG51bWJl
ck9mRW50cmllczsKKyAgICAgICAgTWFsbG9jUHRyPFBTQVBJX1dPUktJTkdfU0VUX0lORk9STUFU
SU9OPiB3b3JraW5nU2V0cyA9IE1hbGxvY1B0cjo6bWFsbG9jKHdvcmtpbmdTZXRTaXplSW5CeXRl
cyk7CisgICAgICAgIGlmICghUXVlcnlXb3JraW5nU2V0KHByb2Nlc3MuZ2V0KCksIHdvcmtpbmdT
ZXRzLmdldCgpLCB3b3JraW5nU2V0U2l6ZUluQnl0ZXMpKSB7CisgICAgICAgICAgICBpZiAoR2V0
TGFzdEVycm9yKCkgIT0gRVJST1JfQkFEX0xFTkdUSCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgLy8gSWYgd29ya2luZyBzZXQgaW5jcmVhc2VzIGJl
dHdlZW4gZmlyc3QgUXVlcnlXb3JraW5nU2V0IGFuZCBzZWNvbmQgUXVlcnlXb3JraW5nU2V0LCB0
aGUgc2Vjb25kIG9uZSBjYW4gZmFpbC4KKyAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgd2Ug
c2hvdWxkIGluY3JlYXNlIG51bWJlck9mRW50cmllcy4KKyAgICAgICAgICAgIG51bWJlck9mRW50
cmllcyA9IHdvcmtpbmdTZXRzLT5OdW1iZXJPZkVudHJpZXM7CisgICAgICAgICAgICBudW1iZXJP
ZkVudHJpZXMgPSBzdGQ6Om1heChtaW5OdW1iZXJPZkVudHJpZXMsIG51bWJlck9mRW50cmllcyAr
IG51bWJlck9mRW50cmllcyAvIDQgKyAxKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgc2l6ZV90IG51bWJlck9mUHJpdmF0ZVdvcmtpbmdTZXRQYWdlcyA9IDA7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya2luZ1NldHMtPk51bWJlck9mRW50
cmllczsgKytpKSB7CisgICAgICAgICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4NDkwMih2PXZzLjg1KS5hc3B4CisgICAg
ICAgICAgICBQU0FQSV9XT1JLSU5HX1NFVF9CTE9DSyB3b3JraW5nU2V0QmxvY2sgPSB3b3JraW5n
U2V0cy0+V29ya2luZ1NldEluZm9baV07CisgICAgICAgICAgICBpZiAoIXdvcmtpbmdTZXRCbG9j
ay5TaGFyZWQpCisgICAgICAgICAgICAgICAgbnVtYmVyT2ZQcml2YXRlV29ya2luZ1NldFBhZ2Vz
Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bWJlck9mUHJpdmF0ZVdvcmtpbmdTZXRQ
YWdlcyAqICg0ICogS0IpOworICAgIH0gd2hpbGUgKHJldHJ5Q291bnQtLSk7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309474</attachid>
            <date>2017-05-08 23:37:14 -0700</date>
            <delta_ts>2017-05-09 00:04:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170509153713.patch</filename>
            <type>text/plain</type>
            <size>22893</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYwN2NlYWI0NWUzNTY3ZGJkMjdiMTVm
OTEwZGIyMTA5ZWVhZDk1ZTEuLmNlMzBlMzBjOWZhZjkwMTRkNzQzNDM5NGMzZTU1ZjQzMDQ4NjEw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxh
dGl2ZSBXaW5kb3dzIGJ1aWxkIGZpeCBhZnRlciByMjE2NDI4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY0NTI4N2Y2ZTNjNjg4NWIyMmJhMjc3NmNmYmM2
YTMzMjNiZDA1Yi4uZjU2ZTE1Y2JkZTlmNGM2YWZkOTdhOTk0NTRmZWExNTIyN2RiOGUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjYsNyArMTI2LDcg
QEAKIAkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4
MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcw
N0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07Ci0JCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5jcHAgKi87IH07CisJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3Bw
ICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlEQ0VFMjIwMTFDRUE3NTUxMDAw
QzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09i
akNFeGNlcHRpb25zLm1tICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKQEAgLTUxOCw3ICs1MTgsNyBA
QAogCQlBRDg5QjZCNjFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZv
b3RwcmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJp
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4
OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5
NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYx
OUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3
Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQwLDcgKzg0MCw2IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywK
LQkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLywK
IAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCiAJ
CQkJQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAg
Ki8sCiAJCQkJQUQ4OUI2QjYxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5oICovLApAQCAtMTE2OCw2ICsxMTY3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5t
bSAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29j
b2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29y
a1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKQEAgLTEzMzAsNyArMTMzMCw3IEBACiAJCQkJQThB
NDczRTQxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmQ3NGNjYTk0MTUz
YjBiMWFmNDRhNjRhNjFjZTI4Y2FlZmU0ODE0NS4uMmI3NjE0ZjY0ZmRkMjg2NmE1MDc2Zjc1MzM4
NzRjYmM3M2YyNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIyNSw3ICsyMjUsNiBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRp
YVRpbWUuY3BwCi0gICAgTWVtb3J5Rm9vdHByaW50LmNwcAogICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCmluZGV4IDAxODRiNGY3MjdiN2M0M2Y5N2NmYjdlZTQ4OWQxZTQzM2E1Y2EwMzYu
LmQ2MThiYTJhNTUzYWQyYTVjNDljNGJlMzM2ZWQ3YWE5NGRiMDA1ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5o
CkBAIC02OSw2ICs2OSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBNYWxsb2NQdHIg
ewogICAgICAgICByZXR1cm4gIW1fcHRyOwogICAgIH0KIAorICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRy
OworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKwogICAgIE1hbGxvY1B0ciYgb3BlcmF0b3I9KE1hbGxvY1B0ciYm
IG90aGVyKQogICAgIHsKICAgICAgICAgTWFsbG9jUHRyIHB0ciA9IFdURk1vdmUob3RoZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlMzM1OGZmOGM4ZDg3ZGMwNDcxYzRjZWRhNGM0YmEzZTY0MGFjZmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9v
dHByaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lbW9yeUZvb3RwcmludC5oIgotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPG1h
Y2gvbWFjaC5oPgotI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Ci0jZW5kaWYKLQotI2lmIE9T
KExJTlVYKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotI2lmIE9TKExJTlVYKQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIGZvckVhY2hMaW5lKEZJTEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikKLXsKLSAgICBj
aGFyKiBidWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAo
Z2V0bGluZSgmYnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKLSAgICAgICAgZnVuY3Rvcihi
dWZmZXIsIHNpemUpOwotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgICAgIHNpemUgPSAwOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgdGFz
a192bV9pbmZvX2RhdGFfdCB2bUluZm87Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3Vu
dCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKLSAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tf
aW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5m
bywgJmNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8u
cGh5c19mb290cHJpbnQpOwotI2VsaWYgT1MoTElOVVgpCi0gICAgRklMRSogZmlsZSA9IGZvcGVu
KCIvcHJvYy9zZWxmL3NtYXBzIiwgInIiKTsKLSAgICBpZiAoIWZpbGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsUHJpdmF0ZURpcnR5SW5L
QiA9IDA7Ci0gICAgYm9vbCBpc0Fub255bW91cyA9IGZhbHNlOwotICAgIGZvckVhY2hMaW5lKGZp
bGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKLSAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFydDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwotICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGlub2RlOwotICAgICAgICAgICAgY2hhciBkZXZbMzJdOwotICAgICAgICAgICAgY2hhciBwZXJt
c1s1XTsKLSAgICAgICAgICAgIGNoYXIgcGF0aFs3XTsKLSAgICAgICAgICAgIGludCBzY2FubmVk
Q291bnQgPSBzc2NhbmYoYnVmZmVyLCAiJWx4LSVseCAlNHMgJWx4ICUzMXMgJWx1ICU2cyIsICZz
dGFydCwgJmVuZCwgcGVybXMsICZvZmZzZXQsIGRldiwgJmlub2RlLCBwYXRoKTsKLSAgICAgICAg
ICAgIGlmIChzY2FubmVkQ291bnQgPT0gNikgewotICAgICAgICAgICAgICAgIGlzQW5vbnltb3Vz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2Nhbm5lZENvdW50ID09IDcpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3
IHBhdGhTdHJpbmcocGF0aCk7Ci0gICAgICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSBwYXRoU3Ry
aW5nID09IEFTQ0lJTGl0ZXJhbCgiW2hlYXBdIikgfHwgcGF0aFN0cmluZy5zdGFydHNXaXRoKCJb
c3RhY2siKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWlzQW5vbnltb3VzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZURpcnR5SW5LQjsKLSAgICAgICAgaWYgKHNzY2Fu
ZihidWZmZXIsICJQcml2YXRlX0RpcnR5OiAlbHUiLCAmcHJpdmF0ZURpcnR5SW5LQikgPT0gMSkK
LSAgICAgICAgICAgIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiArPSBwcml2YXRlRGlydHlJbktCOwot
ICAgIH0pOwotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gdG90YWxQcml2YXRlRGlydHlJ
bktCICogS0I7Ci0jZW5kaWYKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk4MDJiMDMwN2VkMTdhZWZjNjQzNWYwOTc1YTc4N2Fk
MjZkYmQzZWIuLjQ0YTYwZWFjM2U5OTVmNjMwZmQzZDc3NzNiNWQ5OGM2NDMyMjFkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vz
c01lbW9yeVN0YXR1cy5jcHAKKyAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKICAg
ICBsaW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHVuaXgvQ1BVVGlt
ZVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggZmM3MzIxZGQw
OGVlNjBhYjZjMWQ1ZmYyYmI0M2EwMDg2ODgwYmQxYi4uNWQ5MjQ5ZTE4NDM3OWQxNTY4YjUzNzJi
ODI3ZGU4MWRhMTY1OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NP
bmx5LmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAt
MTcsNiArMTcsMjAgQEAgZWxzZSAoKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChXSU4zMikKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAorICAgICkKK2Vsc2UgKEFQUExFKQorICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCisg
ICAgICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAorICAgICkKK2Vsc2UgKCkKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRM
aW51eC5jcHAKKyAgICApCitlbmRpZiAoKQorCiBpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAg
Z2xpYi9HUmVmUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4M2U5ODdlYzBj
Y2IwYTlkZTA0Y2RhMDY0MGM3YTAzNWM1YmE2Y2ZiLi5iNDY4YTVkZDgzYjA4NzVlYzZkZjljYTY0
MTRlYmE5NmFmYTNjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjMsNiArMjMs
NyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAg
IGNvY29hL0NQVVRpbWVDb2NvYS5tbQorICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNw
cAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCiAgICAgY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOTVkMzNjMjYx
Y2U1ZWYyY2Y3NjI4Njg3MzYxMDYxZjgyMGY2Nzc3NS4uM2E0YTYxYmEzYWQ2MWU3OTdkN2Q4NmIx
M2ZjZjk3MGIwMjZiZGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwLDYgKzEw
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAog
ICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAorICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3Bw
CiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3aW4vUnVuTG9vcFdp
bi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMGE2OGIwMGFmNmUwZWRjMDRi
M2E2ZTQ5OThiYmU0YzUyNTZiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgor
I2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyAgICB0YXNrX3ZtX2luZm9fZGF0
YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9J
TkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFz
a19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOwor
ICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3Rwcmlu
dCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3Rw
cmludExpbnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MmMxZWVlNTI2YzE3YTc4YTI4MWMyYWE0NzE3NmRjOTlkYmExYWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
bW9yeUZvb3RwcmludC5oIgorCisjaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgT1MoTElOVVgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIHZvaWQgZm9yRWFjaExpbmUoRklMRSogZmlsZSwg
RnVuY3RvciBmdW5jdG9yKQoreworICAgIGNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZzaXplLCBmaWxlKSAh
PSAtMSkgeworICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7CisgICAgICAgIGZyZWUoYnVm
ZmVyKTsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgc2l6ZSA9IDA7CisgICAg
fQorfQorI2VuZGlmCisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQor
eworI2lmIE9TKExJTlVYKQorICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFw
cyIsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZhdGVEaXJ0eUluS0IgPSAwOworICAgIGJvb2wg
aXNBbm9ueW1vdXMgPSBmYWxzZTsKKyAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1
ZmZlciwgc2l6ZV90KSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0OworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbm9kZTsKKyAgICAgICAg
ICAgIGNoYXIgZGV2WzMyXTsKKyAgICAgICAgICAgIGNoYXIgcGVybXNbNV07CisgICAgICAgICAg
ICBjaGFyIHBhdGhbN107CisgICAgICAgICAgICBpbnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1
ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVsdSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1z
LCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7CisgICAgICAgICAgICBpZiAoc2Nhbm5lZENv
dW50ID09IDYpIHsKKyAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNjYW5uZWRD
b3VudCA9PSA3KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgp
OworICAgICAgICAgICAgICAgIGlzQW5vbnltb3VzID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVy
YWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3RhcnRzV2l0aCgiW3N0YWNrIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpc0Fub255bW91cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBs
b25nIHByaXZhdGVEaXJ0eUluS0I7CisgICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0
ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUluS0IpID09IDEpCisgICAgICAgICAgICB0b3Rh
bFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURpcnR5SW5LQjsKKyAgICB9KTsKKyAgICBmY2xv
c2UoZmlsZSk7CisgICAgcmV0dXJuIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiAqIEtCOworI2VuZGlm
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVt
b3J5Rm9vdHByaW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTdjMTk0OTFkMDRiOThmMGI3OGUyOWE5
MWUzNjA4NjBhOTVkOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL01l
bW9yeUZvb3RwcmludFdpbi5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8cHNhcGkuaD4gLy8gcHNhcGkuaCByZXF1aXJlcyB0aGF0IHdpbmRvd3MuaCBpcyBpbmNs
dWRlZC4KKyNpbmNsdWRlIDx3dGYvTWFsbG9jUHRyLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9XaW4z
MkhhbmRsZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1l
bW9yeUZvb3RwcmludCgpCit7CisgICAgLy8gV2Ugd291bGQgbGlrZSB0byBjYWxjdWxhdGUgc2l6
ZSBvZiBwcml2YXRlIHdvcmtpbmcgc2V0LgorICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2phLWpwL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg0ODkxKHY9dnMuODUpLmFzcHgK
KyAgICAvLyA+IFRoZSB3b3JraW5nIHNldCBvZiBhIHByb2dyYW0gaXMgYSBjb2xsZWN0aW9uIG9m
IHRob3NlIHBhZ2VzIGluIGl0cyB2aXJ0dWFsIGFkZHJlc3MKKyAgICAvLyA+IHNwYWNlIHRoYXQg
aGF2ZSBiZWVuIHJlY2VudGx5IHJlZmVyZW5jZWQuIEl0IGluY2x1ZGVzIGJvdGggc2hhcmVkIGFu
ZCBwcml2YXRlIGRhdGEuCisgICAgLy8gPiBUaGUgc2hhcmVkIGRhdGEgaW5jbHVkZXMgcGFnZXMg
dGhhdCBjb250YWluIGFsbCBpbnN0cnVjdGlvbnMgeW91ciBhcHBsaWNhdGlvbiBleGVjdXRlcywK
KyAgICAvLyA+IGluY2x1ZGluZyB0aG9zZSBpbiB5b3VyIERMTHMgYW5kIHRoZSBzeXN0ZW0gRExM
cy4gQXMgdGhlIHdvcmtpbmcgc2V0IHNpemUgaW5jcmVhc2VzLAorICAgIC8vID4gbWVtb3J5IGRl
bWFuZCBpbmNyZWFzZXMuCisgICAgV2luMzJIYW5kbGUgcHJvY2VzcyhPcGVuUHJvY2VzcyhQUk9D
RVNTX1FVRVJZX0lORk9STUFUSU9OLCBGQUxTRSwgR2V0Q3VycmVudFByb2Nlc3NJZCgpKSk7Cisg
ICAgaWYgKCFwcm9jZXNzLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93
cy9kZXNrdG9wL21zNjg0OTQ2KHY9dnMuODUpLmFzcHgKKyAgICBQU0FQSV9XT1JLSU5HX1NFVF9J
TkZPUk1BVElPTiBjb3VudDsKKyAgICBRdWVyeVdvcmtpbmdTZXQocHJvY2Vzcy5nZXQoKSwgJmNv
dW50LCBzaXplb2YoY291bnQpKTsKKyAgICBzaXplX3QgbWluTnVtYmVyT2ZFbnRyaWVzID0gMTY7
CisgICAgc2l6ZV90IG51bWJlck9mRW50cmllcyA9IHN0ZDo6bWF4KG1pbk51bWJlck9mRW50cmll
cywgY291bnQuTnVtYmVyT2ZFbnRyaWVzKTsKKyAgICBzaXplX3QgcmV0cnlDb3VudCA9IDM7Cisg
ICAgZG8geworICAgICAgICBzaXplX3Qgd29ya2luZ1NldFNpemVJbkJ5dGVzID0gc2l6ZW9mKFBT
QVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9OKSArIHNpemVvZihQU0FQSV9XT1JLSU5HX1NFVF9C
TE9DSykgKiBudW1iZXJPZkVudHJpZXM7CisgICAgICAgIE1hbGxvY1B0cjxQU0FQSV9XT1JLSU5H
X1NFVF9JTkZPUk1BVElPTj4gd29ya2luZ1NldHMgPSBNYWxsb2NQdHI6Om1hbGxvYyh3b3JraW5n
U2V0U2l6ZUluQnl0ZXMpOworICAgICAgICBpZiAoIVF1ZXJ5V29ya2luZ1NldChwcm9jZXNzLmdl
dCgpLCB3b3JraW5nU2V0cy5nZXQoKSwgd29ya2luZ1NldFNpemVJbkJ5dGVzKSkgeworICAgICAg
ICAgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX0JBRF9MRU5HVEgpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIC8vIElmIHdvcmtpbmcgc2V0
IGluY3JlYXNlcyBiZXR3ZWVuIGZpcnN0IFF1ZXJ5V29ya2luZ1NldCBhbmQgc2Vjb25kIFF1ZXJ5
V29ya2luZ1NldCwgdGhlIHNlY29uZCBvbmUgY2FuIGZhaWwuCisgICAgICAgICAgICAvLyBBdCB0
aGF0IHRpbWUsIHdlIHNob3VsZCBpbmNyZWFzZSBudW1iZXJPZkVudHJpZXMuCisgICAgICAgICAg
ICBudW1iZXJPZkVudHJpZXMgPSB3b3JraW5nU2V0cy0+TnVtYmVyT2ZFbnRyaWVzOworICAgICAg
ICAgICAgbnVtYmVyT2ZFbnRyaWVzID0gc3RkOjptYXgobWluTnVtYmVyT2ZFbnRyaWVzLCBudW1i
ZXJPZkVudHJpZXMgKyBudW1iZXJPZkVudHJpZXMgLyA0ICsgMSk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBudW1iZXJPZlByaXZhdGVXb3JraW5n
U2V0UGFnZXMgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmtpbmdTZXRz
LT5OdW1iZXJPZkVudHJpZXM7ICsraSkgeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODQ5MDIodj12cy44
NSkuYXNweAorICAgICAgICAgICAgUFNBUElfV09SS0lOR19TRVRfQkxPQ0sgd29ya2luZ1NldEJs
b2NrID0gd29ya2luZ1NldHMtPldvcmtpbmdTZXRJbmZvW2ldOworICAgICAgICAgICAgaWYgKCF3
b3JraW5nU2V0QmxvY2suU2hhcmVkKQorICAgICAgICAgICAgICAgIG51bWJlck9mUHJpdmF0ZVdv
cmtpbmdTZXRQYWdlcysrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudW1iZXJPZlByaXZh
dGVXb3JraW5nU2V0UGFnZXMgKiAoNCAqIEtCKTsKKyAgICB9IHdoaWxlIChyZXRyeUNvdW50LS0p
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309476</attachid>
            <date>2017-05-09 00:04:05 -0700</date>
            <delta_ts>2017-05-09 07:57:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170509160404.patch</filename>
            <type>text/plain</type>
            <size>22918</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYwN2NlYWI0NWUzNTY3ZGJkMjdiMTVm
OTEwZGIyMTA5ZWVhZDk1ZTEuLmNlMzBlMzBjOWZhZjkwMTRkNzQzNDM5NGMzZTU1ZjQzMDQ4NjEw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxh
dGl2ZSBXaW5kb3dzIGJ1aWxkIGZpeCBhZnRlciByMjE2NDI4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY0NTI4N2Y2ZTNjNjg4NWIyMmJhMjc3NmNmYmM2
YTMzMjNiZDA1Yi4uZjU2ZTE1Y2JkZTlmNGM2YWZkOTdhOTk0NTRmZWExNTIyN2RiOGUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjYsNyArMTI2LDcg
QEAKIAkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4
MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcw
N0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07Ci0JCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5jcHAgKi87IH07CisJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3Bw
ICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlEQ0VFMjIwMTFDRUE3NTUxMDAw
QzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09i
akNFeGNlcHRpb25zLm1tICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKQEAgLTUxOCw3ICs1MTgsNyBA
QAogCQlBRDg5QjZCNjFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZv
b3RwcmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJp
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4
OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5
NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYx
OUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3
Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQwLDcgKzg0MCw2IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywK
LQkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLywK
IAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCiAJ
CQkJQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAg
Ki8sCiAJCQkJQUQ4OUI2QjYxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5oICovLApAQCAtMTE2OCw2ICsxMTY3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5t
bSAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29j
b2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29y
a1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKQEAgLTEzMzAsNyArMTMzMCw3IEBACiAJCQkJQThB
NDczRTQxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmQ3NGNjYTk0MTUz
YjBiMWFmNDRhNjRhNjFjZTI4Y2FlZmU0ODE0NS4uMmI3NjE0ZjY0ZmRkMjg2NmE1MDc2Zjc1MzM4
NzRjYmM3M2YyNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIyNSw3ICsyMjUsNiBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRp
YVRpbWUuY3BwCi0gICAgTWVtb3J5Rm9vdHByaW50LmNwcAogICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCmluZGV4IDAxODRiNGY3MjdiN2M0M2Y5N2NmYjdlZTQ4OWQxZTQzM2E1Y2EwMzYu
LmQ2MThiYTJhNTUzYWQyYTVjNDljNGJlMzM2ZWQ3YWE5NGRiMDA1ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5o
CkBAIC02OSw2ICs2OSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBNYWxsb2NQdHIg
ewogICAgICAgICByZXR1cm4gIW1fcHRyOwogICAgIH0KIAorICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRy
OworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKwogICAgIE1hbGxvY1B0ciYgb3BlcmF0b3I9KE1hbGxvY1B0ciYm
IG90aGVyKQogICAgIHsKICAgICAgICAgTWFsbG9jUHRyIHB0ciA9IFdURk1vdmUob3RoZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlMzM1OGZmOGM4ZDg3ZGMwNDcxYzRjZWRhNGM0YmEzZTY0MGFjZmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9v
dHByaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lbW9yeUZvb3RwcmludC5oIgotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPG1h
Y2gvbWFjaC5oPgotI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Ci0jZW5kaWYKLQotI2lmIE9T
KExJTlVYKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotI2lmIE9TKExJTlVYKQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIGZvckVhY2hMaW5lKEZJTEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikKLXsKLSAgICBj
aGFyKiBidWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAo
Z2V0bGluZSgmYnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKLSAgICAgICAgZnVuY3Rvcihi
dWZmZXIsIHNpemUpOwotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgICAgIHNpemUgPSAwOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgdGFz
a192bV9pbmZvX2RhdGFfdCB2bUluZm87Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3Vu
dCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKLSAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tf
aW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5m
bywgJmNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8u
cGh5c19mb290cHJpbnQpOwotI2VsaWYgT1MoTElOVVgpCi0gICAgRklMRSogZmlsZSA9IGZvcGVu
KCIvcHJvYy9zZWxmL3NtYXBzIiwgInIiKTsKLSAgICBpZiAoIWZpbGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsUHJpdmF0ZURpcnR5SW5L
QiA9IDA7Ci0gICAgYm9vbCBpc0Fub255bW91cyA9IGZhbHNlOwotICAgIGZvckVhY2hMaW5lKGZp
bGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKLSAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFydDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwotICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGlub2RlOwotICAgICAgICAgICAgY2hhciBkZXZbMzJdOwotICAgICAgICAgICAgY2hhciBwZXJt
c1s1XTsKLSAgICAgICAgICAgIGNoYXIgcGF0aFs3XTsKLSAgICAgICAgICAgIGludCBzY2FubmVk
Q291bnQgPSBzc2NhbmYoYnVmZmVyLCAiJWx4LSVseCAlNHMgJWx4ICUzMXMgJWx1ICU2cyIsICZz
dGFydCwgJmVuZCwgcGVybXMsICZvZmZzZXQsIGRldiwgJmlub2RlLCBwYXRoKTsKLSAgICAgICAg
ICAgIGlmIChzY2FubmVkQ291bnQgPT0gNikgewotICAgICAgICAgICAgICAgIGlzQW5vbnltb3Vz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2Nhbm5lZENvdW50ID09IDcpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3
IHBhdGhTdHJpbmcocGF0aCk7Ci0gICAgICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSBwYXRoU3Ry
aW5nID09IEFTQ0lJTGl0ZXJhbCgiW2hlYXBdIikgfHwgcGF0aFN0cmluZy5zdGFydHNXaXRoKCJb
c3RhY2siKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWlzQW5vbnltb3VzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZURpcnR5SW5LQjsKLSAgICAgICAgaWYgKHNzY2Fu
ZihidWZmZXIsICJQcml2YXRlX0RpcnR5OiAlbHUiLCAmcHJpdmF0ZURpcnR5SW5LQikgPT0gMSkK
LSAgICAgICAgICAgIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiArPSBwcml2YXRlRGlydHlJbktCOwot
ICAgIH0pOwotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gdG90YWxQcml2YXRlRGlydHlJ
bktCICogS0I7Ci0jZW5kaWYKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk4MDJiMDMwN2VkMTdhZWZjNjQzNWYwOTc1YTc4N2Fk
MjZkYmQzZWIuLjQ0YTYwZWFjM2U5OTVmNjMwZmQzZDc3NzNiNWQ5OGM2NDMyMjFkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vz
c01lbW9yeVN0YXR1cy5jcHAKKyAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKICAg
ICBsaW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHVuaXgvQ1BVVGlt
ZVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggZmM3MzIxZGQw
OGVlNjBhYjZjMWQ1ZmYyYmI0M2EwMDg2ODgwYmQxYi4uNWQ5MjQ5ZTE4NDM3OWQxNTY4YjUzNzJi
ODI3ZGU4MWRhMTY1OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NP
bmx5LmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAt
MTcsNiArMTcsMjAgQEAgZWxzZSAoKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChXSU4zMikKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAorICAgICkKK2Vsc2UgKEFQUExFKQorICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCisg
ICAgICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAorICAgICkKK2Vsc2UgKCkKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRM
aW51eC5jcHAKKyAgICApCitlbmRpZiAoKQorCiBpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAg
Z2xpYi9HUmVmUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4M2U5ODdlYzBj
Y2IwYTlkZTA0Y2RhMDY0MGM3YTAzNWM1YmE2Y2ZiLi5iNDY4YTVkZDgzYjA4NzVlYzZkZjljYTY0
MTRlYmE5NmFmYTNjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjMsNiArMjMs
NyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAg
IGNvY29hL0NQVVRpbWVDb2NvYS5tbQorICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNw
cAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCiAgICAgY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOTVkMzNjMjYx
Y2U1ZWYyY2Y3NjI4Njg3MzYxMDYxZjgyMGY2Nzc3NS4uM2E0YTYxYmEzYWQ2MWU3OTdkN2Q4NmIx
M2ZjZjk3MGIwMjZiZGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwLDYgKzEw
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAog
ICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAorICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3Bw
CiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3aW4vUnVuTG9vcFdp
bi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMGE2OGIwMGFmNmUwZWRjMDRi
M2E2ZTQ5OThiYmU0YzUyNTZiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgor
I2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyAgICB0YXNrX3ZtX2luZm9fZGF0
YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9J
TkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFz
a19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOwor
ICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3Rwcmlu
dCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3Rw
cmludExpbnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MmMxZWVlNTI2YzE3YTc4YTI4MWMyYWE0NzE3NmRjOTlkYmExYWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
bW9yeUZvb3RwcmludC5oIgorCisjaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgT1MoTElOVVgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIHZvaWQgZm9yRWFjaExpbmUoRklMRSogZmlsZSwg
RnVuY3RvciBmdW5jdG9yKQoreworICAgIGNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZzaXplLCBmaWxlKSAh
PSAtMSkgeworICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7CisgICAgICAgIGZyZWUoYnVm
ZmVyKTsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgc2l6ZSA9IDA7CisgICAg
fQorfQorI2VuZGlmCisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQor
eworI2lmIE9TKExJTlVYKQorICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFw
cyIsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZhdGVEaXJ0eUluS0IgPSAwOworICAgIGJvb2wg
aXNBbm9ueW1vdXMgPSBmYWxzZTsKKyAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1
ZmZlciwgc2l6ZV90KSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0OworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbm9kZTsKKyAgICAgICAg
ICAgIGNoYXIgZGV2WzMyXTsKKyAgICAgICAgICAgIGNoYXIgcGVybXNbNV07CisgICAgICAgICAg
ICBjaGFyIHBhdGhbN107CisgICAgICAgICAgICBpbnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1
ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVsdSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1z
LCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7CisgICAgICAgICAgICBpZiAoc2Nhbm5lZENv
dW50ID09IDYpIHsKKyAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNjYW5uZWRD
b3VudCA9PSA3KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgp
OworICAgICAgICAgICAgICAgIGlzQW5vbnltb3VzID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVy
YWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3RhcnRzV2l0aCgiW3N0YWNrIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpc0Fub255bW91cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBs
b25nIHByaXZhdGVEaXJ0eUluS0I7CisgICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0
ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUluS0IpID09IDEpCisgICAgICAgICAgICB0b3Rh
bFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURpcnR5SW5LQjsKKyAgICB9KTsKKyAgICBmY2xv
c2UoZmlsZSk7CisgICAgcmV0dXJuIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiAqIEtCOworI2VuZGlm
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVt
b3J5Rm9vdHByaW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjM0MTAwZDdmYzE1ZDEwYTQ2ODhkNzJm
MTI4ZjVjN2ZmNDZlMzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL01l
bW9yeUZvb3RwcmludFdpbi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHBzYXBpLmg+IC8vIHBzYXBpLmggcmVxdWlyZXMg
dGhhdCB3aW5kb3dzLmggaXMgaW5jbHVkZWQuCisjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgor
I2luY2x1ZGUgPHd0Zi93aW4vV2luMzJIYW5kbGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQoreworICAgIC8vIFdlIHdvdWxk
IGxpa2UgdG8gY2FsY3VsYXRlIHNpemUgb2YgcHJpdmF0ZSB3b3JraW5nIHNldC4KKyAgICAvLyBo
dHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9qYS1qcC9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9t
czY4NDg5MSh2PXZzLjg1KS5hc3B4CisgICAgLy8gPiBUaGUgd29ya2luZyBzZXQgb2YgYSBwcm9n
cmFtIGlzIGEgY29sbGVjdGlvbiBvZiB0aG9zZSBwYWdlcyBpbiBpdHMgdmlydHVhbCBhZGRyZXNz
CisgICAgLy8gPiBzcGFjZSB0aGF0IGhhdmUgYmVlbiByZWNlbnRseSByZWZlcmVuY2VkLiBJdCBp
bmNsdWRlcyBib3RoIHNoYXJlZCBhbmQgcHJpdmF0ZSBkYXRhLgorICAgIC8vID4gVGhlIHNoYXJl
ZCBkYXRhIGluY2x1ZGVzIHBhZ2VzIHRoYXQgY29udGFpbiBhbGwgaW5zdHJ1Y3Rpb25zIHlvdXIg
YXBwbGljYXRpb24gZXhlY3V0ZXMsCisgICAgLy8gPiBpbmNsdWRpbmcgdGhvc2UgaW4geW91ciBE
TExzIGFuZCB0aGUgc3lzdGVtIERMTHMuIEFzIHRoZSB3b3JraW5nIHNldCBzaXplIGluY3JlYXNl
cywKKyAgICAvLyA+IG1lbW9yeSBkZW1hbmQgaW5jcmVhc2VzLgorICAgIFdpbjMySGFuZGxlIHBy
b2Nlc3MoT3BlblByb2Nlc3MoUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiwgRkFMU0UsIEdldEN1
cnJlbnRQcm9jZXNzSWQoKSkpOworICAgIGlmICghcHJvY2Vzcy5pc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4NDk0Nih2PXZzLjg1KS5hc3B4Cisg
ICAgUFNBUElfV09SS0lOR19TRVRfSU5GT1JNQVRJT04gY291bnQ7CisgICAgUXVlcnlXb3JraW5n
U2V0KHByb2Nlc3MuZ2V0KCksICZjb3VudCwgc2l6ZW9mKGNvdW50KSk7CisgICAgc2l6ZV90IG1p
bk51bWJlck9mRW50cmllcyA9IDE2OworICAgIHNpemVfdCBudW1iZXJPZkVudHJpZXMgPSBzdGQ6
Om1heDxzaXplX3Q+KG1pbk51bWJlck9mRW50cmllcywgY291bnQuTnVtYmVyT2ZFbnRyaWVzKTsK
KyAgICBzaXplX3QgcmV0cnlDb3VudCA9IDM7CisgICAgZG8geworICAgICAgICBzaXplX3Qgd29y
a2luZ1NldFNpemVJbkJ5dGVzID0gc2l6ZW9mKFBTQVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9O
KSArIHNpemVvZihQU0FQSV9XT1JLSU5HX1NFVF9CTE9DSykgKiBudW1iZXJPZkVudHJpZXM7Cisg
ICAgICAgIGF1dG8gd29ya2luZ1NldHMgPSBNYWxsb2NQdHI8UFNBUElfV09SS0lOR19TRVRfSU5G
T1JNQVRJT04+OjptYWxsb2Mod29ya2luZ1NldFNpemVJbkJ5dGVzKTsKKyAgICAgICAgaWYgKCFR
dWVyeVdvcmtpbmdTZXQocHJvY2Vzcy5nZXQoKSwgd29ya2luZ1NldHMuZ2V0KCksIHdvcmtpbmdT
ZXRTaXplSW5CeXRlcykpIHsKKyAgICAgICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJP
Ul9CQURfTEVOR1RIKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgICAgICAvLyBJZiB3b3JraW5nIHNldCBpbmNyZWFzZXMgYmV0d2VlbiBmaXJzdCBRdWVyeVdv
cmtpbmdTZXQgYW5kIHNlY29uZCBRdWVyeVdvcmtpbmdTZXQsIHRoZSBzZWNvbmQgb25lIGNhbiBm
YWlsLgorICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB3ZSBzaG91bGQgaW5jcmVhc2UgbnVt
YmVyT2ZFbnRyaWVzLgorICAgICAgICAgICAgbnVtYmVyT2ZFbnRyaWVzID0gd29ya2luZ1NldHMt
Pk51bWJlck9mRW50cmllczsKKyAgICAgICAgICAgIG51bWJlck9mRW50cmllcyA9IHN0ZDo6bWF4
KG1pbk51bWJlck9mRW50cmllcywgbnVtYmVyT2ZFbnRyaWVzICsgbnVtYmVyT2ZFbnRyaWVzIC8g
NCArIDEpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzaXpl
X3QgbnVtYmVyT2ZQcml2YXRlV29ya2luZ1NldFBhZ2VzID0gMDsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3b3JraW5nU2V0cy0+TnVtYmVyT2ZFbnRyaWVzOyArK2kpIHsKKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93
cy9kZXNrdG9wL21zNjg0OTAyKHY9dnMuODUpLmFzcHgKKyAgICAgICAgICAgIFBTQVBJX1dPUktJ
TkdfU0VUX0JMT0NLIHdvcmtpbmdTZXRCbG9jayA9IHdvcmtpbmdTZXRzLT5Xb3JraW5nU2V0SW5m
b1tpXTsKKyAgICAgICAgICAgIGlmICghd29ya2luZ1NldEJsb2NrLlNoYXJlZCkKKyAgICAgICAg
ICAgICAgICBudW1iZXJPZlByaXZhdGVXb3JraW5nU2V0UGFnZXMrKzsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbnVtYmVyT2ZQcml2YXRlV29ya2luZ1NldFBhZ2VzICogKDQgKiBLQik7Cisg
ICAgfSB3aGlsZSAocmV0cnlDb3VudC0tKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQor
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309493</attachid>
            <date>2017-05-09 07:57:26 -0700</date>
            <delta_ts>2017-05-10 07:52:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170509235725.patch</filename>
            <type>text/plain</type>
            <size>22835</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkMGMxNGNmZGNmNTdjYzA3NzhjYTlj
ZTNkZmJlZDNiODgwNTllMDkuLmI4MWYyMzVmMTllMjhlOGY4MDg5YmMxODA4MmQ5M2NkNjI3NTI5
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
cHN0cmVhbSB0aGUgV1BFIHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDVmNDUyODdmNmUzYzY4ODViMjJiYTI3NzZjZmJjNmEzMzIzYmQwNWIuLmY1NmUx
NWNiZGU5ZjRjNmFmZDk3YTk5NDU0ZmVhMTUyMjdkYjhlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2LDcgKzEyNiw3IEBACiAJCUE4QTQ3NDg2MTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmNwcCAqLzsgfTsKIAkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDg5QjZCNTFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCAqLzsgfTsKIAkJQUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNz
dXJlSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQ4OUI2QjkxRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ckNvY29hLm1tICovOyB9OwotCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovOyB9Owor
CQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3
QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAq
LzsgfTsKIAkJRENFRTIyMDMxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDRUUyMUZGMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNNYWMubW0gKi87IH07CkBAIC01MTgsNyArNTE4LDcgQEAKIAkJQUQ4OUI2QjYxRTY0
MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQUQ4OUI2QjkxRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJl
SGFuZGxlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9v
dHByaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjUxRTM5RjEw
NjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUZvb3RwcmludENvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAv
KiBTdG9wd2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcHdhdGNo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZE
NiAvKiBSYW5kb21EZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmFuZG9tRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MCw3
ICs4NDAsNiBAQAogCQkJCUE4QTQ3MkNCMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUuaCAqLywKIAkJ
CQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLywKIAkJCQlDRDU0
OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi8sCi0JCQkJQURGMkNFNjUxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8sCiAJCQkJQURGMkNFNjQxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICovLAogCQkJCUFEODlCNkI1MUU2NDE1
MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovLAogCQkJCUFEODlCNkI2
MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCAqLywKQEAgLTExNjgs
NiArMTE2Nyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUz
OEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gKi8sCisJCQkJQURGMkNF
NjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLywKIAkJCQlB
RDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0g
Ki8sCiAJCQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAq
LywKIAkJCSk7CkBAIC0xMzMwLDcgKzEzMzAsNyBAQAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQx
MjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRTkxNTFB
ODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU0OTdBQzE1ODU3
RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUFERjJDRTY3
MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFEODlCNkI3MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ4OUI2QkExRTY0MTUwRjAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDZkNzRjY2E5NDE1M2IwYjFhZjQ0YTY0YTYxY2Uy
OGNhZWZlNDgxNDUuLjJiNzYxNGY2NGZkZDI4NjZhNTA3NmY3NTMzODc0Y2JjNzNmMjYxY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMjUsNyArMjI1LDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAg
ICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAotICAgIE1l
bW9yeUZvb3RwcmludC5jcHAKICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCiAgICAgTWV0
YUFsbG9jYXRvci5jcHAKICAgICBNb25vdG9uaWNUaW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAppbmRleCAw
MTg0YjRmNzI3YjdjNDNmOTdjZmI3ZWU0ODlkMWU0MzNhNWNhMDM2Li5kNjE4YmEyYTU1M2FkMmE1
YzQ5YzRiZTMzNmVkN2FhOTRkYjAwNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWxs
b2NQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaApAQCAtNjksNiArNjksMTcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTWFsbG9jUHRyIHsKICAgICAgICAgcmV0dXJu
ICFtX3B0cjsKICAgICB9CiAKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fcHRyKTsKKyAgICAgICAgcmV0dXJuICptX3B0cjsKKyAgICB9CisKKyAgICBU
KiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9
CisKICAgICBNYWxsb2NQdHImIG9wZXJhdG9yPShNYWxsb2NQdHImJiBvdGhlcikKICAgICB7CiAg
ICAgICAgIE1hbGxvY1B0ciBwdHIgPSBXVEZNb3ZlKG90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290
cHJpbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTMzNThmZjhjOGQ4N2Rj
MDQ3MWM0Y2VkYTRjNGJhM2U2NDBhY2ZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZW1vcnlGb290
cHJpbnQuaCIKLQotI2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxtYWNoL21hY2guaD4KLSNpbmNs
dWRlIDxtYWNoL3Rhc2tfaW5mby5oPgotI2VuZGlmCi0KLSNpZiBPUyhMSU5VWCkKLSNpbmNsdWRl
IDxzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiBPUyhM
SU5VWCkKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBmb3JFYWNoTGlu
ZShGSUxFKiBmaWxlLCBGdW5jdG9yIGZ1bmN0b3IpCi17Ci0gICAgY2hhciogYnVmZmVyID0gbnVs
bHB0cjsKLSAgICBzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgd2hpbGUgKGdldGxpbmUoJmJ1ZmZlciwg
JnNpemUsIGZpbGUpICE9IC0xKSB7Ci0gICAgICAgIGZ1bmN0b3IoYnVmZmVyLCBzaXplKTsKLSAg
ICAgICAgZnJlZShidWZmZXIpOwotICAgICAgICBidWZmZXIgPSBudWxscHRyOwotICAgICAgICBz
aXplID0gMDsKLSAgICB9Ci19Ci0jZW5kaWYKLQotc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1lbW9y
eUZvb3RwcmludCgpCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIHRhc2tfdm1faW5mb19kYXRhX3Qg
dm1JbmZvOwotICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9f
Q09VTlQ7Ci0gICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNrX3Nl
bGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2bUluZm8sICZjb3VudCk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLnBoeXNfZm9vdHByaW50KTsK
LSNlbGlmIE9TKExJTlVYKQotICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFw
cyIsICJyIik7Ci0gICAgaWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZhdGVEaXJ0eUluS0IgPSAwOwotICAgIGJvb2wg
aXNBbm9ueW1vdXMgPSBmYWxzZTsKLSAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1
ZmZlciwgc2l6ZV90KSB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0OwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbm9kZTsKLSAgICAgICAg
ICAgIGNoYXIgZGV2WzMyXTsKLSAgICAgICAgICAgIGNoYXIgcGVybXNbNV07Ci0gICAgICAgICAg
ICBjaGFyIHBhdGhbN107Ci0gICAgICAgICAgICBpbnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1
ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVsdSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1z
LCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7Ci0gICAgICAgICAgICBpZiAoc2Nhbm5lZENv
dW50ID09IDYpIHsKLSAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNjYW5uZWRD
b3VudCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgp
OwotICAgICAgICAgICAgICAgIGlzQW5vbnltb3VzID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVy
YWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3RhcnRzV2l0aCgiW3N0YWNrIik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFpc0Fub255bW91cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1bnNpZ25lZCBs
b25nIHByaXZhdGVEaXJ0eUluS0I7Ci0gICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0
ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUluS0IpID09IDEpCi0gICAgICAgICAgICB0b3Rh
bFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURpcnR5SW5LQjsKLSAgICB9KTsKLSAgICBmY2xv
c2UoZmlsZSk7Ci0gICAgcmV0dXJuIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiAqIEtCOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFr
ZQppbmRleCA5ODAyYjAzMDdlZDE3YWVmYzY0MzVmMDk3NWE3ODdhZDI2ZGJkM2ViLi40NGE2MGVh
YzNlOTk1ZjYzMGZkM2Q3NzczYjVkOThjNjQzMjIxZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtOSw2ICs5LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL1J1
bkxvb3BHTGliLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3Bw
CisgICAgbGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCiAgICAgbGludXgvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyTGludXguY3BwCiAKICAgICB1bml4L0NQVVRpbWVVbml4LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCmluZGV4IGZjNzMyMWRkMDhlZTYwYWI2YzFkNWZmMmJi
NDNhMDA4Njg4MGJkMWIuLjVkOTI0OWUxODQzNzlkMTU2OGI1MzcyYjgyN2RlODFkYTE2NTk1N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAgLTE3LDYgKzE3LDIwIEBAIGVs
c2UgKCkKICAgICApCiBlbmRpZiAoKQogCitpZiAoV0lOMzIpCisgICAgbGlzdChBUFBFTkQgV1RG
X1NPVVJDRVMKKyAgICAgICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKKyAgICApCitlbHNl
IChBUFBMRSkKKyAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBjb2NvYS9NZW1v
cnlGb290cHJpbnRDb2NvYS5jcHAKKyAgICApCitlbHNlICgpCisgICAgbGlzdChBUFBFTkQgV1RG
X1NPVVJDRVMKKyAgICAgICAgbGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCisgICAgKQor
ZW5kaWYgKCkKKwogaWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIi
KQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGdsaWIvR1JlZlB0ci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODNlOTg3ZWMwY2NiMGE5ZGUwNGNkYTA2NDBj
N2EwMzVjNWJhNmNmYi4uYjQ2OGE1ZGQ4M2IwODc1ZWM2ZGY5Y2E2NDE0ZWJhOTZhZmEzY2ZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIzLDYgKzIzLDcgQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKICAgICBjZi9SdW5Mb29wQ0YuY3BwCiAKICAgICBjb2NvYS9DUFVUaW1lQ29j
b2EubW0KKyAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKICAgICBjb2NvYS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDk1ZDMzYzI2MWNlNWVmMmNmNzYyODY4NzM2
MTA2MWY4MjBmNjc3NzUuLjNhNGE2MWJhM2FkNjFlNzk3ZDdkODZiMTNmY2Y5NzBiMDI2YmRiMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMCw2ICsxMCw3IEBAIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAKICAgICB3aW4vQ1BVVGltZVdpbi5jcHAKICAgICB3aW4vTWFpblRocmVh
ZFdpbi5jcHAKKyAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2luLmNwcAogICAgIHdpbi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJXaW4uY3BwCiAgICAgd2luL1J1bkxvb3BXaW4uY3BwCiAgICAgd2luL1dv
cmtRdWV1ZVdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeUZv
b3RwcmludENvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeUZvb3RwcmludENv
Y29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMDBhNjhiMDBhZjZlMGVkYzA0YjNhNmU0OTk4YmJlNGM1MjU2
YmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5Rm9vdHBy
aW50Q29jb2EuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5
Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxtYWNoL3Rh
c2tfaW5mby5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1l
bW9yeUZvb3RwcmludCgpCit7CisgICAgdGFza192bV9pbmZvX2RhdGFfdCB2bUluZm87CisgICAg
bWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKKyAgICBr
ZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tfaW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZN
X0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5mbywgJmNvdW50KTsKKyAgICBpZiAocmVzdWx0ICE9
IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8ucGh5c19mb290cHJpbnQpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9saW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9saW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODJjMWVlZTUyNmMxN2E3OGEyODFjMmFhNDcxNzZkYzk5ZGJhMWFlOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApAQCAtMCww
ICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIK
KworI2lmIE9TKExJTlVYKQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV1RGIHsKKworI2lmIE9TKExJTlVYKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KK3N0YXRpYyB2b2lkIGZvckVhY2hMaW5lKEZJTEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikK
K3sKKyAgICBjaGFyKiBidWZmZXIgPSBudWxscHRyOworICAgIHNpemVfdCBzaXplID0gMDsKKyAg
ICB3aGlsZSAoZ2V0bGluZSgmYnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKKyAgICAgICAg
ZnVuY3RvcihidWZmZXIsIHNpemUpOworICAgICAgICBmcmVlKGJ1ZmZlcik7CisgICAgICAgIGJ1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHNpemUgPSAwOworICAgIH0KK30KKyNlbmRpZgorCitz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyNpZiBPUyhMSU5VWCkK
KyAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9jL3NlbGYvc21hcHMiLCAiciIpOworICAgIGlm
ICghZmlsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHVuc2lnbmVkIGxv
bmcgdG90YWxQcml2YXRlRGlydHlJbktCID0gMDsKKyAgICBib29sIGlzQW5vbnltb3VzID0gZmFs
c2U7CisgICAgZm9yRWFjaExpbmUoZmlsZSwgWyZdIChjaGFyKiBidWZmZXIsIHNpemVfdCkgewor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0OworICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBlbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5vZGU7CisgICAgICAgICAgICBjaGFyIGRldlszMl07
CisgICAgICAgICAgICBjaGFyIHBlcm1zWzVdOworICAgICAgICAgICAgY2hhciBwYXRoWzddOwor
ICAgICAgICAgICAgaW50IHNjYW5uZWRDb3VudCA9IHNzY2FuZihidWZmZXIsICIlbHgtJWx4ICU0
cyAlbHggJTMxcyAlbHUgJTZzIiwgJnN0YXJ0LCAmZW5kLCBwZXJtcywgJm9mZnNldCwgZGV2LCAm
aW5vZGUsIHBhdGgpOworICAgICAgICAgICAgaWYgKHNjYW5uZWRDb3VudCA9PSA2KSB7CisgICAg
ICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzY2FubmVkQ291bnQgPT0gNykgeworICAg
ICAgICAgICAgICAgIFN0cmluZ1ZpZXcgcGF0aFN0cmluZyhwYXRoKTsKKyAgICAgICAgICAgICAg
ICBpc0Fub255bW91cyA9IHBhdGhTdHJpbmcgPT0gQVNDSUlMaXRlcmFsKCJbaGVhcF0iKSB8fCBw
YXRoU3RyaW5nLnN0YXJ0c1dpdGgoIltzdGFjayIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNBbm9ueW1vdXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5zaWduZWQgbG9uZyBwcml2YXRlRGlydHlJ
bktCOworICAgICAgICBpZiAoc3NjYW5mKGJ1ZmZlciwgIlByaXZhdGVfRGlydHk6ICVsdSIsICZw
cml2YXRlRGlydHlJbktCKSA9PSAxKQorICAgICAgICAgICAgdG90YWxQcml2YXRlRGlydHlJbktC
ICs9IHByaXZhdGVEaXJ0eUluS0I7CisgICAgfSk7CisgICAgZmNsb3NlKGZpbGUpOworICAgIHJl
dHVybiB0b3RhbFByaXZhdGVEaXJ0eUluS0IgKiBLQjsKKyNlbmRpZgorICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9NZW1vcnlG
b290cHJpbnRXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGY1ZGYwMjZiNzVhNjBiZDhhNTU1YzJjMmYxMDRjMmVmZTBjODcyMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9NZW1vcnlGb290cHJpbnRXaW4u
Y3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeUZv
b3RwcmludC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4K
KyNpbmNsdWRlIDxwc2FwaS5oPiAvLyBwc2FwaS5oIHJlcXVpcmVzIHRoYXQgd2luZG93cy5oIGlz
IGluY2x1ZGVkLgorI2luY2x1ZGUgPHd0Zi9NYWxsb2NQdHIuaD4KKyNpbmNsdWRlIDx3dGYvd2lu
L1dpbjMySGFuZGxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGNhbGN1bGF0
ZSBzaXplIG9mIHByaXZhdGUgd29ya2luZyBzZXQuCisgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODQ4OTEodj12cy44NSku
YXNweAorICAgIC8vID4gVGhlIHdvcmtpbmcgc2V0IG9mIGEgcHJvZ3JhbSBpcyBhIGNvbGxlY3Rp
b24gb2YgdGhvc2UgcGFnZXMgaW4gaXRzIHZpcnR1YWwgYWRkcmVzcworICAgIC8vID4gc3BhY2Ug
dGhhdCBoYXZlIGJlZW4gcmVjZW50bHkgcmVmZXJlbmNlZC4gSXQgaW5jbHVkZXMgYm90aCBzaGFy
ZWQgYW5kIHByaXZhdGUgZGF0YS4KKyAgICAvLyA+IFRoZSBzaGFyZWQgZGF0YSBpbmNsdWRlcyBw
YWdlcyB0aGF0IGNvbnRhaW4gYWxsIGluc3RydWN0aW9ucyB5b3VyIGFwcGxpY2F0aW9uIGV4ZWN1
dGVzLAorICAgIC8vID4gaW5jbHVkaW5nIHRob3NlIGluIHlvdXIgRExMcyBhbmQgdGhlIHN5c3Rl
bSBETExzLiBBcyB0aGUgd29ya2luZyBzZXQgc2l6ZSBpbmNyZWFzZXMsCisgICAgLy8gPiBtZW1v
cnkgZGVtYW5kIGluY3JlYXNlcy4KKyAgICBXaW4zMkhhbmRsZSBwcm9jZXNzKE9wZW5Qcm9jZXNz
KFBST0NFU1NfUVVFUllfSU5GT1JNQVRJT04sIEZBTFNFLCBHZXRDdXJyZW50UHJvY2Vzc0lkKCkp
KTsKKyAgICBpZiAoIXByb2Nlc3MuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93
aW5kb3dzL2Rlc2t0b3AvbXM2ODQ5NDYodj12cy44NSkuYXNweAorICAgIFBTQVBJX1dPUktJTkdf
U0VUX0lORk9STUFUSU9OIGNvdW50OworICAgIFF1ZXJ5V29ya2luZ1NldChwcm9jZXNzLmdldCgp
LCAmY291bnQsIHNpemVvZihjb3VudCkpOworICAgIHNpemVfdCBtaW5OdW1iZXJPZkVudHJpZXMg
PSAxNjsKKyAgICBzaXplX3QgbnVtYmVyT2ZFbnRyaWVzID0gc3RkOjptYXg8c2l6ZV90PihtaW5O
dW1iZXJPZkVudHJpZXMsIGNvdW50Lk51bWJlck9mRW50cmllcyk7CisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgc2l6ZV90IHdvcmtpbmdTZXRTaXplSW5CeXRlcyA9IHNpemVvZihQU0FQSV9X
T1JLSU5HX1NFVF9JTkZPUk1BVElPTikgKyBzaXplb2YoUFNBUElfV09SS0lOR19TRVRfQkxPQ0sp
ICogbnVtYmVyT2ZFbnRyaWVzOworICAgICAgICBhdXRvIHdvcmtpbmdTZXRzID0gTWFsbG9jUHRy
PFBTQVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9OPjo6bWFsbG9jKHdvcmtpbmdTZXRTaXplSW5C
eXRlcyk7CisgICAgICAgIGlmICghUXVlcnlXb3JraW5nU2V0KHByb2Nlc3MuZ2V0KCksIHdvcmtp
bmdTZXRzLmdldCgpLCB3b3JraW5nU2V0U2l6ZUluQnl0ZXMpKSB7CisgICAgICAgICAgICBpZiAo
R2V0TGFzdEVycm9yKCkgIT0gRVJST1JfQkFEX0xFTkdUSCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgLy8gSWYgd29ya2luZyBzZXQgaW5jcmVhc2Vz
IGJldHdlZW4gZmlyc3QgUXVlcnlXb3JraW5nU2V0IGFuZCBzZWNvbmQgUXVlcnlXb3JraW5nU2V0
LCB0aGUgc2Vjb25kIG9uZSBjYW4gZmFpbC4KKyAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwg
d2Ugc2hvdWxkIGluY3JlYXNlIG51bWJlck9mRW50cmllcy4KKyAgICAgICAgICAgIG51bWJlck9m
RW50cmllcyA9IHdvcmtpbmdTZXRzLT5OdW1iZXJPZkVudHJpZXM7CisgICAgICAgICAgICBudW1i
ZXJPZkVudHJpZXMgPSBzdGQ6Om1heChtaW5OdW1iZXJPZkVudHJpZXMsIG51bWJlck9mRW50cmll
cyArIG51bWJlck9mRW50cmllcyAvIDQgKyAxKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bWJlck9mUHJpdmF0ZVdvcmtpbmdTZXRQYWdlcyA9
IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya2luZ1NldHMtPk51bWJlck9m
RW50cmllczsgKytpKSB7CisgICAgICAgICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4NDkwMih2PXZzLjg1KS5hc3B4Cisg
ICAgICAgICAgICBQU0FQSV9XT1JLSU5HX1NFVF9CTE9DSyB3b3JraW5nU2V0QmxvY2sgPSB3b3Jr
aW5nU2V0cy0+V29ya2luZ1NldEluZm9baV07CisgICAgICAgICAgICBpZiAoIXdvcmtpbmdTZXRC
bG9jay5TaGFyZWQpCisgICAgICAgICAgICAgICAgbnVtYmVyT2ZQcml2YXRlV29ya2luZ1NldFBh
Z2VzKys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bWJlck9mUHJpdmF0ZVdvcmtpbmdT
ZXRQYWdlcyAqICg0ICogS0IpOworICAgIH0KK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309605</attachid>
            <date>2017-05-10 07:52:18 -0700</date>
            <delta_ts>2017-05-10 08:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170510235217.patch</filename>
            <type>text/plain</type>
            <size>23462</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkZGMxZDY5ZmZiZTdmNmM1ZDFmOTQw
ZDFhYmZkNGIyMWQ4MDM3ZjEuLmQxODgzODM0ODIwMzgwZTkyYjk4NmU4YjRjMTljZmU0M2MwMmQ5
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTEwICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIHNvbWUgbGFzdCByZW1uYW50cyBvZiB0aGUgRUZMIHBvcnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmNDUyODdmNmUzYzY4ODViMjJi
YTI3NzZjZmJjNmEzMzIzYmQwNWIuLmY1NmUxNWNiZGU5ZjRjNmFmZDk3YTk5NDU0ZmVhMTUyMjdk
YjhlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2
LDcgKzEyNiw3IEBACiAJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLzsgfTsKIAkJQUQ4OUI2
QjcxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCNTFFNjQxNTA4MDA5
MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLzsgfTsKIAkJQUQ4OUI2QkExRTY0
MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4OUI2QjkxRTY0MTUwRjAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovOyB9OwotCQlBREYyQ0U2NzFF
MzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBN
ZW1vcnlGb290cHJpbnQuY3BwICovOyB9OworCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyog
TWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rwcmlu
dENvY29hLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGlt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0
OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJRENFRTIyMDEx
Q0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLzsgfTsKIAkJRENFRTIyMDMxQ0VBNzU1MTAwMEMy
Mzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZGMUNFQTc1NTEwMDBDMjM5
NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gKi87IH07CkBAIC01MTgs
NyArNTE4LDcgQEAKIAkJQUQ4OUI2QjYxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJl
SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4OUI2QjkxRTY0MTUw
RjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAv
KiBNZW1vcnlGb290cHJpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVt
b3J5Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFERjJDRTY1MUUz
OUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUZvb3Rw
cmludENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5
NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcHdhdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFuZG9tRGV2aWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MCw3ICs4NDAsNiBAQAogCQkJCUE4QTQ3MkNCMTUxQTgy
NUIwMDQxMjNGRiAvKiBNRDUuaCAqLywKIAkJCQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmNwcCAqLywKIAkJCQlDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmggKi8sCi0JCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rwcmlu
dC5jcHAgKi8sCiAJCQkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rwcmlu
dC5oICovLAogCQkJCUFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXIuY3BwICovLAogCQkJCUFEODlCNkI2MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaCAqLywKQEAgLTExNjgsNiArMTE2Nyw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUzOEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVU
aW1lQ29jb2EubW0gKi8sCisJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZv
b3RwcmludENvY29hLmNwcCAqLywKIAkJCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2
REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLywKIAkJCSk7CkBAIC0xMzMwLDcgKzEzMzAsNyBA
QAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczRTkxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEODlCNkI3MUU2
NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1l
dGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDZk
NzRjY2E5NDE1M2IwYjFhZjQ0YTY0YTYxY2UyOGNhZWZlNDgxNDUuLjJiNzYxNGY2NGZkZDI4NjZh
NTA3NmY3NTMzODc0Y2JjNzNmMjYxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMjUsNyAr
MjI1LDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3Bw
CiAgICAgTWVkaWFUaW1lLmNwcAotICAgIE1lbW9yeUZvb3RwcmludC5jcHAKICAgICBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCiAgICAgTWV0YUFsbG9jYXRvci5jcHAKICAgICBNb25vdG9uaWNU
aW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWxsb2NQdHIuaAppbmRleCAwMTg0YjRmNzI3YjdjNDNmOTdjZmI3ZWU0ODlkMWU0
MzNhNWNhMDM2Li5kNjE4YmEyYTU1M2FkMmE1YzQ5YzRiZTMzNmVkN2FhOTRkYjAwNWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9N
YWxsb2NQdHIuaApAQCAtNjksNiArNjksMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
TWFsbG9jUHRyIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKICAgICB9CiAKKyAgICBUJiBvcGVy
YXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICAgICAgcmV0
dXJuICptX3B0cjsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKICAgICBNYWxsb2NQdHImIG9wZXJhdG9yPShN
YWxsb2NQdHImJiBvdGhlcikKICAgICB7CiAgICAgICAgIE1hbGxvY1B0ciBwdHIgPSBXVEZNb3Zl
KG90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiZTMzNThmZjhjOGQ4N2RjMDQ3MWM0Y2VkYTRjNGJhM2U2NDBhY2ZmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUZvb3RwcmludC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKLQotI2lmIE9TKERBUldJTikKLSNp
bmNsdWRlIDxtYWNoL21hY2guaD4KLSNpbmNsdWRlIDxtYWNoL3Rhc2tfaW5mby5oPgotI2VuZGlm
Ci0KLSNpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0jZW5kaWYKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLSNpZiBPUyhMSU5VWCkKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Ci1zdGF0aWMgdm9pZCBmb3JFYWNoTGluZShGSUxFKiBmaWxlLCBGdW5jdG9yIGZ1bmN0b3Ip
Ci17Ci0gICAgY2hhciogYnVmZmVyID0gbnVsbHB0cjsKLSAgICBzaXplX3Qgc2l6ZSA9IDA7Ci0g
ICAgd2hpbGUgKGdldGxpbmUoJmJ1ZmZlciwgJnNpemUsIGZpbGUpICE9IC0xKSB7Ci0gICAgICAg
IGZ1bmN0b3IoYnVmZmVyLCBzaXplKTsKLSAgICAgICAgZnJlZShidWZmZXIpOwotICAgICAgICBi
dWZmZXIgPSBudWxscHRyOwotICAgICAgICBzaXplID0gMDsKLSAgICB9Ci19Ci0jZW5kaWYKLQot
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG1lbW9yeUZvb3RwcmludCgpCi17Ci0jaWYgT1MoREFSV0lO
KQotICAgIHRhc2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOwotICAgIG1hY2hfbXNnX3R5cGVfbnVt
YmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7Ci0gICAga2Vybl9yZXR1cm5fdCByZXN1
bHQgPSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZv
X3QpICZ2bUluZm8sICZjb3VudCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4odm1JbmZvLnBoeXNfZm9vdHByaW50KTsKLSNlbGlmIE9TKExJTlVYKQotICAgIEZJTEUqIGZp
bGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFwcyIsICJyIik7Ci0gICAgaWYgKCFmaWxlKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZh
dGVEaXJ0eUluS0IgPSAwOwotICAgIGJvb2wgaXNBbm9ueW1vdXMgPSBmYWxzZTsKLSAgICBmb3JF
YWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1ZmZlciwgc2l6ZV90KSB7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGVuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBpbm9kZTsKLSAgICAgICAgICAgIGNoYXIgZGV2WzMyXTsKLSAgICAgICAgICAg
IGNoYXIgcGVybXNbNV07Ci0gICAgICAgICAgICBjaGFyIHBhdGhbN107Ci0gICAgICAgICAgICBp
bnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVs
dSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1zLCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7
Ci0gICAgICAgICAgICBpZiAoc2Nhbm5lZENvdW50ID09IDYpIHsKLSAgICAgICAgICAgICAgICBp
c0Fub255bW91cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHNjYW5uZWRDb3VudCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAg
U3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgpOwotICAgICAgICAgICAgICAgIGlzQW5vbnltb3Vz
ID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVyYWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3Rh
cnRzV2l0aCgiW3N0YWNrIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpc0Fub255bW91cykKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB1bnNpZ25lZCBsb25nIHByaXZhdGVEaXJ0eUluS0I7Ci0gICAgICAg
IGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUlu
S0IpID09IDEpCi0gICAgICAgICAgICB0b3RhbFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURp
cnR5SW5LQjsKLSAgICB9KTsKLSAgICBmY2xvc2UoZmlsZSk7Ci0gICAgcmV0dXJuIHRvdGFsUHJp
dmF0ZURpcnR5SW5LQiAqIEtCOwotI2VuZGlmCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5ODAyYjAzMDdlZDE3YWVmYzY0MzVm
MDk3NWE3ODdhZDI2ZGJkM2ViLi40NGE2MGVhYzNlOTk1ZjYzMGZkM2Q3NzczYjVkOThjNjQzMjIx
ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOSw2ICs5LDcgQEAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKICAgICBnbGliL1J1bkxvb3BHTGliLmNwcAogCiAgICAgbGludXgvQ3Vy
cmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCisgICAgbGludXgvTWVtb3J5Rm9vdHByaW50TGlu
dXguY3BwCiAgICAgbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCiAKICAgICB1
bml4L0NQVVRpbWVVbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1K
U0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCmluZGV4
IGZjNzMyMWRkMDhlZTYwYWI2YzFkNWZmMmJiNDNhMDA4Njg4MGJkMWIuLjVkOTI0OWUxODQzNzlk
MTU2OGI1MzcyYjgyN2RlODFkYTE2NTk1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHku
Y21ha2UKQEAgLTE3LDYgKzE3LDIwIEBAIGVsc2UgKCkKICAgICApCiBlbmRpZiAoKQogCitpZiAo
V0lOMzIpCisgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICAgICAgd2luL01lbW9yeUZv
b3RwcmludFdpbi5jcHAKKyAgICApCitlbHNlIChBUFBMRSkKKyAgICBsaXN0KEFQUEVORCBXVEZf
U09VUkNFUworICAgICAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKKyAgICApCitl
bHNlICgpCisgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICAgICAgbGludXgvTWVtb3J5
Rm9vdHByaW50TGludXguY3BwCisgICAgKQorZW5kaWYgKCkKKwogaWYgKExPV0VSQ0FTRV9FVkVO
VF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgICAgIGdsaWIvR1JlZlB0ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
ODNlOTg3ZWMwY2NiMGE5ZGUwNGNkYTA2NDBjN2EwMzVjNWJhNmNmYi4uYjQ2OGE1ZGQ4M2IwODc1
ZWM2ZGY5Y2E2NDE0ZWJhOTZhZmEzY2ZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTIzLDYgKzIzLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBjZi9SdW5Mb29wQ0Yu
Y3BwCiAKICAgICBjb2NvYS9DUFVUaW1lQ29jb2EubW0KKyAgICBjb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHAKICAgICBjb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQogICAg
IGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4
IDk1ZDMzYzI2MWNlNWVmMmNmNzYyODY4NzM2MTA2MWY4MjBmNjc3NzUuLjNhNGE2MWJhM2FkNjFl
Nzk3ZDdkODZiMTNmY2Y5NzBiMDI2YmRiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0xMCw2ICsxMCw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAKICAgICB3aW4vQ1BVVGlt
ZVdpbi5jcHAKICAgICB3aW4vTWFpblRocmVhZFdpbi5jcHAKKyAgICB3aW4vTWVtb3J5Rm9vdHBy
aW50V2luLmNwcAogICAgIHdpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCiAgICAgd2lu
L1J1bkxvb3BXaW4uY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2NvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDBhNjhiMDBh
ZjZlMGVkYzA0YjNhNmU0OTk4YmJlNGM1MjU2YmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDxtYWNo
L21hY2guaD4KKyNpbmNsdWRlIDxtYWNoL3Rhc2tfaW5mby5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1lbW9yeUZvb3RwcmludCgpCit7CisgICAgdGFza192
bV9pbmZvX2RhdGFfdCB2bUluZm87CisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9
IFRBU0tfVk1fSU5GT19DT1VOVDsKKyAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tfaW5m
byhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5mbywg
JmNvdW50KTsKKyAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8ucGh5
c19mb290cHJpbnQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9saW51eC9N
ZW1vcnlGb290cHJpbnRMaW51eC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9saW51eC9NZW1vcnlGb290
cHJpbnRMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjMWVlZTUyNmMxN2E3OGEyODFjMmFhNDcxNzZk
Yzk5ZGJhMWFlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9y
eUZvb3RwcmludExpbnV4LmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2lmIE9TKExJTlVYKQorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmIE9TKExJTlVY
KQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3N0YXRpYyB2b2lkIGZvckVhY2hMaW5lKEZJ
TEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikKK3sKKyAgICBjaGFyKiBidWZmZXIgPSBudWxscHRy
OworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICB3aGlsZSAoZ2V0bGluZSgmYnVmZmVyLCAmc2l6
ZSwgZmlsZSkgIT0gLTEpIHsKKyAgICAgICAgZnVuY3RvcihidWZmZXIsIHNpemUpOworICAgICAg
ICBmcmVlKGJ1ZmZlcik7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHNpemUg
PSAwOworICAgIH0KK30KKyNlbmRpZgorCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9v
dHByaW50KCkKK3sKKyNpZiBPUyhMSU5VWCkKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9j
L3NlbGYvc21hcHMiLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHVuc2lnbmVkIGxvbmcgdG90YWxQcml2YXRlRGlydHlJbktCID0gMDsK
KyAgICBib29sIGlzQW5vbnltb3VzID0gZmFsc2U7CisgICAgZm9yRWFjaExpbmUoZmlsZSwgWyZd
IChjaGFyKiBidWZmZXIsIHNpemVfdCkgeworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIHN0YXJ0OworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQ7CisgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIG9mZnNldDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5vZGU7
CisgICAgICAgICAgICBjaGFyIGRldlszMl07CisgICAgICAgICAgICBjaGFyIHBlcm1zWzVdOwor
ICAgICAgICAgICAgY2hhciBwYXRoWzddOworICAgICAgICAgICAgaW50IHNjYW5uZWRDb3VudCA9
IHNzY2FuZihidWZmZXIsICIlbHgtJWx4ICU0cyAlbHggJTMxcyAlbHUgJTZzIiwgJnN0YXJ0LCAm
ZW5kLCBwZXJtcywgJm9mZnNldCwgZGV2LCAmaW5vZGUsIHBhdGgpOworICAgICAgICAgICAgaWYg
KHNjYW5uZWRDb3VudCA9PSA2KSB7CisgICAgICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSB0cnVl
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChzY2FubmVkQ291bnQgPT0gNykgeworICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcgcGF0aFN0
cmluZyhwYXRoKTsKKyAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHBhdGhTdHJpbmcgPT0g
QVNDSUlMaXRlcmFsKCJbaGVhcF0iKSB8fCBwYXRoU3RyaW5nLnN0YXJ0c1dpdGgoIltzdGFjayIp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghaXNBbm9ueW1vdXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dW5zaWduZWQgbG9uZyBwcml2YXRlRGlydHlJbktCOworICAgICAgICBpZiAoc3NjYW5mKGJ1ZmZl
ciwgIlByaXZhdGVfRGlydHk6ICVsdSIsICZwcml2YXRlRGlydHlJbktCKSA9PSAxKQorICAgICAg
ICAgICAgdG90YWxQcml2YXRlRGlydHlJbktCICs9IHByaXZhdGVEaXJ0eUluS0I7CisgICAgfSk7
CisgICAgZmNsb3NlKGZpbGUpOworICAgIHJldHVybiB0b3RhbFByaXZhdGVEaXJ0eUluS0IgKiBL
QjsKKyNlbmRpZgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9NZW1vcnlGb290cHJpbnRXaW4uY3BwIGIvU291cmNlL1dURi93
dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI4N2JiNmYxNzE4NTI2
Yjg2ZDdjNjk4Njc3YWMzNmYzN2FmOTIxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3dpbi9NZW1vcnlGb290cHJpbnRXaW4uY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeUZvb3RwcmludC5oIgorCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNs
dWRlIDxwc2FwaS5oPiAvLyBwc2FwaS5oIHJlcXVpcmVzIHRoYXQgd2luZG93cy5oIGlzIGluY2x1
ZGVkLgorI2luY2x1ZGUgPHd0Zi9NYWxsb2NQdHIuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dpbjMy
SGFuZGxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVt
b3J5Rm9vdHByaW50KCkKK3sKKyAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGNhbGN1bGF0ZSBzaXpl
IG9mIHByaXZhdGUgd29ya2luZyBzZXQuCisgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5j
b20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODQ4OTEodj12cy44NSkuYXNweAor
ICAgIC8vID4gVGhlIHdvcmtpbmcgc2V0IG9mIGEgcHJvZ3JhbSBpcyBhIGNvbGxlY3Rpb24gb2Yg
dGhvc2UgcGFnZXMgaW4gaXRzIHZpcnR1YWwgYWRkcmVzcworICAgIC8vID4gc3BhY2UgdGhhdCBo
YXZlIGJlZW4gcmVjZW50bHkgcmVmZXJlbmNlZC4gSXQgaW5jbHVkZXMgYm90aCBzaGFyZWQgYW5k
IHByaXZhdGUgZGF0YS4KKyAgICAvLyA+IFRoZSBzaGFyZWQgZGF0YSBpbmNsdWRlcyBwYWdlcyB0
aGF0IGNvbnRhaW4gYWxsIGluc3RydWN0aW9ucyB5b3VyIGFwcGxpY2F0aW9uIGV4ZWN1dGVzLAor
ICAgIC8vID4gaW5jbHVkaW5nIHRob3NlIGluIHlvdXIgRExMcyBhbmQgdGhlIHN5c3RlbSBETExz
LiBBcyB0aGUgd29ya2luZyBzZXQgc2l6ZSBpbmNyZWFzZXMsCisgICAgLy8gPiBtZW1vcnkgZGVt
YW5kIGluY3JlYXNlcy4KKyAgICBXaW4zMkhhbmRsZSBwcm9jZXNzKE9wZW5Qcm9jZXNzKFBST0NF
U1NfUVVFUllfSU5GT1JNQVRJT04sIEZBTFNFLCBHZXRDdXJyZW50UHJvY2Vzc0lkKCkpKTsKKyAg
ICBpZiAoIXByb2Nlc3MuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgYXV0byBjb3VudFNpemVPZlByaXZhdGVXb3JraW5nU2V0ID0gW10gKGNvbnN0IFBTQVBJ
X1dPUktJTkdfU0VUX0lORk9STUFUSU9OJiB3b3JraW5nU2V0cykgeworICAgICAgICBjb25zdGV4
cHIgY29uc3Qgc2l6ZV90IHBhZ2VTaXplID0gNCAqIEtCCisgICAgICAgIHNpemVfdCBudW1iZXJP
ZlByaXZhdGVXb3JraW5nU2V0UGFnZXMgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmtpbmdTZXRzLk51bWJlck9mRW50cmllczsgKytpKSB7CisgICAgICAgICAgICAvLyBo
dHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9t
czY4NDkwMih2PXZzLjg1KS5hc3B4CisgICAgICAgICAgICBQU0FQSV9XT1JLSU5HX1NFVF9CTE9D
SyB3b3JraW5nU2V0QmxvY2sgPSB3b3JraW5nU2V0cy5Xb3JraW5nU2V0SW5mb1tpXTsKKyAgICAg
ICAgICAgIGlmICghd29ya2luZ1NldEJsb2NrLlNoYXJlZCkKKyAgICAgICAgICAgICAgICBudW1i
ZXJPZlByaXZhdGVXb3JraW5nU2V0UGFnZXMrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bnVtYmVyT2ZQcml2YXRlV29ya2luZ1NldFBhZ2VzICogcGFnZVNpemU7CisgICAgfTsKKworICAg
IC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNr
dG9wL21zNjg0OTQ2KHY9dnMuODUpLmFzcHgKKyAgICBjb25zdGV4cHIgY29uc3Qgc2l6ZV90IG1p
bk51bWJlck9mRW50cmllcyA9IDE2OworICAgIGNvbnN0ZXhwciBjb25zdCBzaXplX3Qgc2l6ZU9m
QnVmZmVyT25TdGFjayA9IHNpemVvZihQU0FQSV9XT1JLSU5HX1NFVF9JTkZPUk1BVElPTikgKyBt
aW5OdW1iZXJPZkVudHJpZXMgKiBzaXplb2YoUFNBUElfV09SS0lOR19TRVRfQkxPQ0spOworICAg
IHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVPZkJ1ZmZlck9uU3RhY2ssIGFsaWdub2YoUFNBUElf
V09SS0lOR19TRVRfSU5GT1JNQVRJT04pPjo6dHlwZSBidWZmZXJPblN0YWNrOworICAgIGF1dG8q
IHdvcmtpbmdTZXRzT25TdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8UFNBUElfV09SS0lOR19TRVRf
SU5GT1JNQVRJT04qPigmYnVmZmVyT25TdGFjayk7CisgICAgaWYgKFF1ZXJ5V29ya2luZ1NldChw
cm9jZXNzLmdldCgpLCB3b3JraW5nU2V0c09uU3RhY2ssIHNpemVPZkJ1ZmZlck9uU3RhY2spKQor
ICAgICAgICByZXR1cm4gY291bnRTaXplT2ZQcml2YXRlV29ya2luZ1NldCgqd29ya2luZ1NldHNP
blN0YWNrKTsKKworICAgIGZvciAoc2l6ZV90IG51bWJlck9mRW50cmllcyA9IHN0ZDo6bWF4PHNp
emVfdD4obWluTnVtYmVyT2ZFbnRyaWVzLCB3b3JraW5nU2V0c09uU3RhY2stPk51bWJlck9mRW50
cmllcyk7OykgeworICAgICAgICBzaXplX3Qgd29ya2luZ1NldFNpemVJbkJ5dGVzID0gc2l6ZW9m
KFBTQVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9OKSArIHNpemVvZihQU0FQSV9XT1JLSU5HX1NF
VF9CTE9DSykgKiBudW1iZXJPZkVudHJpZXM7CisgICAgICAgIGF1dG8gd29ya2luZ1NldHMgPSBN
YWxsb2NQdHI8UFNBUElfV09SS0lOR19TRVRfSU5GT1JNQVRJT04+OjptYWxsb2Mod29ya2luZ1Nl
dFNpemVJbkJ5dGVzKTsKKyAgICAgICAgaWYgKFF1ZXJ5V29ya2luZ1NldChwcm9jZXNzLmdldCgp
LCB3b3JraW5nU2V0cy5nZXQoKSwgd29ya2luZ1NldFNpemVJbkJ5dGVzKSkKKyAgICAgICAgICAg
IHJldHVybiBjb3VudFNpemVPZlByaXZhdGVXb3JraW5nU2V0KCp3b3JraW5nU2V0cyk7CisKKyAg
ICAgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX0JBRF9MRU5HVEgpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAvLyBJZiB3b3JraW5nIHNldCBpbmNyZWFz
ZXMgYmV0d2VlbiBmaXJzdCBRdWVyeVdvcmtpbmdTZXQgYW5kIHNlY29uZCBRdWVyeVdvcmtpbmdT
ZXQsIHRoZSBzZWNvbmQgb25lIGNhbiBmYWlsLgorICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHdl
IHNob3VsZCBpbmNyZWFzZSBudW1iZXJPZkVudHJpZXMuCisgICAgICAgIG51bWJlck9mRW50cmll
cyA9IHdvcmtpbmdTZXRzLT5OdW1iZXJPZkVudHJpZXM7CisgICAgICAgIG51bWJlck9mRW50cmll
cyA9IHN0ZDo6bWF4KG1pbk51bWJlck9mRW50cmllcywgbnVtYmVyT2ZFbnRyaWVzICsgbnVtYmVy
T2ZFbnRyaWVzIC8gNCArIDEpOworICAgIH0KK30KKworfQo=
</data>
<flag name="review"
          id="330777"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309853</attachid>
            <date>2017-05-11 19:55:04 -0700</date>
            <delta_ts>2017-05-11 19:55:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171693-20170512115503.patch</filename>
            <type>text/plain</type>
            <size>23477</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZGJmYTFjYjZhZDI2ZGU3YTcyNDhj
ZDg5MDE3MTBjZmFlYzZjZjYuLjBiNzRmOWE3MDEwZWI1ZmM5M2ZiNWQyZDVjMTkxY2RiYmJlNzNl
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDUtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IG1lbW9yeUZvb3Rw
cmludCBmb3IgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1lbW9yeUZvb3RwcmludCBmb3IgV2luZG93
cy4gSW4gV2luZG93cywgd2UgY2FsY3VsYXRlIHRoZSBzaXplCisgICAgICAgIG9mIHByaXZhdGUg
d29ya2luZyBzZXQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgZW51bWVyYXRpbmcgcHJpdmF0ZSBwYWdl
cyBpbiB3b3JraW5nIHNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBzcGxpdCBNZW1vcnlGb290
cHJpbnQuY3BwIHRvIGNvY29hLCBsaW51eCwgYW5kIHdpbiB2ZXJzaW9ucy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtSlND
T25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlGb290cHJp
bnRDb2NvYS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5j
cHAuCisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL01l
bW9yeUZvb3RwcmludC5jcHAuCisgICAgICAgIChXVEY6OmZvckVhY2hMaW5lKToKKyAgICAgICAg
KFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvd2luL01lbW9yeUZvb3Rwcmlu
dFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorCiAyMDE3
LTA1LTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBBZGQgSEFWRSBjaGVjayBmb3IgcmVnZXguaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY0NTI4N2Y2ZTNjNjg4NWIyMmJhMjc3NmNmYmM2
YTMzMjNiZDA1Yi4uZjU2ZTE1Y2JkZTlmNGM2YWZkOTdhOTk0NTRmZWExNTIyN2RiOGUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjYsNyArMTI2LDcg
QEAKIAkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4
MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcw
N0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07Ci0JCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5jcHAgKi87IH07CisJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3Bw
ICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlEQ0VFMjIwMTFDRUE3NTUxMDAw
QzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09i
akNFeGNlcHRpb25zLm1tICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKQEAgLTUxOCw3ICs1MTgsNyBA
QAogCQlBRDg5QjZCNjFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZv
b3RwcmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJp
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4
OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5
NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYx
OUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3
Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQwLDcgKzg0MCw2IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywK
LQkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLywK
IAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCiAJ
CQkJQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAg
Ki8sCiAJCQkJQUQ4OUI2QjYxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5oICovLApAQCAtMTE2OCw2ICsxMTY3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5t
bSAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29j
b2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29y
a1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKQEAgLTEzMzAsNyArMTMzMCw3IEBACiAJCQkJQThB
NDczRTQxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmQ3NGNjYTk0MTUz
YjBiMWFmNDRhNjRhNjFjZTI4Y2FlZmU0ODE0NS4uMmI3NjE0ZjY0ZmRkMjg2NmE1MDc2Zjc1MzM4
NzRjYmM3M2YyNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIyNSw3ICsyMjUsNiBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRp
YVRpbWUuY3BwCi0gICAgTWVtb3J5Rm9vdHByaW50LmNwcAogICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCmluZGV4IDAxODRiNGY3MjdiN2M0M2Y5N2NmYjdlZTQ4OWQxZTQzM2E1Y2EwMzYu
LmQ2MThiYTJhNTUzYWQyYTVjNDljNGJlMzM2ZWQ3YWE5NGRiMDA1ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5o
CkBAIC02OSw2ICs2OSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBNYWxsb2NQdHIg
ewogICAgICAgICByZXR1cm4gIW1fcHRyOwogICAgIH0KIAorICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRy
OworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKwogICAgIE1hbGxvY1B0ciYgb3BlcmF0b3I9KE1hbGxvY1B0ciYm
IG90aGVyKQogICAgIHsKICAgICAgICAgTWFsbG9jUHRyIHB0ciA9IFdURk1vdmUob3RoZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlMzM1OGZmOGM4ZDg3ZGMwNDcxYzRjZWRhNGM0YmEzZTY0MGFjZmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9v
dHByaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lbW9yeUZvb3RwcmludC5oIgotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPG1h
Y2gvbWFjaC5oPgotI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Ci0jZW5kaWYKLQotI2lmIE9T
KExJTlVYKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotI2lmIE9TKExJTlVYKQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIGZvckVhY2hMaW5lKEZJTEUqIGZpbGUsIEZ1bmN0b3IgZnVuY3RvcikKLXsKLSAgICBj
aGFyKiBidWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAo
Z2V0bGluZSgmYnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKLSAgICAgICAgZnVuY3Rvcihi
dWZmZXIsIHNpemUpOwotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgICAgIHNpemUgPSAwOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgdGFz
a192bV9pbmZvX2RhdGFfdCB2bUluZm87Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3Vu
dCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKLSAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tf
aW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5m
bywgJmNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8u
cGh5c19mb290cHJpbnQpOwotI2VsaWYgT1MoTElOVVgpCi0gICAgRklMRSogZmlsZSA9IGZvcGVu
KCIvcHJvYy9zZWxmL3NtYXBzIiwgInIiKTsKLSAgICBpZiAoIWZpbGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsUHJpdmF0ZURpcnR5SW5L
QiA9IDA7Ci0gICAgYm9vbCBpc0Fub255bW91cyA9IGZhbHNlOwotICAgIGZvckVhY2hMaW5lKGZp
bGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKLSAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFydDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwotICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGlub2RlOwotICAgICAgICAgICAgY2hhciBkZXZbMzJdOwotICAgICAgICAgICAgY2hhciBwZXJt
c1s1XTsKLSAgICAgICAgICAgIGNoYXIgcGF0aFs3XTsKLSAgICAgICAgICAgIGludCBzY2FubmVk
Q291bnQgPSBzc2NhbmYoYnVmZmVyLCAiJWx4LSVseCAlNHMgJWx4ICUzMXMgJWx1ICU2cyIsICZz
dGFydCwgJmVuZCwgcGVybXMsICZvZmZzZXQsIGRldiwgJmlub2RlLCBwYXRoKTsKLSAgICAgICAg
ICAgIGlmIChzY2FubmVkQ291bnQgPT0gNikgewotICAgICAgICAgICAgICAgIGlzQW5vbnltb3Vz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2Nhbm5lZENvdW50ID09IDcpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3
IHBhdGhTdHJpbmcocGF0aCk7Ci0gICAgICAgICAgICAgICAgaXNBbm9ueW1vdXMgPSBwYXRoU3Ry
aW5nID09IEFTQ0lJTGl0ZXJhbCgiW2hlYXBdIikgfHwgcGF0aFN0cmluZy5zdGFydHNXaXRoKCJb
c3RhY2siKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWlzQW5vbnltb3VzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZURpcnR5SW5LQjsKLSAgICAgICAgaWYgKHNzY2Fu
ZihidWZmZXIsICJQcml2YXRlX0RpcnR5OiAlbHUiLCAmcHJpdmF0ZURpcnR5SW5LQikgPT0gMSkK
LSAgICAgICAgICAgIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiArPSBwcml2YXRlRGlydHlJbktCOwot
ICAgIH0pOwotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gdG90YWxQcml2YXRlRGlydHlJ
bktCICogS0I7Ci0jZW5kaWYKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk4MDJiMDMwN2VkMTdhZWZjNjQzNWYwOTc1YTc4N2Fk
MjZkYmQzZWIuLjQ0YTYwZWFjM2U5OTVmNjMwZmQzZDc3NzNiNWQ5OGM2NDMyMjFkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vz
c01lbW9yeVN0YXR1cy5jcHAKKyAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKICAg
ICBsaW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHVuaXgvQ1BVVGlt
ZVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggZmM3MzIxZGQw
OGVlNjBhYjZjMWQ1ZmYyYmI0M2EwMDg2ODgwYmQxYi4uNWQ5MjQ5ZTE4NDM3OWQxNTY4YjUzNzJi
ODI3ZGU4MWRhMTY1OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NP
bmx5LmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAt
MTcsNiArMTcsMjAgQEAgZWxzZSAoKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChXSU4zMikKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICB3aW4vTWVtb3J5Rm9vdHByaW50V2lu
LmNwcAorICAgICkKK2Vsc2UgKEFQUExFKQorICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCisg
ICAgICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAorICAgICkKK2Vsc2UgKCkKKyAg
ICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRM
aW51eC5jcHAKKyAgICApCitlbmRpZiAoKQorCiBpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAg
Z2xpYi9HUmVmUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4M2U5ODdlYzBj
Y2IwYTlkZTA0Y2RhMDY0MGM3YTAzNWM1YmE2Y2ZiLi5iNDY4YTVkZDgzYjA4NzVlYzZkZjljYTY0
MTRlYmE5NmFmYTNjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjMsNiArMjMs
NyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAg
IGNvY29hL0NQVVRpbWVDb2NvYS5tbQorICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNw
cAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCiAgICAgY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOTVkMzNjMjYx
Y2U1ZWYyY2Y3NjI4Njg3MzYxMDYxZjgyMGY2Nzc3NS4uM2E0YTYxYmEzYWQ2MWU3OTdkN2Q4NmIx
M2ZjZjk3MGIwMjZiZGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwLDYgKzEw
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogICAgIHdpbi9DUFVUaW1lV2luLmNwcAog
ICAgIHdpbi9NYWluVGhyZWFkV2luLmNwcAorICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3Bw
CiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3aW4vUnVuTG9vcFdp
bi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMGE2OGIwMGFmNmUwZWRjMDRi
M2E2ZTQ5OThiYmU0YzUyNTZiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgor
I2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyAgICB0YXNrX3ZtX2luZm9fZGF0
YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9J
TkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFz
a19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOwor
ICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3Rwcmlu
dCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3Rw
cmludExpbnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MmMxZWVlNTI2YzE3YTc4YTI4MWMyYWE0NzE3NmRjOTlkYmExYWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
bW9yeUZvb3RwcmludC5oIgorCisjaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgT1MoTElOVVgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIHZvaWQgZm9yRWFjaExpbmUoRklMRSogZmlsZSwg
RnVuY3RvciBmdW5jdG9yKQoreworICAgIGNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZzaXplLCBmaWxlKSAh
PSAtMSkgeworICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7CisgICAgICAgIGZyZWUoYnVm
ZmVyKTsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgc2l6ZSA9IDA7CisgICAg
fQorfQorI2VuZGlmCisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQor
eworI2lmIE9TKExJTlVYKQorICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2Mvc2VsZi9zbWFw
cyIsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFByaXZhdGVEaXJ0eUluS0IgPSAwOworICAgIGJvb2wg
aXNBbm9ueW1vdXMgPSBmYWxzZTsKKyAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIqIGJ1
ZmZlciwgc2l6ZV90KSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0OworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbm9kZTsKKyAgICAgICAg
ICAgIGNoYXIgZGV2WzMyXTsKKyAgICAgICAgICAgIGNoYXIgcGVybXNbNV07CisgICAgICAgICAg
ICBjaGFyIHBhdGhbN107CisgICAgICAgICAgICBpbnQgc2Nhbm5lZENvdW50ID0gc3NjYW5mKGJ1
ZmZlciwgIiVseC0lbHggJTRzICVseCAlMzFzICVsdSAlNnMiLCAmc3RhcnQsICZlbmQsIHBlcm1z
LCAmb2Zmc2V0LCBkZXYsICZpbm9kZSwgcGF0aCk7CisgICAgICAgICAgICBpZiAoc2Nhbm5lZENv
dW50ID09IDYpIHsKKyAgICAgICAgICAgICAgICBpc0Fub255bW91cyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNjYW5uZWRD
b3VudCA9PSA3KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyBwYXRoU3RyaW5nKHBhdGgp
OworICAgICAgICAgICAgICAgIGlzQW5vbnltb3VzID0gcGF0aFN0cmluZyA9PSBBU0NJSUxpdGVy
YWwoIltoZWFwXSIpIHx8IHBhdGhTdHJpbmcuc3RhcnRzV2l0aCgiW3N0YWNrIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpc0Fub255bW91cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBs
b25nIHByaXZhdGVEaXJ0eUluS0I7CisgICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiUHJpdmF0
ZV9EaXJ0eTogJWx1IiwgJnByaXZhdGVEaXJ0eUluS0IpID09IDEpCisgICAgICAgICAgICB0b3Rh
bFByaXZhdGVEaXJ0eUluS0IgKz0gcHJpdmF0ZURpcnR5SW5LQjsKKyAgICB9KTsKKyAgICBmY2xv
c2UoZmlsZSk7CisgICAgcmV0dXJuIHRvdGFsUHJpdmF0ZURpcnR5SW5LQiAqIEtCOworI2VuZGlm
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVt
b3J5Rm9vdHByaW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODFlYjk5OGVkNzVmYzQxNGQ2MTM1MzMy
ODIyMjY1ZTE4MWQzN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL01l
bW9yeUZvb3RwcmludFdpbi5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHBzYXBp
Lmg+CisjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgorI2luY2x1ZGUgPHd0Zi93aW4vV2luMzJI
YW5kbGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1v
cnlGb290cHJpbnQoKQoreworICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gY2FsY3VsYXRlIHNpemUg
b2YgcHJpdmF0ZSB3b3JraW5nIHNldC4KKyAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4NDg5MSh2PXZzLjg1KS5hc3B4Cisg
ICAgLy8gPiBUaGUgd29ya2luZyBzZXQgb2YgYSBwcm9ncmFtIGlzIGEgY29sbGVjdGlvbiBvZiB0
aG9zZSBwYWdlcyBpbiBpdHMgdmlydHVhbCBhZGRyZXNzCisgICAgLy8gPiBzcGFjZSB0aGF0IGhh
dmUgYmVlbiByZWNlbnRseSByZWZlcmVuY2VkLiBJdCBpbmNsdWRlcyBib3RoIHNoYXJlZCBhbmQg
cHJpdmF0ZSBkYXRhLgorICAgIC8vID4gVGhlIHNoYXJlZCBkYXRhIGluY2x1ZGVzIHBhZ2VzIHRo
YXQgY29udGFpbiBhbGwgaW5zdHJ1Y3Rpb25zIHlvdXIgYXBwbGljYXRpb24gZXhlY3V0ZXMsCisg
ICAgLy8gPiBpbmNsdWRpbmcgdGhvc2UgaW4geW91ciBETExzIGFuZCB0aGUgc3lzdGVtIERMTHMu
IEFzIHRoZSB3b3JraW5nIHNldCBzaXplIGluY3JlYXNlcywKKyAgICAvLyA+IG1lbW9yeSBkZW1h
bmQgaW5jcmVhc2VzLgorICAgIFdpbjMySGFuZGxlIHByb2Nlc3MoT3BlblByb2Nlc3MoUFJPQ0VT
U19RVUVSWV9JTkZPUk1BVElPTiwgRkFMU0UsIEdldEN1cnJlbnRQcm9jZXNzSWQoKSkpOworICAg
IGlmICghcHJvY2Vzcy5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBhdXRvIGNvdW50U2l6ZU9mUHJpdmF0ZVdvcmtpbmdTZXQgPSBbXSAoY29uc3QgUFNBUElf
V09SS0lOR19TRVRfSU5GT1JNQVRJT04mIHdvcmtpbmdTZXRzKSB7CisgICAgICAgIGNvbnN0ZXhw
ciBjb25zdCBzaXplX3QgcGFnZVNpemUgPSA0ICogS0I7CisgICAgICAgIHNpemVfdCBudW1iZXJP
ZlByaXZhdGVXb3JraW5nU2V0UGFnZXMgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmtpbmdTZXRzLk51bWJlck9mRW50cmllczsgKytpKSB7CisgICAgICAgICAgICAvLyBo
dHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9t
czY4NDkwMih2PXZzLjg1KS5hc3B4CisgICAgICAgICAgICBQU0FQSV9XT1JLSU5HX1NFVF9CTE9D
SyB3b3JraW5nU2V0QmxvY2sgPSB3b3JraW5nU2V0cy5Xb3JraW5nU2V0SW5mb1tpXTsKKyAgICAg
ICAgICAgIGlmICghd29ya2luZ1NldEJsb2NrLlNoYXJlZCkKKyAgICAgICAgICAgICAgICBudW1i
ZXJPZlByaXZhdGVXb3JraW5nU2V0UGFnZXMrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bnVtYmVyT2ZQcml2YXRlV29ya2luZ1NldFBhZ2VzICogcGFnZVNpemU7CisgICAgfTsKKworICAg
IC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNr
dG9wL21zNjg0OTQ2KHY9dnMuODUpLmFzcHgKKyAgICBjb25zdGV4cHIgY29uc3Qgc2l6ZV90IG1p
bk51bWJlck9mRW50cmllcyA9IDE2OworICAgIGNvbnN0ZXhwciBjb25zdCBzaXplX3Qgc2l6ZU9m
QnVmZmVyT25TdGFjayA9IHNpemVvZihQU0FQSV9XT1JLSU5HX1NFVF9JTkZPUk1BVElPTikgKyBt
aW5OdW1iZXJPZkVudHJpZXMgKiBzaXplb2YoUFNBUElfV09SS0lOR19TRVRfQkxPQ0spOworICAg
IHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVPZkJ1ZmZlck9uU3RhY2ssIGFsaWdub2YoUFNBUElf
V09SS0lOR19TRVRfSU5GT1JNQVRJT04pPjo6dHlwZSBidWZmZXJPblN0YWNrOworICAgIGF1dG8q
IHdvcmtpbmdTZXRzT25TdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8UFNBUElfV09SS0lOR19TRVRf
SU5GT1JNQVRJT04qPigmYnVmZmVyT25TdGFjayk7CisgICAgaWYgKFF1ZXJ5V29ya2luZ1NldChw
cm9jZXNzLmdldCgpLCB3b3JraW5nU2V0c09uU3RhY2ssIHNpemVPZkJ1ZmZlck9uU3RhY2spKQor
ICAgICAgICByZXR1cm4gY291bnRTaXplT2ZQcml2YXRlV29ya2luZ1NldCgqd29ya2luZ1NldHNP
blN0YWNrKTsKKworICAgIGF1dG8gdXBkYXRlTnVtYmVyT2ZFbnRyaWVzID0gWyZdIChzaXplX3Qg
bnVtYmVyT2ZFbnRyaWVzKSB7CisgICAgICAgIC8vIElmIHdvcmtpbmcgc2V0IGluY3JlYXNlcyBi
ZXR3ZWVuIGZpcnN0IFF1ZXJ5V29ya2luZ1NldCBhbmQgc2Vjb25kIFF1ZXJ5V29ya2luZ1NldCwg
dGhlIHNlY29uZCBvbmUgY2FuIGZhaWwuCisgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgd2Ugc2hv
dWxkIGluY3JlYXNlIG51bWJlck9mRW50cmllcy4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KG1p
bk51bWJlck9mRW50cmllcywgbnVtYmVyT2ZFbnRyaWVzICsgbnVtYmVyT2ZFbnRyaWVzIC8gNCAr
IDEpOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBudW1iZXJPZkVudHJpZXMgPSB1cGRhdGVO
dW1iZXJPZkVudHJpZXMod29ya2luZ1NldHNPblN0YWNrLT5OdW1iZXJPZkVudHJpZXMpOzspIHsK
KyAgICAgICAgc2l6ZV90IHdvcmtpbmdTZXRTaXplSW5CeXRlcyA9IHNpemVvZihQU0FQSV9XT1JL
SU5HX1NFVF9JTkZPUk1BVElPTikgKyBzaXplb2YoUFNBUElfV09SS0lOR19TRVRfQkxPQ0spICog
bnVtYmVyT2ZFbnRyaWVzOworICAgICAgICBhdXRvIHdvcmtpbmdTZXRzID0gTWFsbG9jUHRyPFBT
QVBJX1dPUktJTkdfU0VUX0lORk9STUFUSU9OPjo6bWFsbG9jKHdvcmtpbmdTZXRTaXplSW5CeXRl
cyk7CisgICAgICAgIGlmIChRdWVyeVdvcmtpbmdTZXQocHJvY2Vzcy5nZXQoKSwgd29ya2luZ1Nl
dHMuZ2V0KCksIHdvcmtpbmdTZXRTaXplSW5CeXRlcykpCisgICAgICAgICAgICByZXR1cm4gY291
bnRTaXplT2ZQcml2YXRlV29ya2luZ1NldCgqd29ya2luZ1NldHMpOworCisgICAgICAgIGlmIChH
ZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9CQURfTEVOR1RIKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgbnVtYmVyT2ZFbnRyaWVzID0gdXBkYXRlTnVtYmVyT2ZFbnRy
aWVzKHdvcmtpbmdTZXRzLT5OdW1iZXJPZkVudHJpZXMpOworICAgIH0KK30KKworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>