<?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>230143</bug_id>
          
          <creation_ts>2021-09-09 20:00:06 -0700</creation_ts>
          <short_desc>[bmalloc] Merge large frees after making them eligible</short_desc>
          <delta_ts>2022-02-27 23:11:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230283</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230126</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>basuke</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1792216</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-09 20:00:06 -0700</bug_when>
    <thetext>Current implementation tries merging of two mergeable large frees when free is added to largeMap. If one is not eligible, that region is no chance to be merged with other regions in the map. It is possible to improve the chance of merging after all regions are marked as eligible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792240</commentid>
    <comment_count>1</comment_count>
      <attachid>437835</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-09 21:39:58 -0700</bug_when>
    <thetext>Created attachment 437835
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792241</commentid>
    <comment_count>2</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-09 21:49:48 -0700</bug_when>
    <thetext>There&apos;s no fundamental number differences between current one and patched on testmem:

main:

end score:           6.9931 MB
peak score:          10.5662 MB
total memory score:  8.596 MB
time score:          482.92 ms


patched:

end score:           6.8855 MB
peak score:          10.6945 MB
total memory score:  8.5812 MB
time score:          482.6 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792552</commentid>
    <comment_count>3</comment_count>
      <attachid>437914</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-10 15:16:09 -0700</bug_when>
    <thetext>Created attachment 437914
PATCH

Found a bug during add(). m_free.insert can invalidate iterator. It had better not touching that there. usedSinceLastScavenge should be managed by the caller of add().

Also it should be true if the created large range has physical pages so that it can be set in constructor.

Another thing is that most usages are simply full of physical pages attached, so make the constructor simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792657</commentid>
    <comment_count>4</comment_count>
      <attachid>437941</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-10 23:20:02 -0700</bug_when>
    <thetext>Created attachment 437941
PATCH

Wrong BASSERT was added. Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792725</commentid>
    <comment_count>5</comment_count>
      <attachid>437960</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-11 11:31:31 -0700</bug_when>
    <thetext>Created attachment 437960
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792778</commentid>
    <comment_count>6</comment_count>
      <attachid>437960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-12 08:54:11 -0700</bug_when>
    <thetext>Comment on attachment 437960
Patch for landing

This patch only contains the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792791</commentid>
    <comment_count>7</comment_count>
      <attachid>437992</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-12 11:45:37 -0700</bug_when>
    <thetext>Created attachment 437992
Patch for landing 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792793</commentid>
    <comment_count>8</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-12 11:49:49 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; Comment on attachment 437960 [details]
&gt; Patch for landing
&gt; 
&gt; This patch only contains the changelog.

Thanks. I don&apos;t know why this happens. I&apos;m so sad that I took my decent time to check EWS results for unchanged tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793380</commentid>
    <comment_count>9</comment_count>
      <attachid>437992</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-14 12:39:21 -0700</bug_when>
    <thetext>Comment on attachment 437992
Patch for landing 2

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

Can you separate the refactoring changes from the behavior changes in this patch, and post them separately? It&apos;s subtle to figure out which is which here.

&gt; Source/bmalloc/ChangeLog:11
&gt; +        Deallocated larges are stored in Heap&apos;s LargeFree. They&apos;re merged if they are neighbors and
&gt; +        has same states. But chances are only when they added to the LargeFree map. When they are
&gt; +        not eligible (it is likely possible) at that time, there&apos;s no chance to be merged except
&gt; +        other neighbors are inserted.

I think what you&apos;re trying to say is that the scavenger may cause temporary fragmentation when it calls setEligible(false). Is that right?

Did you discover this behavior in some workload? What were the specifics?

&gt; Source/bmalloc/bmalloc/LargeMap.cpp:-76
&gt; -        merged = merge(merged, m_free.pop(i--));

Why is it OK to remove this merging step? If your plan is to wait for the call to mergeNeighbors(), that&apos;s not OK, because it&apos;s not guaranteed to happen soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793381</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-14 12:40:06 -0700</bug_when>
    <thetext>+Michael, since I think he added setEligible().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793478</commentid>
    <comment_count>11</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 15:45:14 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; Comment on attachment 437992 [details]
&gt; Patch for landing 2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437992&amp;action=review
&gt; 
&gt; Can you separate the refactoring changes from the behavior changes in this
&gt; patch, and post them separately? It&apos;s subtle to figure out which is which
&gt; here.

Okay, I do that first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793501</commentid>
    <comment_count>12</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 16:31:10 -0700</bug_when>
    <thetext>LargeRange related refactoring is opened in this bug. https://bugs.webkit.org/show_bug.cgi?id=230283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793517</commentid>
    <comment_count>13</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 16:58:42 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; &gt; Source/bmalloc/ChangeLog:11
&gt; &gt; +        Deallocated larges are stored in Heap&apos;s LargeFree. They&apos;re merged if they are neighbors and
&gt; &gt; +        has same states. But chances are only when they added to the LargeFree map. When they are
&gt; &gt; +        not eligible (it is likely possible) at that time, there&apos;s no chance to be merged except
&gt; &gt; +        other neighbors are inserted.
&gt; 
&gt; I think what you&apos;re trying to say is that the scavenger may cause temporary
&gt; fragmentation when it calls setEligible(false). Is that right?

Think about this situation: Range A and B are attached and can be merged if they have same state. Here Range A is eligible in LargeFree. Range C is also in LargeFree and is not attached to B. Now Range B which is not eligible and about to be added to LargeFree. It cannot be merged with A because of the eligibility. So it will be appended at the end for LargeFree.

Range A [eligible]
Range C [...]
Range B [non-eligible]

Sooner or later, scavenger will make all eligible, but there&apos;re no chance to merge A and B any more until they are used and returned.

&gt; Did you discover this behavior in some workload? What were the specifics?

We are still investigation of the situation, but we are seeing the issue that some region in large free are sit there without decommiting whole pages. The situation happens after playing long video playing.

One reason we guess is related to the question I&apos;ve asked in the slack channel https://webkit.slack.com/archives/CU64U6FDW/p1630628124106600 and related to the size of largeAlignment.

This patch is related to the other solution that we are trying to add API to bmalloc to release largeFree in case of low memory situation. [https://bugs.webkit.org/show_bug.cgi?id=230126] The sorted ranges in LargeFree helps to detect freeable LargeRange in LargeFree efficiently.

Also increasing the chance to be merged with other range may increase the possibility to be reused.


&gt; &gt; Source/bmalloc/bmalloc/LargeMap.cpp:-76
&gt; &gt; -        merged = merge(merged, m_free.pop(i--));
&gt; 
&gt; Why is it OK to remove this merging step? If your plan is to wait for the
&gt; call to mergeNeighbors(), that&apos;s not OK, because it&apos;s not guaranteed to
&gt; happen soon.

That is correct. I&apos;ll recover merge trial while appending to FreeLarge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794318</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-16 20:01:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/83224160&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794795</commentid>
    <comment_count>15</comment_count>
      <attachid>438567</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-18 13:19:31 -0700</bug_when>
    <thetext>Created attachment 438567
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794796</commentid>
    <comment_count>16</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-18 13:26:07 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; Comment on attachment 437992 [details]
&gt; Patch for landing 2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437992&amp;action=review
&gt; 
&gt; Can you separate the refactoring changes from the behavior changes in this
&gt; patch, and post them separately? It&apos;s subtle to figure out which is which
&gt; here.

This new patch just contains large free related patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801375</commentid>
    <comment_count>17</comment_count>
      <attachid>438567</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-06 15:30:36 -0700</bug_when>
    <thetext>Comment on attachment 438567
patch

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

&gt; Source/bmalloc/ChangeLog:22
&gt; +        Here&apos;s a quick result from testmem on MacBook Air M1. The differences are tiny.

This patch seems to include some subtleties, including a potential throughput penalty at the end of scavenging. Can we point to a clearer memory improvement that would justify the subtleties and the potential throughput penalty? We generally prefer not to make changes for performance unless we can measure the impact.

&gt; Source/bmalloc/bmalloc/LargeMap.cpp:69
&gt;  void LargeMap::add(const LargeRange&amp; range)

Why does LargeMap::add change at all in this patch? Why isn&apos;t the heap always back in a fully merged, consistent state after LargeMap::mergeNeighbors() has returned?

&gt; Source/bmalloc/bmalloc/LargeMap.cpp:90
&gt; +            auto* next = it + 1;
&gt; +            if (next != m_free.end() &amp;&amp; canMerge(*it, *next)) {
&gt; +                *it = merge(*it, *next);
&gt; +                m_free.remove(next);
&gt; +            }

I don&apos;t think it&apos;s right to check only the immediate neighbor (it + 1) for merging. m_free is not sorted, so I&apos;m not sure what this would achieve.

&gt; Source/bmalloc/bmalloc/LargeMap.cpp:112
&gt; +        auto* next = &amp;range + 1;
&gt; +
&gt; +        while (next &lt; m_free.end() &amp;&amp; canMerge(range, *next))
&gt; +            range = merge(range, *next++);

Same comment about it + 1.

&gt; Source/bmalloc/bmalloc/Vector.h:174
&gt; +    BASSERT(from &lt; to);
&gt; +    size_t moveCount = end() - to;
&gt; +    if (moveCount)
&gt; +        std::memmove(from, to, moveCount * sizeof(T));

No need to check moveCount here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801479</commentid>
    <comment_count>18</comment_count>
      <attachid>438567</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-06 19:41:06 -0700</bug_when>
    <thetext>Comment on attachment 438567
patch

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

Thanks for reviewing.

&gt;&gt; Source/bmalloc/ChangeLog:22
&gt;&gt; +        Here&apos;s a quick result from testmem on MacBook Air M1. The differences are tiny.
&gt; 
&gt; This patch seems to include some subtleties, including a potential throughput penalty at the end of scavenging. Can we point to a clearer memory improvement that would justify the subtleties and the potential throughput penalty? We generally prefer not to make changes for performance unless we can measure the impact.

Okay. I prepare such statistics. While waiting that stats, please review this code with the information I&apos;ve replied. I tried to describe your question.

&gt;&gt; Source/bmalloc/bmalloc/LargeMap.cpp:69
&gt;&gt;  void LargeMap::add(const LargeRange&amp; range)
&gt; 
&gt; Why does LargeMap::add change at all in this patch? Why isn&apos;t the heap always back in a fully merged, consistent state after LargeMap::mergeNeighbors() has returned?

&gt; Why does LargeMap::add change at all in this patch?
They are now kept sorted while adding

&gt; Why isn&apos;t the heap always back in a fully merged, consistent state after LargeMap::mergeNeighbors() has returned?
Sorry I don&apos;t get it. It can&apos;t be fully merged because they are split into pieces. Not all regions are returned.

&gt;&gt; Source/bmalloc/bmalloc/LargeMap.cpp:90
&gt;&gt; +            }
&gt; 
&gt; I don&apos;t think it&apos;s right to check only the immediate neighbor (it + 1) for merging. m_free is not sorted, so I&apos;m not sure what this would achieve.

Because they are sorted, there&apos;s only three chances to be merged:
- end of copied is the beginning of some of ranges.
- beginning of the copied is the end of some of ranges and end of the copied is not attached to any ranges.
- both ends are attached to two ranges.

Other cases, it will be inserted into the proper position.

&gt;&gt; Source/bmalloc/bmalloc/LargeMap.cpp:112
&gt;&gt; +            range = merge(range, *next++);
&gt; 
&gt; Same comment about it + 1.

Same here. Because they are sorted.

&gt;&gt; Source/bmalloc/bmalloc/Vector.h:174
&gt;&gt; +        std::memmove(from, to, moveCount * sizeof(T));
&gt; 
&gt; No need to check moveCount here.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816621</commentid>
    <comment_count>19</comment_count>
      <attachid>438567</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-11-18 14:09:11 -0800</bug_when>
    <thetext>Comment on attachment 438567
patch

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

