<?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>230245</bug_id>
          
          <creation_ts>2021-09-13 21:39:22 -0700</creation_ts>
          <short_desc>[bmalloc] freeableMemory and footprint of Heap are completely broken</short_desc>
          <delta_ts>2021-11-18 15:00:28 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230910</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230807</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230756</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230717</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230719</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>ap</cc>
    
    <cc>basuke</cc>
    
    <cc>ehutchison</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</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>1793200</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-13 21:39:22 -0700</bug_when>
    <thetext>They became huge numbers which means the overflow happens at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793370</commentid>
    <comment_count>1</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 11:57:17 -0700</bug_when>
    <thetext>git bisect says the break happens on this commit:
https://github.com/WebKit/WebKit/commit/8e1ec1def4ca1b38f2fad2679d120adc9531ce08#diff-34efcb839f5ce590e8868d478f3801379e2c680f863116a740b63b99598691d6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793374</commentid>
    <comment_count>2</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 12:11:20 -0700</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #1)
&gt; git bisect says the break happens on this commit:
&gt; https://github.com/WebKit/WebKit/commit/
&gt; 8e1ec1def4ca1b38f2fad2679d120adc9531ce08#diff-
&gt; 34efcb839f5ce590e8868d478f3801379e2c680f863116a740b63b99598691d6

But this change is correct because newly allocated range by VM has entire physical page. So the bug exists before this commit and this commit made that bug visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793409</commentid>
    <comment_count>3</comment_count>
      <attachid>438160</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 13:15:37 -0700</bug_when>
    <thetext>Created attachment 438160
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793425</commentid>
    <comment_count>4</comment_count>
      <attachid>438160</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 14:02:35 -0700</bug_when>
    <thetext>Comment on attachment 438160
PATCH

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

&gt; Source/bmalloc/bmalloc/Heap.cpp:585
&gt; +        adjustFootprint(lock, range.totalPhysicalSize(), &quot;allocateLarge&quot;);

These two lines are the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793446</commentid>
    <comment_count>5</comment_count>
      <attachid>438160</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-14 14:38:22 -0700</bug_when>
    <thetext>Comment on attachment 438160
PATCH

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

&gt; Source/bmalloc/bmalloc/Heap.cpp:112
&gt; +    constexpr bool verbose = false;

This constexpr controls the above logic and turning this false to delete the added complexity at all. Proven in compiler explorer: https://godbolt.org/z/eoK54xzq9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793819</commentid>
    <comment_count>6</comment_count>
      <attachid>438160</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-15 12:52:31 -0700</bug_when>
    <thetext>Comment on attachment 438160
PATCH

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

&gt; Source/bmalloc/bmalloc/Heap.cpp:100
&gt; +    BUNUSED(label);
&gt; +    BUNUSED(note);

label and note are used, so these statements appear to be unnecessary / incorrect.

&gt; Source/bmalloc/bmalloc/Heap.cpp:103
&gt; +    BASSERT(label || (amount &gt;= 0 &amp;&amp; result &gt;= value) || (amount &lt; 0 &amp;&amp; result &lt; value));

Why does having a label opt you out of this assertion?

Side note: Are you trying to do checked arithmetic here? If so, I&apos;d prefer using something from CheckedArithmetic.h.

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:112
&gt;&gt; +    constexpr bool verbose = false;
&gt; 
&gt; This constexpr controls the above logic and turning this false to delete the added complexity at all. Proven in compiler explorer: https://godbolt.org/z/eoK54xzq9

Does putting verbose inside Heap::adjustStat() not achieve the same goal, even though it is inlined?

&gt; Source/bmalloc/bmalloc/Heap.cpp:113
&gt; +    BUNUSED(note);

Do we need this? &apos;note&apos; appears in this function.

&gt; Source/bmalloc/bmalloc/Heap.cpp:126
&gt; +    BUNUSED(note);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793831</commentid>
    <comment_count>7</comment_count>
      <attachid>438160</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-15 13:28:42 -0700</bug_when>
    <thetext>Comment on attachment 438160
PATCH

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

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:100
&gt;&gt; +    BUNUSED(note);
&gt; 
&gt; label and note are used, so these statements appear to be unnecessary / incorrect.

Right. This was leftover from pre-cleanup code.

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:103
&gt;&gt; +    BASSERT(label || (amount &gt;= 0 &amp;&amp; result &gt;= value) || (amount &lt; 0 &amp;&amp; result &lt; value));
&gt; 
&gt; Why does having a label opt you out of this assertion?
&gt; 
&gt; Side note: Are you trying to do checked arithmetic here? If so, I&apos;d prefer using something from CheckedArithmetic.h.

For debugging purpose. I wanted to see the weird overflow using verbose output. On that case this assertion was not required. But that can be controlled by release/debug. I can remove this.

&gt;&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:112
&gt;&gt;&gt; +    constexpr bool verbose = false;
&gt;&gt; 
&gt;&gt; This constexpr controls the above logic and turning this false to delete the added complexity at all. Proven in compiler explorer: https://godbolt.org/z/eoK54xzq9
&gt; 
&gt; Does putting verbose inside Heap::adjustStat() not achieve the same goal, even though it is inlined?

This can control activating only footprint verbose output, for instance. If the result after optimization differ for moving this into adjustStat() then I will consider for moving, but they are practically same. Or I can extract the logging part from adjustStat and call separately for clarification.

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:113
&gt;&gt; +    BUNUSED(note);
&gt; 
&gt; Do we need this? &apos;note&apos; appears in this function.

Leftover. will remove.

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:126
&gt;&gt; +    BUNUSED(note);
&gt; 
&gt; Ditto

Ditto. Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793942</commentid>
    <comment_count>8</comment_count>
      <attachid>438316</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-15 20:05:46 -0700</bug_when>
    <thetext>Created attachment 438316
patch again.

Porting CheckedArithmetic from WTF is too big to include this patch. That should be separated bug to be achieved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795406</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-20 21:40:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83339024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795715</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-21 13:14:22 -0700</bug_when>
    <thetext>&gt; Porting CheckedArithmetic from WTF is too big to include this patch. That
&gt; should be separated bug to be achieved.

Fair point. I had forgotten that CheckedArithmetic was in a separate library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795720</commentid>
    <comment_count>11</comment_count>
      <attachid>438316</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-21 13:21:37 -0700</bug_when>
    <thetext>Comment on attachment 438316
patch again.

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

r=me

&gt; Source/bmalloc/ChangeLog:3
&gt; +        [bmalloc] freeableMemory and footprint of Heap are broken

Can you make this title more precise? Are freeableMemory and footprint literally completely broken in all cases all the time, or only in certain cases, or only broken in a particular way?

Can you say anything about how observable behavior changes after this change is made?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795830</commentid>
    <comment_count>12</comment_count>
      <attachid>438876</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-21 16:02:11 -0700</bug_when>
    <thetext>Created attachment 438876
PATCH

Added example of output to display error information</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795833</commentid>
    <comment_count>13</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-21 16:03:35 -0700</bug_when>
    <thetext>&gt; r=me

Thank you very much.


&gt; &gt; Source/bmalloc/ChangeLog:3
&gt; &gt; +        [bmalloc] freeableMemory and footprint of Heap are broken
&gt; 
&gt; Can you make this title more precise? Are freeableMemory and footprint
&gt; literally completely broken in all cases all the time, or only in certain
&gt; cases, or only broken in a particular way?
&gt; 
&gt; Can you say anything about how observable behavior changes after this change
&gt; is made?


I&apos;ve added those description in ChangeLog,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795860</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 17:00:14 -0700</bug_when>
    <thetext>Committed r282850 (241981@main): &lt;https://commits.webkit.org/241981@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438876.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798570</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-09-29 14:32:30 -0700</bug_when>
    <thetext>We started seeing many unreproducible crashes in bmalloc::Heap::decommitLargeRange on the bots recently, such as below. May need to revert this change to see if that fixes those.

https://bug-230719-attachments.webkit.org/attachment.cgi?id=439093
https://bug-230866-attachments.webkit.org/attachment.cgi?id=439406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798577</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Hutchison">ehutchison</who>
    <bug_when>2021-09-29 14:45:15 -0700</bug_when>
    <thetext>Reverted r282850 for reason:

Patch causing many crashes in bmalloc::Heap::decommitLargeRange

Committed r283264 (242293@main): &lt;https://commits.webkit.org/242293@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798639</commentid>
    <comment_count>17</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-29 15:59:15 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #15)
&gt; We started seeing many unreproducible crashes in
&gt; bmalloc::Heap::decommitLargeRange on the bots recently, such as below. May
&gt; need to revert this change to see if that fixes those.
&gt; 
&gt; https://bug-230719-attachments.webkit.org/attachment.cgi?id=439093
&gt; https://bug-230866-attachments.webkit.org/attachment.cgi?id=439406

