<?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>165363</bug_id>
          
          <creation_ts>2016-12-03 13:29:56 -0800</creation_ts>
          <short_desc>We should have SSE4 detection in the X86 MacroAssembler.</short_desc>
          <delta_ts>2018-03-26 14:08:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1256103</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-03 13:29:56 -0800</bug_when>
    <thetext>There are some instructions in SSE4 that would be nice to use. For example the Popcnt instruction is used by Wasm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409167</commentid>
    <comment_count>1</comment_count>
      <attachid>336494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-25 05:26:36 -0700</bug_when>
    <thetext>Created attachment 336494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409168</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-25 05:28:19 -0700</bug_when>
    <thetext>Attachment 336494 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:766:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:768:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:769:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:775:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:769:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:775:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:781:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:783:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:784:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:790:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:784:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:790:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:794:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 13 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409312</commentid>
    <comment_count>3</comment_count>
      <attachid>336494</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-26 10:07:09 -0700</bug_when>
    <thetext>Comment on attachment 336494
Patch

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

r=me modulo some comments, and red bots.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:769
&gt; +        : &quot;0&quot;(level)

I think for some you need to also set ECX=0 as input, so &quot;c&quot;(0) here?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:804
&gt; +            s_bmi1CheckState = (cpuid[2] &amp; (1 &lt;&lt; 3)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;

I think this is wrong, it&apos;s not under 0x80000001? It&apos;s EAX=7, ECX=0.

&gt; Source/WTF/wtf/Atomics.h:-316
&gt; -        &quot;popl %%ebx\n\t&quot;

This saved EBX but the code below doesn&apos;t. Why is that OK for x86-32?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409333</commentid>
    <comment_count>4</comment_count>
      <attachid>336494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-26 11:02:46 -0700</bug_when>
    <thetext>Comment on attachment 336494
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:769
&gt;&gt; +        : &quot;0&quot;(level)
&gt; 
&gt; I think for some you need to also set ECX=0 as input, so &quot;c&quot;(0) here?

It&apos;s basically OK if we do not want extended values. But it would be nice. I&apos;ll just call getCPUIDEx(level, 0) here.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:804
&gt;&gt; +            s_bmi1CheckState = (cpuid[2] &amp; (1 &lt;&lt; 3)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
&gt; 
&gt; I think this is wrong, it&apos;s not under 0x80000001? It&apos;s EAX=7, ECX=0.

Oh, nice. I copied the logic described before (in MSVC ifdef), but it was wrong. Fixed.

&gt;&gt; Source/WTF/wtf/Atomics.h:-316
&gt;&gt; -        &quot;popl %%ebx\n\t&quot;
&gt; 
&gt; This saved EBX but the code below doesn&apos;t. Why is that OK for x86-32?

In an ideal world, we can just specify `&quot;=b&quot;(xxx)` for asm template to indicate that this code can clobber ebx in this asm template.
However, in old GCC, we cannot use ebx for asm template constraint. So instead of specifying `&quot;=b&quot;(xxx)` constraint, we just say this code does not clobber ebx.
And we ensure that this code does not clobber ebx by manually pushing and popping it.

But now, our supporting GCC allows us to specify ebx for asm template&apos;s constraint. So this code is not necessary: just specifying &quot;=b&quot;(b) works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409336</commentid>
    <comment_count>5</comment_count>
      <attachid>336526</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-26 11:06:53 -0700</bug_when>
    <thetext>Created attachment 336526
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409339</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-26 11:09:28 -0700</bug_when>
    <thetext>Attachment 336526 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:775:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:777:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:778:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:784:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:778:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:784:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:788:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 7 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409354</commentid>
    <comment_count>7</comment_count>
      <attachid>336526</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-26 11:41:59 -0700</bug_when>
    <thetext>Comment on attachment 336526
Patch for landing

Rejecting attachment 336526 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 336526, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/JavaScriptCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/7105420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409405</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-26 14:07:26 -0700</bug_when>
    <thetext>Committed r229988: &lt;https://trac.webkit.org/changeset/229988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409406</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-26 14:08:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/38881415&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336494</attachid>
            <date>2018-03-25 05:26:36 -0700</date>
            <delta_ts>2018-03-26 10:07:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165363-20180325212635.patch</filename>
            <type>text/plain</type>
            <size>20605</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTBkMWJjMTdiOTcwZGI2MWJkMGUzNTI4NzZjOWI5NTUxMjI4MGIxLi45ZDRkZTVhZGIxY2I5MWU2
NmY5NzMyMDVlMzNjNDIxNDI0YzhiMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOC0wMy0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgaGF2ZSBTU0U0IGRldGVjdGlvbiBpbiB0aGUgWDg2
IE1hY3JvQXNzZW1ibGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1MzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHBvcGNudCBzdXBwb3J0IHRvIFdBU00gaW4geDg2XzY0
IGVudmlyb25tZW50LgorICAgICAgICBUbyB1c2UgaXQsIHdlIHJlZmFjdG9yIG91ciBDUFVJRCBm
ZWF0dXJlIGRldGVjdGlvbiBpbiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi4KKyAgICAgICAgT3Vy
IHNwZWMtdGVzdHMgYWxyZWFkeSBjb3ZlciBwb3BjbnQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdXBwb3J0c0NvdW50UG9wdWxhdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmdldENQVUlEKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Omdl
dENQVUlERXgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29sbGVj
dENQVUZlYXR1cmVzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNvdW50UG9wdWxh
dGlvbjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRz
RmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OnN1cHBvcnRzQ291bnRQb3B1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzTFpDTlQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6c3VwcG9ydHNCTUkxKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmlzU1NFMlByZXNlbnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6dXBkYXRlRWF4MUVjeEZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmNvdW50UG9wdWxhdGlvbjY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cG9wY250X3JyKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpwb3BjbnRfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnBvcGNudHFfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnBvcGNudHFfbXIp
OgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4pOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcGNudD4pOgorCiAy
MDE4LTAzLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtERkddIEludHJvZHVjZXMgZnVzZWQgY29tcGFyZSBhbmQganVtcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3YzA2YTdk
OGQ3N2VmYjUxY2IyZWZlYTJkNTc5MDE2ZDIwYzY5ZjdkLi45Y2NkYmM1YjU5OWY1YjViNWZmMTlk
NmQ0Y2NmZDg2NzlmM2Q0N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAzLTI1ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBo
YXZlIFNTRTQgZGV0ZWN0aW9uIGluIHRoZSBYODYgTWFjcm9Bc3NlbWJsZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHQ0MgNSBzdXBwb3J0cyBjbG9i
YmVyaW5nIFBJQyByZWdpc3RlcnMgaW4gaW5saW5lIEFTTSBbMSwyXS4KKworICAgICAgICBbMV06
IGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ3NjAyCisgICAg
ICAgIFsyXTogaHR0cHM6Ly9nY2MuZ251Lm9yZy92aWV3Y3ZzL2djYz92aWV3PXJldmlzaW9uJnJl
dmlzaW9uPTIxNjE1NAorCisgICAgICAgICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURjo6
eDg2X2NwdWlkKToKKwogMjAxOC0wMy0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgYW5kIGFkb3B0IEhBVkUoQVVESU9fVE9PTEJP
WF9BVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA3ZjQ0OTdmODNmZTY0ZmU4MTA0MDIyNzI5
ZjM5NzAxY2JhZTgzZGZmLi4zMTlkOWVhNzY4MDgzM2I0ZmIwNThhODljZTBmMTk5NGVkOTc4MjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtMTU3NSw2ICsxNTc1LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ291bnRQb3B1bGF0aW9uKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZU
cnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmNwcAppbmRleCBjOTBiNGE3ZjEwODZkNTVkOWI0N2NhOGY5ZjUwNjA0ZmI1OWNhOTVk
Li42MzVlZWFmMDIxZTMxN2JmMmMyZTk1NDllNWYwNDA2NzIyNDIyZmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmNwcApAQCAtNzU3LDE0ICs3NTcsNjMgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJv
YmUoUHJvYmU6OkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmcpCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKE1BU01fUFJPQkUpCiAKLSNpZiBDUFUoWDg2KSAmJiAhT1MoTUFDX09TX1gpCi1NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6U1NFMkNoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnNfc3NlMkNoZWNrU3RhdGUgPSBOb3RDaGVja2VkU1NFMjsKK01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpDUFVJRCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Z2V0Q1BVSUQodW5zaWduZWQgbGV2
ZWwpCit7CisgICAgQ1BVSUQgcmVzdWx0IHsgfTsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIF9f
Y3B1aWQoYml0d2lzZV9jYXN0PGludCo+KHJlc3VsdC5kYXRhKCkpLCBsZXZlbCk7CisjZWxzZQor
ICAgIF9fYXNtX18gKAorICAgICAgICAiY3B1aWRcbiIKKyAgICAgICAgOiAiPWEiKHJlc3VsdFsw
XSksICI9YiIocmVzdWx0WzFdKSwgIj1jIihyZXN1bHRbMl0pLCAiPWQiKHJlc3VsdFszXSkKKyAg
ICAgICAgOiAiMCIobGV2ZWwpCisgICAgKTsKICNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpDUFVJRCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6Z2V0Q1BVSURFeCh1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgY291bnQpCit7CisgICAgQ1BV
SUQgcmVzdWx0IHsgfTsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIF9fY3B1aWRleChiaXR3aXNl
X2Nhc3Q8aW50Kj4ocmVzdWx0LmRhdGEoKSksIGxldmVsLCBjb3VudCk7CisjZWxzZQorICAgIF9f
YXNtX18gKAorICAgICAgICAiY3B1aWRcbiIKKyAgICAgICAgOiAiPWEiKHJlc3VsdFswXSksICI9
YiIocmVzdWx0WzFdKSwgIj1jIihyZXN1bHRbMl0pLCAiPWQiKHJlc3VsdFszXSkKKyAgICAgICAg
OiAiMCIobGV2ZWwpLCAiMiIoY291bnQpCisgICAgKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNvbGxlY3RDUFVGZWF0dXJl
cygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10geworICAgICAgICB7CisgICAgICAgICAgICBDUFVJRCBjcHVpZCA9
IGdldENQVUlEKDB4MSk7CisgICAgICAgICAgICBzX3NzZTJDaGVja1N0YXRlID0gKGNwdWlkWzNd
ICYgKDEgPDwgMjYpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpD
bGVhcjsKKyAgICAgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChjcHVpZFsyXSAmICgxIDw8
IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7Cisg
ICAgICAgICAgICBzX3NzZTRfMkNoZWNrU3RhdGUgPSAoY3B1aWRbMl0gJiAoMSA8PCAyMCkpID8g
Q1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgICAgICAg
ICAgc19wb3BjbnRDaGVja1N0YXRlID0gKGNwdWlkWzJdICYgKDEgPDwgMjMpKSA/IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgICAgIHNfYXZ4
Q2hlY2tTdGF0ZSA9IChjcHVpZFsyXSAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNl
dCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAg
ICAgICAgQ1BVSUQgY3B1aWQgPSBnZXRDUFVJRCgweDgwMDAwMDAxKTsKKyAgICAgICAgICAgIHNf
Ym1pMUNoZWNrU3RhdGUgPSAoY3B1aWRbMl0gJiAoMSA8PCAzKSkgPyBDUFVJRENoZWNrU3RhdGU6
OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgICAgICAgICBzX2x6Y250Q2hlY2tT
dGF0ZSA9IChjcHVpZFsyXSAmICgxIDw8IDUpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BV
SURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgfQorICAgIH0pOworfQogCitNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6Q1BVSURDaGVja1N0YXRlIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
X3NzZTJDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOwogTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c19zc2U0XzFDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOworTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6c19zc2U0XzJDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOwogTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c19hdnhDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOwogTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c19semNudENoZWNrU3RhdGUgPSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQ7CiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Q1BVSURDaGVja1N0YXRlIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpzX2JtaTFDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOwor
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6c19wb3BjbnRDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2Vk
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDBlYmU4NDkw
OTg0ODA2ZDIzYjg3MjEwNmI4M2I3ZDlkYjBjNmE0MjcuLmU4YzQwNmYxMzA4MzlhYmJjMjhjZGNl
YWJiY2Y4NWFhMGM1OWQyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTM4OSw2ICszODksMTgg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgY3R6QWZ0ZXJCc2Y8MzI+KGRzdCk7CiAgICAg
fQogCisgICAgdm9pZCBjb3VudFBvcHVsYXRpb24zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoc3VwcG9ydHNDb3VudFBvcHVsYXRpb24oKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnBvcGNudF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0KTsK
KyAgICB9CisKKyAgICB2b2lkIGNvdW50UG9wdWxhdGlvbjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdXBwb3J0c0NvdW50UG9wdWxhdGlv
bigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIucG9wY250X3JyKHNyYywgZHN0KTsKKyAgICB9CisK
ICAgICAvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBpbGxlZ2Fs
SW5zdHJ1Y3Rpb24oKQogICAgIHsKQEAgLTM4ODIsNDggKzM4OTQsMjEgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXI+IHsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCiAg
ICAgewogICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6
Tm90Q2hlY2tlZCkKLSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAgICAg
ICAgY29sbGVjdENQVUZlYXR1cmVzKCk7CiAgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ291bnRQb3B1bGF0aW9uKCkKICAg
ICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBh
bmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKHNfcG9wY250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5v
dENoZWNrZWQpCisgICAgICAgICAgICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsKKyAgICAgICAgcmV0
dXJuIHNfcG9wY250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzQVZYKCkKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIo
TVNWQykKLSAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywg
MHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09S
X0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92
bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwg
JSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0g
ICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAg
KTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsi
Ci0gICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAg
ICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAg
ICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVh
eCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCi0jZW5kaWYgLy8gQ09N
UElMRVIoR0NDX09SX0NMQU5HKQotICAgICAgICBzX3NzZTRfMUNoZWNrU3RhdGUgPSAoZmxhZ3Mg
JiAoMSA8PCAxOSkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNs
ZWFyOwotICAgICAgICBzX2F2eENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAyOCkpID8gQ1BV
SURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgICAgICAvLyBB
Vlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMgYW5kIHRob3NlIHJlZ3Jlc3Np
b25zIGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
dm9pZCBsZmVuY2UoKQpAQCAtNDAwNyw2MiArMzk5MiwxNSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewog
CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNMWkNOVCgpCiAgICAgewotICAgICAgICBpZiAoc19s
emNudENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKSB7Ci0gICAgICAg
ICAgICBpbnQgZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgICAgICBpbnQg
Y3B1SW5mb1s0XTsKLSAgICAgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHg4MDAwMDAwMSk7Ci0g
ICAgICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xB
TkcpCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGFzbSAoCi0gICAgICAgICAgICAgICAg
Im1vdmwgJDB4ODAwMDAwMDEsICUlZWF4OyIKLSAgICAgICAgICAgICAgICAiY3B1aWQ7IgotICAg
ICAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICAgICAgOiAiPWciIChm
bGFncykKLSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4
IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICApOwotI2Vsc2UKLSAgICAgICAgICAg
IGFzbSAoCi0gICAgICAgICAgICAgICAgIm1vdmwgJDB4ODAwMDAwMDEsICUlZWF4OyIKLSAgICAg
ICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgICAgICJjcHVpZDsiCi0gICAg
ICAgICAgICAgICAgInBvcGwgJSVlYng7IgotICAgICAgICAgICAgICAgICJtb3ZsICUlZWN4LCAl
MDsiCi0gICAgICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgICAgICA6Ci0g
ICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICAgICAg
KTsKLSNlbmRpZgotI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICAgICAgICAg
IHNfbHpjbnRDaGVja1N0YXRlID0gKGZsYWdzICYgMHgyMCkgPyBDUFVJRENoZWNrU3RhdGU6OlNl
dCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNfbHpj
bnRDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAgICAg
IGNvbGxlY3RDUFVGZWF0dXJlcygpOwogICAgICAgICByZXR1cm4gc19semNudENoZWNrU3RhdGUg
PT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9y
dHNCTUkxKCkKICAgICB7Ci0gICAgICAgIGlmIChzX2JtaTFDaGVja1N0YXRlID09IENQVUlEQ2hl
Y2tTdGF0ZTo6Tm90Q2hlY2tlZCkgewotICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBD
T01QSUxFUihNU1ZDKQotICAgICAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgICAgICBf
X2NwdWlkKGNwdUluZm8sIDB4ODAwMDAwMDEpOwotICAgICAgICAgICAgZmxhZ3MgPSBjcHVJbmZv
WzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgICAgICAgICAgYXNtICgKLSAg
ICAgICAgICAgICAgICAgIm1vdmwgJDB4NywgJSVlYXg7IgotICAgICAgICAgICAgICAgICAibW92
bCAkMHgwLCAlJWVjeDsiCi0gICAgICAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAg
ICAgICJtb3ZsICUlZWJ4LCAlMDsiCi0gICAgICAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0g
ICAgICAgICAgICAgICAgIDoKLSAgICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVl
Y3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICAgKTsKLSNlbmRpZiAvLyBDT01QSUxFUihHQ0Nf
T1JfQ0xBTkcpCi0gICAgICAgICAgICBzdGF0aWMgaW50IEJNSTFGZWF0dXJlQml0ID0gMSA8PCAz
OwotICAgICAgICAgICAgc19ibWkxQ2hlY2tTdGF0ZSA9IChmbGFncyAmIEJNSTFGZWF0dXJlQml0
KSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoc19ibWkxQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5v
dENoZWNrZWQpCisgICAgICAgICAgICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsKICAgICAgICAgcmV0
dXJuIHNfYm1pMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQogCkBA
IC00MjE1LDQ3ICs0MTUzLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgfQogCiAjZWxzZSAv
LyBPUyhNQUNfT1NfWCkKLQotICAgIGVudW0gU1NFMkNoZWNrU3RhdGUgewotICAgICAgICBOb3RD
aGVja2VkU1NFMiwKLSAgICAgICAgSGFzU1NFMiwKLSAgICAgICAgTm9TU0UyCi0gICAgfTsKLQog
ICAgIHN0YXRpYyBib29sIGlzU1NFMlByZXNlbnQoKQogICAgIHsKLSAgICAgICAgaWYgKHNfc3Nl
MkNoZWNrU3RhdGUgPT0gTm90Q2hlY2tlZFNTRTIpIHsKLSAgICAgICAgICAgIC8vIERlZmF1bHQg
dGhlIGZsYWdzIHZhbHVlIHRvIHplcm87IGlmIHRoZSBjb21waWxlciBpcwotICAgICAgICAgICAg
Ly8gbm90IE1TVkMgb3IgR0NDIHdlIHdpbGwgcmVhZCB0aGlzIGFzIFNTRTIgbm90IHByZXNlbnQu
Ci0gICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAg
ICAgICBfYXNtIHsKLSAgICAgICAgICAgICAgICBtb3YgZWF4LCAxIC8vIGNwdWlkIGZ1bmN0aW9u
IDEgZ2l2ZXMgdXMgdGhlIHN0YW5kYXJkIGZlYXR1cmUgc2V0Ci0gICAgICAgICAgICAgICAgY3B1
aWQ7Ci0gICAgICAgICAgICAgICAgbW92IGZsYWdzLCBlZHg7Ci0gICAgICAgICAgICB9Ci0jZWxp
ZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0gICAgICAgICAgICBhc20gKAotICAgICAgICAgICAg
ICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAgICAgICJwdXNobCAlJWVieDsi
Ci0gICAgICAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAgICAgICJwb3BsICUlZWJ4
OyIKLSAgICAgICAgICAgICAgICAgIm1vdmwgJSVlZHgsICUwOyIKLSAgICAgICAgICAgICAgICAg
OiAiPWciIChmbGFncykKLSAgICAgICAgICAgICAgICAgOgotICAgICAgICAgICAgICAgICA6ICIl
ZWF4IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBTU0UyRmVhdHVyZUJpdCA9IDEgPDwgMjY7Ci0gICAgICAg
ICAgICBzX3NzZTJDaGVja1N0YXRlID0gKGZsYWdzICYgU1NFMkZlYXR1cmVCaXQpID8gSGFzU1NF
MiA6IE5vU1NFMjsKLSAgICAgICAgfQotICAgICAgICAvLyBPbmx5IGNoZWNrIG9uY2UuCi0gICAg
ICAgIEFTU0VSVChzX3NzZTJDaGVja1N0YXRlICE9IE5vdENoZWNrZWRTU0UyKTsKLQotICAgICAg
ICByZXR1cm4gc19zc2UyQ2hlY2tTdGF0ZSA9PSBIYXNTU0UyOworICAgICAgICBpZiAoc19zc2Uy
Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAgICBj
b2xsZWN0Q1BVRmVhdHVyZXMoKTsKKyAgICAgICAgcmV0dXJuIHNfc3NlMkNoZWNrU3RhdGUgPT0g
Q1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQotICAgIAotICAgIEpTX0VYUE9SVERBVEEgc3Rh
dGljIFNTRTJDaGVja1N0YXRlIHNfc3NlMkNoZWNrU3RhdGU7CiAKICNlbmRpZiAvLyBPUyhNQUNf
T1NfWCkKICNlbGlmICFkZWZpbmVkKE5ERUJVRykgLy8gQ1BVKFg4NikKQEAgLTQyNjksMTUgKzQx
NzIsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogI2VuZGlmCiAKKyAgICB1c2luZyBDUFVJRCA9
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+OworICAgIHN0YXRpYyBDUFVJRCBnZXRDUFVJRCh1bnNp
Z25lZCBsZXZlbCk7CisgICAgc3RhdGljIENQVUlEIGdldENQVUlERXgodW5zaWduZWQgbGV2ZWws
IHVuc2lnbmVkIGNvdW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb2xs
ZWN0Q1BVRmVhdHVyZXMoKTsKKwogICAgIGVudW0gY2xhc3MgQ1BVSURDaGVja1N0YXRlIHsKICAg
ICAgICAgTm90Q2hlY2tlZCwKICAgICAgICAgQ2xlYXIsCiAgICAgICAgIFNldAogICAgIH07Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENQVUlEQ2hlY2tTdGF0ZSBzX3NzZTJDaGVja1N0
YXRlOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJRENoZWNrU3RhdGUgc19zc2U0
XzFDaGVja1N0YXRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJRENoZWNrU3Rh
dGUgc19zc2U0XzJDaGVja1N0YXRlOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJ
RENoZWNrU3RhdGUgc19hdnhDaGVja1N0YXRlOwotICAgIHN0YXRpYyBDUFVJRENoZWNrU3RhdGUg
c19ibWkxQ2hlY2tTdGF0ZTsKLSAgICBzdGF0aWMgQ1BVSURDaGVja1N0YXRlIHNfbHpjbnRDaGVj
a1N0YXRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJRENoZWNrU3RhdGUgc19s
emNudENoZWNrU3RhdGU7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENQVUlEQ2hlY2tT
dGF0ZSBzX2JtaTFDaGVja1N0YXRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJ
RENoZWNrU3RhdGUgc19wb3BjbnRDaGVja1N0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgKaW5kZXggZDQwYzczMWQzZTc1ZjE4ZDdmYjE2Yjk3MTVkNmYzMGYzOGZjYTM4
YS4uNGY2YjdmMjZhYWI1MmQxMjAyNzA0MTEyMzg2NjY1YWEyZDk0ZjBkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aApAQCAtNDcyLDYgKzQ3MiwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiAgICAgICAgIGN0ekFmdGVyQnNmPDY0Pihkc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgY291bnRQb3B1bGF0aW9uNjQoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN1cHBvcnRzQ291bnRQb3B1bGF0
aW9uKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5wb3BjbnRxX3JyKHNyYywgZHN0KTsKKyAgICB9
CisKKyAgICB2b2lkIGNvdW50UG9wdWxhdGlvbjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdXBwb3J0c0NvdW50UG9wdWxhdGlvbigpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIucG9wY250cV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0KTsK
KyAgICB9CisKICAgICB2b2lkIGxzaGlmdDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNobHFfaThyKGltbS5tX3ZhbHVlLCBk
ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
CmluZGV4IGUyMGM2YTljZmJhZWZjMTExMWQxY2RhYzA2ZDNiN2Y4MDI1OGRiNGYuLjRlNjAyNjYw
NjIzYTM3YzZhMzE2Mjg0OWZiNTNlYWMxYjI3ZmE1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMzI2LDYgKzMyNiw3IEBAIGNsYXNz
IFg4NkFzc2VtYmxlciB7CiAgICAgICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAogICAg
ICAgICBPUDJfQ01QWENIRyAgICAgICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIg
ICAgICA9IDB4QjYsCisgICAgICAgIE9QMl9QT1BDTlQgICAgICAgICAgPSAweEI4LAogICAgICAg
ICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAg
ICA9IDB4QkMsCiAgICAgICAgIE9QMl9CU1IgICAgICAgICAgICAgPSAweEJELApAQCAtMTY1MSw2
ICsxNjUyLDMyIEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAgICAgfQogI2VuZGlmCiAKKyAgICB2
b2lkIHBvcGNudF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfUE9QQ05ULCBkc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBwb3Bj
bnRfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKE9QMl9QT1BDTlQsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyNpZiBDUFUoWDg2XzY0KQorICAgIHZvaWQgcG9wY250cV9ycihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9G
Myk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9QT1BDTlQsIGRzdCwgc3Jj
KTsKKyAgICB9CisKKyAgICB2b2lkIHBvcGNudHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1BPUENOVCwg
ZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHRlbXBs
YXRlPEdyb3VwT3Bjb2RlSUQgb3A+CiAgICAgdm9pZCBzaGlmdEluc3RydWN0aW9uMzIoaW50IGlt
bSwgUmVnaXN0ZXJJRCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNWM5ZjQ3YTU0YTg3N2IxOWI3MzMxNzg4MjI2NGI1NTFi
NDk0MzdiYS4uYjIyNTJmYWUxNjlkYjY0MTk3OTU2YjU1ODhlYTBjZjRiMWMzZDIzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAt
MTU2Nyw4ICsxNTY3LDE5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRD
dHo+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlCiB0ZW1wbGF0ZTw+CiBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyUG9wY250PihFeHByZXNzaW9uVHlw
ZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBwb3BjbnQgaW5zdHJ1Y3Rpb24gaWYgU1NFNCBp
cyBhdmFpbGFibGUgYnV0IHdlIGRvbid0IGhhdmUgY29kZSB0byBkZXRlY3QgU1NFNCB5ZXQuCi0g
ICAgLy8gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzYz
CisjaWYgQ1BVKFg4Nl82NCkKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzQ291bnRQ
b3B1bGF0aW9uKCkpIHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgSW50MzIsIG9y
aWdpbigpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZywgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgaml0LmNvdW50UG9wdWxhdGlvbjMyKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZl
Y3RzOjpub25lKCk7CisgICAgICAgIHJlc3VsdCA9IHBhdGNocG9pbnQ7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorI2VuZGlmCisKICAgICB1aW50MzJfdCAoKnBvcGNvdW50KShpbnQzMl90
KSA9IFtdIChpbnQzMl90IHZhbHVlKSAtPiB1aW50MzJfdCB7IHJldHVybiBfX2J1aWx0aW5fcG9w
Y291bnQodmFsdWUpOyB9OwogICAgIFZhbHVlKiBmdW5jQWRkcmVzcyA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgYml0d2lzZV9jYXN0
PHZvaWQqPihwb3Bjb3VudCkpOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgb3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwg
ZnVuY0FkZHJlc3MsIGFyZyk7CkBAIC0xNTc4LDggKzE1ODksMTkgQEAgYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNz
aW9uVHlwZSYKIHRlbXBsYXRlPD4KIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJ
NjRQb3BjbnQ+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlIHBvcGNu
dCBpbnN0cnVjdGlvbiBpZiBTU0U0IGlzIGF2YWlsYWJsZSBidXQgd2UgZG9uJ3QgaGF2ZSBjb2Rl
IHRvIGRldGVjdCBTU0U0IHlldC4KLSAgICAvLyBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjUzNjMKKyNpZiBDUFUoWDg2XzY0KQorICAgIGlmIChNYWNyb0Fz
c2VtYmxlcjo6c3VwcG9ydHNDb3VudFBvcHVsYXRpb24oKSkgeworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4obV9wcm9jLCBJbnQ2NCwgb3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBqaXQuY291bnRQb3B1bGF0aW9uNjQocGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgcmVzdWx0ID0gcGF0
Y2hwb2ludDsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisjZW5kaWYKKwogICAgIHVpbnQ2
NF90ICgqcG9wY291bnQpKGludDY0X3QpID0gW10gKGludDY0X3QgdmFsdWUpIC0+IHVpbnQ2NF90
IHsgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudGxsKHZhbHVlKTsgfTsKICAgICBWYWx1ZSogZnVu
Y0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4ocG9wY291bnQpKTsKICAgICByZXN1bHQg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50NjQsIG9y
aWdpbigpLCBFZmZlY3RzOjpub25lKCksIGZ1bmNBZGRyZXNzLCBhcmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCmluZGV4
IDAzZDM4MDg0YTYyOGM1MWU5NWViOTE0NDQxYTEwYTg5Y2IwZDM2MjkuLmYyM2VjNThkZDZkMjU4
YjgyOGMyM2MzY2NiZThiMTQ4ODAzNzI0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F0
b21pY3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTMwNSwxOCArMzA1LDYg
QEAgaW5saW5lIHZvaWQgeDg2X2NwdWlkKCkKICNpZiBPUyhXSU5ET1dTKQogICAgIGludCBpbmZv
WzRdOwogICAgIF9fY3B1aWQoaW5mbywgMCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIC8vIEdDQyA0
Ljkgb24geDg2IGluIFBJQyBtb2RlIGNhbid0IHVzZSAlZWJ4LCBzbyB3ZSBoYXZlIHRvIHNhdmUg
YW5kIHJlc3RvcmUgaXQgbWFudWFsbHkuCi0gICAgLy8gQnV0IHNpbmNlIHdlIGRvbid0IGNhcmUg
YWJvdXQgd2hhdCBjcHVpZCByZXR1cm5zICh3ZSB1c2UgaXQgYXMgYSBzZXJpYWxpemluZyBpbnN0
cnVjdGlvbiksCi0gICAgLy8gd2UgY2FuIHNpbXBseSB0aHJvdyBhd2F5IHdoYXQgY3B1aWQgcHV0
IGluICVlYnguCi0gICAgaW50cHRyX3QgYSA9IDAsIGMsIGQ7Ci0gICAgYXNtIHZvbGF0aWxlKAot
ICAgICAgICAicHVzaGwgJSVlYnhcblx0IgotICAgICAgICAiY3B1aWRcblx0IgotICAgICAgICAi
cG9wbCAlJWVieFxuXHQiCi0gICAgICAgIDogIithIihhKSwgIj1jIihjKSwgIj1kIihkKQotICAg
ICAgICA6Ci0gICAgICAgIDogIm1lbW9yeSIpOwogI2Vsc2UKICAgICBpbnRwdHJfdCBhID0gMCwg
YiwgYywgZDsKICAgICBhc20gdm9sYXRpbGUoCg==
</data>
<flag name="review"
          id="355030"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336526</attachid>
            <date>2018-03-26 11:06:53 -0700</date>
            <delta_ts>2018-03-26 11:41:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-165363-20180327030652.patch</filename>
            <type>text/plain</type>
            <size>20836</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MmNlZTg2MWU1YTU0M2I4Mjg4NGQwNWQzNmZkM2I1NTI3ZDc4NDgzLi5jMTg0OTk2YzdiZmQxZDJi
MDQyOTJjMDQwOGIxYjJlODQ2MmQ1M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOC0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgaGF2ZSBTU0U0IGRldGVjdGlvbiBpbiB0aGUgWDg2
IE1hY3JvQXNzZW1ibGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1MzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHBvcGNudCBzdXBwb3J0IHRvIFdBU00gaW4geDg2XzY0
IGVudmlyb25tZW50LgorICAgICAgICBUbyB1c2UgaXQsIHdlIHJlZmFjdG9yIG91ciBDUFVJRCBm
ZWF0dXJlIGRldGVjdGlvbiBpbiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi4KKyAgICAgICAgT3Vy
IHNwZWMtdGVzdHMgYWxyZWFkeSBjb3ZlciBwb3BjbnQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdXBwb3J0c0NvdW50UG9wdWxhdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmdldENQVUlEKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Omdl
dENQVUlERXgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29sbGVj
dENQVUZlYXR1cmVzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNvdW50UG9wdWxh
dGlvbjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRz
RmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OnN1cHBvcnRzQ291bnRQb3B1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzTFpDTlQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6c3VwcG9ydHNCTUkxKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmlzU1NFMlByZXNlbnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6dXBkYXRlRWF4MUVjeEZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmNvdW50UG9wdWxhdGlvbjY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cG9wY250X3JyKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpwb3BjbnRfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnBvcGNudHFfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnBvcGNudHFfbXIp
OgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4pOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcGNudD4pOgorCiAy
MDE4LTAzLTI1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCB0eXBvIGluIEpTQyBvcHRpb24gbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwMTE3NDYzMTZkOTlkNzk0NjAxNDU4NjU0
MDVjYjA5N2E4NjVkYzI1Li42NDY1MWRiZTczZTlkYmRjMjNiNDU3MjM5OWE0YmRmNzc3NjM4MmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAzLTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIFNTRTQgZGV0ZWN0aW9u
IGluIHRoZSBYODYgTWFjcm9Bc3NlbWJsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHQ0MgNSBzdXBwb3J0cyBjbG9iYmVyaW5nIFBJQyByZWdpc3Rl
cnMgaW4gaW5saW5lIEFTTSBbMSwyXS4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2NjLmdudS5v
cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ3NjAyCisgICAgICAgIFsyXTogaHR0cHM6Ly9n
Y2MuZ251Lm9yZy92aWV3Y3ZzL2djYz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTIxNjE1NAorCisg
ICAgICAgICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURjo6eDg2X2NwdWlkKToKKwogMjAx
OC0wMy0yNSAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBXZWJQcm9jZXNzIG1lbW9yeSBtb25pdG9yOiB1c2UgJXp1IGZvcm1hdCBzcGVj
aWZpZXIgZm9yIHNpemVfdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA3ZjQ0OTdmODNmZTY0ZmU4MTA0MDIyNzI5
ZjM5NzAxY2JhZTgzZGZmLi4zMTlkOWVhNzY4MDgzM2I0ZmIwNThhODljZTBmMTk5NGVkOTc4MjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtMTU3NSw2ICsxNTc1LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ291bnRQb3B1bGF0aW9uKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZU
cnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmNwcAppbmRleCBjOTBiNGE3ZjEwODZkNTVkOWI0N2NhOGY5ZjUwNjA0ZmI1OWNhOTVk
Li40M2I4NjI1MTcxNjQzMjAyZDMwNjAzNTQzOWY3ZDM0OWFjZGM0NjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmNwcApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKKyNpZiBDT01QSUxFUihNU1ZDKQorI2luY2x1
ZGUgPGludHJpbi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKE1B
U01fUFJPQkUpCkBAIC03NTcsMTQgKzc2MSw1NiBAQCB2b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9i
ZShQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZykKIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUFTTV9QUk9CRSkKIAotI2lmIENQVShYODYpICYmICFPUyhNQUNfT1NfWCkKLU1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c19zc2UyQ2hlY2tTdGF0ZSA9IE5vdENoZWNrZWRTU0UyOworTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OkNQVUlEIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpnZXRDUFVJRCh1bnNpZ25lZCBsZXZl
bCkKK3sKKyAgICByZXR1cm4gZ2V0Q1BVSURFeChsZXZlbCwgMCk7Cit9CisKK01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpDUFVJRCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Z2V0Q1BVSURFeCh1
bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgY291bnQpCit7CisgICAgQ1BVSUQgcmVzdWx0IHsgfTsK
KyNpZiBDT01QSUxFUihNU1ZDKQorICAgIF9fY3B1aWRleChiaXR3aXNlX2Nhc3Q8aW50Kj4ocmVz
dWx0LmRhdGEoKSksIGxldmVsLCBjb3VudCk7CisjZWxzZQorICAgIF9fYXNtX18gKAorICAgICAg
ICAiY3B1aWRcbiIKKyAgICAgICAgOiAiPWEiKHJlc3VsdFswXSksICI9YiIocmVzdWx0WzFdKSwg
Ij1jIihyZXN1bHRbMl0pLCAiPWQiKHJlc3VsdFszXSkKKyAgICAgICAgOiAiMCIobGV2ZWwpLCAi
MiIoY291bnQpCisgICAgKTsKICNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNvbGxlY3RDUFVGZWF0dXJlcygpCit7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
W10geworICAgICAgICB7CisgICAgICAgICAgICBDUFVJRCBjcHVpZCA9IGdldENQVUlEKDB4MSk7
CisgICAgICAgICAgICBzX3NzZTJDaGVja1N0YXRlID0gKGNwdWlkWzNdICYgKDEgPDwgMjYpKSA/
IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAg
ICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChjcHVpZFsyXSAmICgxIDw8IDE5KSkgPyBDUFVJRENo
ZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgICAgICAgICBzX3Nz
ZTRfMkNoZWNrU3RhdGUgPSAoY3B1aWRbMl0gJiAoMSA8PCAyMCkpID8gQ1BVSURDaGVja1N0YXRl
OjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgICAgICAgICAgc19wb3BjbnRDaGVj
a1N0YXRlID0gKGNwdWlkWzJdICYgKDEgPDwgMjMpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDog
Q1BVSURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChj
cHVpZFsyXSAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tT
dGF0ZTo6Q2xlYXI7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgQ1BVSUQgY3B1
aWQgPSBnZXRDUFVJRCgweDcpOworICAgICAgICAgICAgc19ibWkxQ2hlY2tTdGF0ZSA9IChjcHVp
ZFsyXSAmICgxIDw8IDMpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRl
OjpDbGVhcjsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBDUFVJRCBjcHVpZCA9
IGdldENQVUlEKDB4ODAwMDAwMDEpOworICAgICAgICAgICAgc19semNudENoZWNrU3RhdGUgPSAo
Y3B1aWRbMl0gJiAoMSA8PCA1KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tT
dGF0ZTo6Q2xlYXI7CisgICAgICAgIH0KKyAgICB9KTsKK30KIAorTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c19zc2UyQ2hl
Y2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpDUFVJRENoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNfc3NlNF8x
Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKK01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpDUFVJRENoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNfc3Nl
NF8yQ2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpDUFVJRENoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNf
YXZ4Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpDUFVJRENoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNf
bHpjbnRDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOwogTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c19ibWkxQ2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKK01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpDUFVJRENoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnNfcG9wY250Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAwZWJlODQ5MDk4NDgwNmQy
M2I4NzIxMDZiODNiN2Q5ZGIwYzZhNDI3Li43MTcxZmM0Y2ViODYwNWI3ZDBhYTgyNDlhMGMyYmRm
YjRlODc4NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yOSwxMiArMjksOSBAQAogCiAjaW5j
bHVkZSAiWDg2QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgQ09N
UElMRVIoTVNWQykKLSNpbmNsdWRlIDxpbnRyaW4uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSlND
IHsKIAogdXNpbmcgQXNzZW1ibGVyID0gVEFSR0VUX0FTU0VNQkxFUjsKQEAgLTM4OSw2ICszODYs
MTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgY3R6QWZ0ZXJCc2Y8MzI+KGRzdCk7CiAg
ICAgfQogCisgICAgdm9pZCBjb3VudFBvcHVsYXRpb24zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc3VwcG9ydHNDb3VudFBvcHVsYXRpb24oKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnBvcGNudF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvdW50UG9wdWxhdGlvbjMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdXBwb3J0c0NvdW50UG9wdWxh
dGlvbigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIucG9wY250X3JyKHNyYywgZHN0KTsKKyAgICB9
CisKICAgICAvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBpbGxl
Z2FsSW5zdHJ1Y3Rpb24oKQogICAgIHsKQEAgLTM4ODIsNDggKzM4OTEsMjEgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygp
CiAgICAgewogICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0
ZTo6Tm90Q2hlY2tlZCkKLSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAg
ICAgICAgY29sbGVjdENQVUZlYXR1cmVzKCk7CiAgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNr
U3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNBVlgoKQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ291bnRQb3B1bGF0aW9uKCkK
ICAgICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9u
cyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKHNfcG9wY250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6
Ok5vdENoZWNrZWQpCisgICAgICAgICAgICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsKKyAgICAgICAg
cmV0dXJuIHNfcG9wY250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzQVZYKCkKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElM
RVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5m
bywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0ND
X09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAi
bW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1v
dmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6
Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAg
ICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVh
eDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNwdWlkOyIKLSAg
ICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0g
ICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAi
JWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCi0jZW5kaWYgLy8g
Q09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgICAgICBzX3NzZTRfMUNoZWNrU3RhdGUgPSAoZmxh
Z3MgJiAoMSA8PCAxOSkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6
OkNsZWFyOwotICAgICAgICBzX2F2eENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAyOCkpID8g
Q1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgICAgICAv
LyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMgYW5kIHRob3NlIHJlZ3Jl
c3Npb25zIGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgdm9pZCBsZmVuY2UoKQpAQCAtNDAwNyw2MiArMzk4OSwxNSBAQCBjbGFzcyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNMWkNOVCgpCiAgICAgewotICAgICAgICBpZiAo
c19semNudENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKSB7Ci0gICAg
ICAgICAgICBpbnQgZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgICAgICBp
bnQgY3B1SW5mb1s0XTsKLSAgICAgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHg4MDAwMDAwMSk7
Ci0gICAgICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1Jf
Q0xBTkcpCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGFzbSAoCi0gICAgICAgICAgICAg
ICAgIm1vdmwgJDB4ODAwMDAwMDEsICUlZWF4OyIKLSAgICAgICAgICAgICAgICAiY3B1aWQ7Igot
ICAgICAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICAgICAgOiAiPWci
IChmbGFncykKLSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAgICAgICAgOiAiJWVheCIsICIl
ZWJ4IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICApOwotI2Vsc2UKLSAgICAgICAg
ICAgIGFzbSAoCi0gICAgICAgICAgICAgICAgIm1vdmwgJDB4ODAwMDAwMDEsICUlZWF4OyIKLSAg
ICAgICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgICAgICJjcHVpZDsiCi0g
ICAgICAgICAgICAgICAgInBvcGwgJSVlYng7IgotICAgICAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCi0gICAgICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgICAgICA6
Ci0gICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICAg
ICAgKTsKLSNlbmRpZgotI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICAgICAg
ICAgIHNfbHpjbnRDaGVja1N0YXRlID0gKGZsYWdzICYgMHgyMCkgPyBDUFVJRENoZWNrU3RhdGU6
OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNf
bHpjbnRDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAg
ICAgIGNvbGxlY3RDUFVGZWF0dXJlcygpOwogICAgICAgICByZXR1cm4gc19semNudENoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNCTUkxKCkKICAgICB7Ci0gICAgICAgIGlmIChzX2JtaTFDaGVja1N0YXRlID09IENQVUlE
Q2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkgewotICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKLSNp
ZiBDT01QSUxFUihNU1ZDKQotICAgICAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgICAg
ICBfX2NwdWlkKGNwdUluZm8sIDB4ODAwMDAwMDEpOwotICAgICAgICAgICAgZmxhZ3MgPSBjcHVJ
bmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgICAgICAgICAgYXNtICgK
LSAgICAgICAgICAgICAgICAgIm1vdmwgJDB4NywgJSVlYXg7IgotICAgICAgICAgICAgICAgICAi
bW92bCAkMHgwLCAlJWVjeDsiCi0gICAgICAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAg
ICAgICAgICJtb3ZsICUlZWJ4LCAlMDsiCi0gICAgICAgICAgICAgICAgIDogIj1nIiAoZmxhZ3Mp
Ci0gICAgICAgICAgICAgICAgIDoKLSAgICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4Iiwg
IiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICAgKTsKLSNlbmRpZiAvLyBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCi0gICAgICAgICAgICBzdGF0aWMgaW50IEJNSTFGZWF0dXJlQml0ID0gMSA8
PCAzOwotICAgICAgICAgICAgc19ibWkxQ2hlY2tTdGF0ZSA9IChmbGFncyAmIEJNSTFGZWF0dXJl
Qml0KSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoc19ibWkxQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6
Ok5vdENoZWNrZWQpCisgICAgICAgICAgICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsKICAgICAgICAg
cmV0dXJuIHNfYm1pMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQog
CkBAIC00MjE1LDQ3ICs0MTUwLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDog
cHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgfQogCiAjZWxz
ZSAvLyBPUyhNQUNfT1NfWCkKLQotICAgIGVudW0gU1NFMkNoZWNrU3RhdGUgewotICAgICAgICBO
b3RDaGVja2VkU1NFMiwKLSAgICAgICAgSGFzU1NFMiwKLSAgICAgICAgTm9TU0UyCi0gICAgfTsK
LQogICAgIHN0YXRpYyBib29sIGlzU1NFMlByZXNlbnQoKQogICAgIHsKLSAgICAgICAgaWYgKHNf
c3NlMkNoZWNrU3RhdGUgPT0gTm90Q2hlY2tlZFNTRTIpIHsKLSAgICAgICAgICAgIC8vIERlZmF1
bHQgdGhlIGZsYWdzIHZhbHVlIHRvIHplcm87IGlmIHRoZSBjb21waWxlciBpcwotICAgICAgICAg
ICAgLy8gbm90IE1TVkMgb3IgR0NDIHdlIHdpbGwgcmVhZCB0aGlzIGFzIFNTRTIgbm90IHByZXNl
bnQuCi0gICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAg
ICAgICAgICBfYXNtIHsKLSAgICAgICAgICAgICAgICBtb3YgZWF4LCAxIC8vIGNwdWlkIGZ1bmN0
aW9uIDEgZ2l2ZXMgdXMgdGhlIHN0YW5kYXJkIGZlYXR1cmUgc2V0Ci0gICAgICAgICAgICAgICAg
Y3B1aWQ7Ci0gICAgICAgICAgICAgICAgbW92IGZsYWdzLCBlZHg7Ci0gICAgICAgICAgICB9Ci0j
ZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0gICAgICAgICAgICBhc20gKAotICAgICAgICAg
ICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAgICAgICJwdXNobCAlJWVi
eDsiCi0gICAgICAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAgICAgICJwb3BsICUl
ZWJ4OyIKLSAgICAgICAgICAgICAgICAgIm1vdmwgJSVlZHgsICUwOyIKLSAgICAgICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgICAgICAgOgotICAgICAgICAgICAgICAgICA6
ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICAgKTsKLSNlbmRpZgotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBTU0UyRmVhdHVyZUJpdCA9IDEgPDwgMjY7Ci0gICAg
ICAgICAgICBzX3NzZTJDaGVja1N0YXRlID0gKGZsYWdzICYgU1NFMkZlYXR1cmVCaXQpID8gSGFz
U1NFMiA6IE5vU1NFMjsKLSAgICAgICAgfQotICAgICAgICAvLyBPbmx5IGNoZWNrIG9uY2UuCi0g
ICAgICAgIEFTU0VSVChzX3NzZTJDaGVja1N0YXRlICE9IE5vdENoZWNrZWRTU0UyKTsKLQotICAg
ICAgICByZXR1cm4gc19zc2UyQ2hlY2tTdGF0ZSA9PSBIYXNTU0UyOworICAgICAgICBpZiAoc19z
c2UyQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAg
ICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsKKyAgICAgICAgcmV0dXJuIHNfc3NlMkNoZWNrU3RhdGUg
PT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQotICAgIAotICAgIEpTX0VYUE9SVERBVEEg
c3RhdGljIFNTRTJDaGVja1N0YXRlIHNfc3NlMkNoZWNrU3RhdGU7CiAKICNlbmRpZiAvLyBPUyhN
QUNfT1NfWCkKICNlbGlmICFkZWZpbmVkKE5ERUJVRykgLy8gQ1BVKFg4NikKQEAgLTQyNjksMTUg
KzQxNjksMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogI2VuZGlmCiAKKyAgICB1c2luZyBDUFVJ
RCA9IHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+OworICAgIHN0YXRpYyBDUFVJRCBnZXRDUFVJRCh1
bnNpZ25lZCBsZXZlbCk7CisgICAgc3RhdGljIENQVUlEIGdldENQVUlERXgodW5zaWduZWQgbGV2
ZWwsIHVuc2lnbmVkIGNvdW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBj
b2xsZWN0Q1BVRmVhdHVyZXMoKTsKKwogICAgIGVudW0gY2xhc3MgQ1BVSURDaGVja1N0YXRlIHsK
ICAgICAgICAgTm90Q2hlY2tlZCwKICAgICAgICAgQ2xlYXIsCiAgICAgICAgIFNldAogICAgIH07
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENQVUlEQ2hlY2tTdGF0ZSBzX3NzZTJDaGVj
a1N0YXRlOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJRENoZWNrU3RhdGUgc19z
c2U0XzFDaGVja1N0YXRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJRENoZWNr
U3RhdGUgc19zc2U0XzJDaGVja1N0YXRlOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBD
UFVJRENoZWNrU3RhdGUgc19hdnhDaGVja1N0YXRlOwotICAgIHN0YXRpYyBDUFVJRENoZWNrU3Rh
dGUgc19ibWkxQ2hlY2tTdGF0ZTsKLSAgICBzdGF0aWMgQ1BVSURDaGVja1N0YXRlIHNfbHpjbnRD
aGVja1N0YXRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDUFVJRENoZWNrU3RhdGUg
c19semNudENoZWNrU3RhdGU7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENQVUlEQ2hl
Y2tTdGF0ZSBzX2JtaTFDaGVja1N0YXRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBD
UFVJRENoZWNrU3RhdGUgc19wb3BjbnRDaGVja1N0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKaW5kZXggZDQwYzczMWQzZTc1ZjE4ZDdmYjE2Yjk3MTVkNmYzMGYzOGZj
YTM4YS4uNGY2YjdmMjZhYWI1MmQxMjAyNzA0MTEyMzg2NjY1YWEyZDk0ZjBkMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaApAQCAtNDcyLDYgKzQ3MiwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiAgICAgICAgIGN0ekFmdGVyQnNmPDY0Pihk
c3QpOwogICAgIH0KIAorICAgIHZvaWQgY291bnRQb3B1bGF0aW9uNjQoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN1cHBvcnRzQ291bnRQb3B1
bGF0aW9uKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5wb3BjbnRxX3JyKHNyYywgZHN0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvdW50UG9wdWxhdGlvbjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdXBwb3J0c0NvdW50UG9wdWxhdGlvbigpKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIucG9wY250cV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0
KTsKKyAgICB9CisKICAgICB2b2lkIGxzaGlmdDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNobHFfaThyKGltbS5tX3ZhbHVl
LCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCmluZGV4IGUyMGM2YTljZmJhZWZjMTExMWQxY2RhYzA2ZDNiN2Y4MDI1OGRiNGYuLjRlNjAy
NjYwNjIzYTM3YzZhMzE2Mjg0OWZiNTNlYWMxYjI3ZmE1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMzI2LDYgKzMyNiw3IEBAIGNs
YXNzIFg4NkFzc2VtYmxlciB7CiAgICAgICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAog
ICAgICAgICBPUDJfQ01QWENIRyAgICAgICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2
RWIgICAgICA9IDB4QjYsCisgICAgICAgIE9QMl9QT1BDTlQgICAgICAgICAgPSAweEI4LAogICAg
ICAgICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAg
ICAgICA9IDB4QkMsCiAgICAgICAgIE9QMl9CU1IgICAgICAgICAgICAgPSAweEJELApAQCAtMTY1
MSw2ICsxNjUyLDMyIEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAgICAgfQogI2VuZGlmCiAKKyAg
ICB2b2lkIHBvcGNudF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcChPUDJfUE9QQ05ULCBkc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBw
b3BjbnRfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9QT1BDTlQsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIHZvaWQgcG9wY250cV9ycihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NT
RV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9QT1BDTlQsIGRzdCwg
c3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHBvcGNudHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZp
eChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1BPUENO
VCwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHRl
bXBsYXRlPEdyb3VwT3Bjb2RlSUQgb3A+CiAgICAgdm9pZCBzaGlmdEluc3RydWN0aW9uMzIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNWM5ZjQ3YTU0YTg3N2IxOWI3MzMxNzg4MjI2NGI1
NTFiNDk0MzdiYS4uYjIyNTJmYWUxNjlkYjY0MTk3OTU2YjU1ODhlYTBjZjRiMWMzZDIzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApA
QCAtMTU2Nyw4ICsxNTY3LDE5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJ
NjRDdHo+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlCiB0ZW1wbGF0ZTw+
CiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyUG9wY250PihFeHByZXNzaW9u
VHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBwb3BjbnQgaW5zdHJ1Y3Rpb24gaWYgU1NF
NCBpcyBhdmFpbGFibGUgYnV0IHdlIGRvbid0IGhhdmUgY29kZSB0byBkZXRlY3QgU1NFNCB5ZXQu
Ci0gICAgLy8gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
MzYzCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzQ291
bnRQb3B1bGF0aW9uKCkpIHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgSW50MzIs
IG9yaWdpbigpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZywgVmFsdWVSZXA6OlNv
bWVSZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgaml0LmNvdW50UG9wdWxhdGlvbjMyKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBF
ZmZlY3RzOjpub25lKCk7CisgICAgICAgIHJlc3VsdCA9IHBhdGNocG9pbnQ7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorI2VuZGlmCisKICAgICB1aW50MzJfdCAoKnBvcGNvdW50KShpbnQz
Ml90KSA9IFtdIChpbnQzMl90IHZhbHVlKSAtPiB1aW50MzJfdCB7IHJldHVybiBfX2J1aWx0aW5f
cG9wY291bnQodmFsdWUpOyB9OwogICAgIFZhbHVlKiBmdW5jQWRkcmVzcyA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgYml0d2lzZV9j
YXN0PHZvaWQqPihwb3Bjb3VudCkpOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgb3JpZ2luKCksIEVmZmVjdHM6Om5vbmUo
KSwgZnVuY0FkZHJlc3MsIGFyZyk7CkBAIC0xNTc4LDggKzE1ODksMTkgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHBy
ZXNzaW9uVHlwZSYKIHRlbXBsYXRlPD4KIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBl
OjpJNjRQb3BjbnQ+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlIHBv
cGNudCBpbnN0cnVjdGlvbiBpZiBTU0U0IGlzIGF2YWlsYWJsZSBidXQgd2UgZG9uJ3QgaGF2ZSBj
b2RlIHRvIGRldGVjdCBTU0U0IHlldC4KLSAgICAvLyBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzNjMKKyNpZiBDUFUoWDg2XzY0KQorICAgIGlmIChNYWNy
b0Fzc2VtYmxlcjo6c3VwcG9ydHNDb3VudFBvcHVsYXRpb24oKSkgeworICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4obV9wcm9jLCBJbnQ2NCwgb3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBqaXQuY291bnRQb3B1bGF0aW9uNjQo
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgcmVzdWx0ID0g
cGF0Y2hwb2ludDsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisjZW5kaWYKKwogICAgIHVp
bnQ2NF90ICgqcG9wY291bnQpKGludDY0X3QpID0gW10gKGludDY0X3QgdmFsdWUpIC0+IHVpbnQ2
NF90IHsgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudGxsKHZhbHVlKTsgfTsKICAgICBWYWx1ZSog
ZnVuY0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4ocG9wY291bnQpKTsKICAgICByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50NjQs
IG9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksIGZ1bmNBZGRyZXNzLCBhcmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCmlu
ZGV4IDAzZDM4MDg0YTYyOGM1MWU5NWViOTE0NDQxYTEwYTg5Y2IwZDM2MjkuLmYyM2VjNThkZDZk
MjU4YjgyOGMyM2MzY2NiZThiMTQ4ODAzNzI0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0F0b21pY3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTMwNSwxOCArMzA1
LDYgQEAgaW5saW5lIHZvaWQgeDg2X2NwdWlkKCkKICNpZiBPUyhXSU5ET1dTKQogICAgIGludCBp
bmZvWzRdOwogICAgIF9fY3B1aWQoaW5mbywgMCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIC8vIEdD
QyA0Ljkgb24geDg2IGluIFBJQyBtb2RlIGNhbid0IHVzZSAlZWJ4LCBzbyB3ZSBoYXZlIHRvIHNh
dmUgYW5kIHJlc3RvcmUgaXQgbWFudWFsbHkuCi0gICAgLy8gQnV0IHNpbmNlIHdlIGRvbid0IGNh
cmUgYWJvdXQgd2hhdCBjcHVpZCByZXR1cm5zICh3ZSB1c2UgaXQgYXMgYSBzZXJpYWxpemluZyBp
bnN0cnVjdGlvbiksCi0gICAgLy8gd2UgY2FuIHNpbXBseSB0aHJvdyBhd2F5IHdoYXQgY3B1aWQg
cHV0IGluICVlYnguCi0gICAgaW50cHRyX3QgYSA9IDAsIGMsIGQ7Ci0gICAgYXNtIHZvbGF0aWxl
KAotICAgICAgICAicHVzaGwgJSVlYnhcblx0IgotICAgICAgICAiY3B1aWRcblx0IgotICAgICAg
ICAicG9wbCAlJWVieFxuXHQiCi0gICAgICAgIDogIithIihhKSwgIj1jIihjKSwgIj1kIihkKQot
ICAgICAgICA6Ci0gICAgICAgIDogIm1lbW9yeSIpOwogI2Vsc2UKICAgICBpbnRwdHJfdCBhID0g
MCwgYiwgYywgZDsKICAgICBhc20gdm9sYXRpbGUoCg==
</data>
<flag name="commit-queue"
          id="355068"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>