&gt;&gt;&gt; Source/bmalloc/bmalloc/LargeMap.cpp:90
&gt;&gt;&gt; +            }
&gt;&gt; 
&gt;&gt; I don&apos;t think it&apos;s right to check only the immediate neighbor (it + 1) for merging. m_free is not sorted, so I&apos;m not sure what this would achieve.
&gt; 
&gt; Because they are sorted, there&apos;s only three chances to be merged:
&gt; - end of copied is the beginning of some of ranges.
&gt; - beginning of the copied is the end of some of ranges and end of the copied is not attached to any ranges.
&gt; - both ends are attached to two ranges.
&gt; 
&gt; Other cases, it will be inserted into the proper position.

I see: I hadn&apos;t noticed that some of the changes to add() were motivated by changing the invariant from an unsorted list to a sorted list. That&apos;s a great thing to call out in the ChangeLog.

Is it OK that LargeMap::remove() still calls m_free.pop(candidate)? I believe that will un-sort-ify the list.

FWIW, I find it easier to reason about an unsorted list, because it has fewer invariants, and therefore fewer opportunities to violate an invariant. But perhaps the perf numbers will show that a sorted list is better in the end. Or perhaps mergeNeighbors() should sort and then merge through &quot;two-finger compaction&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437835</attachid>
            <date>2021-09-09 21:39:58 -0700</date>
            <delta_ts>2021-09-10 15:16:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7565</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLmNkYTIyNTQzZmRjMCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDIxLTA5LTA5ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlQG1hYy5jb20+
CisKKyAgICAgICAgW2JtYWxsb2NdIE1lcmdlIGxhcmdlIGZyZWVzIGFmdGVyIG1ha2luZyB0aGVt
IGVsaWdpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzAxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEZWFsbG9jYXRlZCBsYXJnZXMgYXJlIHN0b3JlZCBpbiBIZWFwJ3MgTGFyZ2VGcmVlLiBUaGV5
J3JlIG1lcmdlZCBpZiB0aGV5IGFyZSBuZWlnaGJvcnMgYW5kCisgICAgICAgIGhhcyBzYW1lIHN0
YXRlcy4gQnV0IGNoYW5jZXMgYXJlIG9ubHkgd2hlbiB0aGV5IGFkZGVkIHRvIHRoZSBMYXJnZUZy
ZWUgbWFwLiBXaGVuIHRoZXkgYXJlCisgICAgICAgIG5vdCBlbGlnaWJsZSAoaXQgaXMgbGlrZWx5
IHBvc3NpYmxlKSBhdCB0aGF0IHRpbWUsIHRoZXJlJ3Mgbm8gY2hhbmNlIHRvIGJlIG1lcmdlZCBl
eGNlcHQKKyAgICAgICAgb3RoZXIgbmVpZ2hib3JzIGFyZSBpbnNlcnRlZC4KKworICAgICAgICBU
aGlzIHBhdGNoIHBvc3Rwb25lIHRoZSBtZXJnZSB1bnRpbCB3aG9sZSBwb3NzaWJsZSBlbGlnaWJs
ZSByZWdpb25zIGFyZSBtYXJrZWQgc28gYmVmb3JlCisgICAgICAgIG1lcmdpbmcuIEFsc28gdGhl
cmUncmUgbW9yZSBjaGFuY2VzIHRvIGJlIG1lcmdlZCB3aXRoIG5laWdoYm9ycy4KKworICAgICAg
ICBUbyBhY2hpZXZlIHRoaXMsIHRoZSByZWdpb25zIGluIGxhcmdlRnJlZSBhcmUgbm93IHNvcnRl
ZCBpbiBpdHMgYWRkcmVzcy4gVGhpcyBoZWxwcyB0byBkZXRlY3QKKyAgICAgICAgbWVyZ2FibGUg
cmVnaW9ucyBwcmV0dHkgZWZmaWNpZW50bHkuIEFsc28gdmVjdG9yIG5vdyBoYXMgYnVsayByZW1v
dmUgbWV0aG9kLgorCisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKToKKyAgICAgICAgKiBibWFsbG9jL0xh
cmdlTWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlTWFwOjphZGQpOgorICAgICAgICAo
Ym1hbGxvYzo6TGFyZ2VNYXA6Om1lcmdlTmVpZ2hib3JzKToKKyAgICAgICAgKiBibWFsbG9jL0xh
cmdlTWFwLmg6CisgICAgICAgICogYm1hbGxvYy9MYXJnZVJhbmdlLmg6CisgICAgICAgIChibWFs
bG9jOjpjYW5NZXJnZSk6CisgICAgICAgICogYm1hbGxvYy9WZWN0b3IuaDoKKyAgICAgICAgKGJt
YWxsb2M6OlZlY3RvcjxUPjo6cmVtb3ZlKToKKwogMjAyMS0wOC0wNCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIG1lZGl1bSBzaXplIGNsYXNzIGxv
b2t1cCBuZWVkcyB0byBjb3JyZWN0bHkgZmVuY2UgdGhlIGNvdW50aW5nIGxvY2sgcmVhZCBwYXRo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCAxYmM1ZTFhODY5Y2QuLjljNDIxM2IyMTEwYSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsNiArMTA0LDcgQEAgdm9pZCBIZWFwOjpt
YXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJikKIHsKICAgICBtX2xhcmdl
RnJlZS5tYXJrQWxsQXNFbGlnaWJpbGUoKTsKICAgICBtX2hhc1BlbmRpbmdEZWNvbW1pdHMgPSBm
YWxzZTsKKyAgICBtX2xhcmdlRnJlZS5tZXJnZU5laWdoYm9ycygpOwogICAgIG1fY29uZGl0aW9u
Lm5vdGlmeV9hbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9M
YXJnZU1hcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmNwcAppbmRleCAz
MTBlZDhmZjRmNDcuLjE3NGQ3NjMyNGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9MYXJnZU1hcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY3LDE3ICs2OCwxNiBAQCBMYXJnZVJhbmdlIExhcmdlTWFwOjpyZW1vdmUoc2l6ZV90
IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiAKIHZvaWQgTGFyZ2VNYXA6OmFkZChjb25zdCBMYXJn
ZVJhbmdlJiByYW5nZSkKIHsKLSAgICBMYXJnZVJhbmdlIG1lcmdlZCA9IHJhbmdlOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyZWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KCFjYW5NZXJnZShtZXJnZWQsIG1fZnJlZVtpXSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBtZXJnZWQgPSBtZXJnZShtZXJnZWQsIG1fZnJlZS5wb3AoaS0tKSk7CisgICAgZm9y
IChhdXRvKiBpdCA9IG1fZnJlZS5iZWdpbigpOyBpdCAhPSBtX2ZyZWUuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgaWYgKHJhbmdlIDwgKml0KSB7CisgICAgICAgICAgICBtX2ZyZWUuaW5zZXJ0KGl0
LCByYW5nZSk7CisgICAgICAgICAgICBpdC0+c2V0VXNlZFNpbmNlTGFzdFNjYXZlbmdlKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKLSAgICBtZXJnZWQuc2V0VXNl
ZFNpbmNlTGFzdFNjYXZlbmdlKCk7Ci0gICAgbV9mcmVlLnB1c2gobWVyZ2VkKTsKKyAgICBtX2Zy
ZWUucHVzaChyYW5nZSk7CisgICAgbV9mcmVlLmxhc3QoKS5zZXRVc2VkU2luY2VMYXN0U2NhdmVu
Z2UoKTsKIH0KIAogdm9pZCBMYXJnZU1hcDo6bWFya0FsbEFzRWxpZ2liaWxlKCkKQEAgLTg2LDQg
Kzg2LDE5IEBAIHZvaWQgTGFyZ2VNYXA6Om1hcmtBbGxBc0VsaWdpYmlsZSgpCiAgICAgICAgIHJh
bmdlLnNldEVsaWdpYmxlKHRydWUpOwogfQogCit2b2lkIExhcmdlTWFwOjptZXJnZU5laWdoYm9y
cygpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2ZyZWUu
c2l6ZSgpKSB7CisgICAgICAgIGF1dG8mIHJhbmdlID0gbV9mcmVlW2luZGV4KytdOworICAgICAg
ICBhdXRvKiBuZXh0ID0gJnJhbmdlICsgMTsKKworICAgICAgICB3aGlsZSAobmV4dCA8IG1fZnJl
ZS5lbmQoKSAmJiBjYW5NZXJnZShyYW5nZSwgKm5leHQpKQorICAgICAgICAgICAgcmFuZ2UgPSBt
ZXJnZShyYW5nZSwgKm5leHQrKyk7CisKKyAgICAgICAgaWYgKG5leHQgLSAmcmFuZ2UgPiAxKQor
ICAgICAgICAgICAgbV9mcmVlLnJlbW92ZSgmcmFuZ2UgKyAxLCBuZXh0KTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvTGFyZ2VNYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuaAppbmRleCBm
YzFjOWUyZTk3YzguLmE4NWYxYjU1ZTg5NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9MYXJnZU1hcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsOCArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBMYXJnZU1h
cF9oCi0jZGVmaW5lIExhcmdlTWFwX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGFyZ2VS
YW5nZS5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgpAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgTGFyZ2VSYW5nZSByZW1vdmUoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAgICBWZWN0
b3I8TGFyZ2VSYW5nZT4mIHJhbmdlcygpIHsgcmV0dXJuIG1fZnJlZTsgfQogICAgIHZvaWQgbWFy
a0FsbEFzRWxpZ2liaWxlKCk7CisgICAgdm9pZCBtZXJnZU5laWdoYm9ycygpOwogCiAgICAgc2l6
ZV90IHNpemUoKSB7IHJldHVybiBtX2ZyZWUuc2l6ZSgpOyB9CiAgICAgTGFyZ2VSYW5nZSYgYXQo
c2l6ZV90IGkpIHsgcmV0dXJuIG1fZnJlZVtpXTsgfQpAQCAtNTAsNSArNTEsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gTGFyZ2VNYXBfaApk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdlLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0xhcmdlUmFuZ2UuaAppbmRleCA4ZDE3MTM5OTVmNjYuLmRmNTE3NjMz
YmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdlLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdlLmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzI0LDcgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgTGFyZ2VSYW5nZV9oCi0jZGVmaW5lIExh
cmdlUmFuZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCQXNzZXJ0LmgiCiAjaW5jbHVk
ZSAiUmFuZ2UuaCIKQEAgLTEyMiw2ICsxMjIsOSBAQCBpbmxpbmUgYm9vbCBjYW5NZXJnZShjb25z
dCBMYXJnZVJhbmdlJiBhLCBjb25zdCBMYXJnZVJhbmdlJiBiKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgaWYgKGEudXNlZFNpbmNlTGFzdFNjYXZlbmdlKCkgIT0gYi51c2Vk
U2luY2VMYXN0U2NhdmVuZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGEu
ZW5kKCkgPT0gYi5iZWdpbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTE4OSw1
ICsxOTIsMyBAQCBpbmxpbmUgc3RkOjpwYWlyPExhcmdlUmFuZ2UsIExhcmdlUmFuZ2U+IExhcmdl
UmFuZ2U6OnNwbGl0KHNpemVfdCBsZWZ0U2l6ZSkgY29ucwogfQogCiB9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCi0KLSNlbmRpZiAvLyBMYXJnZVJhbmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvVmVjdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZlY3Rvci5oCmlu
ZGV4IGQ4NDA5YjA1NzJkNy4uZWRiMzE1MjQyNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVmVjdG9yLmgK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluc2VydChpdGVyYXRvciwgY29u
c3QgVCYpOwogICAgIFQgcmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB2b2lkIHJlbW92ZShpdGVyYXRv
ciwgaXRlcmF0b3IpOwogCiAgICAgdm9pZCBncm93KHNpemVfdCk7CiAgICAgdm9pZCBzaHJpbmso
c2l6ZV90KTsKQEAgLTE1OCwxNyArMTYwLDIxIEBAIHZvaWQgVmVjdG9yPFQ+OjppbnNlcnQoaXRl
cmF0b3IgaXQsIGNvbnN0IFQmIHZhbHVlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQgVmVjdG9y
PFQ+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQgLSBiZWdp
bigpOwotICAgIHNpemVfdCBtb3ZlQ291bnQgPSBlbmQoKSAtIGl0IC0gMTsKLQogICAgIFQgcmVz
dWx0ID0gKml0OwotCi0gICAgc3RkOjptZW1tb3ZlKCZtX2J1ZmZlcltpbmRleF0sICZtX2J1ZmZl
cltpbmRleCArIDFdLCBtb3ZlQ291bnQgKiBzaXplb2YoVCkpOwotICAgIHNocmluayhtX3NpemUg
LSAxKTsKLSAgICAKKyAgICByZW1vdmUoaXQsIGl0ICsgMSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgVmVjdG9yPFQ+OjpyZW1vdmUoaXRlcmF0
b3IgZnJvbSwgaXRlcmF0b3IgdG8pCit7CisgICAgQkFTU0VSVChmcm9tIDwgdG8pOworICAgIHNp
emVfdCBtb3ZlQ291bnQgPSBlbmQoKSAtIHRvOworICAgIGlmIChtb3ZlQ291bnQpCisgICAgICAg
IHN0ZDo6bWVtbW92ZShmcm9tLCB0bywgbW92ZUNvdW50ICogc2l6ZW9mKFQpKTsKKyAgICBzaHJp
bmsobV9zaXplIC0gKHRvIC0gZnJvbSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5s
aW5lIHZvaWQgVmVjdG9yPFQ+Ojpncm93KHNpemVfdCBzaXplKQogewo=
</data>
<flag name="commit-queue"
          id="461102"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437914</attachid>
            <date>2021-09-10 15:16:09 -0700</date>
            <delta_ts>2021-09-10 23:20:02 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8533</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0hlYXAuY3BwCmluZGV4IDFiYzVlMWE4NjljZC4uNWM0Y2MyMDRmOGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMywxMiArMTA0LDE0IEBAIHZvaWQgSGVhcDo6
bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiB7CiAgICAgbV9sYXJn
ZUZyZWUubWFya0FsbEFzRWxpZ2liaWxlKCk7CiAgICAgbV9oYXNQZW5kaW5nRGVjb21taXRzID0g
ZmFsc2U7CisgICAgbV9sYXJnZUZyZWUubWVyZ2VOZWlnaGJvcnMoKTsKICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlfYWxsKCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKFVuaXF1
ZUxvY2tIb2xkZXImLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRl
cikKIHsKICAgICBCQVNTRVJUKHJhbmdlLmhhc1BoeXNpY2FsUGFnZXMoKSk7CisgICAgQkFTU0VS
VChyYW5nZS51c2VkU2luY2VMYXN0U2NhdmVuZ2UoKSk7CiAKICAgICBtX2Zvb3RwcmludCAtPSBy
YW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gcmFuZ2Uu
dG90YWxQaHlzaWNhbFNpemUoKTsKQEAgLTU4Niw3ICs1ODksNyBAQCBMYXJnZVJhbmdlIEhlYXA6
OnRyeUFsbG9jYXRlTGFyZ2VDaHVuayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKICAg
ICBQZXJQcm9jZXNzPFpvbmU+OjpnZXQoKS0+YWRkUmFuZ2UoUmFuZ2UobWVtb3J5LCBzaXplKSk7
CiAjZW5kaWYKIAotICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSwgc2l6ZSwgc2l6
ZSwgc3RhdGljX2Nhc3Q8Y2hhcio+KG1lbW9yeSkgKyBzaXplKTsKKyAgICByZXR1cm4gTGFyZ2VS
YW5nZShtZW1vcnksIHNpemUpOwogfQogCiBzaXplX3QgSGVhcDo6bGFyZ2VTaXplKFVuaXF1ZUxv
Y2tIb2xkZXImLCB2b2lkKiBvYmplY3QpCkBAIC01OTksNyArNjAyLDcgQEAgdm9pZCBIZWFwOjpz
aHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBjb25zdCBSYW5nZSYgb2JqZWN0LCBz
aXplX3QgbmV3U2kKICAgICBCQVNTRVJUKG9iamVjdC5zaXplKCkgPiBuZXdTaXplKTsKIAogICAg
IHNpemVfdCBzaXplID0gbV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2JqZWN0LmJlZ2luKCkpOwot
ICAgIExhcmdlUmFuZ2UgcmFuZ2UgPSBMYXJnZVJhbmdlKG9iamVjdCwgc2l6ZSwgc2l6ZSwgb2Jq
ZWN0LmJlZ2luKCkgKyBzaXplKTsKKyAgICBMYXJnZVJhbmdlIHJhbmdlID0gTGFyZ2VSYW5nZShv
YmplY3QpOwogICAgIHNwbGl0QW5kQWxsb2NhdGUobG9jaywgcmFuZ2UsIGFsaWdubWVudCwgbmV3
U2l6ZSk7CiAKICAgICBtX3NjYXZlbmdlci0+c2NoZWR1bGUoc2l6ZSk7CkBAIC02MDgsNyArNjEx
LDcgQEAgdm9pZCBIZWFwOjpzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBjb25z
dCBSYW5nZSYgb2JqZWN0LCBzaXplX3QgbmV3U2kKIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxhcmdl
KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBt
X2xhcmdlQWxsb2NhdGVkLnJlbW92ZShvYmplY3QpOwotICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJn
ZVJhbmdlKG9iamVjdCwgc2l6ZSwgc2l6ZSwgc2l6ZSwgc3RhdGljX2Nhc3Q8Y2hhcio+KG9iamVj
dCkgKyBzaXplKSk7CisgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2Uob2JqZWN0LCBzaXpl
KSk7CiAgICAgbV9mcmVlYWJsZU1lbW9yeSArPSBzaXplOwogICAgIG1fc2NhdmVuZ2VyLT5zY2hl
ZHVsZShzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VN
YXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5jcHAKaW5kZXggMzEwZWQ4
ZmY0ZjQ3Li5kMDdjMGQ2MmE3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
TGFyZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuY3BwCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02NywxNyArNjgsMTQgQEAgTGFyZ2VSYW5nZSBMYXJnZU1hcDo6cmVtb3ZlKHNpemVfdCBhbGln
bm1lbnQsIHNpemVfdCBzaXplKQogCiB2b2lkIExhcmdlTWFwOjphZGQoY29uc3QgTGFyZ2VSYW5n
ZSYgcmFuZ2UpCiB7Ci0gICAgTGFyZ2VSYW5nZSBtZXJnZWQgPSByYW5nZTsKLQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9mcmVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghY2Fu
TWVyZ2UobWVyZ2VkLCBtX2ZyZWVbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgbWVyZ2VkID0gbWVyZ2UobWVyZ2VkLCBtX2ZyZWUucG9wKGktLSkpOworICAgIGZvciAoYXV0
byogaXQgPSBtX2ZyZWUuYmVnaW4oKTsgaXQgIT0gbV9mcmVlLmVuZCgpOyArK2l0KSB7CisgICAg
ICAgIGlmIChyYW5nZSA8ICppdCkgeworICAgICAgICAgICAgbV9mcmVlLmluc2VydChpdCwgcmFu
Z2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAgbWVyZ2Vk
LnNldFVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgpOwotICAgIG1fZnJlZS5wdXNoKG1lcmdlZCk7Cisg
ICAgbV9mcmVlLnB1c2gocmFuZ2UpOwogfQogCiB2b2lkIExhcmdlTWFwOjptYXJrQWxsQXNFbGln
aWJpbGUoKQpAQCAtODYsNCArODQsMTkgQEAgdm9pZCBMYXJnZU1hcDo6bWFya0FsbEFzRWxpZ2li
aWxlKCkKICAgICAgICAgcmFuZ2Uuc2V0RWxpZ2libGUodHJ1ZSk7CiB9CiAKK3ZvaWQgTGFyZ2VN
YXA6Om1lcmdlTmVpZ2hib3JzKCkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIHdoaWxl
IChpbmRleCA8IG1fZnJlZS5zaXplKCkpIHsKKyAgICAgICAgYXV0byYgcmFuZ2UgPSBtX2ZyZWVb
aW5kZXgrK107CisgICAgICAgIGF1dG8qIG5leHQgPSAmcmFuZ2UgKyAxOworCisgICAgICAgIHdo
aWxlIChuZXh0IDwgbV9mcmVlLmVuZCgpICYmIGNhbk1lcmdlKHJhbmdlLCAqbmV4dCkpCisgICAg
ICAgICAgICByYW5nZSA9IG1lcmdlKHJhbmdlLCAqbmV4dCsrKTsKKworICAgICAgICBpZiAobmV4
dCAtICZyYW5nZSA+IDEpCisgICAgICAgICAgICBtX2ZyZWUucmVtb3ZlKCZyYW5nZSArIDEsIG5l
eHQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9M
YXJnZU1hcC5oCmluZGV4IGZjMWM5ZTJlOTdjOC4uYTg1ZjFiNTVlODk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9MYXJnZU1hcC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaWZuZGVmIExhcmdlTWFwX2gKLSNkZWZpbmUgTGFyZ2VNYXBfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJMYXJnZVJhbmdlLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCkBAIC00MSw2ICs0
MSw3IEBAIHB1YmxpYzoKICAgICBMYXJnZVJhbmdlIHJlbW92ZShzaXplX3QgYWxpZ25tZW50LCBz
aXplX3QpOwogICAgIFZlY3RvcjxMYXJnZVJhbmdlPiYgcmFuZ2VzKCkgeyByZXR1cm4gbV9mcmVl
OyB9CiAgICAgdm9pZCBtYXJrQWxsQXNFbGlnaWJpbGUoKTsKKyAgICB2b2lkIG1lcmdlTmVpZ2hi
b3JzKCk7CiAKICAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1fZnJlZS5zaXplKCk7IH0KICAg
ICBMYXJnZVJhbmdlJiBhdChzaXplX3QgaSkgeyByZXR1cm4gbV9mcmVlW2ldOyB9CkBAIC01MCw1
ICs1MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCi0KLSNlbmRp
ZiAvLyBMYXJnZU1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdl
UmFuZ2UuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VSYW5nZS5oCmluZGV4IDhkMTcx
Mzk5NWY2Ni4uNDhmOGJkNTAxNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0xhcmdlUmFuZ2UuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlUmFuZ2UuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsOCArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBMYXJnZVJh
bmdlX2gKLSNkZWZpbmUgTGFyZ2VSYW5nZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJB
c3NlcnQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtNDMsMTMgKzQzLDI1IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgTGFyZ2VSYW5nZShjb25zdCBSYW5nZSYgb3RoZXIsIHNpemVf
dCBzdGFydFBoeXNpY2FsU2l6ZSwgc2l6ZV90IHRvdGFsUGh5c2ljYWxTaXplLCB2b2lkKiBwaHlz
aWNhbEVuZCkKKyAgICBMYXJnZVJhbmdlKGNvbnN0IFJhbmdlJiBvdGhlcikKICAgICAgICAgOiBS
YW5nZShvdGhlcikKLSAgICAgICAgLCBtX3N0YXJ0UGh5c2ljYWxTaXplKHN0YXJ0UGh5c2ljYWxT
aXplKQotICAgICAgICAsIG1fdG90YWxQaHlzaWNhbFNpemUodG90YWxQaHlzaWNhbFNpemUpCi0g
ICAgICAgICwgbV9waHlzaWNhbEVuZChzdGF0aWNfY2FzdDxjaGFyKj4ocGh5c2ljYWxFbmQpKQor
ICAgICAgICAsIG1fc3RhcnRQaHlzaWNhbFNpemUob3RoZXIuc2l6ZSgpKQorICAgICAgICAsIG1f
dG90YWxQaHlzaWNhbFNpemUob3RoZXIuc2l6ZSgpKQorICAgICAgICAsIG1fcGh5c2ljYWxFbmQo
b3RoZXIuZW5kKCkpCiAgICAgICAgICwgbV9pc0VsaWdpYmxlKHRydWUpCi0gICAgICAgICwgbV91
c2VkU2luY2VMYXN0U2NhdmVuZ2UoZmFsc2UpCisgICAgICAgICwgbV91c2VkU2luY2VMYXN0U2Nh
dmVuZ2UodHJ1ZSkKKyAgICB7CisgICAgICAgIEJBU1NFUlQodGhpcy0+c2l6ZSgpID49IHRoaXMt
PnRvdGFsUGh5c2ljYWxTaXplKCkpOworICAgICAgICBCQVNTRVJUKHRoaXMtPnRvdGFsUGh5c2lj
YWxTaXplKCkgPj0gdGhpcy0+c3RhcnRQaHlzaWNhbFNpemUoKSk7CisgICAgfQorCisgICAgTGFy
Z2VSYW5nZSh2b2lkKiBiZWdpbiwgc2l6ZV90IHNpemUpCisgICAgICAgIDogUmFuZ2UoYmVnaW4s
IHNpemUpCisgICAgICAgICwgbV9zdGFydFBoeXNpY2FsU2l6ZShzaXplKQorICAgICAgICAsIG1f
dG90YWxQaHlzaWNhbFNpemUoc2l6ZSkKKyAgICAgICAgLCBtX3BoeXNpY2FsRW5kKHN0YXRpY19j
YXN0PGNoYXIqPihiZWdpbikgKyBzaXplKQorICAgICAgICAsIG1faXNFbGlnaWJsZSh0cnVlKQor
ICAgICAgICAsIG1fdXNlZFNpbmNlTGFzdFNjYXZlbmdlKHRydWUpCiAgICAgewogICAgICAgICBC
QVNTRVJUKHRoaXMtPnNpemUoKSA+PSB0aGlzLT50b3RhbFBoeXNpY2FsU2l6ZSgpKTsKICAgICAg
ICAgQkFTU0VSVCh0aGlzLT50b3RhbFBoeXNpY2FsU2l6ZSgpID49IHRoaXMtPnN0YXJ0UGh5c2lj
YWxTaXplKCkpOwpAQCAtMTIyLDYgKzEzNCw5IEBAIGlubGluZSBib29sIGNhbk1lcmdlKGNvbnN0
IExhcmdlUmFuZ2UmIGEsIGNvbnN0IExhcmdlUmFuZ2UmIGIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKKyAgICBpZiAoYS51c2VkU2luY2VMYXN0U2NhdmVuZ2UoKSAhPSBiLnVzZWRT
aW5jZUxhc3RTY2F2ZW5nZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoYS5l
bmQoKSA9PSBiLmJlZ2luKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAtMTg5LDUg
KzIwNCwzIEBAIGlubGluZSBzdGQ6OnBhaXI8TGFyZ2VSYW5nZSwgTGFyZ2VSYW5nZT4gTGFyZ2VS
YW5nZTo6c3BsaXQoc2l6ZV90IGxlZnRTaXplKSBjb25zCiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJt
YWxsb2MKLQotI2VuZGlmIC8vIExhcmdlUmFuZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9WZWN0b3IuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVmVjdG9yLmgKaW5k
ZXggZDg0MDliMDU3MmQ3Li5lZGIzMTUyNDI3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvVmVjdG9yLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WZWN0b3IuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0
LDYgKzY1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yLCBjb25z
dCBUJik7CiAgICAgVCByZW1vdmUoaXRlcmF0b3IpOworICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
LCBpdGVyYXRvcik7CiAKICAgICB2b2lkIGdyb3coc2l6ZV90KTsKICAgICB2b2lkIHNocmluayhz
aXplX3QpOwpAQCAtMTU4LDE3ICsxNjAsMjEgQEAgdm9pZCBWZWN0b3I8VD46Omluc2VydChpdGVy
YXRvciBpdCwgY29uc3QgVCYgdmFsdWUpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogVCBWZWN0b3I8
VD46OnJlbW92ZShpdGVyYXRvciBpdCkKIHsKLSAgICBzaXplX3QgaW5kZXggPSBpdCAtIGJlZ2lu
KCk7Ci0gICAgc2l6ZV90IG1vdmVDb3VudCA9IGVuZCgpIC0gaXQgLSAxOwotCiAgICAgVCByZXN1
bHQgPSAqaXQ7Ci0KLSAgICBzdGQ6Om1lbW1vdmUoJm1fYnVmZmVyW2luZGV4XSwgJm1fYnVmZmVy
W2luZGV4ICsgMV0sIG1vdmVDb3VudCAqIHNpemVvZihUKSk7Ci0gICAgc2hyaW5rKG1fc2l6ZSAt
IDEpOwotICAgIAorICAgIHJlbW92ZShpdCwgaXQgKyAxKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBWZWN0b3I8VD46OnJlbW92ZShpdGVyYXRv
ciBmcm9tLCBpdGVyYXRvciB0bykKK3sKKyAgICBCQVNTRVJUKGZyb20gPCB0byk7CisgICAgc2l6
ZV90IG1vdmVDb3VudCA9IGVuZCgpIC0gdG87CisgICAgaWYgKG1vdmVDb3VudCkKKyAgICAgICAg
c3RkOjptZW1tb3ZlKGZyb20sIHRvLCBtb3ZlQ291bnQgKiBzaXplb2YoVCkpOworICAgIHNocmlu
ayhtX3NpemUgLSAodG8gLSBmcm9tKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxp
bmUgdm9pZCBWZWN0b3I8VD46Omdyb3coc2l6ZV90IHNpemUpCiB7Cg==
</data>
<flag name="commit-queue"
          id="461208"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437941</attachid>
            <date>2021-09-10 23:20:02 -0700</date>
            <delta_ts>2021-09-11 11:31:31 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8534</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0hlYXAuY3BwCmluZGV4IDFiYzVlMWE4NjljZC4uYzFmZjg3MDBkNWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMywxMiArMTA0LDE0IEBAIHZvaWQgSGVhcDo6
bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiB7CiAgICAgbV9sYXJn
ZUZyZWUubWFya0FsbEFzRWxpZ2liaWxlKCk7CiAgICAgbV9oYXNQZW5kaW5nRGVjb21taXRzID0g
ZmFsc2U7CisgICAgbV9sYXJnZUZyZWUubWVyZ2VOZWlnaGJvcnMoKTsKICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlfYWxsKCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKFVuaXF1
ZUxvY2tIb2xkZXImLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRl
cikKIHsKICAgICBCQVNTRVJUKHJhbmdlLmhhc1BoeXNpY2FsUGFnZXMoKSk7CisgICAgQkFTU0VS
VCghcmFuZ2UudXNlZFNpbmNlTGFzdFNjYXZlbmdlKCkpOwogCiAgICAgbV9mb290cHJpbnQgLT0g
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdl
LnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC01ODYsNyArNTg5LDcgQEAgTGFyZ2VSYW5nZSBIZWFw
Ojp0cnlBbGxvY2F0ZUxhcmdlQ2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiAg
ICAgUGVyUHJvY2Vzczxab25lPjo6Z2V0KCktPmFkZFJhbmdlKFJhbmdlKG1lbW9yeSwgc2l6ZSkp
OwogI2VuZGlmCiAKLSAgICByZXR1cm4gTGFyZ2VSYW5nZShtZW1vcnksIHNpemUsIHNpemUsIHNp
emUsIHN0YXRpY19jYXN0PGNoYXIqPihtZW1vcnkpICsgc2l6ZSk7CisgICAgcmV0dXJuIExhcmdl
UmFuZ2UobWVtb3J5LCBzaXplKTsKIH0KIAogc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShVbmlxdWVM
b2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQpAQCAtNTk5LDcgKzYwMiw3IEBAIHZvaWQgSGVhcDo6
c2hyaW5rTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwg
c2l6ZV90IG5ld1NpCiAgICAgQkFTU0VSVChvYmplY3Quc2l6ZSgpID4gbmV3U2l6ZSk7CiAKICAg
ICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxvY2F0ZWQucmVtb3ZlKG9iamVjdC5iZWdpbigpKTsK
LSAgICBMYXJnZVJhbmdlIHJhbmdlID0gTGFyZ2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUsIG9i
amVjdC5iZWdpbigpICsgc2l6ZSk7CisgICAgTGFyZ2VSYW5nZSByYW5nZSA9IExhcmdlUmFuZ2Uo
b2JqZWN0KTsKICAgICBzcGxpdEFuZEFsbG9jYXRlKGxvY2ssIHJhbmdlLCBhbGlnbm1lbnQsIG5l
d1NpemUpOwogCiAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlKHNpemUpOwpAQCAtNjA4LDcgKzYx
MSw3IEBAIHZvaWQgSGVhcDo6c2hyaW5rTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgY29u
c3QgUmFuZ2UmIG9iamVjdCwgc2l6ZV90IG5ld1NpCiB2b2lkIEhlYXA6OmRlYWxsb2NhdGVMYXJn
ZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHNpemVfdCBzaXplID0g
bV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2JqZWN0KTsKLSAgICBtX2xhcmdlRnJlZS5hZGQoTGFy
Z2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUsIHNpemUsIHN0YXRpY19jYXN0PGNoYXIqPihvYmpl
Y3QpICsgc2l6ZSkpOworICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKG9iamVjdCwgc2l6
ZSkpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gc2l6ZTsKICAgICBtX3NjYXZlbmdlci0+c2No
ZWR1bGUoc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdl
TWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuY3BwCmluZGV4IDMxMGVk
OGZmNGY0Ny4uZDA3YzBkNjJhNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0xhcmdlTWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjcsMTcgKzY4LDE0IEBAIExhcmdlUmFuZ2UgTGFyZ2VNYXA6OnJlbW92ZShzaXplX3QgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBMYXJnZU1hcDo6YWRkKGNvbnN0IExhcmdlUmFu
Z2UmIHJhbmdlKQogewotICAgIExhcmdlUmFuZ2UgbWVyZ2VkID0gcmFuZ2U7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZnJlZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIWNh
bk1lcmdlKG1lcmdlZCwgbV9mcmVlW2ldKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIG1lcmdlZCA9IG1lcmdlKG1lcmdlZCwgbV9mcmVlLnBvcChpLS0pKTsKKyAgICBmb3IgKGF1
dG8qIGl0ID0gbV9mcmVlLmJlZ2luKCk7IGl0ICE9IG1fZnJlZS5lbmQoKTsgKytpdCkgeworICAg
ICAgICBpZiAocmFuZ2UgPCAqaXQpIHsKKyAgICAgICAgICAgIG1fZnJlZS5pbnNlcnQoaXQsIHJh
bmdlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIG1lcmdl
ZC5zZXRVc2VkU2luY2VMYXN0U2NhdmVuZ2UoKTsKLSAgICBtX2ZyZWUucHVzaChtZXJnZWQpOwor
ICAgIG1fZnJlZS5wdXNoKHJhbmdlKTsKIH0KIAogdm9pZCBMYXJnZU1hcDo6bWFya0FsbEFzRWxp
Z2liaWxlKCkKQEAgLTg2LDQgKzg0LDE5IEBAIHZvaWQgTGFyZ2VNYXA6Om1hcmtBbGxBc0VsaWdp
YmlsZSgpCiAgICAgICAgIHJhbmdlLnNldEVsaWdpYmxlKHRydWUpOwogfQogCit2b2lkIExhcmdl
TWFwOjptZXJnZU5laWdoYm9ycygpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICB3aGls
ZSAoaW5kZXggPCBtX2ZyZWUuc2l6ZSgpKSB7CisgICAgICAgIGF1dG8mIHJhbmdlID0gbV9mcmVl
W2luZGV4KytdOworICAgICAgICBhdXRvKiBuZXh0ID0gJnJhbmdlICsgMTsKKworICAgICAgICB3
aGlsZSAobmV4dCA8IG1fZnJlZS5lbmQoKSAmJiBjYW5NZXJnZShyYW5nZSwgKm5leHQpKQorICAg
ICAgICAgICAgcmFuZ2UgPSBtZXJnZShyYW5nZSwgKm5leHQrKyk7CisKKyAgICAgICAgaWYgKG5l
eHQgLSAmcmFuZ2UgPiAxKQorICAgICAgICAgICAgbV9mcmVlLnJlbW92ZSgmcmFuZ2UgKyAxLCBu
ZXh0KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
TGFyZ2VNYXAuaAppbmRleCBmYzFjOWUyZTk3YzguLmE4NWYxYjU1ZTg5NSAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvTGFyZ2VNYXAuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBMYXJnZU1hcF9oCi0jZGVmaW5lIExhcmdlTWFwX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiTGFyZ2VSYW5nZS5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgpAQCAtNDEsNiAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgTGFyZ2VSYW5nZSByZW1vdmUoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90KTsKICAgICBWZWN0b3I8TGFyZ2VSYW5nZT4mIHJhbmdlcygpIHsgcmV0dXJuIG1fZnJl
ZTsgfQogICAgIHZvaWQgbWFya0FsbEFzRWxpZ2liaWxlKCk7CisgICAgdm9pZCBtZXJnZU5laWdo
Ym9ycygpOwogCiAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX2ZyZWUuc2l6ZSgpOyB9CiAg
ICAgTGFyZ2VSYW5nZSYgYXQoc2l6ZV90IGkpIHsgcmV0dXJuIG1fZnJlZVtpXTsgfQpAQCAtNTAs
NSArNTEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5k
aWYgLy8gTGFyZ2VNYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJn
ZVJhbmdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlUmFuZ2UuaAppbmRleCA4ZDE3
MTM5OTVmNjYuLjQ4ZjhiZDUwMTYxMyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9MYXJnZVJhbmdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdlLmgK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDggKzI0LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgTGFyZ2VS
YW5nZV9oCi0jZGVmaW5lIExhcmdlUmFuZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJC
QXNzZXJ0LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTQzLDEzICs0MywyNSBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIExhcmdlUmFuZ2UoY29uc3QgUmFuZ2UmIG90aGVyLCBzaXpl
X3Qgc3RhcnRQaHlzaWNhbFNpemUsIHNpemVfdCB0b3RhbFBoeXNpY2FsU2l6ZSwgdm9pZCogcGh5
c2ljYWxFbmQpCisgICAgTGFyZ2VSYW5nZShjb25zdCBSYW5nZSYgb3RoZXIpCiAgICAgICAgIDog
UmFuZ2Uob3RoZXIpCi0gICAgICAgICwgbV9zdGFydFBoeXNpY2FsU2l6ZShzdGFydFBoeXNpY2Fs
U2l6ZSkKLSAgICAgICAgLCBtX3RvdGFsUGh5c2ljYWxTaXplKHRvdGFsUGh5c2ljYWxTaXplKQot
ICAgICAgICAsIG1fcGh5c2ljYWxFbmQoc3RhdGljX2Nhc3Q8Y2hhcio+KHBoeXNpY2FsRW5kKSkK
KyAgICAgICAgLCBtX3N0YXJ0UGh5c2ljYWxTaXplKG90aGVyLnNpemUoKSkKKyAgICAgICAgLCBt
X3RvdGFsUGh5c2ljYWxTaXplKG90aGVyLnNpemUoKSkKKyAgICAgICAgLCBtX3BoeXNpY2FsRW5k
KG90aGVyLmVuZCgpKQogICAgICAgICAsIG1faXNFbGlnaWJsZSh0cnVlKQotICAgICAgICAsIG1f
dXNlZFNpbmNlTGFzdFNjYXZlbmdlKGZhbHNlKQorICAgICAgICAsIG1fdXNlZFNpbmNlTGFzdFNj
YXZlbmdlKHRydWUpCisgICAgeworICAgICAgICBCQVNTRVJUKHRoaXMtPnNpemUoKSA+PSB0aGlz
LT50b3RhbFBoeXNpY2FsU2l6ZSgpKTsKKyAgICAgICAgQkFTU0VSVCh0aGlzLT50b3RhbFBoeXNp
Y2FsU2l6ZSgpID49IHRoaXMtPnN0YXJ0UGh5c2ljYWxTaXplKCkpOworICAgIH0KKworICAgIExh
cmdlUmFuZ2Uodm9pZCogYmVnaW4sIHNpemVfdCBzaXplKQorICAgICAgICA6IFJhbmdlKGJlZ2lu
LCBzaXplKQorICAgICAgICAsIG1fc3RhcnRQaHlzaWNhbFNpemUoc2l6ZSkKKyAgICAgICAgLCBt
X3RvdGFsUGh5c2ljYWxTaXplKHNpemUpCisgICAgICAgICwgbV9waHlzaWNhbEVuZChzdGF0aWNf
Y2FzdDxjaGFyKj4oYmVnaW4pICsgc2l6ZSkKKyAgICAgICAgLCBtX2lzRWxpZ2libGUodHJ1ZSkK
KyAgICAgICAgLCBtX3VzZWRTaW5jZUxhc3RTY2F2ZW5nZSh0cnVlKQogICAgIHsKICAgICAgICAg
QkFTU0VSVCh0aGlzLT5zaXplKCkgPj0gdGhpcy0+dG90YWxQaHlzaWNhbFNpemUoKSk7CiAgICAg
ICAgIEJBU1NFUlQodGhpcy0+dG90YWxQaHlzaWNhbFNpemUoKSA+PSB0aGlzLT5zdGFydFBoeXNp
Y2FsU2l6ZSgpKTsKQEAgLTEyMiw2ICsxMzQsOSBAQCBpbmxpbmUgYm9vbCBjYW5NZXJnZShjb25z
dCBMYXJnZVJhbmdlJiBhLCBjb25zdCBMYXJnZVJhbmdlJiBiKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgaWYgKGEudXNlZFNpbmNlTGFzdFNjYXZlbmdlKCkgIT0gYi51c2Vk
U2luY2VMYXN0U2NhdmVuZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGEu
ZW5kKCkgPT0gYi5iZWdpbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTE4OSw1
ICsyMDQsMyBAQCBpbmxpbmUgc3RkOjpwYWlyPExhcmdlUmFuZ2UsIExhcmdlUmFuZ2U+IExhcmdl
UmFuZ2U6OnNwbGl0KHNpemVfdCBsZWZ0U2l6ZSkgY29ucwogfQogCiB9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCi0KLSNlbmRpZiAvLyBMYXJnZVJhbmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvVmVjdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZlY3Rvci5oCmlu
ZGV4IGQ4NDA5YjA1NzJkNy4uZWRiMzE1MjQyNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVmVjdG9yLmgK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluc2VydChpdGVyYXRvciwgY29u
c3QgVCYpOwogICAgIFQgcmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB2b2lkIHJlbW92ZShpdGVyYXRv
ciwgaXRlcmF0b3IpOwogCiAgICAgdm9pZCBncm93KHNpemVfdCk7CiAgICAgdm9pZCBzaHJpbmso
c2l6ZV90KTsKQEAgLTE1OCwxNyArMTYwLDIxIEBAIHZvaWQgVmVjdG9yPFQ+OjppbnNlcnQoaXRl
cmF0b3IgaXQsIGNvbnN0IFQmIHZhbHVlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQgVmVjdG9y
PFQ+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQgLSBiZWdp
bigpOwotICAgIHNpemVfdCBtb3ZlQ291bnQgPSBlbmQoKSAtIGl0IC0gMTsKLQogICAgIFQgcmVz
dWx0ID0gKml0OwotCi0gICAgc3RkOjptZW1tb3ZlKCZtX2J1ZmZlcltpbmRleF0sICZtX2J1ZmZl
cltpbmRleCArIDFdLCBtb3ZlQ291bnQgKiBzaXplb2YoVCkpOwotICAgIHNocmluayhtX3NpemUg
LSAxKTsKLSAgICAKKyAgICByZW1vdmUoaXQsIGl0ICsgMSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgVmVjdG9yPFQ+OjpyZW1vdmUoaXRlcmF0
b3IgZnJvbSwgaXRlcmF0b3IgdG8pCit7CisgICAgQkFTU0VSVChmcm9tIDwgdG8pOworICAgIHNp
emVfdCBtb3ZlQ291bnQgPSBlbmQoKSAtIHRvOworICAgIGlmIChtb3ZlQ291bnQpCisgICAgICAg
IHN0ZDo6bWVtbW92ZShmcm9tLCB0bywgbW92ZUNvdW50ICogc2l6ZW9mKFQpKTsKKyAgICBzaHJp
bmsobV9zaXplIC0gKHRvIC0gZnJvbSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5s
aW5lIHZvaWQgVmVjdG9yPFQ+Ojpncm93KHNpemVfdCBzaXplKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437960</attachid>
            <date>2021-09-11 11:31:31 -0700</date>
            <delta_ts>2021-09-12 11:45:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2632</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLjgwNGM0MWY4NjAwZSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUxIEBACisyMDIxLTA5LTExICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gTWVyZ2UgbGFyZ2UgZnJlZXMgYWZ0ZXIgbWFr