Sure. Please do it. But I don&apos;t have idea why this causes the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798647</commentid>
    <comment_count>18</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-29 16:03:33 -0700</bug_when>
    <thetext>Wait a minute, are those debug build? If so, then that might be because I&apos;ve added assertions there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798688</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-09-29 17:05:46 -0700</bug_when>
    <thetext>Yes, these look like assertions (at least two separate ones, judging from crash logs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798705</commentid>
    <comment_count>20</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-29 17:33:14 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #19)
&gt; Yes, these look like assertions (at least two separate ones, judging from
&gt; crash logs).

Give me an advice. Here&apos;s the background.
1. The numbers are broken before this patch landed
2. Those numbers are debugging information which is not used at runtime (as far as I know)
3. I fixed the one I&apos;ve found and it seems the number is now healthy.
4. I&apos;ve added assertion to detect future regression
5. Actually there&apos;s still case where the numbers are incorrect.
6. I basically need this fixed number to see my other patches effect.

I think to remove assertion is the best for now. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798984</commentid>
    <comment_count>21</comment_count>
      <attachid>439770</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-30 12:33:20 -0700</bug_when>
    <thetext>Created attachment 439770
PATCH

Make assertion optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798986</commentid>
    <comment_count>22</comment_count>
      <attachid>439770</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-09-30 12:34:39 -0700</bug_when>
    <thetext>Comment on attachment 439770
PATCH

The optional assertion in adjustStat is required to find the hidden issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816618</commentid>
    <comment_count>23</comment_count>
      <attachid>439770</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-11-18 14:00:09 -0800</bug_when>
    <thetext>Comment on attachment 439770
PATCH

r=me

What&apos;s our plan to track down the remaining bugs and re-enable the assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816626</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-18 14:22:02 -0800</bug_when>
    <thetext>Committed r286029 (244417@main): &lt;https://commits.webkit.org/244417@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439770.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816648</commentid>
    <comment_count>25</comment_count>
      <attachid>439770</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-18 15:00:28 -0800</bug_when>
    <thetext>Comment on attachment 439770
PATCH

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

&gt; Source/bmalloc/ChangeLog:9
&gt; +        This introduced in r279922. The physical size of the newly allocated range was changed from zero

Can we make API tests that would detect if we break this again in future?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438160</attachid>
            <date>2021-09-14 13:15:37 -0700</date>
            <delta_ts>2021-09-15 20:05:46 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>9846</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLjVhMTdhNjU2ZGVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIxLTA5LTE0ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gZnJlZWFibGVNZW1vcnkgYW5kIGZvb3Rwcmlu
dCBvZiBIZWFwIGFyZSBicm9rZW4gc2luY2UgcjI3OTkyMgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VkIGluIHIyNzk5MjIuIFRo
ZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBuZXdseSBhbGxvY2F0ZWQgcmFuZ2Ugd2FzIGNoYW5nZWQg
ZnJvbSB6ZXJvCisgICAgICAgIHRvIHRoZSBzaXplIG9mIHRoZSByYW5nZSBvbiB0aGF0IGNvbW1p
dCBhbmQgdGhhdCBjYXVzZXMgdGhlIG51bWJlcnMgd3JvbmcuCisKKyAgICAgICAgSSd2ZSBhZGRl
ZCB0aGUgY29ycmVjdGlvbiB0byBhZGp1c3QgYm90aCBudW1iZXJzIHdpdGggbmV3bHkgYWxsb2Nh
dGVkIHJlZ2lvbi4KKworICAgICAgICBBbHNvIGFkZGVkIGFzc2VydGlvbiB0byBjaGVjayB0aGUg
b3ZlcmZsb3cgb2YgdGhvc2UgdmFsdWVzLgorCisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoK
KyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFkanVzdFN0YXQpOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6YWRqdXN0RnJlZWFibGVNZW1vcnkpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWRq
dXN0Rm9vdHByaW50KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlY29tbWl0TGFyZ2VSYW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9j
OjpIZWFwOjphbGxvY2F0ZVNtYWxsQ2h1bmspOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxs
b2NhdGVTbWFsbFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVhbGxvY2F0ZVNtYWxs
TGluZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKToKKyAgICAg
ICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVh
cDo6ZGVhbGxvY2F0ZUxhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmV4dGVybmFsQ29t
bWl0KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmV4dGVybmFsRGVjb21taXQpOgorICAgICAg
ICAqIGJtYWxsb2MvSGVhcC5oOgorCiAyMDIxLTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2xpYnBhc10gbWVkaXVtIHNpemUgY2xhc3MgbG9va3VwIG5l
ZWRzIHRvIGNvcnJlY3RseSBmZW5jZSB0aGUgY291bnRpbmcgbG9jayByZWFkIHBhdGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuY3BwCmluZGV4IDFiYzVlMWE4NjljZC4uMTY0ZmY3ZmEyOTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcC5jcHAKQEAgLTk0LDExICs5NCw0MCBAQCBzaXplX3QgSGVhcDo6ZnJlZWFi
bGVNZW1vcnkoVW5pcXVlTG9ja0hvbGRlciYpCiAgICAgcmV0dXJuIG1fZnJlZWFibGVNZW1vcnk7
CiB9CiAKK0JJTkxJTkUgdm9pZCBIZWFwOjphZGp1c3RTdGF0KHNpemVfdCYgdmFsdWUsIHNzaXpl
X3QgYW1vdW50LCBjb25zdCBjaGFyKiBsYWJlbCwgY29uc3QgY2hhciogbm90ZSkKK3sKKyAgICBC
VU5VU0VEKGxhYmVsKTsKKyAgICBCVU5VU0VEKG5vdGUpOworCisgICAgYXV0byByZXN1bHQgPSB2
YWx1ZSArIGFtb3VudDsKKyAgICBCQVNTRVJUKGxhYmVsIHx8IChhbW91bnQgPj0gMCAmJiByZXN1
bHQgPj0gdmFsdWUpIHx8IChhbW91bnQgPCAwICYmIHJlc3VsdCA8IHZhbHVlKSk7CisgICAgdmFs
dWUgPSByZXN1bHQ7CisKKyAgICBpZiAobGFiZWwpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
aGVhcFslZF0gJXM6ICVsdSAoJWxkKSAlc1xuIiwgbV9raW5kLCBsYWJlbCwgdmFsdWUsIGFtb3Vu
dCwgbm90ZSk7Cit9CisKK0JJTkxJTkUgdm9pZCBIZWFwOjphZGp1c3RGcmVlYWJsZU1lbW9yeShV
bmlxdWVMb2NrSG9sZGVyJiwgc3NpemVfdCBhbW91bnQsIGNvbnN0IGNoYXIqIG5vdGUpCit7Cisg
ICAgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIEJVTlVTRUQobm90ZSk7CisK
KyAgICBhZGp1c3RTdGF0KG1fZnJlZWFibGVNZW1vcnksIGFtb3VudCwgdmVyYm9zZSA/ICJmcmVl
YWJsZU1lbW9yeSIgOiBudWxscHRyLCB2ZXJib3NlID8gbm90ZSA6IG51bGxwdHIpOworfQorCiBz
aXplX3QgSGVhcDo6Zm9vdHByaW50KCkKIHsKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAK
K0JJTkxJTkUgdm9pZCBIZWFwOjphZGp1c3RGb290cHJpbnQoVW5pcXVlTG9ja0hvbGRlciYsIHNz
aXplX3QgYW1vdW50LCBjb25zdCBjaGFyKiBub3RlKQoreworICAgIGNvbnN0ZXhwciBib29sIHZl
cmJvc2UgPSBmYWxzZTsKKyAgICBCVU5VU0VEKG5vdGUpOworCisgICAgYWRqdXN0U3RhdChtX2Zv
b3RwcmludCwgYW1vdW50LCB2ZXJib3NlID8gImZvb3RwcmludCIgOiBudWxscHRyLCB2ZXJib3Nl
ID8gbm90ZSA6IG51bGxwdHIpOworfQorCiB2b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2li
aWxlKGNvbnN0IExvY2tIb2xkZXImKQogewogICAgIG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdp
YmlsZSgpOwpAQCAtMTA2LDEyICsxMzUsMTIgQEAgdm9pZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0Vs
aWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJikKICAgICBtX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCk7
CiB9CiAKLXZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKFVuaXF1ZUxvY2tIb2xkZXImLCBM
YXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6
ZGVjb21taXRMYXJnZVJhbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJh
bmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIEJBU1NFUlQocmFuZ2UuaGFz
UGh5c2ljYWxQYWdlcygpKTsKIAotICAgIG1fZm9vdHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2lj
YWxTaXplKCk7Ci0gICAgbV9mcmVlYWJsZU1lbW9yeSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6
ZSgpOworICAgIGFkanVzdEZvb3RwcmludChsb2NrLCAtcmFuZ2UudG90YWxQaHlzaWNhbFNpemUo
KSwgImRlY29tbWl0TGFyZ2VSYW5nZSIpOworICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxvY2ss
IC1yYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAiZGVjb21taXRMYXJnZVJhbmdlIik7CiAgICAg
ZGVjb21taXR0ZXIuYWRkTGF6eShyYW5nZS5iZWdpbigpLCByYW5nZS5waHlzaWNhbEVuZCgpIC0g
cmFuZ2UuYmVnaW4oKSk7CiAgICAgbV9oYXNQZW5kaW5nRGVjb21taXRzID0gdHJ1ZTsKICAgICBy
YW5nZS5zZXRTdGFydFBoeXNpY2FsU2l6ZSgwKTsKQEAgLTEzOSw4ICsxNjgsOCBAQCB2b2lkIEhl
YXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21t
aXR0ZXIsIHNpemVfdCYgZAogCiAgICAgICAgICAgICAgICAgc2l6ZV90IHBhZ2VTaXplID0gYm1h
bGxvYzo6cGFnZVNpemUoJmxpc3QgLSAmbV9mcmVlUGFnZXNbMF0pOwogICAgICAgICAgICAgICAg
IHNpemVfdCBkZWNvbW1pdFNpemUgPSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2lu
KCktPmJlZ2luKCksIHBhZ2VTaXplKTsKLSAgICAgICAgICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5
IC09IGRlY29tbWl0U2l6ZTsKLSAgICAgICAgICAgICAgICBtX2Zvb3RwcmludCAtPSBkZWNvbW1p
dFNpemU7CisgICAgICAgICAgICAgICAgYWRqdXN0Rm9vdHByaW50KGxvY2ssIC1kZWNvbW1pdFNp
emUsICJzY2F2ZW5nZSIpOworICAgICAgICAgICAgICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxv
Y2ssIC1kZWNvbW1pdFNpemUsICJzY2F2ZW5nZSIpOwogICAgICAgICAgICAgICAgIGRlY29tbWl0
dGVyLmFkZEVhZ2VyKHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXplKTsKICAgICAgICAg
ICAgICAgICBwYWdlLT5zZXRIYXNQaHlzaWNhbFBhZ2VzKGZhbHNlKTsKICNpZiBFTkFCTEVfUEhZ
U0lDQUxfUEFHRV9NQVAKQEAgLTIwNSw3ICsyMzQsNyBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21h
bGxDaHVuayhVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJl
QQogICAgICAgICAgICAgY2h1bmstPmZyZWVQYWdlcygpLnB1c2gocGFnZSk7CiAgICAgICAgIH0p
OwogCi0gICAgICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gY2h1bmtTaXplOworICAgICAgICBhZGp1
c3RGcmVlYWJsZU1lbW9yeShsb2NrLCBjaHVua1NpemUsICJhbGxvY2F0ZVNtYWxsQ2h1bmsiKTsK
IAogICAgICAgICBtX3NjYXZlbmdlci0+c2NoZWR1bGUoMCk7CiAKQEAgLTI3NSwxMCArMzA0LDEw
IEBAIFNtYWxsUGFnZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2UoVW5pcXVlTG9ja0hvbGRlciYg
bG9jaywgc2l6ZV90IHNpemVDbGFzcywgTGluCiAgICAgICAgIHNpemVfdCBwYWdlU2l6ZSA9IGJt
YWxsb2M6OnBhZ2VTaXplKHBhZ2VDbGFzcyk7CiAgICAgICAgIHNpemVfdCBwaHlzaWNhbFNpemUg
PSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXpl
KTsKICAgICAgICAgaWYgKHBhZ2UtPmhhc1BoeXNpY2FsUGFnZXMoKSkKLSAgICAgICAgICAgIG1f
ZnJlZWFibGVNZW1vcnkgLT0gcGh5c2ljYWxTaXplOworICAgICAgICAgICAgYWRqdXN0RnJlZWFi
bGVNZW1vcnkobG9jaywgLXBoeXNpY2FsU2l6ZSwgImFsbG9jYXRlU21hbGxQYWdlIik7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlSWZVbmRlck1lbW9y
eVByZXNzdXJlKHBhZ2VTaXplKTsKLSAgICAgICAgICAgIG1fZm9vdHByaW50ICs9IHBoeXNpY2Fs
U2l6ZTsKKyAgICAgICAgICAgIGFkanVzdEZvb3RwcmludChsb2NrLCBwaHlzaWNhbFNpemUsICJh
bGxvY2F0ZVNtYWxsUGFnZSIpOwogICAgICAgICAgICAgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXNT
bG9wcHkocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNpemUpOwogICAgICAgICAgICAgcGFn
ZS0+c2V0SGFzUGh5c2ljYWxQYWdlcyh0cnVlKTsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9N
QVAKQEAgLTMxNCw3ICszNDMsNyBAQCB2b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUoVW5p
cXVlTG9ja0hvbGRlciYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluZUNhY2hlJgogCiAgICAgc2l6
ZV90IHBhZ2VDbGFzcyA9IG1fY29uc3RhbnRzLnBhZ2VDbGFzcyhwYWdlLT5zaXplQ2xhc3MoKSk7
CiAKLSAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHBoeXNpY2FsUGFnZVNpemVTbG9wcHkocGFnZS0+
YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNpemUocGFnZUNsYXNzKSk7CisgICAgYWRqdXN0RnJlZWFi
bGVNZW1vcnkobG9jaywgcGh5c2ljYWxQYWdlU2l6ZVNsb3BweShwYWdlLT5iZWdpbigpLT5iZWdp
bigpLCBwYWdlU2l6ZShwYWdlQ2xhc3MpKSwgImRlYWxsb2NhdGVTbWFsbExpbmUiKTsKIAogICAg
IExpc3Q8U21hbGxQYWdlPjo6cmVtb3ZlKHBhZ2UpOyAvLyAncGFnZScgbWF5IGJlIGluIGFueSB0
aHJlYWQncyBsaW5lIGNhY2hlLgogICAgIApAQCAtNDkwLDcgKzUxOSw3IEBAIExhcmdlUmFuZ2Ug
SGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBMYXJnZVJhbmdl
JiByYW5nZSwgc2l6CiAgICAgCiAgICAgaWYgKHJhbmdlLnN0YXJ0UGh5c2ljYWxTaXplKCkgPCBy
YW5nZS5zaXplKCkpIHsKICAgICAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlSWZVbmRlck1lbW9y
eVByZXNzdXJlKHJhbmdlLnNpemUoKSk7Ci0gICAgICAgIG1fZm9vdHByaW50ICs9IHJhbmdlLnNp
emUoKSAtIHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CisgICAgICAgIGFkanVzdEZvb3Rwcmlu
dChsb2NrLCByYW5nZS5zaXplKCkgLSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAic3BsaXRB
bmRBbGxvY2F0ZSIpOwogICAgICAgICB2bUFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweShyYW5n
ZS5iZWdpbigpICsgcmFuZ2Uuc3RhcnRQaHlzaWNhbFNpemUoKSwgcmFuZ2Uuc2l6ZSgpIC0gcmFu
Z2Uuc3RhcnRQaHlzaWNhbFNpemUoKSk7CiAgICAgICAgIHJhbmdlLnNldFN0YXJ0UGh5c2ljYWxT
aXplKHJhbmdlLnNpemUoKSk7CiAgICAgICAgIHJhbmdlLnNldFRvdGFsUGh5c2ljYWxTaXplKHJh
bmdlLnNpemUoKSk7CkBAIC01MDEsMTIgKzUzMCwxMiBAQCBMYXJnZVJhbmdlIEhlYXA6OnNwbGl0
QW5kQWxsb2NhdGUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNp
egogICAgIH0KICAgICAKICAgICBpZiAocHJldikgewotICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5
ICs9IHByZXYudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1v
cnkobG9jaywgcHJldi50b3RhbFBoeXNpY2FsU2l6ZSgpLCAic3BsaXRBbmRBbGxvY2F0ZS5wcmV2
Iik7CiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChwcmV2KTsKICAgICB9CiAKICAgICBpZiAobmV4
dCkgewotICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IG5leHQudG90YWxQaHlzaWNhbFNpemUo
KTsKKyAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9jaywgbmV4dC50b3RhbFBoeXNpY2Fs
U2l6ZSgpLCAic3BsaXRBbmRBbGxvY2F0ZS5uZXh0Iik7CiAgICAgICAgIG1fbGFyZ2VGcmVlLmFk
ZChuZXh0KTsKICAgICB9CiAKQEAgLTU1MiwxMCArNTgxLDEyIEBAIHZvaWQqIEhlYXA6OmFsbG9j
YXRlTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
IHNpemUsCiAgICAgICAgIEFTU0VSVF9PUl9SRVRVUk5fT05fRkFJTFVSRShyYW5nZSk7CiAgICAg
ICAgIAogICAgICAgICBtX2xhcmdlRnJlZS5hZGQocmFuZ2UpOworICAgICAgICBhZGp1c3RGcmVl
YWJsZU1lbW9yeShsb2NrLCByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAiYWxsb2NhdGVMYXJn
ZSIpOworICAgICAgICBhZGp1c3RGb290cHJpbnQobG9jaywgcmFuZ2UudG90YWxQaHlzaWNhbFNp
emUoKSwgImFsbG9jYXRlTGFyZ2UiKTsKKwogICAgICAgICByYW5nZSA9IG1fbGFyZ2VGcmVlLnJl
bW92ZShhbGlnbm1lbnQsIHNpemUpOwogICAgIH0KLQotICAgIG1fZnJlZWFibGVNZW1vcnkgLT0g
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2Nr
LCAtcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwgImFsbG9jYXRlTGFyZ2UucmV1c2UiKTsKIAog
ICAgIHZvaWQqIHJlc3VsdCA9IHNwbGl0QW5kQWxsb2NhdGUobG9jaywgcmFuZ2UsIGFsaWdubWVu
dCwgc2l6ZSkuYmVnaW4oKTsKICAgICBBU1NFUlRfT1JfUkVUVVJOX09OX0ZBSUxVUkUocmVzdWx0
KTsKQEAgLTYwNSwxMSArNjM2LDExIEBAIHZvaWQgSGVhcDo6c2hyaW5rTGFyZ2UoVW5pcXVlTG9j
a0hvbGRlciYgbG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwgc2l6ZV90IG5ld1NpCiAgICAgbV9z
Y2F2ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQogCi12b2lkIEhlYXA6OmRlYWxsb2NhdGVMYXJn
ZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQordm9pZCBIZWFwOjpkZWFsbG9jYXRl
TGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgdm9pZCogb2JqZWN0KQogewogICAgIHNpemVf
dCBzaXplID0gbV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2JqZWN0KTsKICAgICBtX2xhcmdlRnJl
ZS5hZGQoTGFyZ2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUsIHNpemUsIHN0YXRpY19jYXN0PGNo
YXIqPihvYmplY3QpICsgc2l6ZSkpOwotICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gc2l6ZTsKKyAg
ICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCBzaXplLCAiZGVhbGxvY2F0ZUxhcmdlIik7CiAg
ICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQogCkBAIC02MTksMTEgKzY1MCwxMSBA
QCB2b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiAgICAg
ZXh0ZXJuYWxDb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpleHRlcm5h
bENvbW1pdChVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
SGVhcDo6ZXh0ZXJuYWxDb21taXQoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgdm9pZCogcHRyLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7CiAKLSAgICBtX2Zvb3Rwcmlu
dCArPSBzaXplOworICAgIGFkanVzdEZvb3RwcmludChsb2NrLCBzaXplLCAiZXh0ZXJuYWxDb21t
aXQiKTsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAgCiAgICAgbV9waHlzaWNhbFBhZ2VN
YXAuY29tbWl0KHB0ciwgc2l6ZSk7CiAjZW5kaWYKQEAgLTYzNSwxMSArNjY2LDExIEBAIHZvaWQg
SGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBzaXplKQogICAgIGV4dGVy
bmFsRGVjb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpleHRlcm5hbERl
Y29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBwdHIsIHNpemVfdCBzaXplKQordm9pZCBI
ZWFwOjpleHRlcm5hbERlY29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIHZvaWQqIHB0ciwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogCi0gICAgbV9mb290cHJp
bnQgLT0gc2l6ZTsKKyAgICBhZGp1c3RGb290cHJpbnQobG9jaywgLXNpemUsICJleHRlcm5hbERl
Y29tbWl0Iik7CiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQIAogICAgIG1fcGh5c2ljYWxQ
YWdlTWFwLmRlY29tbWl0KHB0ciwgc2l6ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5k
ZXggZWU3ZWQ4NTk1M2ZkLi4yNTFhNGFhZGE0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCkBAIC0x
MTcsNiArMTE3LDEwIEBAIHByaXZhdGU6CiAgICAgTGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdl
Q2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAgICBMYXJnZVJhbmdlIHNwbGl0QW5k
QWxsb2NhdGUoVW5pcXVlTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBzaXplX3QgYWxpZ25tZW50
LCBzaXplX3QpOwogCisgICAgaW5saW5lIHZvaWQgYWRqdXN0Rm9vdHByaW50KFVuaXF1ZUxvY2tI
b2xkZXImLCBzc2l6ZV90LCBjb25zdCBjaGFyKiBub3RlKTsKKyAgICBpbmxpbmUgdm9pZCBhZGp1
c3RGcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJiwgc3NpemVfdCwgY29uc3QgY2hhciog
bm90ZSk7CisgICAgaW5saW5lIHZvaWQgYWRqdXN0U3RhdChzaXplX3QmIHZhbHVlLCBzc2l6ZV90
LCBjb25zdCBjaGFyKiBsYWJlbCwgY29uc3QgY2hhciogbm90ZSk7CisKICAgICBIZWFwS2luZCBt
X2tpbmQ7CiAgICAgSGVhcENvbnN0YW50cyYgbV9jb25zdGFudHM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438316</attachid>
            <date>2021-09-15 20:05:46 -0700</date>
            <delta_ts>2021-09-21 16:02:11 -0700</delta_ts>
            <desc>patch again.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>9899</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLjQxNDc3ZGE5ZDFhNSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDIxLTA5LTE1ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gZnJlZWFibGVNZW1vcnkgYW5kIGZvb3Rwcmlu
dCBvZiBIZWFwIGFyZSBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaW50cm9kdWNlZCBpbiByMjc5OTIyLiBUaGUgcGh5c2ljYWwgc2l6
ZSBvZiB0aGUgbmV3bHkgYWxsb2NhdGVkIHJhbmdlIHdhcyBjaGFuZ2VkIGZyb20gemVybworICAg
ICAgICB0byB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2Ugb24gdGhhdCBjb21taXQgYW5kIHRoYXQgY2F1
c2VzIHRoZSBudW1iZXJzIHdyb25nLgorCisgICAgICAgIEkndmUgYWRkZWQgdGhlIGNvcnJlY3Rp
b24gdG8gYWRqdXN0IGJvdGggbnVtYmVycyB3aXRoIG5ld2x5IGFsbG9jYXRlZCByZWdpb24uCisK
KyAgICAgICAgQWxzbyBhZGRlZCBhc3NlcnRpb24gdG8gY2hlY2sgdGhlIG92ZXJmbG93IG9mIHRo
b3NlIHZhbHVlcyBhbmQgdGhlIG9wdGlvbiB0byBsb2cgdGhvc2UgdmFsdWUgY2hhbmdlCisgICAg
ICAgIHRvIHRoZSBjb25zb2xlLgorCisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAg
ICAgKGJtYWxsb2M6OkhlYXA6OmFkanVzdFN0YXQpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6
bG9nU3RhdCk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphZGp1c3RGcmVlYWJsZU1lbW9yeSk6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphZGp1c3RGb290cHJpbnQpOgorICAgICAgICAoYm1h
bGxvYzo6SGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayk6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OnNwbGl0QW5kQWxsb2NhdGUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVM
YXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlTGFyZ2UpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6ZXh0ZXJuYWxDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SGVh
cDo6ZXh0ZXJuYWxEZWNvbW1pdCk6CisgICAgICAgICogYm1hbGxvYy9IZWFwLmg6CisKIDIwMjEt
MDgtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbGlicGFz
XSBtZWRpdW0gc2l6ZSBjbGFzcyBsb29rdXAgbmVlZHMgdG8gY29ycmVjdGx5IGZlbmNlIHRoZSBj
b3VudGluZyBsb2NrIHJlYWQgcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKaW5kZXggMWJjNWUx
YTg2OWNkLi5mZmRkY2QxMDA5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcApAQCAtOTksNiAr
OTksMzggQEAgc2l6ZV90IEhlYXA6OmZvb3RwcmludCgpCiAgICAgcmV0dXJuIG1fZm9vdHByaW50
OwogfQogCitCSU5MSU5FIHZvaWQgSGVhcDo6YWRqdXN0U3RhdChzaXplX3QmIHZhbHVlLCBzc2l6
ZV90IGFtb3VudCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHZhbHVlICsgYW1vdW50OworICAgIEJB
U1NFUlQoKGFtb3VudCA+PSAwICYmIHJlc3VsdCA+PSB2YWx1ZSkgfHwgKGFtb3VudCA8IDAgJiYg
cmVzdWx0IDwgdmFsdWUpKTsKKyAgICB2YWx1ZSA9IHJlc3VsdDsKK30KKworQklOTElORSB2b2lk
IEhlYXA6OmxvZ1N0YXQoc2l6ZV90IHZhbHVlLCBzc2l6ZV90IGFtb3VudCwgY29uc3QgY2hhciog
bGFiZWwsIGNvbnN0IGNoYXIqIG5vdGUpCit7CisgICAgZnByaW50ZihzdGRlcnIsICIlczogJWx1
ICglbGQpICVzXG4iLCBsYWJlbCwgdmFsdWUsIGFtb3VudCwgbm90ZSk7Cit9CisKK0JJTkxJTkUg
dm9pZCBIZWFwOjphZGp1c3RGcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJiwgc3NpemVf
dCBhbW91bnQsIGNvbnN0IGNoYXIqIG5vdGUpCit7CisgICAgY29uc3RleHByIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworCisgICAgYWRqdXN0U3RhdChtX2ZyZWVhYmxlTWVtb3J5LCBhbW91bnQpOwor
CisgICAgaWYgY29uc3RleHByICh2ZXJib3NlKQorICAgICAgICBsb2dTdGF0KG1fZnJlZWFibGVN
ZW1vcnksIGFtb3VudCwgImZyZWVhYmxlTWVtb3J5Iiwgbm90ZSk7Cit9CisKK0JJTkxJTkUgdm9p
ZCBIZWFwOjphZGp1c3RGb290cHJpbnQoVW5pcXVlTG9ja0hvbGRlciYsIHNzaXplX3QgYW1vdW50
LCBjb25zdCBjaGFyKiBub3RlKQoreworICAgIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKKworICAgIGFkanVzdFN0YXQobV9mb290cHJpbnQsIGFtb3VudCk7CisKKyAgICBpZiBjb25z
dGV4cHIgKHZlcmJvc2UpCisgICAgICAgIGxvZ1N0YXQobV9mb290cHJpbnQsIGFtb3VudCwgImZv
b3RwcmludCIsIG5vdGUpOworfQorCiB2b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxl
KGNvbnN0IExvY2tIb2xkZXImKQogewogICAgIG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdpYmls
ZSgpOwpAQCAtMTA2LDEyICsxMzgsMTIgQEAgdm9pZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdp
YmlsZShjb25zdCBMb2NrSG9sZGVyJikKICAgICBtX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCk7CiB9
CiAKLXZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKFVuaXF1ZUxvY2tIb2xkZXImLCBMYXJn
ZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6ZGVj
b21taXRMYXJnZVJhbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdl
LCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIEJBU1NFUlQocmFuZ2UuaGFzUGh5
c2ljYWxQYWdlcygpKTsKIAotICAgIG1fZm9vdHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxT
aXplKCk7Ci0gICAgbV9mcmVlYWJsZU1lbW9yeSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgp
OworICAgIGFkanVzdEZvb3RwcmludChsb2NrLCAtcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwg
ImRlY29tbWl0TGFyZ2VSYW5nZSIpOworICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxvY2ssIC1y
YW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAiZGVjb21taXRMYXJnZVJhbmdlIik7CiAgICAgZGVj
b21taXR0ZXIuYWRkTGF6eShyYW5nZS5iZWdpbigpLCByYW5nZS5waHlzaWNhbEVuZCgpIC0gcmFu
Z2UuYmVnaW4oKSk7CiAgICAgbV9oYXNQZW5kaW5nRGVjb21taXRzID0gdHJ1ZTsKICAgICByYW5n
ZS5zZXRTdGFydFBoeXNpY2FsU2l6ZSgwKTsKQEAgLTEzOSw4ICsxNzEsOCBAQCB2b2lkIEhlYXA6
OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0
ZXIsIHNpemVfdCYgZAogCiAgICAgICAgICAgICAgICAgc2l6ZV90IHBhZ2VTaXplID0gYm1hbGxv
Yzo6cGFnZVNpemUoJmxpc3QgLSAmbV9mcmVlUGFnZXNbMF0pOwogICAgICAgICAgICAgICAgIHNp
emVfdCBkZWNvbW1pdFNpemUgPSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2luKCkt
PmJlZ2luKCksIHBhZ2VTaXplKTsKLSAgICAgICAgICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09
IGRlY29tbWl0U2l6ZTsKLSAgICAgICAgICAgICAgICBtX2Zvb3RwcmludCAtPSBkZWNvbW1pdFNp
emU7CisgICAgICAgICAgICAgICAgYWRqdXN0Rm9vdHByaW50KGxvY2ssIC1kZWNvbW1pdFNpemUs
ICJzY2F2ZW5nZSIpOworICAgICAgICAgICAgICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxvY2ss
IC1kZWNvbW1pdFNpemUsICJzY2F2ZW5nZSIpOwogICAgICAgICAgICAgICAgIGRlY29tbWl0dGVy
LmFkZEVhZ2VyKHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXplKTsKICAgICAgICAgICAg
ICAgICBwYWdlLT5zZXRIYXNQaHlzaWNhbFBhZ2VzKGZhbHNlKTsKICNpZiBFTkFCTEVfUEhZU0lD
QUxfUEFHRV9NQVAKQEAgLTIwNSw3ICsyMzcsNyBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxD
aHVuayhVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQog
ICAgICAgICAgICAgY2h1bmstPmZyZWVQYWdlcygpLnB1c2gocGFnZSk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gY2h1bmtTaXplOworICAgICAgICBhZGp1c3RG
cmVlYWJsZU1lbW9yeShsb2NrLCBjaHVua1NpemUsICJhbGxvY2F0ZVNtYWxsQ2h1bmsiKTsKIAog
ICAgICAgICBtX3NjYXZlbmdlci0+c2NoZWR1bGUoMCk7CiAKQEAgLTI3NSwxMCArMzA3LDEwIEBA
IFNtYWxsUGFnZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9j
aywgc2l6ZV90IHNpemVDbGFzcywgTGluCiAgICAgICAgIHNpemVfdCBwYWdlU2l6ZSA9IGJtYWxs
b2M6OnBhZ2VTaXplKHBhZ2VDbGFzcyk7CiAgICAgICAgIHNpemVfdCBwaHlzaWNhbFNpemUgPSBw
aHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXplKTsK
ICAgICAgICAgaWYgKHBhZ2UtPmhhc1BoeXNpY2FsUGFnZXMoKSkKLSAgICAgICAgICAgIG1fZnJl
ZWFibGVNZW1vcnkgLT0gcGh5c2ljYWxTaXplOworICAgICAgICAgICAgYWRqdXN0RnJlZWFibGVN
ZW1vcnkobG9jaywgLXBoeXNpY2FsU2l6ZSwgImFsbG9jYXRlU21hbGxQYWdlIik7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlSWZVbmRlck1lbW9yeVBy
ZXNzdXJlKHBhZ2VTaXplKTsKLSAgICAgICAgICAgIG1fZm9vdHByaW50ICs9IHBoeXNpY2FsU2l6
ZTsKKyAgICAgICAgICAgIGFkanVzdEZvb3RwcmludChsb2NrLCBwaHlzaWNhbFNpemUsICJhbGxv
Y2F0ZVNtYWxsUGFnZSIpOwogICAgICAgICAgICAgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXNTbG9w
cHkocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNpemUpOwogICAgICAgICAgICAgcGFnZS0+
c2V0SGFzUGh5c2ljYWxQYWdlcyh0cnVlKTsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAK
QEAgLTMxNCw3ICszNDYsNyBAQCB2b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVl
TG9ja0hvbGRlciYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluZUNhY2hlJgogCiAgICAgc2l6ZV90
IHBhZ2VDbGFzcyA9IG1fY29uc3RhbnRzLnBhZ2VDbGFzcyhwYWdlLT5zaXplQ2xhc3MoKSk7CiAK
LSAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHBoeXNpY2FsUGFnZVNpemVTbG9wcHkocGFnZS0+YmVn
aW4oKS0+YmVnaW4oKSwgcGFnZVNpemUocGFnZUNsYXNzKSk7CisgICAgYWRqdXN0RnJlZWFibGVN
ZW1vcnkobG9jaywgcGh5c2ljYWxQYWdlU2l6ZVNsb3BweShwYWdlLT5iZWdpbigpLT5iZWdpbigp
LCBwYWdlU2l6ZShwYWdlQ2xhc3MpKSwgImRlYWxsb2NhdGVTbWFsbExpbmUiKTsKIAogICAgIExp
c3Q8U21hbGxQYWdlPjo6cmVtb3ZlKHBhZ2UpOyAvLyAncGFnZScgbWF5IGJlIGluIGFueSB0aHJl
YWQncyBsaW5lIGNhY2hlLgogICAgIApAQCAtNDkwLDcgKzUyMiw3IEBAIExhcmdlUmFuZ2UgSGVh
cDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBMYXJnZVJhbmdlJiBy
YW5nZSwgc2l6CiAgICAgCiAgICAgaWYgKHJhbmdlLnN0YXJ0UGh5c2ljYWxTaXplKCkgPCByYW5n
ZS5zaXplKCkpIHsKICAgICAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlSWZVbmRlck1lbW9yeVBy
ZXNzdXJlKHJhbmdlLnNpemUoKSk7Ci0gICAgICAgIG1fZm9vdHByaW50ICs9IHJhbmdlLnNpemUo
KSAtIHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CisgICAgICAgIGFkanVzdEZvb3RwcmludChs
b2NrLCByYW5nZS5zaXplKCkgLSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAic3BsaXRBbmRB
bGxvY2F0ZSIpOwogICAgICAgICB2bUFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweShyYW5nZS5i
ZWdpbigpICsgcmFuZ2Uuc3RhcnRQaHlzaWNhbFNpemUoKSwgcmFuZ2Uuc2l6ZSgpIC0gcmFuZ2Uu
c3RhcnRQaHlzaWNhbFNpemUoKSk7CiAgICAgICAgIHJhbmdlLnNldFN0YXJ0UGh5c2ljYWxTaXpl
KHJhbmdlLnNpemUoKSk7CiAgICAgICAgIHJhbmdlLnNldFRvdGFsUGh5c2ljYWxTaXplKHJhbmdl
LnNpemUoKSk7CkBAIC01MDEsMTIgKzUzMywxMiBAQCBMYXJnZVJhbmdlIEhlYXA6OnNwbGl0QW5k
QWxsb2NhdGUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpegog
ICAgIH0KICAgICAKICAgICBpZiAocHJldikgewotICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9
IHByZXYudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1vcnko
bG9jaywgcHJldi50b3RhbFBoeXNpY2FsU2l6ZSgpLCAic3BsaXRBbmRBbGxvY2F0ZS5wcmV2Iik7
CiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChwcmV2KTsKICAgICB9CiAKICAgICBpZiAobmV4dCkg
ewotICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IG5leHQudG90YWxQaHlzaWNhbFNpemUoKTsK
KyAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9jaywgbmV4dC50b3RhbFBoeXNpY2FsU2l6
ZSgpLCAic3BsaXRBbmRBbGxvY2F0ZS5uZXh0Iik7CiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChu
ZXh0KTsKICAgICB9CiAKQEAgLTU1MiwxMCArNTg0LDEyIEBAIHZvaWQqIEhlYXA6OmFsbG9jYXRl
TGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNp
emUsCiAgICAgICAgIEFTU0VSVF9PUl9SRVRVUk5fT05fRkFJTFVSRShyYW5nZSk7CiAgICAgICAg
IAogICAgICAgICBtX2xhcmdlRnJlZS5hZGQocmFuZ2UpOworICAgICAgICBhZGp1c3RGcmVlYWJs
ZU1lbW9yeShsb2NrLCByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAiYWxsb2NhdGVMYXJnZSIp
OworICAgICAgICBhZGp1c3RGb290cHJpbnQobG9jaywgcmFuZ2UudG90YWxQaHlzaWNhbFNpemUo
KSwgImFsbG9jYXRlTGFyZ2UiKTsKKwogICAgICAgICByYW5nZSA9IG1fbGFyZ2VGcmVlLnJlbW92
ZShhbGlnbm1lbnQsIHNpemUpOwogICAgIH0KLQotICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gcmFu
Z2UudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCAt
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwgImFsbG9jYXRlTGFyZ2UucmV1c2UiKTsKIAogICAg
IHZvaWQqIHJlc3VsdCA9IHNwbGl0QW5kQWxsb2NhdGUobG9jaywgcmFuZ2UsIGFsaWdubWVudCwg
c2l6ZSkuYmVnaW4oKTsKICAgICBBU1NFUlRfT1JfUkVUVVJOX09OX0ZBSUxVUkUocmVzdWx0KTsK
QEAgLTYwNSwxMSArNjM5LDExIEBAIHZvaWQgSGVhcDo6c2hyaW5rTGFyZ2UoVW5pcXVlTG9ja0hv
bGRlciYgbG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwgc2l6ZV90IG5ld1NpCiAgICAgbV9zY2F2
ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQogCi12b2lkIEhlYXA6OmRlYWxsb2NhdGVMYXJnZShV
bmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQordm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFy
Z2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgdm9pZCogb2JqZWN0KQogewogICAgIHNpemVfdCBz
aXplID0gbV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2JqZWN0KTsKICAgICBtX2xhcmdlRnJlZS5h
ZGQoTGFyZ2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUsIHNpemUsIHN0YXRpY19jYXN0PGNoYXIq
PihvYmplY3QpICsgc2l6ZSkpOwotICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gc2l6ZTsKKyAgICBh
ZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCBzaXplLCAiZGVhbGxvY2F0ZUxhcmdlIik7CiAgICAg
bV9zY2F2ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQogCkBAIC02MTksMTEgKzY1MywxMSBAQCB2
b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiAgICAgZXh0
ZXJuYWxDb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpleHRlcm5hbENv
bW1pdChVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgSGVh
cDo6ZXh0ZXJuYWxDb21taXQoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgdm9pZCogcHRyLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7CiAKLSAgICBtX2Zvb3RwcmludCAr
PSBzaXplOworICAgIGFkanVzdEZvb3RwcmludChsb2NrLCBzaXplLCAiZXh0ZXJuYWxDb21taXQi
KTsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAgCiAgICAgbV9waHlzaWNhbFBhZ2VNYXAu
Y29tbWl0KHB0ciwgc2l6ZSk7CiAjZW5kaWYKQEAgLTYzNSwxMSArNjY5LDExIEBAIHZvaWQgSGVh
cDo6ZXh0ZXJuYWxEZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBzaXplKQogICAgIGV4dGVybmFs
RGVjb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpleHRlcm5hbERlY29t
bWl0KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBwdHIsIHNpemVfdCBzaXplKQordm9pZCBIZWFw
OjpleHRlcm5hbERlY29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIHZvaWQqIHB0ciwgc2l6
ZV90IHNpemUpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogCi0gICAgbV9mb290cHJpbnQg
LT0gc2l6ZTsKKyAgICBhZGp1c3RGb290cHJpbnQobG9jaywgLXNpemUsICJleHRlcm5hbERlY29t
bWl0Iik7CiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQIAogICAgIG1fcGh5c2ljYWxQYWdl
TWFwLmRlY29tbWl0KHB0ciwgc2l6ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5kZXgg
ZWU3ZWQ4NTk1M2ZkLi4zZmViYjUwNWJkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCkBAIC0xMTcs
NiArMTE3LDExIEBAIHByaXZhdGU6CiAgICAgTGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdlQ2h1
bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAgICBMYXJnZVJhbmdlIHNwbGl0QW5kQWxs
b2NhdGUoVW5pcXVlTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBzaXplX3QgYWxpZ25tZW50LCBz
aXplX3QpOwogCisgICAgaW5saW5lIHZvaWQgYWRqdXN0Rm9vdHByaW50KFVuaXF1ZUxvY2tIb2xk
ZXImLCBzc2l6ZV90LCBjb25zdCBjaGFyKiBub3RlKTsKKyAgICBpbmxpbmUgdm9pZCBhZGp1c3RG
cmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJiwgc3NpemVfdCwgY29uc3QgY2hhciogbm90
ZSk7CisgICAgaW5saW5lIHZvaWQgYWRqdXN0U3RhdChzaXplX3QmIHZhbHVlLCBzc2l6ZV90KTsK
KyAgICBpbmxpbmUgdm9pZCBsb2dTdGF0KHNpemVfdCB2YWx1ZSwgc3NpemVfdCBhbW91bnQsIGNv
bnN0IGNoYXIqIGxhYmVsLCBjb25zdCBjaGFyKiBub3RlKTsKKwogICAgIEhlYXBLaW5kIG1fa2lu
ZDsKICAgICBIZWFwQ29uc3RhbnRzJiBtX2NvbnN0YW50czsKIAo=
</data>
<flag name="review"
          id="461655"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438876</attachid>
            <date>2021-09-21 16:02:11 -0700</date>
            <delta_ts>2021-09-21 17:00:16 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11576</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA1YTA5NDdmM2NiMzguLjM5Y2UzYWJmODM3NCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY0IEBACisyMDIxLTA5LTE1ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gZnJlZWFibGVNZW1vcnkgYW5kIGZvb3Rwcmlu
dCBvZiBIZWFwIGFyZSBjb21wbGV0ZWx5IGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VkIGluIHIyNzk5MjIuIFRoZSBw
aHlzaWNhbCBzaXplIG9mIHRoZSBuZXdseSBhbGxvY2F0ZWQgcmFuZ2Ugd2FzIGNoYW5nZWQgZnJv
bSB6ZXJvCisgICAgICAgIHRvIHRoZSBzaXplIG9mIHRoZSByYW5nZSBvbiB0aGF0IGNvbW1pdCBh
bmQgdGhhdCBjYXVzZXMgdGhlIG51bWJlcnMgd3JvbmcuIFRoYXQgY2hhbmdlIGl0c2VsZiBpcwor
ICAgICAgICBjb3JyZWN0IGZpeCBiZWNhdXNlIHRoZSByYW5nZSBoYXMgcGh5c2ljYWwgcGFnZXMg
YXR0YWNoZWQuIFRoYXQgc2ltcGx5IGFjdGl2YXRlZCB0aGUgYnVnIHdoaWNoIHdhcworICAgICAg
ICB0aGVyZSBmb3IgYSBsb25nIHRpbWUuCisKKyAgICAgICAgSSd2ZSBhZGRlZCB0aGUgY29ycmVj
dGlvbiB0byBhZGp1c3QgYm90aCBudW1iZXJzIHdpdGggbmV3bHkgYWxsb2NhdGVkIHJlZ2lvbi4g
QWxzbyBhZGRlZCBhc3NlcnRpb24KKyAgICAgICAgdG8gY2hlY2sgdGhlIG92ZXJmbG93IG9mIHRo
b3NlIHZhbHVlcyBhbmQgdGhlIG9wdGlvbiB0byBsb2cgdGhvc2UgdmFsdWUgY2hhbmdlIHRvIHRo
ZSBjb25zb2xlLgorCisgICAgICAgIEZvcnR1bmF0ZWx5IHRob3NlIG51bWJlcnMgYXJlIHVzZWQg
Zm9yIGRlYnVnZ2luZyBwdXJwb3NlLiBTY2F2ZW5nZXIgd2lsbCBkdW1wIG91dCB0aG9zZSB0byBz
dGRlcnIKKyAgICAgICAgd2l0aCBpdHMgdmVyYm9zZSBtb2RlLiBUaGVyZSdzIG5vIHByYWN0aWNh
bCBjYXNlcyBhZmZlY3RlZCBieSB0aGlzIGJ1Zy4KKworICAgICAgICBIZXJlIGlzIHRoZSBleGFt
cGxlIG9mIGZvb3RwcmludCBsb2dnaW5nIGJlZm9yZSBmaXhpbmcgdGhlIGJ1ZzoKKworICAgICAg
ICAgICAgICAgID4+PiBmb290cHJpbnQ6IDE4NDQ2NzQ0MDczNzA5NTM1MjMyICgtMTYzODQpIHNj
YXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiAxODQ0Njc0NDA3MzcwOTUxODg0OCAo
LTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZvb3RwcmludDogMTg0NDY3NDQwNzM3
MDk1MDI0NjQgKC0xNjM4NCkgc2NhdmVuZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDE4
NDQ2NzQ0MDczNzA5NDg2MDgwICgtMTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9v
dHByaW50OiAxODQ0Njc0NDA3MzcwOTQ2OTY5NiAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAg
ICAgICAgIGZvb3RwcmludDogMTg0NDY3NDQwNzM3MDk0NTMzMTIgKC0xNjM4NCkgc2NhdmVuZ2UK
KyAgICAgICAgICAgICAgICAuLi4KKworICAgICAgICBJdCBqdXN0IGJlZ2FuIHdpdGggbmVnYXRp
dmUgbnVtYmVyIHdoaWNoIG92ZXJmbG93cyBvbiB1bnNpZ25lZC4gQW5kIGZvbGxvd2luZyBpcyB0
aGUgb25lIHdpdGggZml4OgorCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiAxMDQ4NTc2ICgx
MDQ4NTc2KSBhbGxvY2F0ZUxhcmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiAyMDk3MTUy
ICgxMDQ4NTc2KSBhbGxvY2F0ZUxhcmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiAzMTQ1
NzI4ICgxMDQ4NTc2KSBhbGxvY2F0ZUxhcmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiA0
MTk0MzA0ICgxMDQ4NTc2KSBhbGxvY2F0ZUxhcmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50
OiA1MjQyODgwICgxMDQ4NTc2KSBhbGxvY2F0ZUxhcmdlCisgICAgICAgICAgICAgICAgZm9vdHBy
aW50OiA2MjkxNDU2ICgxMDQ4NTc2KSBhbGxvY2F0ZUxhcmdlCisgICAgICAgICAgICAgICAgPj4+
IGZvb3RwcmludDogNjI3NTA3MiAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZv
b3RwcmludDogNjI1ODY4OCAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZvb3Rw
cmludDogNjI0MjMwNCAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZvb3Rwcmlu
dDogNjIyNTkyMCAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZvb3RwcmludDog
NjIwOTUzNiAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZvb3RwcmludDogNjE5
MzE1MiAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICog
Ym1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFkanVzdFN0YXQpOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6bG9nU3RhdCk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjphZGp1c3RGcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphZGp1c3RG
b290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKToK
KyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmFsbG9jYXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0
ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5l
KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNwbGl0QW5kQWxsb2NhdGUpOgorICAgICAgICAo
Ym1hbGxvYzo6SGVhcDo6YWxsb2NhdGVMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpk
ZWFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZXh0ZXJuYWxDb21taXQp
OgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdCk6CisgICAgICAgICog
Ym1hbGxvYy9IZWFwLmg6CisKIDIwMjEtMDgtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbGlicGFzXSBtZWRpdW0gc2l6ZSBjbGFzcyBsb29rdXAgbmVlZHMg
dG8gY29ycmVjdGx5IGZlbmNlIHRoZSBjb3VudGluZyBsb2NrIHJlYWQgcGF0aApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5jcHAKaW5kZXggMWJjNWUxYTg2OWNkLi5mZmRkY2QxMDA5ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcApAQCAtOTksNiArOTksMzggQEAgc2l6ZV90IEhlYXA6OmZvb3RwcmludCgp
CiAgICAgcmV0dXJuIG1fZm9vdHByaW50OwogfQogCitCSU5MSU5FIHZvaWQgSGVhcDo6YWRqdXN0
U3RhdChzaXplX3QmIHZhbHVlLCBzc2l6ZV90IGFtb3VudCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9
IHZhbHVlICsgYW1vdW50OworICAgIEJBU1NFUlQoKGFtb3VudCA+PSAwICYmIHJlc3VsdCA+PSB2
YWx1ZSkgfHwgKGFtb3VudCA8IDAgJiYgcmVzdWx0IDwgdmFsdWUpKTsKKyAgICB2YWx1ZSA9IHJl
c3VsdDsKK30KKworQklOTElORSB2b2lkIEhlYXA6OmxvZ1N0YXQoc2l6ZV90IHZhbHVlLCBzc2l6
ZV90IGFtb3VudCwgY29uc3QgY2hhciogbGFiZWwsIGNvbnN0IGNoYXIqIG5vdGUpCit7CisgICAg
ZnByaW50ZihzdGRlcnIsICIlczogJWx1ICglbGQpICVzXG4iLCBsYWJlbCwgdmFsdWUsIGFtb3Vu
dCwgbm90ZSk7Cit9CisKK0JJTkxJTkUgdm9pZCBIZWFwOjphZGp1c3RGcmVlYWJsZU1lbW9yeShV
bmlxdWVMb2NrSG9sZGVyJiwgc3NpemVfdCBhbW91bnQsIGNvbnN0IGNoYXIqIG5vdGUpCit7Cisg
ICAgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCisgICAgYWRqdXN0U3RhdChtX2Zy
ZWVhYmxlTWVtb3J5LCBhbW91bnQpOworCisgICAgaWYgY29uc3RleHByICh2ZXJib3NlKQorICAg
ICAgICBsb2dTdGF0KG1fZnJlZWFibGVNZW1vcnksIGFtb3VudCwgImZyZWVhYmxlTWVtb3J5Iiwg
bm90ZSk7Cit9CisKK0JJTkxJTkUgdm9pZCBIZWFwOjphZGp1c3RGb290cHJpbnQoVW5pcXVlTG9j
a0hvbGRlciYsIHNzaXplX3QgYW1vdW50LCBjb25zdCBjaGFyKiBub3RlKQoreworICAgIGNvbnN0
ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworICAgIGFkanVzdFN0YXQobV9mb290cHJpbnQs
IGFtb3VudCk7CisKKyAgICBpZiBjb25zdGV4cHIgKHZlcmJvc2UpCisgICAgICAgIGxvZ1N0YXQo
bV9mb290cHJpbnQsIGFtb3VudCwgImZvb3RwcmludCIsIG5vdGUpOworfQorCiB2b2lkIEhlYXA6
Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IExvY2tIb2xkZXImKQogewogICAgIG1fbGFy
Z2VGcmVlLm1hcmtBbGxBc0VsaWdpYmlsZSgpOwpAQCAtMTA2LDEyICsxMzgsMTIgQEAgdm9pZCBI
ZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJikKICAgICBtX2Nv
bmRpdGlvbi5ub3RpZnlfYWxsKCk7CiB9CiAKLXZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdl
KFVuaXF1ZUxvY2tIb2xkZXImLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNv
bW1pdHRlcikKK3ZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKFVuaXF1ZUxvY2tIb2xkZXIm
IGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewog
ICAgIEJBU1NFUlQocmFuZ2UuaGFzUGh5c2ljYWxQYWdlcygpKTsKIAotICAgIG1fZm9vdHByaW50
IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7Ci0gICAgbV9mcmVlYWJsZU1lbW9yeSAtPSBy
YW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOworICAgIGFkanVzdEZvb3RwcmludChsb2NrLCAtcmFu
Z2UudG90YWxQaHlzaWNhbFNpemUoKSwgImRlY29tbWl0TGFyZ2VSYW5nZSIpOworICAgIGFkanVz
dEZyZWVhYmxlTWVtb3J5KGxvY2ssIC1yYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpLCAiZGVjb21t
aXRMYXJnZVJhbmdlIik7CiAgICAgZGVjb21taXR0ZXIuYWRkTGF6eShyYW5nZS5iZWdpbigpLCBy
YW5nZS5waHlzaWNhbEVuZCgpIC0gcmFuZ2UuYmVnaW4oKSk7CiAgICAgbV9oYXNQZW5kaW5nRGVj
b21taXRzID0gdHJ1ZTsKICAgICByYW5nZS5zZXRTdGFydFBoeXNpY2FsU2l6ZSgwKTsKQEAgLTEz
OSw4ICsxNzEsOCBAQCB2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ss
IEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZAogCiAgICAgICAgICAgICAgICAg
c2l6ZV90IHBhZ2VTaXplID0gYm1hbGxvYzo6cGFnZVNpemUoJmxpc3QgLSAmbV9mcmVlUGFnZXNb
MF0pOwogICAgICAgICAgICAgICAgIHNpemVfdCBkZWNvbW1pdFNpemUgPSBwaHlzaWNhbFBhZ2VT
aXplU2xvcHB5KHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXplKTsKLSAgICAgICAgICAg
ICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IGRlY29tbWl0U2l6ZTsKLSAgICAgICAgICAgICAgICBt
X2Zvb3RwcmludCAtPSBkZWNvbW1pdFNpemU7CisgICAgICAgICAgICAgICAgYWRqdXN0Rm9vdHBy
aW50KGxvY2ssIC1kZWNvbW1pdFNpemUsICJzY2F2ZW5nZSIpOworICAgICAgICAgICAgICAgIGFk
anVzdEZyZWVhYmxlTWVtb3J5KGxvY2ssIC1kZWNvbW1pdFNpemUsICJzY2F2ZW5nZSIpOwogICAg
ICAgICAgICAgICAgIGRlY29tbWl0dGVyLmFkZEVhZ2VyKHBhZ2UtPmJlZ2luKCktPmJlZ2luKCks
IHBhZ2VTaXplKTsKICAgICAgICAgICAgICAgICBwYWdlLT5zZXRIYXNQaHlzaWNhbFBhZ2VzKGZh
bHNlKTsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKQEAgLTIwNSw3ICsyMzcsNyBAQCB2
b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXpl
X3QgcGFnZUNsYXNzLCBGYWlsdXJlQQogICAgICAgICAgICAgY2h1bmstPmZyZWVQYWdlcygpLnB1
c2gocGFnZSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gY2h1
bmtTaXplOworICAgICAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCBjaHVua1NpemUsICJh
bGxvY2F0ZVNtYWxsQ2h1bmsiKTsKIAogICAgICAgICBtX3NjYXZlbmdlci0+c2NoZWR1bGUoMCk7
CiAKQEAgLTI3NSwxMCArMzA3LDEwIEBAIFNtYWxsUGFnZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBh
Z2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHNpemVDbGFzcywgTGluCiAgICAgICAg
IHNpemVfdCBwYWdlU2l6ZSA9IGJtYWxsb2M6OnBhZ2VTaXplKHBhZ2VDbGFzcyk7CiAgICAgICAg
IHNpemVfdCBwaHlzaWNhbFNpemUgPSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2lu
KCktPmJlZ2luKCksIHBhZ2VTaXplKTsKICAgICAgICAgaWYgKHBhZ2UtPmhhc1BoeXNpY2FsUGFn
ZXMoKSkKLSAgICAgICAgICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gcGh5c2ljYWxTaXplOworICAg
ICAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9jaywgLXBoeXNpY2FsU2l6ZSwgImFsbG9j
YXRlU21hbGxQYWdlIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9zY2F2ZW5nZXIt
PnNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlKHBhZ2VTaXplKTsKLSAgICAgICAgICAgIG1f
Zm9vdHByaW50ICs9IHBoeXNpY2FsU2l6ZTsKKyAgICAgICAgICAgIGFkanVzdEZvb3RwcmludChs
b2NrLCBwaHlzaWNhbFNpemUsICJhbGxvY2F0ZVNtYWxsUGFnZSIpOwogICAgICAgICAgICAgdm1B
bGxvY2F0ZVBoeXNpY2FsUGFnZXNTbG9wcHkocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNp
emUpOwogICAgICAgICAgICAgcGFnZS0+c2V0SGFzUGh5c2ljYWxQYWdlcyh0cnVlKTsKICNpZiBF
TkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKQEAgLTMxNCw3ICszNDYsNyBAQCB2b2lkIEhlYXA6OmRl
YWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgT2JqZWN0IG9iamVjdCwg
TGluZUNhY2hlJgogCiAgICAgc2l6ZV90IHBhZ2VDbGFzcyA9IG1fY29uc3RhbnRzLnBhZ2VDbGFz
cyhwYWdlLT5zaXplQ2xhc3MoKSk7CiAKLSAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHBoeXNpY2Fs
UGFnZVNpemVTbG9wcHkocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNpemUocGFnZUNsYXNz
KSk7CisgICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9jaywgcGh5c2ljYWxQYWdlU2l6ZVNsb3Bw
eShwYWdlLT5iZWdpbigpLT5iZWdpbigpLCBwYWdlU2l6ZShwYWdlQ2xhc3MpKSwgImRlYWxsb2Nh
dGVTbWFsbExpbmUiKTsKIAogICAgIExpc3Q8U21hbGxQYWdlPjo6cmVtb3ZlKHBhZ2UpOyAvLyAn
cGFnZScgbWF5IGJlIGluIGFueSB0aHJlYWQncyBsaW5lIGNhY2hlLgogICAgIApAQCAtNDkwLDcg
KzUyMiw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9s
ZGVyJiBsb2NrLCBMYXJnZVJhbmdlJiByYW5nZSwgc2l6CiAgICAgCiAgICAgaWYgKHJhbmdlLnN0
YXJ0UGh5c2ljYWxTaXplKCkgPCByYW5nZS5zaXplKCkpIHsKICAgICAgICAgbV9zY2F2ZW5nZXIt
PnNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlKHJhbmdlLnNpemUoKSk7Ci0gICAgICAgIG1f
Zm9vdHByaW50ICs9IHJhbmdlLnNpemUoKSAtIHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7Cisg
ICAgICAgIGFkanVzdEZvb3RwcmludChsb2NrLCByYW5nZS5zaXplKCkgLSByYW5nZS50b3RhbFBo
eXNpY2FsU2l6ZSgpLCAic3BsaXRBbmRBbGxvY2F0ZSIpOwogICAgICAgICB2bUFsbG9jYXRlUGh5
c2ljYWxQYWdlc1Nsb3BweShyYW5nZS5iZWdpbigpICsgcmFuZ2Uuc3RhcnRQaHlzaWNhbFNpemUo
KSwgcmFuZ2Uuc2l6ZSgpIC0gcmFuZ2Uuc3RhcnRQaHlzaWNhbFNpemUoKSk7CiAgICAgICAgIHJh
bmdlLnNldFN0YXJ0UGh5c2ljYWxTaXplKHJhbmdlLnNpemUoKSk7CiAgICAgICAgIHJhbmdlLnNl
dFRvdGFsUGh5c2ljYWxTaXplKHJhbmdlLnNpemUoKSk7CkBAIC01MDEsMTIgKzUzMywxMiBAQCBM
YXJnZVJhbmdlIEhlYXA6OnNwbGl0QW5kQWxsb2NhdGUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
TGFyZ2VSYW5nZSYgcmFuZ2UsIHNpegogICAgIH0KICAgICAKICAgICBpZiAocHJldikgewotICAg
ICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHByZXYudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICAg
ICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9jaywgcHJldi50b3RhbFBoeXNpY2FsU2l6ZSgpLCAi
c3BsaXRBbmRBbGxvY2F0ZS5wcmV2Iik7CiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChwcmV2KTsK
ICAgICB9CiAKICAgICBpZiAobmV4dCkgewotICAgICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IG5l
eHQudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9j
aywgbmV4dC50b3RhbFBoeXNpY2FsU2l6ZSgpLCAic3BsaXRBbmRBbGxvY2F0ZS5uZXh0Iik7CiAg
ICAgICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKQEAgLTU1MiwxMCArNTg0LDEy
IEBAIHZvaWQqIEhlYXA6OmFsbG9jYXRlTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6
ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsCiAgICAgICAgIEFTU0VSVF9PUl9SRVRVUk5fT05f
RkFJTFVSRShyYW5nZSk7CiAgICAgICAgIAogICAgICAgICBtX2xhcmdlRnJlZS5hZGQocmFuZ2Up
OworICAgICAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCByYW5nZS50b3RhbFBoeXNpY2Fs
U2l6ZSgpLCAiYWxsb2NhdGVMYXJnZSIpOworICAgICAgICBhZGp1c3RGb290cHJpbnQobG9jaywg
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwgImFsbG9jYXRlTGFyZ2UiKTsKKwogICAgICAgICBy
YW5nZSA9IG1fbGFyZ2VGcmVlLnJlbW92ZShhbGlnbm1lbnQsIHNpemUpOwogICAgIH0KLQotICAg
IG1fZnJlZWFibGVNZW1vcnkgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICBhZGp1
c3RGcmVlYWJsZU1lbW9yeShsb2NrLCAtcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwgImFsbG9j
YXRlTGFyZ2UucmV1c2UiKTsKIAogICAgIHZvaWQqIHJlc3VsdCA9IHNwbGl0QW5kQWxsb2NhdGUo
bG9jaywgcmFuZ2UsIGFsaWdubWVudCwgc2l6ZSkuYmVnaW4oKTsKICAgICBBU1NFUlRfT1JfUkVU
VVJOX09OX0ZBSUxVUkUocmVzdWx0KTsKQEAgLTYwNSwxMSArNjM5LDExIEBAIHZvaWQgSGVhcDo6
c2hyaW5rTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwg
c2l6ZV90IG5ld1NpCiAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQogCi12b2lk
IEhlYXA6OmRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQor
dm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgdm9pZCog
b2JqZWN0KQogewogICAgIHNpemVfdCBzaXplID0gbV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2Jq
ZWN0KTsKICAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUs
IHNpemUsIHN0YXRpY19jYXN0PGNoYXIqPihvYmplY3QpICsgc2l6ZSkpOwotICAgIG1fZnJlZWFi
bGVNZW1vcnkgKz0gc2l6ZTsKKyAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCBzaXplLCAi
ZGVhbGxvY2F0ZUxhcmdlIik7CiAgICAgbV9zY2F2ZW5nZXItPnNjaGVkdWxlKHNpemUpOwogfQog
CkBAIC02MTksMTEgKzY1MywxMSBAQCB2b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KHZvaWQqIHB0
ciwgc2l6ZV90IHNpemUpCiAgICAgZXh0ZXJuYWxDb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0K
IAotdm9pZCBIZWFwOjpleHRlcm5hbENvbW1pdChVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogcHRy
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgSGVhcDo6ZXh0ZXJuYWxDb21taXQoVW5pcXVlTG9ja0hvbGRl
ciYgbG9jaywgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0
cik7CiAKLSAgICBtX2Zvb3RwcmludCArPSBzaXplOworICAgIGFkanVzdEZvb3RwcmludChsb2Nr
LCBzaXplLCAiZXh0ZXJuYWxDb21taXQiKTsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAg
CiAgICAgbV9waHlzaWNhbFBhZ2VNYXAuY29tbWl0KHB0ciwgc2l6ZSk7CiAjZW5kaWYKQEAgLTYz
NSwxMSArNjY5LDExIEBAIHZvaWQgSGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdCh2b2lkKiBwdHIsIHNp
emVfdCBzaXplKQogICAgIGV4dGVybmFsRGVjb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAot
dm9pZCBIZWFwOjpleHRlcm5hbERlY29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBwdHIs
IHNpemVfdCBzaXplKQordm9pZCBIZWFwOjpleHRlcm5hbERlY29tbWl0KFVuaXF1ZUxvY2tIb2xk
ZXImIGxvY2ssIHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShw
dHIpOwogCi0gICAgbV9mb290cHJpbnQgLT0gc2l6ZTsKKyAgICBhZGp1c3RGb290cHJpbnQobG9j
aywgLXNpemUsICJleHRlcm5hbERlY29tbWl0Iik7CiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0Vf
TUFQIAogICAgIG1fcGh5c2ljYWxQYWdlTWFwLmRlY29tbWl0KHB0ciwgc2l6ZSk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmgKaW5kZXggZWU3ZWQ4NTk1M2ZkLi4zZmViYjUwNWJkM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcC5oCkBAIC0xMTcsNiArMTE3LDExIEBAIHByaXZhdGU6CiAgICAgTGFyZ2VS
YW5nZSB0cnlBbGxvY2F0ZUxhcmdlQ2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAg
ICBMYXJnZVJhbmdlIHNwbGl0QW5kQWxsb2NhdGUoVW5pcXVlTG9ja0hvbGRlciYsIExhcmdlUmFu
Z2UmLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogCisgICAgaW5saW5lIHZvaWQgYWRqdXN0
Rm9vdHByaW50KFVuaXF1ZUxvY2tIb2xkZXImLCBzc2l6ZV90LCBjb25zdCBjaGFyKiBub3RlKTsK
KyAgICBpbmxpbmUgdm9pZCBhZGp1c3RGcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJiwg
c3NpemVfdCwgY29uc3QgY2hhciogbm90ZSk7CisgICAgaW5saW5lIHZvaWQgYWRqdXN0U3RhdChz
aXplX3QmIHZhbHVlLCBzc2l6ZV90KTsKKyAgICBpbmxpbmUgdm9pZCBsb2dTdGF0KHNpemVfdCB2
YWx1ZSwgc3NpemVfdCBhbW91bnQsIGNvbnN0IGNoYXIqIGxhYmVsLCBjb25zdCBjaGFyKiBub3Rl
KTsKKwogICAgIEhlYXBLaW5kIG1fa2luZDsKICAgICBIZWFwQ29uc3RhbnRzJiBtX2NvbnN0YW50
czsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439770</attachid>
            <date>2021-09-30 12:33:20 -0700</date>
            <delta_ts>2021-11-18 14:22:04 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11773</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA2MWI2YmVjNTk3MGYuLjBmOWNkOTYwOGQ0NyAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY1IEBACisyMDIxLTA5LTMwICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gZnJlZWFibGVNZW1vcnkgYW5kIGZvb3Rwcmlu
dCBvZiBIZWFwIGFyZSBjb21wbGV0ZWx5IGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMjQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MzMzOTAyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGludHJvZHVjZWQgaW4gcjI3OTkyMi4gVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIG5l
d2x5IGFsbG9jYXRlZCByYW5nZSB3YXMgY2hhbmdlZCBmcm9tIHplcm8KKyAgICAgICAgdG8gdGhl
IHNpemUgb2YgdGhlIHJhbmdlIG9uIHRoYXQgY29tbWl0IGFuZCB0aGF0IGNhdXNlcyB0aGUgbnVt
YmVycyB3cm9uZy4gVGhhdCBjaGFuZ2UgaXRzZWxmIGlzCisgICAgICAgIGNvcnJlY3QgZml4IGJl
Y2F1c2UgdGhlIHJhbmdlIGhhcyBwaHlzaWNhbCBwYWdlcyBhdHRhY2hlZC4gVGhhdCBzaW1wbHkg
YWN0aXZhdGVkIHRoZSBidWcgd2hpY2ggd2FzCisgICAgICAgIHRoZXJlIGZvciBhIGxvbmcgdGlt
ZS4KKworICAgICAgICBJJ3ZlIGFkZGVkIHRoZSBjb3JyZWN0aW9uIHRvIGFkanVzdCBib3RoIG51
bWJlcnMgd2l0aCBuZXdseSBhbGxvY2F0ZWQgcmVnaW9uLiBBbHNvIGFkZGVkIGFuIG9wdGlvbmFs
CisgICAgICAgIGFzc2VydGlvbiB0byBjaGVjayB0aGUgb3ZlcmZsb3cgb2YgdGhvc2UgdmFsdWVz
IGFuZCB0aGUgb3B0aW9uIHRvIGxvZyB0aG9zZSB2YWx1ZSBjaGFuZ2UgdG8gdGhlIGNvbnNvbGUu
CisKKyAgICAgICAgRm9ydHVuYXRlbHkgdGhvc2UgbnVtYmVycyBhcmUgdXNlZCBmb3IgZGVidWdn
aW5nIHB1cnBvc2UuIFNjYXZlbmdlciB3aWxsIGR1bXAgb3V0IHRob3NlIHRvIHN0ZGVycgorICAg
ICAgICB3aXRoIGl0cyB2ZXJib3NlIG1vZGUuIFRoZXJlJ3Mgbm8gcHJhY3RpY2FsIGNhc2VzIGFm
ZmVjdGVkIGJ5IHRoaXMgYnVnLgorCisgICAgICAgIEhlcmUgaXMgdGhlIGV4YW1wbGUgb2YgZm9v
dHByaW50IGxvZ2dpbmcgYmVmb3JlIGZpeGluZyB0aGUgYnVnOgorCisgICAgICAgICAgICAgICAg
Pj4+IGZvb3RwcmludDogMTg0NDY3NDQwNzM3MDk1MzUyMzIgKC0xNjM4NCkgc2NhdmVuZ2UKKyAg
ICAgICAgICAgICAgICBmb290cHJpbnQ6IDE4NDQ2NzQ0MDczNzA5NTE4ODQ4ICgtMTYzODQpIHNj
YXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiAxODQ0Njc0NDA3MzcwOTUwMjQ2NCAo
LTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAgICAgICAgIGZvb3RwcmludDogMTg0NDY3NDQwNzM3
MDk0ODYwODAgKC0xNjM4NCkgc2NhdmVuZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDE4
NDQ2NzQ0MDczNzA5NDY5Njk2ICgtMTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9v
dHByaW50OiAxODQ0Njc0NDA3MzcwOTQ1MzMxMiAoLTE2Mzg0KSBzY2F2ZW5nZQorICAgICAgICAg
ICAgICAgIC4uLgorCisgICAgICAgIEl0IGp1c3QgYmVnYW4gd2l0aCBuZWdhdGl2ZSBudW1iZXIg
d2hpY2ggb3ZlcmZsb3dzIG9uIHVuc2lnbmVkLiBBbmQgZm9sbG93aW5nIGlzIHRoZSBvbmUgd2l0
aCBmaXg6CisKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDEwNDg1NzYgKDEwNDg1NzYpIGFs
bG9jYXRlTGFyZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDIwOTcxNTIgKDEwNDg1NzYp
IGFsbG9jYXRlTGFyZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDMxNDU3MjggKDEwNDg1
NzYpIGFsbG9jYXRlTGFyZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDQxOTQzMDQgKDEw
NDg1NzYpIGFsbG9jYXRlTGFyZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDUyNDI4ODAg
KDEwNDg1NzYpIGFsbG9jYXRlTGFyZ2UKKyAgICAgICAgICAgICAgICBmb290cHJpbnQ6IDYyOTE0
NTYgKDEwNDg1NzYpIGFsbG9jYXRlTGFyZ2UKKyAgICAgICAgICAgICAgICA+Pj4gZm9vdHByaW50
OiA2Mjc1MDcyICgtMTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiA2
MjU4Njg4ICgtMTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiA2MjQy
MzA0ICgtMTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiA2MjI1OTIw
ICgtMTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiA2MjA5NTM2ICgt
MTYzODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgZm9vdHByaW50OiA2MTkzMTUyICgtMTYz
ODQpIHNjYXZlbmdlCisgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgKiBibWFsbG9jL0hl
YXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWRqdXN0U3RhdCk6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjpsb2dTdGF0KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFkanVzdEZy
ZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFkanVzdEZvb3RwcmludCk6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAo
Ym1hbGxvYzo6SGVhcDo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2Nh
dGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxQYWdl
KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6c3BsaXRBbmRBbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjphbGxvY2F0ZUxhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVM
YXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpleHRlcm5hbENvbW1pdCk6CisgICAgICAg
IChibWFsbG9jOjpIZWFwOjpleHRlcm5hbERlY29tbWl0KToKKyAgICAgICAgKiBibWFsbG9jL0hl
YXAuaDoKKwogMjAyMS0wOS0yOSAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5j
b20+CiAKICAgICAgICAgW2JtYWxsb2NdIENodW5rSGFzaCBpcyBub3QgdXNlZCBzaW5jZSByMjYx
NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCAxYmM1ZTFhODY5Y2QuLjk3YTRhNzEyMjY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC05OSw2ICs5OSw0MyBAQCBzaXplX3QgSGVh
cDo6Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAKK0JJTkxJTkUgdm9p
ZCBIZWFwOjphZGp1c3RTdGF0KHNpemVfdCYgdmFsdWUsIHNzaXplX3QgYW1vdW50KQoreworICAg
IGNvbnN0ZXhwciBib29sIGNoZWNrID0gZmFsc2U7CisKKyAgICBhdXRvIHJlc3VsdCA9IHZhbHVl
ICsgYW1vdW50OworICAgIGlmIGNvbnN0ZXhwciAoY2hlY2spIHsKKyAgICAgICAgLy8gVGhpcyBh
c3NlcnRpb24gc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBhZnRlciBmaXhpbmcgYWxsIGZv
b3RwcmludC9mcmVlYWJsZU1lbW9yeSBpc3N1ZXMuCisgICAgICAgIEJBU1NFUlQoKGFtb3VudCA+
PSAwICYmIHJlc3VsdCA+PSB2YWx1ZSkgfHwgKGFtb3VudCA8IDAgJiYgcmVzdWx0IDwgdmFsdWUp
KTsKKyAgICB9CisgICAgdmFsdWUgPSByZXN1bHQ7Cit9CisKK0JJTkxJTkUgdm9pZCBIZWFwOjps
b2dTdGF0KHNpemVfdCB2YWx1ZSwgc3NpemVfdCBhbW91bnQsIGNvbnN0IGNoYXIqIGxhYmVsLCBj
b25zdCBjaGFyKiBub3RlKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiJXM6ICVsdSAoJWxkKSAl
c1xuIiwgbGFiZWwsIHZhbHVlLCBhbW91bnQsIG5vdGUpOworfQorCitCSU5MSU5FIHZvaWQgSGVh
cDo6YWRqdXN0RnJlZWFibGVNZW1vcnkoVW5pcXVlTG9ja0hvbGRlciYsIHNzaXplX3QgYW1vdW50
LCBjb25zdCBjaGFyKiBub3RlKQoreworICAgIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKKworICAgIGFkanVzdFN0YXQobV9mcmVlYWJsZU1lbW9yeSwgYW1vdW50KTsKKworICAgIGlm
IGNvbnN0ZXhwciAodmVyYm9zZSkKKyAgICAgICAgbG9nU3RhdChtX2ZyZWVhYmxlTWVtb3J5LCBh
bW91bnQsICJmcmVlYWJsZU1lbW9yeSIsIG5vdGUpOworfQorCitCSU5MSU5FIHZvaWQgSGVhcDo6
YWRqdXN0Rm9vdHByaW50KFVuaXF1ZUxvY2tIb2xkZXImLCBzc2l6ZV90IGFtb3VudCwgY29uc3Qg
Y2hhciogbm90ZSkKK3sKKyAgICBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKKyAg
ICBhZGp1c3RTdGF0KG1fZm9vdHByaW50LCBhbW91bnQpOworCisgICAgaWYgY29uc3RleHByICh2
ZXJib3NlKQorICAgICAgICBsb2dTdGF0KG1fZm9vdHByaW50LCBhbW91bnQsICJmb290cHJpbnQi
LCBub3RlKTsKK30KKwogdm9pZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBM
b2NrSG9sZGVyJikKIHsKICAgICBtX2xhcmdlRnJlZS5tYXJrQWxsQXNFbGlnaWJpbGUoKTsKQEAg
LTEwNiwxMiArMTQzLDEyIEBAIHZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29u
c3QgTG9ja0hvbGRlciYpCiAgICAgbV9jb25kaXRpb24ubm90aWZ5X2FsbCgpOwogfQogCi12b2lk
IEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYg
cmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OmRlY29tbWl0TGFy
Z2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0Rl
Y29tbWl0JiBkZWNvbW1pdHRlcikKIHsKICAgICBCQVNTRVJUKHJhbmdlLmhhc1BoeXNpY2FsUGFn
ZXMoKSk7CiAKLSAgICBtX2Zvb3RwcmludCAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwot
ICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKKyAgICBh
ZGp1c3RGb290cHJpbnQobG9jaywgLXJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCksICJkZWNvbW1p
dExhcmdlUmFuZ2UiKTsKKyAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCAtcmFuZ2UudG90
YWxQaHlzaWNhbFNpemUoKSwgImRlY29tbWl0TGFyZ2VSYW5nZSIpOwogICAgIGRlY29tbWl0dGVy
LmFkZExhenkocmFuZ2UuYmVnaW4oKSwgcmFuZ2UucGh5c2ljYWxFbmQoKSAtIHJhbmdlLmJlZ2lu
KCkpOwogICAgIG1faGFzUGVuZGluZ0RlY29tbWl0cyA9IHRydWU7CiAgICAgcmFuZ2Uuc2V0U3Rh
cnRQaHlzaWNhbFNpemUoMCk7CkBAIC0xMzksOCArMTc2LDggQEAgdm9pZCBIZWFwOjpzY2F2ZW5n
ZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyLCBzaXpl
X3QmIGQKIAogICAgICAgICAgICAgICAgIHNpemVfdCBwYWdlU2l6ZSA9IGJtYWxsb2M6OnBhZ2VT
aXplKCZsaXN0IC0gJm1fZnJlZVBhZ2VzWzBdKTsKICAgICAgICAgICAgICAgICBzaXplX3QgZGVj
b21taXRTaXplID0gcGh5c2ljYWxQYWdlU2l6ZVNsb3BweShwYWdlLT5iZWdpbigpLT5iZWdpbigp
LCBwYWdlU2l6ZSk7Ci0gICAgICAgICAgICAgICAgbV9mcmVlYWJsZU1lbW9yeSAtPSBkZWNvbW1p
dFNpemU7Ci0gICAgICAgICAgICAgICAgbV9mb290cHJpbnQgLT0gZGVjb21taXRTaXplOworICAg
ICAgICAgICAgICAgIGFkanVzdEZvb3RwcmludChsb2NrLCAtZGVjb21taXRTaXplLCAic2NhdmVu
Z2UiKTsKKyAgICAgICAgICAgICAgICBhZGp1c3RGcmVlYWJsZU1lbW9yeShsb2NrLCAtZGVjb21t
aXRTaXplLCAic2NhdmVuZ2UiKTsKICAgICAgICAgICAgICAgICBkZWNvbW1pdHRlci5hZGRFYWdl
cihwYWdlLT5iZWdpbigpLT5iZWdpbigpLCBwYWdlU2l6ZSk7CiAgICAgICAgICAgICAgICAgcGFn
ZS0+c2V0SGFzUGh5c2ljYWxQYWdlcyhmYWxzZSk7CiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0Vf
TUFQCkBAIC0yMDUsNyArMjQyLDcgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQ2h1bmsoVW5p
cXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUEKICAgICAgICAg
ICAgIGNodW5rLT5mcmVlUGFnZXMoKS5wdXNoKHBhZ2UpOwogICAgICAgICB9KTsKIAotICAgICAg
ICBtX2ZyZWVhYmxlTWVtb3J5ICs9IGNodW5rU2l6ZTsKKyAgICAgICAgYWRqdXN0RnJlZWFibGVN
ZW1vcnkobG9jaywgY2h1bmtTaXplLCAiYWxsb2NhdGVTbWFsbENodW5rIik7CiAKICAgICAgICAg
bV9zY2F2ZW5nZXItPnNjaGVkdWxlKDApOwogCkBAIC0yNzUsMTAgKzMxMiwxMCBAQCBTbWFsbFBh
Z2UqIEhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIHNpemVf
dCBzaXplQ2xhc3MsIExpbgogICAgICAgICBzaXplX3QgcGFnZVNpemUgPSBibWFsbG9jOjpwYWdl
U2l6ZShwYWdlQ2xhc3MpOwogICAgICAgICBzaXplX3QgcGh5c2ljYWxTaXplID0gcGh5c2ljYWxQ
YWdlU2l6ZVNsb3BweShwYWdlLT5iZWdpbigpLT5iZWdpbigpLCBwYWdlU2l6ZSk7CiAgICAgICAg
IGlmIChwYWdlLT5oYXNQaHlzaWNhbFBhZ2VzKCkpCi0gICAgICAgICAgICBtX2ZyZWVhYmxlTWVt
b3J5IC09IHBoeXNpY2FsU2l6ZTsKKyAgICAgICAgICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxv
Y2ssIC1waHlzaWNhbFNpemUsICJhbGxvY2F0ZVNtYWxsUGFnZSIpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fc2NhdmVuZ2VyLT5zY2hlZHVsZUlmVW5kZXJNZW1vcnlQcmVzc3VyZShw
YWdlU2l6ZSk7Ci0gICAgICAgICAgICBtX2Zvb3RwcmludCArPSBwaHlzaWNhbFNpemU7CisgICAg
ICAgICAgICBhZGp1c3RGb290cHJpbnQobG9jaywgcGh5c2ljYWxTaXplLCAiYWxsb2NhdGVTbWFs
bFBhZ2UiKTsKICAgICAgICAgICAgIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KHBhZ2Ut
PmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXplKTsKICAgICAgICAgICAgIHBhZ2UtPnNldEhhc1Bo
eXNpY2FsUGFnZXModHJ1ZSk7CiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQCkBAIC0zMTQs
NyArMzUxLDcgQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKFVuaXF1ZUxvY2tIb2xk
ZXImIGxvY2ssIE9iamVjdCBvYmplY3QsIExpbmVDYWNoZSYKIAogICAgIHNpemVfdCBwYWdlQ2xh
c3MgPSBtX2NvbnN0YW50cy5wYWdlQ2xhc3MocGFnZS0+c2l6ZUNsYXNzKCkpOwogCi0gICAgbV9m
cmVlYWJsZU1lbW9yeSArPSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2luKCktPmJl
Z2luKCksIHBhZ2VTaXplKHBhZ2VDbGFzcykpOworICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxv
Y2ssIHBoeXNpY2FsUGFnZVNpemVTbG9wcHkocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNp
emUocGFnZUNsYXNzKSksICJkZWFsbG9jYXRlU21hbGxMaW5lIik7CiAKICAgICBMaXN0PFNtYWxs
UGFnZT46OnJlbW92ZShwYWdlKTsgLy8gJ3BhZ2UnIG1heSBiZSBpbiBhbnkgdGhyZWFkJ3MgbGlu
ZSBjYWNoZS4KICAgICAKQEAgLTQ5MCw3ICs1MjcsNyBAQCBMYXJnZVJhbmdlIEhlYXA6OnNwbGl0
QW5kQWxsb2NhdGUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNp
egogICAgIAogICAgIGlmIChyYW5nZS5zdGFydFBoeXNpY2FsU2l6ZSgpIDwgcmFuZ2Uuc2l6ZSgp
KSB7CiAgICAgICAgIG1fc2NhdmVuZ2VyLT5zY2hlZHVsZUlmVW5kZXJNZW1vcnlQcmVzc3VyZShy
YW5nZS5zaXplKCkpOwotICAgICAgICBtX2Zvb3RwcmludCArPSByYW5nZS5zaXplKCkgLSByYW5n
ZS50b3RhbFBoeXNpY2FsU2l6ZSgpOworICAgICAgICBhZGp1c3RGb290cHJpbnQobG9jaywgcmFu
Z2Uuc2l6ZSgpIC0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwgInNwbGl0QW5kQWxsb2NhdGUi
KTsKICAgICAgICAgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXNTbG9wcHkocmFuZ2UuYmVnaW4oKSAr
IHJhbmdlLnN0YXJ0UGh5c2ljYWxTaXplKCksIHJhbmdlLnNpemUoKSAtIHJhbmdlLnN0YXJ0UGh5
c2ljYWxTaXplKCkpOwogICAgICAgICByYW5nZS5zZXRTdGFydFBoeXNpY2FsU2l6ZShyYW5nZS5z
aXplKCkpOwogICAgICAgICByYW5nZS5zZXRUb3RhbFBoeXNpY2FsU2l6ZShyYW5nZS5zaXplKCkp
OwpAQCAtNTAxLDEyICs1MzgsMTIgQEAgTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9jYXRl
KFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXoKICAgICB9CiAg
ICAgCiAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgbV9mcmVlYWJsZU1lbW9yeSArPSBwcmV2LnRv
dGFsUGh5c2ljYWxTaXplKCk7CisgICAgICAgIGFkanVzdEZyZWVhYmxlTWVtb3J5KGxvY2ssIHBy
ZXYudG90YWxQaHlzaWNhbFNpemUoKSwgInNwbGl0QW5kQWxsb2NhdGUucHJldiIpOwogICAgICAg
ICBtX2xhcmdlRnJlZS5hZGQocHJldik7CiAgICAgfQogCiAgICAgaWYgKG5leHQpIHsKLSAgICAg
ICAgbV9mcmVlYWJsZU1lbW9yeSArPSBuZXh0LnRvdGFsUGh5c2ljYWxTaXplKCk7CisgICAgICAg
IGFkanVzdEZyZWVhYmxlTWVtb3J5KGxvY2ssIG5leHQudG90YWxQaHlzaWNhbFNpemUoKSwgInNw
bGl0QW5kQWxsb2NhdGUubmV4dCIpOwogICAgICAgICBtX2xhcmdlRnJlZS5hZGQobmV4dCk7CiAg
ICAgfQogCkBAIC01NTIsMTAgKzU4OSwxMiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZUxhcmdlKFVu
aXF1ZUxvY2tIb2xkZXImIGxvY2ssIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLAogICAg
ICAgICBBU1NFUlRfT1JfUkVUVVJOX09OX0ZBSUxVUkUocmFuZ2UpOwogICAgICAgICAKICAgICAg
ICAgbV9sYXJnZUZyZWUuYWRkKHJhbmdlKTsKKyAgICAgICAgYWRqdXN0RnJlZWFibGVNZW1vcnko
bG9jaywgcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKSwgImFsbG9jYXRlTGFyZ2UiKTsKKyAgICAg
ICAgYWRqdXN0Rm9vdHByaW50KGxvY2ssIHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCksICJhbGxv
Y2F0ZUxhcmdlIik7CisKICAgICAgICAgcmFuZ2UgPSBtX2xhcmdlRnJlZS5yZW1vdmUoYWxpZ25t
ZW50LCBzaXplKTsKICAgICB9Ci0KLSAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdlLnRvdGFs
UGh5c2ljYWxTaXplKCk7CisgICAgYWRqdXN0RnJlZWFibGVNZW1vcnkobG9jaywgLXJhbmdlLnRv
dGFsUGh5c2ljYWxTaXplKCksICJhbGxvY2F0ZUxhcmdlLnJldXNlIik7CiAKICAgICB2b2lkKiBy
ZXN1bHQgPSBzcGxpdEFuZEFsbG9jYXRlKGxvY2ssIHJhbmdlLCBhbGlnbm1lbnQsIHNpemUpLmJl
Z2luKCk7CiAgICAgQVNTRVJUX09SX1JFVFVSTl9PTl9GQUlMVVJFKHJlc3VsdCk7CkBAIC02MDUs
MTEgKzY0NCwxMSBAQCB2b2lkIEhlYXA6OnNocmlua0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxv
Y2ssIGNvbnN0IFJhbmdlJiBvYmplY3QsIHNpemVfdCBuZXdTaQogICAgIG1fc2NhdmVuZ2VyLT5z
Y2hlZHVsZShzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2UoVW5pcXVlTG9j
a0hvbGRlciYsIHZvaWQqIG9iamVjdCkKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxhcmdlKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIHZvaWQqIG9iamVjdCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1f
bGFyZ2VBbGxvY2F0ZWQucmVtb3ZlKG9iamVjdCk7CiAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdl
UmFuZ2Uob2JqZWN0LCBzaXplLCBzaXplLCBzaXplLCBzdGF0aWNfY2FzdDxjaGFyKj4ob2JqZWN0
KSArIHNpemUpKTsKLSAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHNpemU7CisgICAgYWRqdXN0RnJl
ZWFibGVNZW1vcnkobG9jaywgc2l6ZSwgImRlYWxsb2NhdGVMYXJnZSIpOwogICAgIG1fc2NhdmVu
Z2VyLT5zY2hlZHVsZShzaXplKTsKIH0KIApAQCAtNjE5LDExICs2NTgsMTEgQEAgdm9pZCBIZWFw
OjpleHRlcm5hbENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBzaXplKQogICAgIGV4dGVybmFsQ29t
bWl0KGxvY2ssIHB0ciwgc2l6ZSk7CiB9CiAKLXZvaWQgSGVhcDo6ZXh0ZXJuYWxDb21taXQoVW5p
cXVlTG9ja0hvbGRlciYsIHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCit2b2lkIEhlYXA6OmV4dGVy
bmFsQ29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIHZvaWQqIHB0ciwgc2l6ZV90IHNpemUp
CiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogCi0gICAgbV9mb290cHJpbnQgKz0gc2l6ZTsK
KyAgICBhZGp1c3RGb290cHJpbnQobG9jaywgc2l6ZSwgImV4dGVybmFsQ29tbWl0Iik7CiAjaWYg
RU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQIAogICAgIG1fcGh5c2ljYWxQYWdlTWFwLmNvbW1pdChw
dHIsIHNpemUpOwogI2VuZGlmCkBAIC02MzUsMTEgKzY3NCwxMSBAQCB2b2lkIEhlYXA6OmV4dGVy
bmFsRGVjb21taXQodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKICAgICBleHRlcm5hbERlY29tbWl0
KGxvY2ssIHB0ciwgc2l6ZSk7CiB9CiAKLXZvaWQgSGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdChVbmlx
dWVMb2NrSG9sZGVyJiwgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgSGVhcDo6ZXh0ZXJu
YWxEZWNvbW1pdChVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCB2b2lkKiBwdHIsIHNpemVfdCBzaXpl
KQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKIAotICAgIG1fZm9vdHByaW50IC09IHNpemU7
CisgICAgYWRqdXN0Rm9vdHByaW50KGxvY2ssIC1zaXplLCAiZXh0ZXJuYWxEZWNvbW1pdCIpOwog
I2lmIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUCAKICAgICBtX3BoeXNpY2FsUGFnZU1hcC5kZWNv
bW1pdChwdHIsIHNpemUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCmluZGV4IGVlN2VkODU5
NTNmZC4uM2ZlYmI1MDViZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMTE3LDYgKzExNywx
MSBAQCBwcml2YXRlOgogICAgIExhcmdlUmFuZ2UgdHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCk7CiAgICAgTGFyZ2VSYW5nZSBzcGxpdEFuZEFsbG9jYXRlKFVu
aXF1ZUxvY2tIb2xkZXImLCBMYXJnZVJhbmdlJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsK
IAorICAgIGlubGluZSB2b2lkIGFkanVzdEZvb3RwcmludChVbmlxdWVMb2NrSG9sZGVyJiwgc3Np
emVfdCwgY29uc3QgY2hhciogbm90ZSk7CisgICAgaW5saW5lIHZvaWQgYWRqdXN0RnJlZWFibGVN
ZW1vcnkoVW5pcXVlTG9ja0hvbGRlciYsIHNzaXplX3QsIGNvbnN0IGNoYXIqIG5vdGUpOworICAg
IGlubGluZSB2b2lkIGFkanVzdFN0YXQoc2l6ZV90JiB2YWx1ZSwgc3NpemVfdCk7CisgICAgaW5s
aW5lIHZvaWQgbG9nU3RhdChzaXplX3QgdmFsdWUsIHNzaXplX3QgYW1vdW50LCBjb25zdCBjaGFy
KiBsYWJlbCwgY29uc3QgY2hhciogbm90ZSk7CisKICAgICBIZWFwS2luZCBtX2tpbmQ7CiAgICAg
SGVhcENvbnN0YW50cyYgbV9jb25zdGFudHM7CiANCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>