aW5nIHRoZW0gZWxpZ2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMDE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERlYWxsb2NhdGVkIGxhcmdlcyBhcmUgc3RvcmVkIGluIEhlYXAncyBMYXJnZUZy
ZWUuIFRoZXkncmUgbWVyZ2VkIGlmIHRoZXkgYXJlIG5laWdoYm9ycyBhbmQKKyAgICAgICAgaGFz
IHNhbWUgc3RhdGVzLiBCdXQgY2hhbmNlcyBhcmUgb25seSB3aGVuIHRoZXkgYWRkZWQgdG8gdGhl
IExhcmdlRnJlZSBtYXAuIFdoZW4gdGhleSBhcmUKKyAgICAgICAgbm90IGVsaWdpYmxlIChpdCBp
cyBsaWtlbHkgcG9zc2libGUpIGF0IHRoYXQgdGltZSwgdGhlcmUncyBubyBjaGFuY2UgdG8gYmUg
bWVyZ2VkIGV4Y2VwdAorICAgICAgICBvdGhlciBuZWlnaGJvcnMgYXJlIGluc2VydGVkLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcG9zdHBvbmUgdGhlIG1lcmdlIHVudGlsIHdob2xlIHBvc3NpYmxl
IGVsaWdpYmxlIHJlZ2lvbnMgYXJlIG1hcmtlZCBzbyBiZWZvcmUKKyAgICAgICAgbWVyZ2luZy4g
QWxzbyB0aGVyZSdyZSBtb3JlIGNoYW5jZXMgdG8gYmUgbWVyZ2VkIHdpdGggbmVpZ2hib3JzIGF0
IHRoYXQgdGltaW5nIGJlY2F1c2Ugd2hvbGUKKyAgICAgICAgcmVnaW9ucyBhcmUgZWxpZ2libGUu
IEF0IHRoZSBlbmQsIHRoaXMgaXMgdGhlIGdyZWF0IGhlbHAgdG8gcmVzb2x2ZSBmcmFnbWVudGVk
IHJlZ2lvbnMgaW4KKyAgICAgICAgTGFyZ2VGcmVlLgorCisgICAgICAgIFRvIGFjaGlldmUgdGhp
cywgdGhlIHJlZ2lvbnMgaW4gbGFyZ2VGcmVlIGFyZSBub3cgc29ydGVkIGluIGl0cyBhZGRyZXNz
LiBUaGlzIGhlbHBzIHRvIGRldGVjdAorICAgICAgICBtZXJnYWJsZSByZWdpb25zIHByZXR0eSBl
ZmZpY2llbnRseS4gQWxzbyB2ZWN0b3Igbm93IGhhcyBidWxrIHJlbW92ZSBtZXRob2QuCisKKyAg
ICAgICAgVGhlIGNvbnN0cnVjdG9ycyBvZiBMYXJnZVJhbmdlIGFyZSBhbHNvIHNpbXBsaWZpZWQu
IE1vc3QgY2FzZXMgYXJlIHNpbXBseSBmdWxsIG9mIHBoeXNpY2FsIHBhZ2VzCisgICAgICAgIHNv
IHRoYXQgdGhlIGNvbnN0cnVjdG9yIHdpdGggb25seSByYW5nZSBpbmZvcm1hdGlvbiBzZXQgdGhl
IHBoeXNpY2FsIHBhZ2UgaW5mb3JtYXRpb24gYXMgZnVsbC4KKworICAgICAgICBIZXJlJ3MgYSBx
dWljayByZXN1bHQgZnJvbSB0ZXN0bWVtIG9uIE1hY0Jvb2sgQWlyIE0xLiBUaGUgZGlmZmVyZW5j
ZXMgYXJlIHRpbnkuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgICAg
ICAgICAgIHBhdGNoZWQKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgZW5kIHNjb3JlOiAgICAgICAgICAgNy4xNTY3IE1C
ICAgICAgICAgIDcuMDQ3NiBNQgorICAgICAgICBwZWFrIHNjb3JlOiAgICAgICAgICAxMC42MzU3
IE1CICAgICAgICAgMTAuNzExNiBNQgorICAgICAgICB0b3RhbCBtZW1vcnkgc2NvcmU6ICA4Ljcy
NDUgTUIgICAgICAgICAgOC42ODg2IE1CCisgICAgICAgIHRpbWUgc2NvcmU6ICAgICAgICAgIDQ4
MS4wOCBtcyAgICAgICAgICA0ODAuNTMgbXMKKworICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OnNocmlua0xhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVMYXJnZSk6
CisgICAgICAgICogYm1hbGxvYy9MYXJnZU1hcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpMYXJn
ZU1hcDo6YWRkKToKKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlTWFwOjptZXJnZU5laWdoYm9ycyk6
CisgICAgICAgICogYm1hbGxvYy9MYXJnZU1hcC5oOgorICAgICAgICAqIGJtYWxsb2MvTGFyZ2VS
YW5nZS5oOgorICAgICAgICAoYm1hbGxvYzo6TGFyZ2VSYW5nZTo6TGFyZ2VSYW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpjYW5NZXJnZSk6CisgICAgICAgICogYm1hbGxvYy9WZWN0b3IuaDoKKyAg
ICAgICAgKGJtYWxsb2M6OlZlY3RvcjxUPjo6cmVtb3ZlKToKKwogMjAyMS0wOC0wNCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIG1lZGl1bSBzaXpl
IGNsYXNzIGxvb2t1cCBuZWVkcyB0byBjb3JyZWN0bHkgZmVuY2UgdGhlIGNvdW50aW5nIGxvY2sg
cmVhZCBwYXRoCg==
</data>
<flag name="review"
          id="461244"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="461245"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437992</attachid>
            <date>2021-09-12 11:45:37 -0700</date>
            <delta_ts>2021-09-18 13:19:31 -0700</delta_ts>
            <desc>Patch for landing 2</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11166</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLjgwNGM0MWY4NjAwZSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUxIEBACisyMDIxLTA5LTExICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gTWVyZ2UgbGFyZ2UgZnJlZXMgYWZ0ZXIgbWFr
aW5nIHRoZW0gZWxpZ2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMDE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERlYWxsb2NhdGVkIGxhcmdlcyBhcmUgc3RvcmVkIGluIEhlYXAncyBMYXJnZUZy
ZWUuIFRoZXkncmUgbWVyZ2VkIGlmIHRoZXkgYXJlIG5laWdoYm9ycyBhbmQKKyAgICAgICAgaGFz
IHNhbWUgc3RhdGVzLiBCdXQgY2hhbmNlcyBhcmUgb25seSB3aGVuIHRoZXkgYWRkZWQgdG8gdGhl
IExhcmdlRnJlZSBtYXAuIFdoZW4gdGhleSBhcmUKKyAgICAgICAgbm90IGVsaWdpYmxlIChpdCBp
cyBsaWtlbHkgcG9zc2libGUpIGF0IHRoYXQgdGltZSwgdGhlcmUncyBubyBjaGFuY2UgdG8gYmUg
bWVyZ2VkIGV4Y2VwdAorICAgICAgICBvdGhlciBuZWlnaGJvcnMgYXJlIGluc2VydGVkLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcG9zdHBvbmUgdGhlIG1lcmdlIHVudGlsIHdob2xlIHBvc3NpYmxl
IGVsaWdpYmxlIHJlZ2lvbnMgYXJlIG1hcmtlZCBzbyBiZWZvcmUKKyAgICAgICAgbWVyZ2luZy4g
QWxzbyB0aGVyZSdyZSBtb3JlIGNoYW5jZXMgdG8gYmUgbWVyZ2VkIHdpdGggbmVpZ2hib3JzIGF0
IHRoYXQgdGltaW5nIGJlY2F1c2Ugd2hvbGUKKyAgICAgICAgcmVnaW9ucyBhcmUgZWxpZ2libGUu
IEF0IHRoZSBlbmQsIHRoaXMgaXMgdGhlIGdyZWF0IGhlbHAgdG8gcmVzb2x2ZSBmcmFnbWVudGVk
IHJlZ2lvbnMgaW4KKyAgICAgICAgTGFyZ2VGcmVlLgorCisgICAgICAgIFRvIGFjaGlldmUgdGhp
cywgdGhlIHJlZ2lvbnMgaW4gbGFyZ2VGcmVlIGFyZSBub3cgc29ydGVkIGluIGl0cyBhZGRyZXNz
LiBUaGlzIGhlbHBzIHRvIGRldGVjdAorICAgICAgICBtZXJnYWJsZSByZWdpb25zIHByZXR0eSBl
ZmZpY2llbnRseS4gQWxzbyB2ZWN0b3Igbm93IGhhcyBidWxrIHJlbW92ZSBtZXRob2QuCisKKyAg
ICAgICAgVGhlIGNvbnN0cnVjdG9ycyBvZiBMYXJnZVJhbmdlIGFyZSBhbHNvIHNpbXBsaWZpZWQu
IE1vc3QgY2FzZXMgYXJlIHNpbXBseSBmdWxsIG9mIHBoeXNpY2FsIHBhZ2VzCisgICAgICAgIHNv
IHRoYXQgdGhlIGNvbnN0cnVjdG9yIHdpdGggb25seSByYW5nZSBpbmZvcm1hdGlvbiBzZXQgdGhl
IHBoeXNpY2FsIHBhZ2UgaW5mb3JtYXRpb24gYXMgZnVsbC4KKworICAgICAgICBIZXJlJ3MgYSBx
dWljayByZXN1bHQgZnJvbSB0ZXN0bWVtIG9uIE1hY0Jvb2sgQWlyIE0xLiBUaGUgZGlmZmVyZW5j
ZXMgYXJlIHRpbnkuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgICAg
ICAgICAgIHBhdGNoZWQKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgZW5kIHNjb3JlOiAgICAgICAgICAgNy4xNTY3IE1C
ICAgICAgICAgIDcuMDQ3NiBNQgorICAgICAgICBwZWFrIHNjb3JlOiAgICAgICAgICAxMC42MzU3
IE1CICAgICAgICAgMTAuNzExNiBNQgorICAgICAgICB0b3RhbCBtZW1vcnkgc2NvcmU6ICA4Ljcy
NDUgTUIgICAgICAgICAgOC42ODg2IE1CCisgICAgICAgIHRpbWUgc2NvcmU6ICAgICAgICAgIDQ4
MS4wOCBtcyAgICAgICAgICA0ODAuNTMgbXMKKworICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OnNocmlua0xhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVMYXJnZSk6
CisgICAgICAgICogYm1hbGxvYy9MYXJnZU1hcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpMYXJn
ZU1hcDo6YWRkKToKKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlTWFwOjptZXJnZU5laWdoYm9ycyk6
CisgICAgICAgICogYm1hbGxvYy9MYXJnZU1hcC5oOgorICAgICAgICAqIGJtYWxsb2MvTGFyZ2VS
YW5nZS5oOgorICAgICAgICAoYm1hbGxvYzo6TGFyZ2VSYW5nZTo6TGFyZ2VSYW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpjYW5NZXJnZSk6CisgICAgICAgICogYm1hbGxvYy9WZWN0b3IuaDoKKyAg
ICAgICAgKGJtYWxsb2M6OlZlY3RvcjxUPjo6cmVtb3ZlKToKKwogMjAyMS0wOC0wNCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIG1lZGl1bSBzaXpl
IGNsYXNzIGxvb2t1cCBuZWVkcyB0byBjb3JyZWN0bHkgZmVuY2UgdGhlIGNvdW50aW5nIGxvY2sg
cmVhZCBwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCAxYmM1ZTFhODY5Y2QuLmMxZmY4
NzAwZDVhOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsMTIgKzEwNCwxNCBAQCB2
b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IExvY2tIb2xkZXImKQogewog
ICAgIG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdpYmlsZSgpOwogICAgIG1faGFzUGVuZGluZ0Rl
Y29tbWl0cyA9IGZhbHNlOworICAgIG1fbGFyZ2VGcmVlLm1lcmdlTmVpZ2hib3JzKCk7CiAgICAg
bV9jb25kaXRpb24ubm90aWZ5X2FsbCgpOwogfQogCiB2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VS
YW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYg
ZGVjb21taXR0ZXIpCiB7CiAgICAgQkFTU0VSVChyYW5nZS5oYXNQaHlzaWNhbFBhZ2VzKCkpOwor
ICAgIEJBU1NFUlQoIXJhbmdlLnVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgpKTsKIAogICAgIG1fZm9v
dHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CiAgICAgbV9mcmVlYWJsZU1lbW9y
eSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwpAQCAtNTg2LDcgKzU4OSw3IEBAIExhcmdl
UmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplKQogICAgIFBlclByb2Nlc3M8Wm9uZT46OmdldCgpLT5hZGRSYW5nZShSYW5nZShtZW1v
cnksIHNpemUpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIExhcmdlUmFuZ2UobWVtb3J5LCBzaXpl
LCBzaXplLCBzaXplLCBzdGF0aWNfY2FzdDxjaGFyKj4obWVtb3J5KSArIHNpemUpOworICAgIHJl
dHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSk7CiB9CiAKIHNpemVfdCBIZWFwOjpsYXJnZVNp
emUoVW5pcXVlTG9ja0hvbGRlciYsIHZvaWQqIG9iamVjdCkKQEAgLTU5OSw3ICs2MDIsNyBAQCB2
b2lkIEhlYXA6OnNocmlua0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIGNvbnN0IFJhbmdl
JiBvYmplY3QsIHNpemVfdCBuZXdTaQogICAgIEJBU1NFUlQob2JqZWN0LnNpemUoKSA+IG5ld1Np
emUpOwogCiAgICAgc2l6ZV90IHNpemUgPSBtX2xhcmdlQWxsb2NhdGVkLnJlbW92ZShvYmplY3Qu
YmVnaW4oKSk7Ci0gICAgTGFyZ2VSYW5nZSByYW5nZSA9IExhcmdlUmFuZ2Uob2JqZWN0LCBzaXpl
LCBzaXplLCBvYmplY3QuYmVnaW4oKSArIHNpemUpOworICAgIExhcmdlUmFuZ2UgcmFuZ2UgPSBM
YXJnZVJhbmdlKG9iamVjdCk7CiAgICAgc3BsaXRBbmRBbGxvY2F0ZShsb2NrLCByYW5nZSwgYWxp
Z25tZW50LCBuZXdTaXplKTsKIAogICAgIG1fc2NhdmVuZ2VyLT5zY2hlZHVsZShzaXplKTsKQEAg
LTYwOCw3ICs2MTEsNyBAQCB2b2lkIEhlYXA6OnNocmlua0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXIm
IGxvY2ssIGNvbnN0IFJhbmdlJiBvYmplY3QsIHNpemVfdCBuZXdTaQogdm9pZCBIZWFwOjpkZWFs
bG9jYXRlTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYsIHZvaWQqIG9iamVjdCkKIHsKICAgICBzaXpl
X3Qgc2l6ZSA9IG1fbGFyZ2VBbGxvY2F0ZWQucmVtb3ZlKG9iamVjdCk7Ci0gICAgbV9sYXJnZUZy
ZWUuYWRkKExhcmdlUmFuZ2Uob2JqZWN0LCBzaXplLCBzaXplLCBzaXplLCBzdGF0aWNfY2FzdDxj
aGFyKj4ob2JqZWN0KSArIHNpemUpKTsKKyAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5nZShv
YmplY3QsIHNpemUpKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHNpemU7CiAgICAgbV9zY2F2
ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9MYXJnZU1hcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmNwcApp
bmRleCAzMTBlZDhmZjRmNDcuLmQwN2MwZDYyYTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9MYXJnZU1hcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJn
ZU1hcC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY3LDE3ICs2OCwxNCBAQCBMYXJnZVJhbmdlIExhcmdlTWFwOjpyZW1vdmUo
c2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiAKIHZvaWQgTGFyZ2VNYXA6OmFkZChjb25z
dCBMYXJnZVJhbmdlJiByYW5nZSkKIHsKLSAgICBMYXJnZVJhbmdlIG1lcmdlZCA9IHJhbmdlOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyZWUuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFjYW5NZXJnZShtZXJnZWQsIG1fZnJlZVtpXSkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBtZXJnZWQgPSBtZXJnZShtZXJnZWQsIG1fZnJlZS5wb3AoaS0tKSk7Cisg
ICAgZm9yIChhdXRvKiBpdCA9IG1fZnJlZS5iZWdpbigpOyBpdCAhPSBtX2ZyZWUuZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgaWYgKHJhbmdlIDwgKml0KSB7CisgICAgICAgICAgICBtX2ZyZWUuaW5z
ZXJ0KGl0LCByYW5nZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAK
LSAgICBtZXJnZWQuc2V0VXNlZFNpbmNlTGFzdFNjYXZlbmdlKCk7Ci0gICAgbV9mcmVlLnB1c2go
bWVyZ2VkKTsKKyAgICBtX2ZyZWUucHVzaChyYW5nZSk7CiB9CiAKIHZvaWQgTGFyZ2VNYXA6Om1h
cmtBbGxBc0VsaWdpYmlsZSgpCkBAIC04Niw0ICs4NCwxOSBAQCB2b2lkIExhcmdlTWFwOjptYXJr
QWxsQXNFbGlnaWJpbGUoKQogICAgICAgICByYW5nZS5zZXRFbGlnaWJsZSh0cnVlKTsKIH0KIAor
dm9pZCBMYXJnZU1hcDo6bWVyZ2VOZWlnaGJvcnMoKQoreworICAgIHNpemVfdCBpbmRleCA9IDA7
CisgICAgd2hpbGUgKGluZGV4IDwgbV9mcmVlLnNpemUoKSkgeworICAgICAgICBhdXRvJiByYW5n
ZSA9IG1fZnJlZVtpbmRleCsrXTsKKyAgICAgICAgYXV0byogbmV4dCA9ICZyYW5nZSArIDE7CisK
KyAgICAgICAgd2hpbGUgKG5leHQgPCBtX2ZyZWUuZW5kKCkgJiYgY2FuTWVyZ2UocmFuZ2UsICpu
ZXh0KSkKKyAgICAgICAgICAgIHJhbmdlID0gbWVyZ2UocmFuZ2UsICpuZXh0KyspOworCisgICAg
ICAgIGlmIChuZXh0IC0gJnJhbmdlID4gMSkKKyAgICAgICAgICAgIG1fZnJlZS5yZW1vdmUoJnJh
bmdlICsgMSwgbmV4dCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0xhcmdlTWFwLmgKaW5kZXggZmMxYzllMmU5N2M4Li5hODVmMWI1NWU4OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzI0LDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgTGFyZ2VNYXBfaAotI2RlZmluZSBMYXJnZU1hcF9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkxhcmdlUmFuZ2UuaCIKICNpbmNsdWRlICJWZWN0b3IuaCIK
QEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIExhcmdlUmFuZ2UgcmVtb3ZlKHNpemVfdCBh
bGlnbm1lbnQsIHNpemVfdCk7CiAgICAgVmVjdG9yPExhcmdlUmFuZ2U+JiByYW5nZXMoKSB7IHJl
dHVybiBtX2ZyZWU7IH0KICAgICB2b2lkIG1hcmtBbGxBc0VsaWdpYmlsZSgpOworICAgIHZvaWQg
bWVyZ2VOZWlnaGJvcnMoKTsKIAogICAgIHNpemVfdCBzaXplKCkgeyByZXR1cm4gbV9mcmVlLnNp
emUoKTsgfQogICAgIExhcmdlUmFuZ2UmIGF0KHNpemVfdCBpKSB7IHJldHVybiBtX2ZyZWVbaV07
IH0KQEAgLTUwLDUgKzUxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxs
b2MKLQotI2VuZGlmIC8vIExhcmdlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvTGFyZ2VSYW5nZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdlLmgK
aW5kZXggOGQxNzEzOTk1ZjY2Li40OGY4YmQ1MDE2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTGFyZ2VSYW5nZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFy
Z2VSYW5nZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMyw4ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZu
ZGVmIExhcmdlUmFuZ2VfaAotI2RlZmluZSBMYXJnZVJhbmdlX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQkFzc2VydC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC00MywxMyArNDMsMjUg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBMYXJnZVJhbmdlKGNvbnN0IFJhbmdlJiBv
dGhlciwgc2l6ZV90IHN0YXJ0UGh5c2ljYWxTaXplLCBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUs
IHZvaWQqIHBoeXNpY2FsRW5kKQorICAgIExhcmdlUmFuZ2UoY29uc3QgUmFuZ2UmIG90aGVyKQog
ICAgICAgICA6IFJhbmdlKG90aGVyKQotICAgICAgICAsIG1fc3RhcnRQaHlzaWNhbFNpemUoc3Rh
cnRQaHlzaWNhbFNpemUpCi0gICAgICAgICwgbV90b3RhbFBoeXNpY2FsU2l6ZSh0b3RhbFBoeXNp
Y2FsU2l6ZSkKLSAgICAgICAgLCBtX3BoeXNpY2FsRW5kKHN0YXRpY19jYXN0PGNoYXIqPihwaHlz
aWNhbEVuZCkpCisgICAgICAgICwgbV9zdGFydFBoeXNpY2FsU2l6ZShvdGhlci5zaXplKCkpCisg
ICAgICAgICwgbV90b3RhbFBoeXNpY2FsU2l6ZShvdGhlci5zaXplKCkpCisgICAgICAgICwgbV9w
aHlzaWNhbEVuZChvdGhlci5lbmQoKSkKICAgICAgICAgLCBtX2lzRWxpZ2libGUodHJ1ZSkKLSAg
ICAgICAgLCBtX3VzZWRTaW5jZUxhc3RTY2F2ZW5nZShmYWxzZSkKKyAgICAgICAgLCBtX3VzZWRT
aW5jZUxhc3RTY2F2ZW5nZSh0cnVlKQorICAgIHsKKyAgICAgICAgQkFTU0VSVCh0aGlzLT5zaXpl
KCkgPj0gdGhpcy0+dG90YWxQaHlzaWNhbFNpemUoKSk7CisgICAgICAgIEJBU1NFUlQodGhpcy0+
dG90YWxQaHlzaWNhbFNpemUoKSA+PSB0aGlzLT5zdGFydFBoeXNpY2FsU2l6ZSgpKTsKKyAgICB9
CisKKyAgICBMYXJnZVJhbmdlKHZvaWQqIGJlZ2luLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBS
YW5nZShiZWdpbiwgc2l6ZSkKKyAgICAgICAgLCBtX3N0YXJ0UGh5c2ljYWxTaXplKHNpemUpCisg
ICAgICAgICwgbV90b3RhbFBoeXNpY2FsU2l6ZShzaXplKQorICAgICAgICAsIG1fcGh5c2ljYWxF
bmQoc3RhdGljX2Nhc3Q8Y2hhcio+KGJlZ2luKSArIHNpemUpCisgICAgICAgICwgbV9pc0VsaWdp
YmxlKHRydWUpCisgICAgICAgICwgbV91c2VkU2luY2VMYXN0U2NhdmVuZ2UodHJ1ZSkKICAgICB7
CiAgICAgICAgIEJBU1NFUlQodGhpcy0+c2l6ZSgpID49IHRoaXMtPnRvdGFsUGh5c2ljYWxTaXpl
KCkpOwogICAgICAgICBCQVNTRVJUKHRoaXMtPnRvdGFsUGh5c2ljYWxTaXplKCkgPj0gdGhpcy0+
c3RhcnRQaHlzaWNhbFNpemUoKSk7CkBAIC0xMjIsNiArMTM0LDkgQEAgaW5saW5lIGJvb2wgY2Fu
TWVyZ2UoY29uc3QgTGFyZ2VSYW5nZSYgYSwgY29uc3QgTGFyZ2VSYW5nZSYgYikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChhLnVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgp
ICE9IGIudXNlZFNpbmNlTGFzdFNjYXZlbmdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIGlmIChhLmVuZCgpID09IGIuYmVnaW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
CkBAIC0xODksNSArMjA0LDMgQEAgaW5saW5lIHN0ZDo6cGFpcjxMYXJnZVJhbmdlLCBMYXJnZVJh
bmdlPiBMYXJnZVJhbmdlOjpzcGxpdChzaXplX3QgbGVmdFNpemUpIGNvbnMKIH0KIAogfSAvLyBu
YW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gTGFyZ2VSYW5nZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZlY3Rvci5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9W
ZWN0b3IuaAppbmRleCBkODQwOWIwNTcyZDcuLmVkYjMxNTI0Mjc3OCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9WZWN0b3IuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1ZlY3Rvci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBpbnNlcnQoaXRl
cmF0b3IsIGNvbnN0IFQmKTsKICAgICBUIHJlbW92ZShpdGVyYXRvcik7CisgICAgdm9pZCByZW1v
dmUoaXRlcmF0b3IsIGl0ZXJhdG9yKTsKIAogICAgIHZvaWQgZ3JvdyhzaXplX3QpOwogICAgIHZv
aWQgc2hyaW5rKHNpemVfdCk7CkBAIC0xNTgsMTcgKzE2MCwyMSBAQCB2b2lkIFZlY3RvcjxUPjo6
aW5zZXJ0KGl0ZXJhdG9yIGl0LCBjb25zdCBUJiB2YWx1ZSkKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiBUIFZlY3RvcjxUPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogewotICAgIHNpemVfdCBpbmRleCA9
IGl0IC0gYmVnaW4oKTsKLSAgICBzaXplX3QgbW92ZUNvdW50ID0gZW5kKCkgLSBpdCAtIDE7Ci0K
ICAgICBUIHJlc3VsdCA9ICppdDsKLQotICAgIHN0ZDo6bWVtbW92ZSgmbV9idWZmZXJbaW5kZXhd
LCAmbV9idWZmZXJbaW5kZXggKyAxXSwgbW92ZUNvdW50ICogc2l6ZW9mKFQpKTsKLSAgICBzaHJp
bmsobV9zaXplIC0gMSk7Ci0gICAgCisgICAgcmVtb3ZlKGl0LCBpdCArIDEpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIFZlY3RvcjxUPjo6cmVt
b3ZlKGl0ZXJhdG9yIGZyb20sIGl0ZXJhdG9yIHRvKQoreworICAgIEJBU1NFUlQoZnJvbSA8IHRv
KTsKKyAgICBzaXplX3QgbW92ZUNvdW50ID0gZW5kKCkgLSB0bzsKKyAgICBpZiAobW92ZUNvdW50
KQorICAgICAgICBzdGQ6Om1lbW1vdmUoZnJvbSwgdG8sIG1vdmVDb3VudCAqIHNpemVvZihUKSk7
CisgICAgc2hyaW5rKG1fc2l6ZSAtICh0byAtIGZyb20pKTsKK30KKwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIGlubGluZSB2b2lkIFZlY3RvcjxUPjo6Z3JvdyhzaXplX3Qgc2l6ZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438567</attachid>
            <date>2021-09-18 13:19:31 -0700</date>
            <delta_ts>2022-02-27 23:11:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6488</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLjAzMjZkZDRmYWMyNSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQxIEBACisyMDIxLTA5LTE4ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gTWVyZ2UgbGFyZ2UgZnJlZXMgYWZ0ZXIgbWFr
aW5nIHRoZW0gZWxpZ2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMDE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODMyMjQxNjA+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVhbGxvY2F0ZWQg
bGFyZ2VzIGFyZSBzdG9yZWQgaW4gSGVhcCdzIExhcmdlRnJlZS4gV2hlbiB0aGUgcmVnaW9uIGlz
IGFkZGVkIHRvIExhcmdlRnJlZSwKKyAgICAgICAgdGhlcmUncyBjaGFuY2UgdG8gbWVyZ2Ugd2l0
aCBvdGhlciBmcmVlIHJlZ2lvbnMgd2hpY2ggaXMgbmVpZ2hib3Igb2YgdGhlIHJlZ2lvbi4gQnV0
IGlmIHRoZXkKKyAgICAgICAgaGF2ZSBkaWZmZXJlbnQgc3RhdGVzLCB0aGUgbWVyZ2Ugd29uJ3Qg
aGFwcGVuIGF0IHRoYXQgdGltaW5nLiBJZiBpdCBpcyBub3QgZWxpZ2libGUgKGl0IGlzCisgICAg
ICAgIGxpa2VseSBwb3NzaWJsZSkgYXQgdGhhdCB0aW1lLCB0aGVyZSdzIG5vIGNoYW5jZSB0byBi
ZSBtZXJnZWQgZXhjZXB0IG90aGVyIG5laWdoYm9ycyBhcmUKKyAgICAgICAgaW5zZXJ0ZWQuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgY2hhbmNlIGZvciBtZXJnaW5nIGFmdGVy
IHdob2xlIHJlZ2lvbnMgYXJlIG1hcmtlZCBhcyBlbGlnaWJsZS4gSXQgaXMKKyAgICAgICAgZXhw
ZWN0ZWQgdGhhdCBtb3JlIHJlZ2lvbnMgY2FuIGJlIG1lcmdlZCBlYWNoIG90aGVyIGFuZCBpcyB0
aGUgZ3JlYXQgaGVscCB0byByZXNvbHZlIGZyYWdtZW50ZWQKKyAgICAgICAgcmVnaW9ucyBpbiBM
YXJnZUZyZWUuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzIGVmZmljaWVudGx5LCB0aGUgcmVn
aW9ucyBpbiBsYXJnZUZyZWUgYXJlIG5vdyBzb3J0ZWQgaW4gaXRzIGFkZHJlc3MuIFRoaXMgaGVs
cHMKKyAgICAgICAgdG8gZGV0ZWN0IG1lcmdhYmxlIHJlZ2lvbnMgaW4gYW55IHRpbWluZy4KKwor
ICAgICAgICBIZXJlJ3MgYSBxdWljayByZXN1bHQgZnJvbSB0ZXN0bWVtIG9uIE1hY0Jvb2sgQWly
IE0xLiBUaGUgZGlmZmVyZW5jZXMgYXJlIHRpbnkuCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWwgICAgICAgICAgIHBhdGNoZWQKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgZW5kIHNjb3JlOiAg
ICAgICAgICAgNi45NzM3IE1CICAgICAgICAgIDYuOTYwMSBNQgorICAgICAgICBwZWFrIHNjb3Jl
OiAgICAgICAgICAxMC41NTE0IE1CICAgICAgICAgMTAuNTcwMiBNQgorICAgICAgICB0b3RhbCBt
ZW1vcnkgc2NvcmU6ICA4LjU3OCBNQiAgICAgICAgICAgOC41NzczIE1CCisgICAgICAgIHRpbWUg
c2NvcmU6ICAgICAgICAgIDQ3OS45IG1zICAgICAgICAgICA0NzQuOSBtcworCisgICAgICAgICog
Ym1hbGxvYy9MYXJnZU1hcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpMYXJnZU1hcDo6YWRkKToK
KyAgICAgICAgKGJtYWxsb2M6OkxhcmdlTWFwOjptYXJrQWxsQXNFbGlnaWJpbGUpOgorICAgICAg
ICAoYm1hbGxvYzo6TGFyZ2VNYXA6Om1lcmdlTmVpZ2hib3JzKToKKyAgICAgICAgKiBibWFsbG9j
L0xhcmdlTWFwLmg6CisgICAgICAgICogYm1hbGxvYy9WZWN0b3IuaDoKKyAgICAgICAgKGJtYWxs
b2M6OlZlY3RvcjxUPjo6cmVtb3ZlKToKKwogMjAyMS0wOC0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIG1lZGl1bSBzaXplIGNsYXNzIGxvb2t1
cCBuZWVkcyB0byBjb3JyZWN0bHkgZmVuY2UgdGhlIGNvdW50aW5nIGxvY2sgcmVhZCBwYXRoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmNwcCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAuY3BwCmluZGV4IDMxMGVkOGZmNGY0Ny4uNjk0MTNkMjY1
NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmNwcAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjcsMjMgKzY4LDUyIEBA
IExhcmdlUmFuZ2UgTGFyZ2VNYXA6OnJlbW92ZShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6
ZSkKIAogdm9pZCBMYXJnZU1hcDo6YWRkKGNvbnN0IExhcmdlUmFuZ2UmIHJhbmdlKQogewotICAg
IExhcmdlUmFuZ2UgbWVyZ2VkID0gcmFuZ2U7CisgICAgYXV0byBjb3BpZWQgPSByYW5nZTsKKyAg
ICBjb3BpZWQuc2V0VXNlZFNpbmNlTGFzdFNjYXZlbmdlKCk7CisKKyAgICBmb3IgKGF1dG8qIGl0
ID0gbV9mcmVlLmJlZ2luKCk7IGl0ICE9IG1fZnJlZS5lbmQoKTsgKytpdCkgeworICAgICAgICBp
ZiAoY29waWVkIDwgKml0KSB7CisgICAgICAgICAgICBpZiAoY2FuTWVyZ2UoY29waWVkLCAqaXQp
KQorICAgICAgICAgICAgICAgICppdCA9IG1lcmdlKGNvcGllZCwgKml0KTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBtX2ZyZWUuaW5zZXJ0KGl0LCBjb3BpZWQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZnJlZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIWNhbk1lcmdlKG1lcmdlZCwgbV9mcmVl
W2ldKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoY2FuTWVyZ2UoKml0LCBj
b3BpZWQpKSB7CisgICAgICAgICAgICAqaXQgPSBtZXJnZShjb3BpZWQsICppdCk7CiAKLSAgICAg
ICAgbWVyZ2VkID0gbWVyZ2UobWVyZ2VkLCBtX2ZyZWUucG9wKGktLSkpOworICAgICAgICAgICAg
YXV0byogbmV4dCA9IGl0ICsgMTsKKyAgICAgICAgICAgIGlmIChuZXh0ICE9IG1fZnJlZS5lbmQo
KSAmJiBjYW5NZXJnZSgqaXQsICpuZXh0KSkgeworICAgICAgICAgICAgICAgICppdCA9IG1lcmdl
KCppdCwgKm5leHQpOworICAgICAgICAgICAgICAgIG1fZnJlZS5yZW1vdmUobmV4dCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKLSAgICBt
ZXJnZWQuc2V0VXNlZFNpbmNlTGFzdFNjYXZlbmdlKCk7Ci0gICAgbV9mcmVlLnB1c2gobWVyZ2Vk
KTsKKyAgICBtX2ZyZWUucHVzaChjb3BpZWQpOwogfQogCiB2b2lkIExhcmdlTWFwOjptYXJrQWxs
QXNFbGlnaWJpbGUoKQogewogICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2UgOiBtX2ZyZWUpCiAg
ICAgICAgIHJhbmdlLnNldEVsaWdpYmxlKHRydWUpOworICAgIG1lcmdlTmVpZ2hib3JzKCk7Cit9
CisKK3ZvaWQgTGFyZ2VNYXA6Om1lcmdlTmVpZ2hib3JzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9mcmVlLnNpemUoKTsgaW5kZXgrKykgeworICAgICAgICBhdXRv
JiByYW5nZSA9IG1fZnJlZVtpbmRleF07CisgICAgICAgIGF1dG8qIG5leHQgPSAmcmFuZ2UgKyAx
OworCisgICAgICAgIHdoaWxlIChuZXh0IDwgbV9mcmVlLmVuZCgpICYmIGNhbk1lcmdlKHJhbmdl
LCAqbmV4dCkpCisgICAgICAgICAgICByYW5nZSA9IG1lcmdlKHJhbmdlLCAqbmV4dCsrKTsKKwor
ICAgICAgICBpZiAobmV4dCAtICZyYW5nZSA+IDEpCisgICAgICAgICAgICBtX2ZyZWUucmVtb3Zl
KCZyYW5nZSArIDEsIG5leHQpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5oCmluZGV4IGZjMWM5ZTJlOTdjOC4uMjRmOWJjYTg4YzRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlTWFwLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyNCw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIExhcmdlTWFwX2gKLSNkZWZpbmUgTGFyZ2VNYXBfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMYXJnZVJhbmdlLmgiCiAjaW5jbHVkZSAiVmVjdG9y
LmgiCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoKICAgICBMYXJnZVJhbmdlJiBhdChzaXplX3Qg
aSkgeyByZXR1cm4gbV9mcmVlW2ldOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBtZXJnZU5laWdo
Ym9ycygpOworCiAgICAgVmVjdG9yPExhcmdlUmFuZ2U+IG1fZnJlZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIGJtYWxsb2MKLQotI2VuZGlmIC8vIExhcmdlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvVmVjdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZlY3Rv
ci5oCmluZGV4IGQ4NDA5YjA1NzJkNy4uZWRiMzE1MjQyNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVmVj
dG9yLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluc2VydChpdGVyYXRv
ciwgY29uc3QgVCYpOwogICAgIFQgcmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB2b2lkIHJlbW92ZShp
dGVyYXRvciwgaXRlcmF0b3IpOwogCiAgICAgdm9pZCBncm93KHNpemVfdCk7CiAgICAgdm9pZCBz
aHJpbmsoc2l6ZV90KTsKQEAgLTE1OCwxNyArMTYwLDIxIEBAIHZvaWQgVmVjdG9yPFQ+OjppbnNl
cnQoaXRlcmF0b3IgaXQsIGNvbnN0IFQmIHZhbHVlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQg
VmVjdG9yPFQ+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQg
LSBiZWdpbigpOwotICAgIHNpemVfdCBtb3ZlQ291bnQgPSBlbmQoKSAtIGl0IC0gMTsKLQogICAg
IFQgcmVzdWx0ID0gKml0OwotCi0gICAgc3RkOjptZW1tb3ZlKCZtX2J1ZmZlcltpbmRleF0sICZt
X2J1ZmZlcltpbmRleCArIDFdLCBtb3ZlQ291bnQgKiBzaXplb2YoVCkpOwotICAgIHNocmluayht
X3NpemUgLSAxKTsKLSAgICAKKyAgICByZW1vdmUoaXQsIGl0ICsgMSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgVmVjdG9yPFQ+OjpyZW1vdmUo
aXRlcmF0b3IgZnJvbSwgaXRlcmF0b3IgdG8pCit7CisgICAgQkFTU0VSVChmcm9tIDwgdG8pOwor
ICAgIHNpemVfdCBtb3ZlQ291bnQgPSBlbmQoKSAtIHRvOworICAgIGlmIChtb3ZlQ291bnQpCisg
ICAgICAgIHN0ZDo6bWVtbW92ZShmcm9tLCB0bywgbW92ZUNvdW50ICogc2l6ZW9mKFQpKTsKKyAg
ICBzaHJpbmsobV9zaXplIC0gKHRvIC0gZnJvbSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogaW5saW5lIHZvaWQgVmVjdG9yPFQ+Ojpncm93KHNpemVfdCBzaXplKQogewo=
</data>
<flag name="review"
          id="462014"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>