<?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>235872</bug_id>
          
          <creation_ts>2022-01-30 11:40:07 -0800</creation_ts>
          <short_desc>[WTF] Add GenericHashKey</short_desc>
          <delta_ts>2022-01-31 00:49:17 -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>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835393</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-30 11:40:07 -0800</bug_when>
    <thetext>[WTF] Add GenericHashKey</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835394</commentid>
    <comment_count>1</comment_count>
      <attachid>450363</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-30 11:43:44 -0800</bug_when>
    <thetext>Created attachment 450363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835395</commentid>
    <comment_count>2</comment_count>
      <attachid>450364</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-30 11:53:50 -0800</bug_when>
    <thetext>Created attachment 450364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835423</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-30 21:42:31 -0800</bug_when>
    <thetext>I like this idea, helping fit any type into our hash table that requires empty and deleted values, not as sure about the name. If I think of a better name I will suggest it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835431</commentid>
    <comment_count>4</comment_count>
      <attachid>450380</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-30 22:20:33 -0800</bug_when>
    <thetext>Created attachment 450380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835432</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-30 22:21:09 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; I like this idea, helping fit any type into our hash table that requires
&gt; empty and deleted values, not as sure about the name. If I think of a better
&gt; name I will suggest it.

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835433</commentid>
    <comment_count>6</comment_count>
      <attachid>450380</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-30 22:35:53 -0800</bug_when>
    <thetext>Comment on attachment 450380
Patch

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

Can’t help thinking how much better some of this code would look with more use of auto, auto*, and auto&amp;.

&gt; Source/JavaScriptCore/dfg/DFGIntegerCheckCombiningPhase.cpp:195
&gt; +            Range&amp; range = m_map.add(data.m_key, Range { }).iterator-&gt;value;

When I see call sites like this, I wonder if we should overload add to have the empty value as the default. It’s annoying to have to write Range { } here.

&gt; Source/JavaScriptCore/runtime/TypeLocationCache.cpp:59
&gt; +    } else
&gt; +        location = iterator-&gt;value;

I often like to reverse these things so that the shorter half of the if statement goes first.

But really, this looks like it should be rewritten to use ensure to me.

&gt; Source/WTF/wtf/GenericHashKey.h:77
&gt; +        if (m_value.index() != 0)
&gt; +            return true;

Why not write this using holds_alternative instead of index? I think it would compile to the exact same code, but it would not depend on the ordering of the alternative types in the variant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835440</commentid>
    <comment_count>7</comment_count>
      <attachid>450380</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-30 23:21:50 -0800</bug_when>
    <thetext>Comment on attachment 450380
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGIntegerCheckCombiningPhase.cpp:195
&gt;&gt; +            Range&amp; range = m_map.add(data.m_key, Range { }).iterator-&gt;value;
&gt; 
&gt; When I see call sites like this, I wonder if we should overload add to have the empty value as the default. It’s annoying to have to write Range { } here.

For now, in this patch, I&apos;ll just use the existing interface.

&gt;&gt; Source/JavaScriptCore/runtime/TypeLocationCache.cpp:59
&gt;&gt; +        location = iterator-&gt;value;
&gt; 
&gt; I often like to reverse these things so that the shorter half of the if statement goes first.
&gt; 
&gt; But really, this looks like it should be rewritten to use ensure to me.

Sounds good! Changed.

&gt;&gt; Source/WTF/wtf/GenericHashKey.h:77
&gt;&gt; +            return true;
&gt; 
&gt; Why not write this using holds_alternative instead of index? I think it would compile to the exact same code, but it would not depend on the ordering of the alternative types in the variant.

Sounds good, changed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835452</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-31 00:49:01 -0800</bug_when>
    <thetext>Committed r288807 (246583@trunk): &lt;https://commits.webkit.org/246583@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835453</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-31 00:49:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88257247&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450363</attachid>
            <date>2022-01-30 11:43:44 -0800</date>
            <delta_ts>2022-01-30 11:53:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235872-20220130114343.patch</filename>
            <type>text/plain</type>
            <size>26777</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NTUxYmNjNjM4NTcwYjk4ZjZjMTU3NDZkNzgwNjk3ZDZlZDkwMzVjLi5iNjk3ZWMyNTY1ZTQ1OTZh
MTQ5Y2U3YmE1NzU0ZGRjM2FlYTRlYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBHZW5lcmljSGFzaEtleQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEdlbmVyaWNIYXNoS2V5IGFuZCBXVEY6
Okhhc2hTZXQgLyBXVEY6Okhhc2hNYXAuCisKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjpSYW5nZUtleTo6SGFzaDo6aGFz
aCk6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2U6OlJhbmdl
S2V5OjpIYXNoOjplcXVhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2U6OmhhbmRsZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGFu
dCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlOjpoYXNFeGVjdXRlZEF0T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOjppbnNlcnRVbmV4ZWN1dGVkUmFuZ2UpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6OnJlbW92ZVVuZXhlY3V0ZWRSYW5n
ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6Z2V0RnVuY3Rpb25S
YW5nZXMpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmg6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6RnVuY3Rpb25SYW5nZTo6SGFz
aDo6aGFzaCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6RnVuY3Rp
b25SYW5nZTo6SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2Fj
aGUuY3BwOgorICAgICAgICAoSlNDOjpUeXBlTG9jYXRpb25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmg6CisgICAgICAgIChKU0M6
OlR5cGVMb2NhdGlvbkNhY2hlOjpMb2NhdGlvbktleTo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlR5cGVMb2NhdGlvbkNhY2hlOjpMb2NhdGlvbktleTo6SGFzaDo6ZXF1YWwpOgorCiAyMDIy
LTAxLTI4ICBUb20gVGFydGFyaW4gIDx0b21AbGVhbmluZ3RlY2guY29tPgogCiAgICAgICAgIFtK
U0NdIEFkZCBzdXBwb3J0IGZvciBXQVNNIGJyYW5jaCBoaW50aW5nIHByb3Bvc2FsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNl
NGJhZTUyZDUzYjdjMTEwZWNkYjQ4OTE2MWYxMzhjZDU2YmJmYzguLjQ1MDI2M2QxYzJlYjc2NTRk
YTU3N2Y1ZDZiZDZmYThmZjk2MTU4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDEtMzAg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQg
R2VuZXJpY0hhc2hLZXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNTg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBHZW5lcmljSGFzaEtleTxUPiwgd2hpY2ggY2FuIHJlcHJl
c2VudCBhbnkgSGFzaFRhYmxlJ3Mga2V5CisgICAgICAgIGV2ZW4gaWYgS2V5IGRvZXMgbm90IGhh
dmUgRW1wdHkgLyBEZWxldGVkIHZhbHVlcy4gUHJldmlvdXNseSB3ZSB3ZXJlIHVzaW5nCisgICAg
ICAgIFN0ZFVub3JkZXJlZFNldCAvIFN0ZFVub3JkZXJlZE1hcCBpbnN0ZWFkLiBCdXQsICgxKSB0
aGV5IGFyZSBkb2luZyBzaW1pbGFyCisgICAgICAgIHRoaW5nIHRvIEdlbmVyaWNIYXNoS2V5IHRv
IGtlZXAgZW1wdHkgb3IgZGVsZXRlZCB2YWx1ZXMsIGFuZCAoMikgYnkgdXNpbmcKKyAgICAgICAg
R2VuZXJpY0hhc2hLZXkgd2UgY2FuIGNvbnNpc3RlbnRseSB1c2UgV1RGOjpIYXNoTWFwIGV0Yy4g
Zm9yIGFsbCBwb3NzaWJsZQorICAgICAgICBjYXNlcy4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvR2VuZXJpY0hhc2hLZXkuaDogQWRkZWQuCisKIDIwMjItMDEtMjggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtX3By
b2Nlc3NDYWxsYmFjayBpbiBXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYTc3ZDVkNzVlMGU0NjE2NzYxYmU1NWU4ZDk3OWJhMjVjZDEzOGM2Li4w
MDM5ODk0NGRjMWM5NDg0OGM2NmVmYTkwZGIwMDgzNDgzNmNiZDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjItMDEtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgR2VuZXJpY0hhc2hLZXkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg3MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4gV2Ugc2hv
dWxkIHVzZSBTdGRNYXAuCisgICAgICAgIFRoaXMgc2hvdWxkIGJlIFN0ZE1hcCBzaW5jZSBpdCBy
ZXF1aXJlcyBvcmRlcmVkIGl0ZXJhdGlvbnMgYnkgdGhlIGtleSwgc28gaXQgc2hvdWxkIG5vdCBi
ZSBhIEhhc2hNYXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oOgorCiAyMDIyLTAxLTI4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV9wcm9jZXNzQ2Fs
bGJhY2sgaW4gV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMWJlYzhkZWVkOWRiZGJhNTA3ZDlhM2ZiMWIw
MzllMjZlZTFhZGQ3Ny4uZWU0NDA0ZWFjZmEyYjBkZTIxZDkwNDY5OWI1OWY0M2Q3MmZjNDVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDAsMTAgKzQwLDEwIEBACiAj
aW5jbHVkZSAiSklUU2Nhbm5hYmxlLmgiCiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvR2Vu
ZXJpY0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGFja0NoZWNrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0
Zi9TdGRVbm9yZGVyZWRNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMg
dmlydHVhbCBTY2FubmFibGUgewogICAgIEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmlu
Zz4gbV9jb3BpZWRTdHJpbmdzOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBTdGRVbm9y
ZGVyZWRNYXA8aW50NjRfdCwgZG91YmxlKj4gbV9kb3VibGVDb25zdGFudHNNYXA7CisgICAgSGFz
aE1hcDxHZW5lcmljSGFzaEtleTxpbnQ2NF90PiwgZG91YmxlKj4gbV9kb3VibGVDb25zdGFudHNN
YXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhZzxkb3VibGU+PiBtX2RvdWJsZUNvbnN0YW50czsK
ICNlbmRpZgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAppbmRleCBjOWFjZjJlNzRiMTI3YWUw
YzRkOTRlZGU1NzQxMWE2NmJiOTcwZDBjLi45NTViNmRmMmE2ZThkMmM3MjY2OTczOWJjNzk0NDgy
Nzk4ZGMwZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcApAQCAtNTIsNiArNTIsMTIgQEAgY2xh
c3MgSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgIH07CiAK
ICAgICBzdHJ1Y3QgUmFuZ2VLZXkgeworICAgICAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSYW5nZUtleSYga2V5KSB7IHJldHVybiBrZXku
aGFzaCgpOyB9CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSYW5nZUtleSYg
YSwgY29uc3QgUmFuZ2VLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAg
ICAgICAgfTsKKwogICAgICAgICBzdGF0aWMgUmFuZ2VLZXkgYWRkaXRpb24oRWRnZSBlZGdlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBSYW5nZUtleSByZXN1bHQ7CkBAIC0xODUsOCArMTkxLDgg
QEAgY2xhc3MgSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBub2RlLCAiOiAiLCBkYXRhLCAiXG4iKTsKICAg
ICAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgUmFuZ2UmIHJhbmdlID0gbV9tYXBbZGF0YS5tX2tleV07CisKKyAg
ICAgICAgICAgIFJhbmdlJiByYW5nZSA9IG1fbWFwLmFkZChkYXRhLm1fa2V5LCBSYW5nZSB7IH0p
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyQ2hlY2tDb21iaW5p
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBS
YW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAgICAgICAgaWYgKHJhbmdlLm1fY291bnQpIHsK
QEAgLTIxMyw3ICsyMTksNyBAQCBjbGFzcyBJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBSYW5nZUtleUFuZEFkZGVuZCBkYXRhID0gcmFuZ2VL
ZXlBbmRBZGRlbmQobm9kZSk7CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBSYW5nZSByYW5nZSA9IG1fbWFwW2RhdGEubV9rZXld
OworICAgICAgICAgICAgUmFuZ2UgcmFuZ2UgPSBtX21hcC5nZXQoZGF0YS5tX2tleSk7CiAgICAg
ICAgICAgICBpZiAoIWlzVmFsaWQoZGF0YS5tX2tleSwgcmFuZ2UpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0yNjAsNyArMjY2LDcgQEAgY2xhc3MgSW50ZWdl
ckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrSW5Cb3VuZHMsIG5vZGUtPm9yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG1pbk5vZGUsIEludDMyVXNlKSwg
RWRnZShkYXRhLm1fa2V5Lm1fa2V5LCBJbnQzMlVzZSkpOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIG1fbWFwW2RhdGEubV9rZXldLm1fZGVwZW5kZW5jeSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbWFwLmZpbmQo
ZGF0YS5tX2tleSktPnZhbHVlLm1fZGVwZW5kZW5jeSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVja0lu
Qm91bmRzLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG1heE5v
ZGUsIEludDMyVXNlKSwgRWRnZShkYXRhLm1fa2V5Lm1fa2V5LCBJbnQzMlVzZSksIEVkZ2UobWlu
Q2hlY2ssIFVudHlwZWRVc2UpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzEs
NyArMjc3LDcgQEAgY2xhc3MgSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1fbWFwW2RhdGEubV9rZXldLm1f
aG9pc3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9tYXAuZmluZChkYXRhLm1fa2V5KS0+
dmFsdWUubV9ob2lzdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gRG8gdGhlIGVsaW1pbmF0aW9uLgpAQCAtMjg1LDcgKzI5MSw3IEBAIGNsYXNz
IEludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzKTsKICAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkp
KQogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRl
eCwgU3BlY05vbmUsIEFzc2VydEluQm91bmRzLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgp
LCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRp
dHlPbihtX21hcFtkYXRhLm1fa2V5XS5tX2RlcGVuZGVuY3kpOworICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obV9tYXAuZ2V0KGRhdGEubV9rZXkpLm1fZGVwZW5kZW5j
eSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTM3OCw3ICszODQsNyBAQCBjbGFzcyBJbnRlZ2Vy
Q2hlY2tDb21iaW5pbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKGFkZGVuZCksIHNvdXJjZS51c2VLaW5kKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgdXNpbmcgUmFuZ2VNYXAgPSBTdGRVbm9yZGVyZWRNYXA8UmFuZ2VLZXks
IFJhbmdlLCBIYXNoTWV0aG9kPFJhbmdlS2V5Pj47CisgICAgdXNpbmcgUmFuZ2VNYXAgPSBIYXNo
TWFwPEdlbmVyaWNIYXNoS2V5PFJhbmdlS2V5LCBSYW5nZUtleTo6SGFzaD4sIFJhbmdlPjsKICAg
ICBSYW5nZU1hcCBtX21hcDsKICAgICAKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGVi
MjBjZTY0NWFmMGJiNTg0NTVmNjgwM2U4ZDQ3MjRhNzRhNzFmOTQuLjJjYjRkNGFhNzI4YzJmYTVm
YzA5NDJjYTQ5MGY2N2Y5ZWJhM2U0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCkBAIC01MzMsMTQgKzUzMywxNCBAQCB2b2lkKiBKSVRDb21waWxl
cjo6YWRkcmVzc09mRG91YmxlQ29uc3RhbnQoTm9kZSogbm9kZSkKICAgICBpbnQ2NF90IHZhbHVl
Qml0cyA9IGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSk7CiAgICAgYXV0byBpdCA9IG1fZ3Jh
cGgubV9kb3VibGVDb25zdGFudHNNYXAuZmluZCh2YWx1ZUJpdHMpOwogICAgIGlmIChpdCAhPSBt
X2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNl
Y29uZDsKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKIAogICAgIGlmICghbV9ncmFwaC5tX2Rv
dWJsZUNvbnN0YW50cykKICAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VV
bmlxdWU8QmFnPGRvdWJsZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9v
bCA9IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25z
dGFudFBvb2wgPSB2YWx1ZTsKLSAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzTWFwW3ZhbHVl
Qml0c10gPSBhZGRyZXNzSW5Db25zdGFudFBvb2w7CisgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0
YW50c01hcC5zZXQodmFsdWVCaXRzLCBhZGRyZXNzSW5Db25zdGFudFBvb2wpOwogICAgIHJldHVy
biBhZGRyZXNzSW5Db25zdGFudFBvb2w7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA2MDllNmRkZjUxODE4YzVjMGE1MWRm
Njk1ODA3MmRlNGVjODhkYzM4Li5kMGFjNTFjOGU4ZmFlNzNhZWEzMWEzZWM1NGM1OGVjOTBkZDcz
MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC0xMDEsOCArMTAxLDggQEAKICNpbmNsdWRlICJZYXJySklUUmVnaXN0ZXJzLmgiCiAjaW5j
bHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKyNpbmNsdWRlIDx3dGYvR2VuZXJp
Y0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvUmVjdXJzYWJsZUxhbWJkYS5oPgotI2luY2x1ZGUg
PHd0Zi9TdGRVbm9yZGVyZWRTZXQuaD4KIAogI3VuZGVmIFJFTEVBU0VfQVNTRVJUCiAjZGVmaW5l
IFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCkBAIC0xNzg0Niw3ICsxNzg0Niw3IEBA
IElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxTd2l0
Y2hDYXNlPiBjYXNlczsKICAgICAgICAgLy8gVGhlc2UgbWF5IGJlIG5lZ2F0aXZlLCBvciB6ZXJv
LCBvciBwcm9iYWJseSBvdGhlciBzdHVmZiwgdG9vLiBXZSBkb24ndCB3YW50IHRvIG1lc3Mgd2l0
aCBIYXNoU2V0J3MgY29ybmVyIGNhc2VzIGFuZCB3ZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCB0
aHJvdWdocHV0IGhlcmUuCi0gICAgICAgIFN0ZFVub3JkZXJlZFNldDxpbnQzMl90PiBhbHJlYWR5
SGFuZGxlZDsKKyAgICAgICAgSGFzaFNldDxHZW5lcmljSGFzaEtleTxpbnQzMl90Pj4gYWxyZWFk
eUhhbmRsZWQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQgd2UncmUg
dXNpbmcgdGhlIGJ5dGVjb2RlJ3Mgc3dpdGNoIHRhYmxlIG1lYW5zIHRoYXQgdGhlCiAgICAgICAg
ICAgICAvLyBmb2xsb3dpbmcgREZHIElSIHRyYW5zZm9ybWF0aW9uIHdvdWxkIGJlIGludmFsaWQu
CkBAIC0xNzg4NCw3ICsxNzg4NCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBpdGVyICE9IHVubGlua2VkVGFibGUu
bV9vZmZzZXRUYWJsZS5lbmQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFVzZSBt
X2luZGV4SW5UYWJsZSBpbnN0ZWFkIG9mIG1fYnJhbmNoT2Zmc2V0IHRvIG1ha2UgU3dpdGNoIHRh
YmxlIGRlbnNlLgotICAgICAgICAgICAgaWYgKCFhbHJlYWR5SGFuZGxlZC5pbnNlcnQoaXRlci0+
dmFsdWUubV9pbmRleEluVGFibGUpLnNlY29uZCkKKyAgICAgICAgICAgIGlmICghYWxyZWFkeUhh
bmRsZWQuYWRkKGl0ZXItPnZhbHVlLm1faW5kZXhJblRhYmxlKS5pc05ld0VudHJ5KQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2Fz
ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCmluZGV4IDY4YzA2MDZiMDcxMzEyNGM3YWExNzBjMWRhMmQ5
OTZkOGUxNGUzYjIuLjRhYzg2NzRhMWY4YWY4MjgyZmI4ZTQwY2VjNzI4Mjk3Yzg3YzhmMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcApAQCAtMzIsMTYgKzMyLDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBib29sIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6aGFzRXhlY3V0ZWRBdE9mZnNldChTb3Vy
Y2VJRCBpZCwgdW5zaWduZWQgb2Zmc2V0KQogewotICAgIGlmIChtX3JhbmdlTWFwLmZpbmQoaWQp
ID09IG1fcmFuZ2VNYXAuZW5kKCkpCisgICAgYXV0byBpdGVyYXRvciA9IG1fcmFuZ2VNYXAuZmlu
ZChpZCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmFuZ2VNYXAuZW5kKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJhbmdlTWFwJiBtYXAgPSBtX3JhbmdlTWFwLmZpbmQoaWQpLT5z
ZWNvbmQ7CisgICAgUmFuZ2VNYXAmIG1hcCA9IGl0ZXJhdG9yLT52YWx1ZTsKICAgICB1bnNpZ25l
ZCBkaXN0YW5jZSA9IFVJTlRfTUFYOwogICAgIGJvb2wgaGFzRXhlY3V0ZWQgPSBmYWxzZTsKICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25SYW5nZSYg
cmFuZ2UgPSBwYWlyLmZpcnN0OworICAgICAgICBjb25zdCBGdW5jdGlvblJhbmdlJiByYW5nZSA9
IHBhaXIua2V5LmtleSgpOwogICAgICAgICBpZiAocmFuZ2UubV9zdGFydCA8PSBvZmZzZXQgJiYg
b2Zmc2V0IDw9IHJhbmdlLm1fZW5kICYmIHJhbmdlLm1fZW5kIC0gcmFuZ2UubV9zdGFydCA8IGRp
c3RhbmNlKSB7Ci0gICAgICAgICAgICBoYXNFeGVjdXRlZCA9IHBhaXIuc2Vjb25kOworICAgICAg
ICAgICAgaGFzRXhlY3V0ZWQgPSBwYWlyLnZhbHVlOwogICAgICAgICAgICAgZGlzdGFuY2UgPSBy
YW5nZS5tX2VuZCAtIHJhbmdlLm1fc3RhcnQ7CiAgICAgICAgIH0KICAgICB9CkBAIC01MSw0NiAr
NTIsNDEgQEAgYm9vbCBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6Omhhc0V4ZWN1dGVkQXRPZmZz
ZXQoU291cmNlSUQgaWQsIHVuc2lnbmVkIG9mZnNldCkKIAogdm9pZCBGdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGU6Omluc2VydFVuZXhlY3V0ZWRSYW5nZShTb3VyY2VJRCBpZCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCkKIHsKLSAgICBpZiAobV9yYW5nZU1hcC5maW5kKGlkKSA9PSBtX3Jh
bmdlTWFwLmVuZCgpKSB7Ci0gICAgICAgIFJhbmdlTWFwIG1hcDsKLSAgICAgICAgbV9yYW5nZU1h
cFtpZF0gPSBtYXA7Ci0gICAgfQotCi0gICAgUmFuZ2VNYXAmIG1hcCA9IG1fcmFuZ2VNYXAuZmlu
ZChpZCktPnNlY29uZDsKKyAgICBSYW5nZU1hcCYgbWFwID0gbV9yYW5nZU1hcC5hZGQoaWQsIFJh
bmdlTWFwIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIEZ1bmN0aW9uUmFuZ2UgcmFuZ2U7CiAg
ICAgcmFuZ2UubV9zdGFydCA9IHN0YXJ0OwogICAgIHJhbmdlLm1fZW5kID0gZW5kOwogICAgIC8v
IE9ubHkgaW5zZXJ0IHVuZXhlY3V0ZWQgcmFuZ2VzIG9uY2UgZm9yIGEgZ2l2ZW4gc291cmNlSUQg
YmVjYXVzZSB3ZSBtYXkgcnVuIGludG8gYSBzaXR1YXRpb24gd2hlcmUgYW4gZXhlY3V0YWJsZSBl
eGVjdXRlcywgdGhlbiBpcyBHQ2VkLCBhbmQgdGhlbiBpcyBhbGxvY2F0ZWQgYWdhaW4sCiAgICAg
Ly8gYW5kIHRyaWVzIHRvIHJlaW5zZXJ0IGl0c2VsZiwgY2xhaW1pbmcgaXQgaGFzIG5ldmVyIHJ1
biwgYnV0IHRoaXMgaXMgZmFsc2UgYmVjYXVzZSBpdCBpbmRlZWQgYWxyZWFkeSBleGVjdXRlZC4K
LSAgICBpZiAobWFwLmZpbmQocmFuZ2UpID09IG1hcC5lbmQoKSkKLSAgICAgICAgbWFwW3Jhbmdl
XSA9IGZhbHNlOworICAgIG1hcC5hZGQocmFuZ2UsIGZhbHNlKTsKIH0KIAogdm9pZCBGdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGU6OnJlbW92ZVVuZXhlY3V0ZWRSYW5nZShTb3VyY2VJRCBpZCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5l
dmVyIGhhdmUgYW4gaW5zdGFuY2Ugd2hlcmUgd2UgcmV0dXJuIGhlcmUsIGJ1dCBjdXJyZW50bHkg
ZG8gaW4gc29tZSBzaXR1YXRpb25zLiBGaW5kIG91dCB3aHkuCi0gICAgaWYgKG1fcmFuZ2VNYXAu
ZmluZChpZCkgPT0gbV9yYW5nZU1hcC5lbmQoKSkKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yYW5n
ZU1hcC5maW5kKGlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yYW5nZU1hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmFuZ2VNYXAmIG1hcCA9IG1fcmFuZ2VNYXAuZmluZChpZCkt
PnNlY29uZDsKKyAgICBSYW5nZU1hcCYgbWFwID0gaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgRnVu
Y3Rpb25SYW5nZSByYW5nZTsKICAgICByYW5nZS5tX3N0YXJ0ID0gc3RhcnQ7CiAgICAgcmFuZ2Uu
bV9lbmQgPSBlbmQ7Ci0gICAgbWFwW3JhbmdlXSA9IHRydWU7CisgICAgbWFwLnNldChyYW5nZSwg
dHJ1ZSk7CiB9CiAKIFZlY3RvcjxzdGQ6OnR1cGxlPGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZD4+
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6Z2V0RnVuY3Rpb25SYW5nZXMoU291cmNlSUQgaWQp
CiB7CiAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPj4gcmFu
Z2VzKDApOwotICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFuZ2VNYXAuZmluZChpZCk7Ci0gICAg
aWYgKGZpbmRSZXN1bHQgPT0gbV9yYW5nZU1hcC5lbmQoKSkKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9yYW5nZU1hcC5maW5kKGlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yYW5nZU1hcC5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJhbmdlczsKIAotICAgIFJhbmdlTWFwJiBtYXAgPSBtX3Jhbmdl
TWFwLmZpbmQoaWQpLT5zZWNvbmQ7CisgICAgUmFuZ2VNYXAmIG1hcCA9IGl0ZXJhdG9yLT52YWx1
ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25S
YW5nZSYgcmFuZ2UgPSBwYWlyLmZpcnN0OwotICAgICAgICBib29sIGhhc0V4ZWN1dGVkID0gcGFp
ci5zZWNvbmQ7CisgICAgICAgIGNvbnN0IEZ1bmN0aW9uUmFuZ2UmIHJhbmdlID0gcGFpci5rZXku
a2V5KCk7CisgICAgICAgIGJvb2wgaGFzRXhlY3V0ZWQgPSBwYWlyLnZhbHVlOwogICAgICAgICBy
YW5nZXMuYXBwZW5kKHN0ZDo6dHVwbGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPihoYXNFeGVj
dXRlZCwgcmFuZ2UubV9zdGFydCwgcmFuZ2UubV9lbmQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hl
LmgKaW5kZXggY2FhOTJkNmZlZTY0ZTg4YmRmYzRmMDBiNmEzNzJlMmI4MTljY2Q5MS4uMGJlOTIy
OTIwN2RjMWJkNWE3ZjQzZmJjNDFkOTM3NTlmOGNlNGViOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKQEAg
LTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKLSNp
bmNsdWRlIDx3dGYvSGFzaE1ldGhvZC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRVbm9yZGVyZWRNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvR2VuZXJpY0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzUsNiArMzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgewogcHVibGljOgogICAgIHN0cnVjdCBG
dW5jdGlvblJhbmdlIHsKKyAgICAgICAgc3RydWN0IEhhc2ggeworICAgICAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgRnVuY3Rpb25SYW5nZSYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGdW5jdGlvblJhbmdl
JiBhLCBjb25zdCBGdW5jdGlvblJhbmdlJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7CisgICAgICAgIH07CisKICAgICAgICAgRnVuY3Rpb25SYW5nZSgpIHt9CiAgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGdW5jdGlvblJhbmdlJiBvdGhlcikgY29uc3QgCiAgICAgICAg
IHsKQEAgLTU1LDggKzYwLDggQEAgY2xhc3MgRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlIHsKICAg
ICBWZWN0b3I8c3RkOjp0dXBsZTxib29sLCB1bnNpZ25lZCwgdW5zaWduZWQ+PiBnZXRGdW5jdGlv
blJhbmdlcyhTb3VyY2VJRCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmFuZ2VNYXAgPSBTdGRV
bm9yZGVyZWRNYXA8RnVuY3Rpb25SYW5nZSwgYm9vbCwgSGFzaE1ldGhvZDxGdW5jdGlvblJhbmdl
Pj47Ci0gICAgdXNpbmcgU291cmNlSURUb1JhbmdlTWFwID0gU3RkVW5vcmRlcmVkTWFwPGludHB0
cl90LCBSYW5nZU1hcD47CisgICAgdXNpbmcgUmFuZ2VNYXAgPSBIYXNoTWFwPEdlbmVyaWNIYXNo
S2V5PEZ1bmN0aW9uUmFuZ2UsIEZ1bmN0aW9uUmFuZ2U6Okhhc2g+LCBib29sPjsKKyAgICB1c2lu
ZyBTb3VyY2VJRFRvUmFuZ2VNYXAgPSBIYXNoTWFwPEdlbmVyaWNIYXNoS2V5PGludHB0cl90Piwg
UmFuZ2VNYXA+OwogICAgIFNvdXJjZUlEVG9SYW5nZU1hcCBtX3JhbmdlTWFwOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3Bw
CmluZGV4IDE1M2I2NzU4YmI5NGIxMjFlNjZiYjc0MmVlODU4MzNmOWE4NzM2OWMuLmMyYWY2MTlk
M2M3MGUwOTRjZWIwM2JmY2UyOGE5YjVhZDgxNWU4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKQEAgLTQxLDIxICs0MSwy
MyBAQCBzdGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gVHlwZUxvY2F0aW9uQ2FjaGU6Omdl
dFR5cGVMb2NhdGlvbihHbG9iYWxWYXJpYWJsZQogICAgIGtleS5tX3N0YXJ0ID0gc3RhcnQ7CiAg
ICAga2V5Lm1fZW5kID0gZW5kOwogCisgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IG51bGxw
dHI7CiAgICAgYm9vbCBpc05ld0xvY2F0aW9uID0gZmFsc2U7Ci0gICAgaWYgKG1fbG9jYXRpb25N
YXAuZmluZChrZXkpID09IG1fbG9jYXRpb25NYXAuZW5kKCkpIHsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9sb2NhdGlvbk1hcC5maW5kKGtleSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fbG9jYXRp
b25NYXAuZW5kKCkpIHsKICAgICAgICAgQVNTRVJUKHZtLT50eXBlUHJvZmlsZXIoKSk7Ci0gICAg
ICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bS0+dHlwZVByb2ZpbGVyKCktPm5leHRUeXBl
TG9jYXRpb24oKTsKKyAgICAgICAgbG9jYXRpb24gPSB2bS0+dHlwZVByb2ZpbGVyKCktPm5leHRU
eXBlTG9jYXRpb24oKTsKICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IGds
b2JhbFZhcmlhYmxlSUQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0gc291cmNlSUQ7
CiAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPSBzdGFydDsKICAgICAgICAgbG9jYXRp
b24tPm1fZGl2b3RFbmQgPSBlbmQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQg
PSBXVEZNb3ZlKGdsb2JhbFR5cGVTZXQpOwogCi0gICAgICAgIG1fbG9jYXRpb25NYXBba2V5XSA9
IGxvY2F0aW9uOworICAgICAgICBtX2xvY2F0aW9uTWFwLmFkZChrZXksIGxvY2F0aW9uKTsKICAg
ICAgICAgaXNOZXdMb2NhdGlvbiA9IHRydWU7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBs
b2NhdGlvbiA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24g
PSBtX2xvY2F0aW9uTWFwLmZpbmQoa2V5KS0+c2Vjb25kOwogICAgIHJldHVybiBzdGQ6OnBhaXI8
VHlwZUxvY2F0aW9uKiwgYm9vbD4obG9jYXRpb24sIGlzTmV3TG9jYXRpb24pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuaAppbmRl
eCBhOGU4OGFkYmQxNWFhYjgwZTM0MWVlNmE0MzE3YWYzMTI0NTI0MGViLi44YTBhNzRlNTIwMGQz
NDc2NjZlNmE2ZGI0OGJkMWY1YzFjODc4ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpbmNs
dWRlICJTb3VyY2VJRC5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNZXRob2QuaD4KLSNpbmNsdWRlIDx3
dGYvU3RkVW5vcmRlcmVkTWFwLmg+CisjaW5jbHVkZSA8d3RmL0dlbmVyaWNIYXNoS2V5Lmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC0zOCw2ICszNywxMiBAQCBjbGFzcyBWTTsKIGNsYXNzIFR5
cGVMb2NhdGlvbkNhY2hlIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgTG9jYXRpb25LZXkgeworICAg
ICAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBMb2NhdGlvbktleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBMb2NhdGlvbktleSYgYSwgY29uc3QgTG9jYXRpb25LZXkm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAgfTsKKwogICAgICAg
ICBMb2NhdGlvbktleSgpIHt9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhdGlv
bktleSYgb3RoZXIpIGNvbnN0IAogICAgICAgICB7CkBAIC02MCw3ICs2NSw3IEBAIGNsYXNzIFR5
cGVMb2NhdGlvbkNhY2hlIHsKIAogICAgIHN0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBn
ZXRUeXBlTG9jYXRpb24oR2xvYmFsVmFyaWFibGVJRCwgU291cmNlSUQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIFJlZlB0cjxUeXBlU2V0PiYmLCBWTSopOwogcHJpdmF0ZToKLSAgICB1
c2luZyBMb2NhdGlvbk1hcCA9IFN0ZFVub3JkZXJlZE1hcDxMb2NhdGlvbktleSwgVHlwZUxvY2F0
aW9uKiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+OworICAgIHVzaW5nIExvY2F0aW9uTWFwID0g
SGFzaE1hcDxHZW5lcmljSGFzaEtleTxMb2NhdGlvbktleSwgTG9jYXRpb25LZXk6Okhhc2g+LCBU
eXBlTG9jYXRpb24qPjsKICAgICBMb2NhdGlvbk1hcCBtX2xvY2F0aW9uTWFwOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTgyY2E2MmZkZTZlZWU4
MjY3NzFhMWIzMTdlZjg5MGFiMDdhOTcxZC4uOTFlNzgyYTM2NmRhZTIyMDk3NjBiN2I5YjlhZDIx
MjczZGE4ZTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MDAsNiArODAwLDcgQEAKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZy
ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQgLyogTm9u
bW92YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRW
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRkQ2RDY2MjdBMUY2QUQwMDkzNTAwMCAvKiBHZW5lcmlj
SGFzaEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljSGFzaEtleS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDE5RjJFNjIzQUI5RTIzMDBCMjYxMjkgLyogVmVjdG9ySGFzaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JIYXNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRj
aFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwYXRjaFNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtR
dWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE1LDYgKzExMTYsNyBA
QAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3Bw
ICovLAogCQkJCTFBMUQ4QjlCMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIu
aCAqLywKIAkJCQk1M0YxRDk4NjIwNDc3Qjk4MDBFQkM2QkYgLyogRnVuY3Rpb25UcmFpdHMuaCAq
LywKKwkJCQlFM0ZENkQ2NjI3QTFGNkFEMDA5MzUwMDAgLyogR2VuZXJpY0hhc2hLZXkuaCAqLywK
IAkJCQlFMzgzMUY5MjI3MDMxMDFBMDBFRjVFQjMgLyogR2VuZXJpY1RpbWVNaXhpbi5oICovLAog
CQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKIAkJCQkwRjVCRjE3
NDFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovLApAQCAtMTE0OSw5ICsxMTUxLDkg
QEAKIAkJCQlFMzM2Njc0OTI3MjI1NTA5MDAyNTkxMjIgLyogSW50MTI4LmNwcCAqLywKIAkJCQlG
NkQ2N0QzMjI2RjkwMTQyMDA2RTAzNDkgLyogSW50MTI4LmggKi8sCiAJCQkJMzNGRDQ4MTEyNjVD
QjM4MDAwQUJFNEY0IC8qIEludGVyZmVyZW5jZUdyYXBoLmggKi8sCi0JCQkJNTI5NUIwMDQyNzky
MEM1NDAwNkQ3NDZBIC8qIEl0ZXJhdGlvblN0YXR1cy5oICovLAogCQkJCTBGN0VCODVCMUZBOEZG
NDEwMEYxQUJDQiAvKiBJc29NYWxsb2MuaCAqLywKIAkJCQkwRjdFQjg1QzFGQThGRjQyMDBGMUFC
Q0IgLyogSXNvTWFsbG9jSW5saW5lcy5oICovLAorCQkJCTUyOTVCMDA0Mjc5MjBDNTQwMDZENzQ2
QSAvKiBJdGVyYXRpb25TdGF0dXMuaCAqLywKIAkJCQk3Q0REN0ZGNzE4NkQyOTFFMDA3NDMzQ0Qg
LyogSXRlcmF0b3JBZGFwdG9ycy5oICovLAogCQkJCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAv
KiBJdGVyYXRvclJhbmdlLmggKi8sCiAJCQkJN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpT
T05WYWx1ZXMuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA0OWUwYzc2Njk5MzZjNDVm
NGI0ZmIyZTBmNGZjYmM3NmMxODI5Y2YxLi45ZWM0N2ZmYjhlZTFjYmI0MDcwYWRjZjlhNGVkZDNh
MWQ1MWFiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtODEsNiArODEsNyBAQCBzZXQoV1RG
X1BVQkxJQ19IRUFERVJTCiAgICAgRnVuY3Rpb24uaAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5o
CiAgICAgRnVuY3Rpb25UcmFpdHMuaAorICAgIEdlbmVyaWNIYXNoS2V5LmgKICAgICBHZW5lcmlj
VGltZU1peGluLmgKICAgICBHZXRQdHIuaAogICAgIEdpZ2FjYWdlLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0dlbmVyaWNIYXNoS2V5LmggYi9Tb3VyY2UvV1RGL3d0Zi9HZW5lcmljSGFz
aEtleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ3YWZjNTFmOWE5NWRiY2Y2YzNmNDI5Nzc0ZTgxMTk1MGM5MGRj
M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HZW5lcmljSGFzaEtleS5oCkBA
IC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxLZXk+PgorY2xhc3MgR2VuZXJpY0hhc2hLZXkg
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCisgICAgc3RydWN0IEVtcHR5
S2V5IHsgfTsKKyAgICBzdHJ1Y3QgRGVsZXRlZEtleSB7IH07CisKK3B1YmxpYzoKKyAgICBjb25z
dGV4cHIgR2VuZXJpY0hhc2hLZXkoS2V5JiYga2V5KQorICAgICAgICA6IG1fdmFsdWUoc3RkOjpp
bl9wbGFjZV90eXBlX3Q8S2V5PigpLCBXVEZNb3ZlKGtleSkpCisgICAgeworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEs+CisgICAgY29uc3RleHByIEdlbmVyaWNIYXNoS2V5KEsmJiBr
ZXkpCisgICAgICAgIDogbV92YWx1ZShzdGQ6OmluX3BsYWNlX3R5cGVfdDxLZXk+KCksIHN0ZDo6
Zm9yd2FyZDxLPihrZXkpKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgR2VuZXJpY0hh
c2hLZXkoSGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpCisgICAgICAgIDogbV92YWx1ZShFbXB0eUtl
eSB7IH0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBHZW5lcmljSGFzaEtleShIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fdmFsdWUoRGVsZXRlZEtleSB7IH0p
CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBjb25zdCBLZXkmIGtleSgpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6Z2V0PEtleT4obV92YWx1ZSk7IH0KKyAgICBjb25zdGV4cHIgdW5zaWduZWQg
aGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRF
WFQoIWlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgJiYgIWlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgp
KTsKKyAgICAgICAgcmV0dXJuIEhhc2hBcmc6Omhhc2goa2V5KCkpOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxEZWxldGVkS2V5PihtX3ZhbHVlKTsgfQorICAgIGNvbnN0ZXhw
ciBib29sIGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8RW1wdHlLZXk+KG1fdmFsdWUpOyB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEdlbmVyaWNIYXNoS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVCghaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSAmJiAhaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkpOworICAgICAgICByZXR1cm4gSGFzaEFy
Zzo6ZXF1YWwoa2V5KCksIG90aGVyLmtleSgpKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEdlbmVyaWNIYXNoS2V5JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVCghaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSAmJiAhaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkpOworICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dmFyaWFudDxLZXks
IEVtcHR5S2V5LCBEZWxldGVkS2V5PiBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
SywgdHlwZW5hbWUgSD4gc3RydWN0IEhhc2hUcmFpdHM8R2VuZXJpY0hhc2hLZXk8SywgSD4+IDog
R2VuZXJpY0hhc2hUcmFpdHM8R2VuZXJpY0hhc2hLZXk8SywgSD4+IHsKKyAgICBzdGF0aWMgR2Vu
ZXJpY0hhc2hLZXk8SywgSD4gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEdlbmVyaWNIYXNoS2V5PEss
IEg+IHsgSGFzaFRhYmxlRW1wdHlWYWx1ZSB9OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKEdlbmVyaWNIYXNoS2V5PEssIEg+JiBzbG90KSB7IHNsb3QgPSBHZW5lcmlj
SGFzaEtleTxLLCBIPiB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OyB9CisgICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgR2VuZXJpY0hhc2hLZXk8SywgSD4mIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBLLCB0eXBlbmFtZSBIPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8R2VuZXJpY0hhc2hLZXk8
SywgSD4+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBHZW5lcmljSGFzaEtleTxL
LCBIPiYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgR2VuZXJpY0hhc2hLZXk8SywgSD4mIGEsIGNvbnN0IEdlbmVyaWNIYXNoS2V5PEssIEg+
JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKworfQorCit1c2luZyBXVEY6OkdlbmVy
aWNIYXNoS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmgKaW5k
ZXggNGJhZjBlYTExZTVjNGZiZTMyNGQ5NTI1YWRmMWJkYjNjNjMzMGE4OC4uYzU1NmY0NDRmOWZm
NTk3ZDI2MzU3ODM0MTI5MTFiYTdmODJkODliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9R
dWV1ZWRWaWRlb091dHB1dC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL09ic2Vy
dmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNl
dC5oPgogCiBPQkpDX0NMQVNTIEFWUGxheWVyOwpAQCAtNjcsNyArNjgsNyBAQCBjbGFzcyBRdWV1
ZWRWaWRlb091dHB1dAogICAgIHVzaW5nIEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IE9i
c2VydmVyPHZvaWQoKT47CiAgICAgdm9pZCBhZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIo
Y29uc3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyJik7CiAKLSAgICB1c2luZyBJbWFnZU1h
cCA9IHN0ZDo6bWFwPE1lZGlhVGltZSwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PjsKKyAg
ICB1c2luZyBJbWFnZU1hcCA9IFN0ZE1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPj47CiAKICAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450364</attachid>
            <date>2022-01-30 11:53:50 -0800</date>
            <delta_ts>2022-01-30 22:20:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235872-20220130115349.patch</filename>
            <type>text/plain</type>
            <size>27690</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NTUxYmNjNjM4NTcwYjk4ZjZjMTU3NDZkNzgwNjk3ZDZlZDkwMzVjLi4yY2ZhMzc0ZjE5ZjNmYjVj
ZGFiMWE5ZmNiZDZmODNmNzJjOThmN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBHZW5lcmljSGFzaEtleQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEdlbmVyaWNIYXNoS2V5IGFuZCBXVEY6
Okhhc2hTZXQgLyBXVEY6Okhhc2hNYXAuCisKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uRGF0YS5o
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hl
Y2tDb21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29t
YmluaW5nUGhhc2U6OlJhbmdlS2V5OjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6UmFuZ2VLZXk6Okhhc2g6OmVxdWFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aGFuZGxlQmxvY2spOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6Omhh
c0V4ZWN1dGVkQXRPZmZzZXQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkhhc0V4ZWN1dGVkQ2Fj
aGU6Omluc2VydFVuZXhlY3V0ZWRSYW5nZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZTo6cmVtb3ZlVW5leGVjdXRlZFJhbmdlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlOjpnZXRGdW5jdGlvblJhbmdlcyk6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlOjpGdW5jdGlvblJhbmdlOjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOjpGdW5jdGlvblJhbmdlOjpIYXNoOjplcXVhbCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlR5
cGVMb2NhdGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlw
ZUxvY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uQ2FjaGU6OkxvY2F0
aW9uS2V5OjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uQ2FjaGU6Okxv
Y2F0aW9uS2V5OjpIYXNoOjplcXVhbCk6CisKIDIwMjItMDEtMjggIFRvbSBUYXJ0YXJpbiAgPHRv
bUBsZWFuaW5ndGVjaC5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIFdBU00g
YnJhbmNoIGhpbnRpbmcgcHJvcG9zYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggM2U0YmFlNTJkNTNiN2MxMTBlY2RiNDg5MTYx
ZjEzOGNkNTZiYmZjOC4uNDUwMjYzZDFjMmViNzY1NGRhNTc3ZjVkNmJkNmZhOGZmOTYxNTgxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBHZW5lcmljSGFzaEtleQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIEdl
bmVyaWNIYXNoS2V5PFQ+LCB3aGljaCBjYW4gcmVwcmVzZW50IGFueSBIYXNoVGFibGUncyBrZXkK
KyAgICAgICAgZXZlbiBpZiBLZXkgZG9lcyBub3QgaGF2ZSBFbXB0eSAvIERlbGV0ZWQgdmFsdWVz
LiBQcmV2aW91c2x5IHdlIHdlcmUgdXNpbmcKKyAgICAgICAgU3RkVW5vcmRlcmVkU2V0IC8gU3Rk
VW5vcmRlcmVkTWFwIGluc3RlYWQuIEJ1dCwgKDEpIHRoZXkgYXJlIGRvaW5nIHNpbWlsYXIKKyAg
ICAgICAgdGhpbmcgdG8gR2VuZXJpY0hhc2hLZXkgdG8ga2VlcCBlbXB0eSBvciBkZWxldGVkIHZh
bHVlcywgYW5kICgyKSBieSB1c2luZworICAgICAgICBHZW5lcmljSGFzaEtleSB3ZSBjYW4gY29u
c2lzdGVudGx5IHVzZSBXVEY6Okhhc2hNYXAgZXRjLiBmb3IgYWxsIHBvc3NpYmxlCisgICAgICAg
IGNhc2VzLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9HZW5lcmljSGFzaEtleS5o
OiBBZGRlZC4KKwogMjAyMi0wMS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1fcHJvY2Vzc0NhbGxiYWNrIGluIFdlYkNvcmU6
OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJhNzdkNWQ3NWUw
ZTQ2MTY3NjFiZTU1ZThkOTc5YmEyNWNkMTM4YzYuLjAwMzk4OTQ0ZGMxYzk0ODQ4YzY2ZWZhOTBk
YjAwODM0ODM2Y2JkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0zMCAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBH
ZW5lcmljSGFzaEtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1ODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLiBXZSBzaG91bGQgdXNlIFN0ZE1hcC4KKyAgICAgICAg
VGhpcyBzaG91bGQgYmUgU3RkTWFwIHNpbmNlIGl0IHJlcXVpcmVzIG9yZGVyZWQgaXRlcmF0aW9u
cyBieSB0aGUga2V5LCBzbyBpdCBzaG91bGQgbm90IGJlIGEgSGFzaE1hcC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6
CisKIDIwMjItMDEtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBU1NFUlRJT04gRkFJTEVEOiBtX3Byb2Nlc3NDYWxsYmFjayBpbiBXZWJDb3JlOjpBdWRpb1dv
cmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21t
b25EYXRhLmgKaW5kZXggMGRiNGFmZmFlNzg1NTA5ZmUxMjc3MmI1Yzg3NzRkZThkODUzYWRmMC4u
NDgxZjZjZDIxNzIzZTVmYWJlYWZjNzE4Y2IzNDJlNmNiMmM3MzFlYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBD
b21tb25EYXRhIDogcHVibGljIE1hdGhJQ0hvbGRlciB7CiAgICAgYm9vbCBoYXNWTVRyYXBzQnJl
YWtwb2ludHNJbnN0YWxsZWQgeyBmYWxzZSB9OwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhZzxkb3VibGU+PiBkb3VibGVDb25zdGFudHM7CisgICAg
QmFnPGRvdWJsZT4gZG91YmxlQ29uc3RhbnRzOwogI2VuZGlmCiAgICAgCiAgICAgdW5zaWduZWQg
ZnJhbWVSZWdpc3RlckNvdW50IHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMWJlYzhkZWVkOWRiZGJh
NTA3ZDlhM2ZiMWIwMzllMjZlZTFhZGQ3Ny4uOTNiZmM2NjNmOTZmNjFiN2IyYmZmZjQzMDE4MzUx
Y2U2MDU5ZTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDAsMTAg
KzQwLDEwIEBACiAjaW5jbHVkZSAiSklUU2Nhbm5hYmxlLmgiCiAjaW5jbHVkZSAiTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvR2VuZXJpY0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGFja0NoZWNrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgot
I2luY2x1ZGUgPHd0Zi9TdGRVbm9yZGVyZWRNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTE3OSw4ICsxMTc5LDggQEAgY2xhc3MgR3JhcGggZmlu
YWwgOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEhhc2hNYXA8Y29uc3QgU3RyaW5n
SW1wbCosIFN0cmluZz4gbV9jb3BpZWRTdHJpbmdzOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICBTdGRVbm9yZGVyZWRNYXA8aW50NjRfdCwgZG91YmxlKj4gbV9kb3VibGVDb25zdGFudHNN
YXA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhZzxkb3VibGU+PiBtX2RvdWJsZUNvbnN0YW50czsK
KyAgICBIYXNoTWFwPEdlbmVyaWNIYXNoS2V5PGludDY0X3Q+LCBkb3VibGUqPiBtX2RvdWJsZUNv
bnN0YW50c01hcDsKKyAgICBCYWc8ZG91YmxlPiBtX2RvdWJsZUNvbnN0YW50czsKICNlbmRpZgog
ICAgIAogICAgIE9wdGltaXphdGlvbkZpeHBvaW50U3RhdGUgbV9maXhwb2ludFN0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5p
bmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmNwcAppbmRleCBjOWFjZjJlNzRiMTI3YWUwYzRkOTRlZGU1NzQxMWE2NmJi
OTcwZDBjLi45NTViNmRmMmE2ZThkMmM3MjY2OTczOWJjNzk0NDgyNzk4ZGMwZjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmNwcApAQCAtNTIsNiArNTIsMTIgQEAgY2xhc3MgSW50ZWdlckNoZWNrQ29t
YmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUmFuZ2VL
ZXkgeworICAgICAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBSYW5nZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSYW5nZUtleSYgYSwgY29uc3QgUmFuZ2VLZXkm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAgfTsKKwogICAgICAg
ICBzdGF0aWMgUmFuZ2VLZXkgYWRkaXRpb24oRWRnZSBlZGdlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBSYW5nZUtleSByZXN1bHQ7CkBAIC0xODUsOCArMTkxLDggQEAgY2xhc3MgSW50ZWdlckNo
ZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGRhdGFM
b2coIkZvciAiLCBub2RlLCAiOiAiLCBkYXRhLCAiXG4iKTsKICAgICAgICAgICAgIGlmICghZGF0
YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
UmFuZ2UmIHJhbmdlID0gbV9tYXBbZGF0YS5tX2tleV07CisKKyAgICAgICAgICAgIFJhbmdlJiBy
YW5nZSA9IG1fbWFwLmFkZChkYXRhLm1fa2V5LCBSYW5nZSB7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBSYW5nZTogIiwgcmFuZ2UsICJc
biIpOwogICAgICAgICAgICAgaWYgKHJhbmdlLm1fY291bnQpIHsKQEAgLTIxMyw3ICsyMTksNyBA
QCBjbGFzcyBJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBSYW5nZUtleUFuZEFkZGVuZCBkYXRhID0gcmFuZ2VLZXlBbmRBZGRlbmQobm9kZSk7
CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBSYW5nZSByYW5nZSA9IG1fbWFwW2RhdGEubV9rZXldOworICAgICAgICAgICAgUmFu
Z2UgcmFuZ2UgPSBtX21hcC5nZXQoZGF0YS5tX2tleSk7CiAgICAgICAgICAgICBpZiAoIWlzVmFs
aWQoZGF0YS5tX2tleSwgcmFuZ2UpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgCkBAIC0yNjAsNyArMjY2LDcgQEAgY2xhc3MgSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCwgU3BlY05vbmUsIENoZWNrSW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFZGdlKG1pbk5vZGUsIEludDMyVXNlKSwgRWRnZShkYXRhLm1fa2V5Lm1f
a2V5LCBJbnQzMlVzZSkpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIG1fbWFwW2RhdGEubV9rZXldLm1fZGVwZW5kZW5jeSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbWFwLmZpbmQoZGF0YS5tX2tleSktPnZhbHVl
Lm1fZGVwZW5kZW5jeSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVja0luQm91bmRzLCBub2RlLT5vcmln
aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG1heE5vZGUsIEludDMyVXNlKSwgRWRn
ZShkYXRhLm1fa2V5Lm1fa2V5LCBJbnQzMlVzZSksIEVkZ2UobWluQ2hlY2ssIFVudHlwZWRVc2Up
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzEsNyArMjc3LDcgQEAgY2xhc3Mg
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwotICAgICAgICAgICAgICAgIG1fbWFwW2RhdGEubV9rZXldLm1faG9pc3RlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgbV9tYXAuZmluZChkYXRhLm1fa2V5KS0+dmFsdWUubV9ob2lzdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRG8gdGhl
IGVsaW1pbmF0aW9uLgpAQCAtMjg1LDcgKzI5MSw3IEBAIGNsYXNzIEludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+
b3AoKSA9PSBDaGVja0luQm91bmRzKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQogICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY05vbmUsIEFzc2Vy
dEluQm91bmRzLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSk7
Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHlPbihtX21hcFtkYXRhLm1f
a2V5XS5tX2RlcGVuZGVuY3kpOworICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50
aXR5T24obV9tYXAuZ2V0KGRhdGEubV9rZXkpLm1fZGVwZW5kZW5jeSk7CiAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKQEAgLTM3OCw3ICszODQsNyBAQCBjbGFzcyBJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBvcmlnaW4sIGpz
TnVtYmVyKGFkZGVuZCksIHNvdXJjZS51c2VLaW5kKCkpKTsKICAgICB9CiAgICAgCi0gICAgdXNp
bmcgUmFuZ2VNYXAgPSBTdGRVbm9yZGVyZWRNYXA8UmFuZ2VLZXksIFJhbmdlLCBIYXNoTWV0aG9k
PFJhbmdlS2V5Pj47CisgICAgdXNpbmcgUmFuZ2VNYXAgPSBIYXNoTWFwPEdlbmVyaWNIYXNoS2V5
PFJhbmdlS2V5LCBSYW5nZUtleTo6SGFzaD4sIFJhbmdlPjsKICAgICBSYW5nZU1hcCBtX21hcDsK
ICAgICAKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGViMjBjZTY0NWFmMGJiNTg0NTVm
NjgwM2U4ZDQ3MjRhNzRhNzFmOTQuLjFmNjVlYzA0ZTI0NmFiYmY5OTMwOGNlYjM0NjI1MDdmYzFm
ZmZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CkBAIC01MzEsMTcgKzUzMSwxMSBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91Ymxl
Q29uc3RhbnQoTm9kZSogbm9kZSkKIHsKICAgICBkb3VibGUgdmFsdWUgPSBub2RlLT5hc051bWJl
cigpOwogICAgIGludDY0X3QgdmFsdWVCaXRzID0gYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVl
KTsKLSAgICBhdXRvIGl0ID0gbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50c01hcC5maW5kKHZhbHVl
Qml0cyk7Ci0gICAgaWYgKGl0ICE9IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHNNYXAuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwotCi0gICAgaWYgKCFtX2dyYXBoLm1fZG91Ymxl
Q29uc3RhbnRzKQotICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gbWFrZVVuaXF1
ZTxCYWc8ZG91YmxlPj4oKTsKLQotICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0g
bV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cy0+YWRkKCk7Ci0gICAgKmFkZHJlc3NJbkNvbnN0YW50
UG9vbCA9IHZhbHVlOwotICAgIG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHNNYXBbdmFsdWVCaXRz
XSA9IGFkZHJlc3NJbkNvbnN0YW50UG9vbDsKLSAgICByZXR1cm4gYWRkcmVzc0luQ29uc3RhbnRQ
b29sOworICAgIHJldHVybiBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzTWFwLmVuc3VyZSh2YWx1
ZUJpdHMsIFsmXXsKKyAgICAgICAgZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dy
YXBoLm1fZG91YmxlQ29uc3RhbnRzLmFkZCgpOworICAgICAgICAqYWRkcmVzc0luQ29uc3RhbnRQ
b29sID0gdmFsdWU7CisgICAgICAgIHJldHVybiBhZGRyZXNzSW5Db25zdGFudFBvb2w7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA2MDllNmRkZjUxODE4YzVjMGE1MWRmNjk1
ODA3MmRlNGVjODhkYzM4Li5kMGFjNTFjOGU4ZmFlNzNhZWEzMWEzZWM1NGM1OGVjOTBkZDczMjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMDEsOCArMTAxLDggQEAKICNpbmNsdWRlICJZYXJySklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVk
ZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKyNpbmNsdWRlIDx3dGYvR2VuZXJpY0hh
c2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvUmVjdXJzYWJsZUxhbWJkYS5oPgotI2luY2x1ZGUgPHd0
Zi9TdGRVbm9yZGVyZWRTZXQuaD4KIAogI3VuZGVmIFJFTEVBU0VfQVNTRVJUCiAjZGVmaW5lIFJF
TEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCkBAIC0xNzg0Niw3ICsxNzg0Niw3IEBAIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxTd2l0Y2hD
YXNlPiBjYXNlczsKICAgICAgICAgLy8gVGhlc2UgbWF5IGJlIG5lZ2F0aXZlLCBvciB6ZXJvLCBv
ciBwcm9iYWJseSBvdGhlciBzdHVmZiwgdG9vLiBXZSBkb24ndCB3YW50IHRvIG1lc3Mgd2l0aCBI
YXNoU2V0J3MgY29ybmVyIGNhc2VzIGFuZCB3ZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCB0aHJv
dWdocHV0IGhlcmUuCi0gICAgICAgIFN0ZFVub3JkZXJlZFNldDxpbnQzMl90PiBhbHJlYWR5SGFu
ZGxlZDsKKyAgICAgICAgSGFzaFNldDxHZW5lcmljSGFzaEtleTxpbnQzMl90Pj4gYWxyZWFkeUhh
bmRsZWQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQgd2UncmUgdXNp
bmcgdGhlIGJ5dGVjb2RlJ3Mgc3dpdGNoIHRhYmxlIG1lYW5zIHRoYXQgdGhlCiAgICAgICAgICAg
ICAvLyBmb2xsb3dpbmcgREZHIElSIHRyYW5zZm9ybWF0aW9uIHdvdWxkIGJlIGludmFsaWQuCkBA
IC0xNzg4NCw3ICsxNzg4NCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBpdGVyICE9IHVubGlua2VkVGFibGUubV9v
ZmZzZXRUYWJsZS5lbmQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFVzZSBtX2lu
ZGV4SW5UYWJsZSBpbnN0ZWFkIG9mIG1fYnJhbmNoT2Zmc2V0IHRvIG1ha2UgU3dpdGNoIHRhYmxl
IGRlbnNlLgotICAgICAgICAgICAgaWYgKCFhbHJlYWR5SGFuZGxlZC5pbnNlcnQoaXRlci0+dmFs
dWUubV9pbmRleEluVGFibGUpLnNlY29uZCkKKyAgICAgICAgICAgIGlmICghYWxyZWFkeUhhbmRs
ZWQuYWRkKGl0ZXItPnZhbHVlLm1faW5kZXhJblRhYmxlKS5pc05ld0VudHJ5KQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGUuY3BwCmluZGV4IDY4YzA2MDZiMDcxMzEyNGM3YWExNzBjMWRhMmQ5OTZk
OGUxNGUzYjIuLjRhYzg2NzRhMWY4YWY4MjgyZmI4ZTQwY2VjNzI4Mjk3Yzg3YzhmMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlLmNwcApAQCAtMzIsMTYgKzMyLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBi
b29sIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6aGFzRXhlY3V0ZWRBdE9mZnNldChTb3VyY2VJ
RCBpZCwgdW5zaWduZWQgb2Zmc2V0KQogewotICAgIGlmIChtX3JhbmdlTWFwLmZpbmQoaWQpID09
IG1fcmFuZ2VNYXAuZW5kKCkpCisgICAgYXV0byBpdGVyYXRvciA9IG1fcmFuZ2VNYXAuZmluZChp
ZCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmFuZ2VNYXAuZW5kKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIFJhbmdlTWFwJiBtYXAgPSBtX3JhbmdlTWFwLmZpbmQoaWQpLT5zZWNv
bmQ7CisgICAgUmFuZ2VNYXAmIG1hcCA9IGl0ZXJhdG9yLT52YWx1ZTsKICAgICB1bnNpZ25lZCBk
aXN0YW5jZSA9IFVJTlRfTUFYOwogICAgIGJvb2wgaGFzRXhlY3V0ZWQgPSBmYWxzZTsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25SYW5nZSYgcmFu
Z2UgPSBwYWlyLmZpcnN0OworICAgICAgICBjb25zdCBGdW5jdGlvblJhbmdlJiByYW5nZSA9IHBh
aXIua2V5LmtleSgpOwogICAgICAgICBpZiAocmFuZ2UubV9zdGFydCA8PSBvZmZzZXQgJiYgb2Zm
c2V0IDw9IHJhbmdlLm1fZW5kICYmIHJhbmdlLm1fZW5kIC0gcmFuZ2UubV9zdGFydCA8IGRpc3Rh
bmNlKSB7Ci0gICAgICAgICAgICBoYXNFeGVjdXRlZCA9IHBhaXIuc2Vjb25kOworICAgICAgICAg
ICAgaGFzRXhlY3V0ZWQgPSBwYWlyLnZhbHVlOwogICAgICAgICAgICAgZGlzdGFuY2UgPSByYW5n
ZS5tX2VuZCAtIHJhbmdlLm1fc3RhcnQ7CiAgICAgICAgIH0KICAgICB9CkBAIC01MSw0NiArNTIs
NDEgQEAgYm9vbCBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6Omhhc0V4ZWN1dGVkQXRPZmZzZXQo
U291cmNlSUQgaWQsIHVuc2lnbmVkIG9mZnNldCkKIAogdm9pZCBGdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGU6Omluc2VydFVuZXhlY3V0ZWRSYW5nZShTb3VyY2VJRCBpZCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGVuZCkKIHsKLSAgICBpZiAobV9yYW5nZU1hcC5maW5kKGlkKSA9PSBtX3Jhbmdl
TWFwLmVuZCgpKSB7Ci0gICAgICAgIFJhbmdlTWFwIG1hcDsKLSAgICAgICAgbV9yYW5nZU1hcFtp
ZF0gPSBtYXA7Ci0gICAgfQotCi0gICAgUmFuZ2VNYXAmIG1hcCA9IG1fcmFuZ2VNYXAuZmluZChp
ZCktPnNlY29uZDsKKyAgICBSYW5nZU1hcCYgbWFwID0gbV9yYW5nZU1hcC5hZGQoaWQsIFJhbmdl
TWFwIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIEZ1bmN0aW9uUmFuZ2UgcmFuZ2U7CiAgICAg
cmFuZ2UubV9zdGFydCA9IHN0YXJ0OwogICAgIHJhbmdlLm1fZW5kID0gZW5kOwogICAgIC8vIE9u
bHkgaW5zZXJ0IHVuZXhlY3V0ZWQgcmFuZ2VzIG9uY2UgZm9yIGEgZ2l2ZW4gc291cmNlSUQgYmVj
YXVzZSB3ZSBtYXkgcnVuIGludG8gYSBzaXR1YXRpb24gd2hlcmUgYW4gZXhlY3V0YWJsZSBleGVj
dXRlcywgdGhlbiBpcyBHQ2VkLCBhbmQgdGhlbiBpcyBhbGxvY2F0ZWQgYWdhaW4sCiAgICAgLy8g
YW5kIHRyaWVzIHRvIHJlaW5zZXJ0IGl0c2VsZiwgY2xhaW1pbmcgaXQgaGFzIG5ldmVyIHJ1biwg
YnV0IHRoaXMgaXMgZmFsc2UgYmVjYXVzZSBpdCBpbmRlZWQgYWxyZWFkeSBleGVjdXRlZC4KLSAg
ICBpZiAobWFwLmZpbmQocmFuZ2UpID09IG1hcC5lbmQoKSkKLSAgICAgICAgbWFwW3JhbmdlXSA9
IGZhbHNlOworICAgIG1hcC5hZGQocmFuZ2UsIGZhbHNlKTsKIH0KIAogdm9pZCBGdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGU6OnJlbW92ZVVuZXhlY3V0ZWRSYW5nZShTb3VyY2VJRCBpZCwgdW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5ldmVy
IGhhdmUgYW4gaW5zdGFuY2Ugd2hlcmUgd2UgcmV0dXJuIGhlcmUsIGJ1dCBjdXJyZW50bHkgZG8g
aW4gc29tZSBzaXR1YXRpb25zLiBGaW5kIG91dCB3aHkuCi0gICAgaWYgKG1fcmFuZ2VNYXAuZmlu
ZChpZCkgPT0gbV9yYW5nZU1hcC5lbmQoKSkKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yYW5nZU1h
cC5maW5kKGlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yYW5nZU1hcC5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmFuZ2VNYXAmIG1hcCA9IG1fcmFuZ2VNYXAuZmluZChpZCktPnNl
Y29uZDsKKyAgICBSYW5nZU1hcCYgbWFwID0gaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgRnVuY3Rp
b25SYW5nZSByYW5nZTsKICAgICByYW5nZS5tX3N0YXJ0ID0gc3RhcnQ7CiAgICAgcmFuZ2UubV9l
bmQgPSBlbmQ7Ci0gICAgbWFwW3JhbmdlXSA9IHRydWU7CisgICAgbWFwLnNldChyYW5nZSwgdHJ1
ZSk7CiB9CiAKIFZlY3RvcjxzdGQ6OnR1cGxlPGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZD4+IEZ1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6Z2V0RnVuY3Rpb25SYW5nZXMoU291cmNlSUQgaWQpCiB7
CiAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPj4gcmFuZ2Vz
KDApOwotICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFuZ2VNYXAuZmluZChpZCk7Ci0gICAgaWYg
KGZpbmRSZXN1bHQgPT0gbV9yYW5nZU1hcC5lbmQoKSkKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9y
YW5nZU1hcC5maW5kKGlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yYW5nZU1hcC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIHJhbmdlczsKIAotICAgIFJhbmdlTWFwJiBtYXAgPSBtX3JhbmdlTWFw
LmZpbmQoaWQpLT5zZWNvbmQ7CisgICAgUmFuZ2VNYXAmIG1hcCA9IGl0ZXJhdG9yLT52YWx1ZTsK
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25SYW5n
ZSYgcmFuZ2UgPSBwYWlyLmZpcnN0OwotICAgICAgICBib29sIGhhc0V4ZWN1dGVkID0gcGFpci5z
ZWNvbmQ7CisgICAgICAgIGNvbnN0IEZ1bmN0aW9uUmFuZ2UmIHJhbmdlID0gcGFpci5rZXkua2V5
KCk7CisgICAgICAgIGJvb2wgaGFzRXhlY3V0ZWQgPSBwYWlyLnZhbHVlOwogICAgICAgICByYW5n
ZXMuYXBwZW5kKHN0ZDo6dHVwbGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPihoYXNFeGVjdXRl
ZCwgcmFuZ2UubV9zdGFydCwgcmFuZ2UubV9lbmQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgK
aW5kZXggY2FhOTJkNmZlZTY0ZTg4YmRmYzRmMDBiNmEzNzJlMmI4MTljY2Q5MS4uMGJlOTIyOTIw
N2RjMWJkNWE3ZjQzZmJjNDFkOTM3NTlmOGNlNGViOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKQEAgLTI2
LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaE1ldGhvZC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRVbm9yZGVyZWRNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvR2VuZXJpY0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzUsNiArMzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiBj
bGFzcyBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgewogcHVibGljOgogICAgIHN0cnVjdCBGdW5j
dGlvblJhbmdlIHsKKyAgICAgICAgc3RydWN0IEhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgRnVuY3Rpb25SYW5nZSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgp
OyB9CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGdW5jdGlvblJhbmdlJiBh
LCBjb25zdCBGdW5jdGlvblJhbmdlJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7
CisgICAgICAgIH07CisKICAgICAgICAgRnVuY3Rpb25SYW5nZSgpIHt9CiAgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGdW5jdGlvblJhbmdlJiBvdGhlcikgY29uc3QgCiAgICAgICAgIHsK
QEAgLTU1LDggKzYwLDggQEAgY2xhc3MgRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlIHsKICAgICBW
ZWN0b3I8c3RkOjp0dXBsZTxib29sLCB1bnNpZ25lZCwgdW5zaWduZWQ+PiBnZXRGdW5jdGlvblJh
bmdlcyhTb3VyY2VJRCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmFuZ2VNYXAgPSBTdGRVbm9y
ZGVyZWRNYXA8RnVuY3Rpb25SYW5nZSwgYm9vbCwgSGFzaE1ldGhvZDxGdW5jdGlvblJhbmdlPj47
Ci0gICAgdXNpbmcgU291cmNlSURUb1JhbmdlTWFwID0gU3RkVW5vcmRlcmVkTWFwPGludHB0cl90
LCBSYW5nZU1hcD47CisgICAgdXNpbmcgUmFuZ2VNYXAgPSBIYXNoTWFwPEdlbmVyaWNIYXNoS2V5
PEZ1bmN0aW9uUmFuZ2UsIEZ1bmN0aW9uUmFuZ2U6Okhhc2g+LCBib29sPjsKKyAgICB1c2luZyBT
b3VyY2VJRFRvUmFuZ2VNYXAgPSBIYXNoTWFwPEdlbmVyaWNIYXNoS2V5PGludHB0cl90PiwgUmFu
Z2VNYXA+OwogICAgIFNvdXJjZUlEVG9SYW5nZU1hcCBtX3JhbmdlTWFwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCmlu
ZGV4IDE1M2I2NzU4YmI5NGIxMjFlNjZiYjc0MmVlODU4MzNmOWE4NzM2OWMuLmMyYWY2MTlkM2M3
MGUwOTRjZWIwM2JmY2UyOGE5YjVhZDgxNWU4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKQEAgLTQxLDIxICs0MSwyMyBA
QCBzdGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gVHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5
cGVMb2NhdGlvbihHbG9iYWxWYXJpYWJsZQogICAgIGtleS5tX3N0YXJ0ID0gc3RhcnQ7CiAgICAg
a2V5Lm1fZW5kID0gZW5kOwogCisgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IG51bGxwdHI7
CiAgICAgYm9vbCBpc05ld0xvY2F0aW9uID0gZmFsc2U7Ci0gICAgaWYgKG1fbG9jYXRpb25NYXAu
ZmluZChrZXkpID09IG1fbG9jYXRpb25NYXAuZW5kKCkpIHsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9sb2NhdGlvbk1hcC5maW5kKGtleSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fbG9jYXRpb25N
YXAuZW5kKCkpIHsKICAgICAgICAgQVNTRVJUKHZtLT50eXBlUHJvZmlsZXIoKSk7Ci0gICAgICAg
IFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bS0+dHlwZVByb2ZpbGVyKCktPm5leHRUeXBlTG9j
YXRpb24oKTsKKyAgICAgICAgbG9jYXRpb24gPSB2bS0+dHlwZVByb2ZpbGVyKCktPm5leHRUeXBl
TG9jYXRpb24oKTsKICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IGdsb2Jh
bFZhcmlhYmxlSUQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0gc291cmNlSUQ7CiAg
ICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPSBzdGFydDsKICAgICAgICAgbG9jYXRpb24t
Pm1fZGl2b3RFbmQgPSBlbmQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgPSBX
VEZNb3ZlKGdsb2JhbFR5cGVTZXQpOwogCi0gICAgICAgIG1fbG9jYXRpb25NYXBba2V5XSA9IGxv
Y2F0aW9uOworICAgICAgICBtX2xvY2F0aW9uTWFwLmFkZChrZXksIGxvY2F0aW9uKTsKICAgICAg
ICAgaXNOZXdMb2NhdGlvbiA9IHRydWU7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBsb2Nh
dGlvbiA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBt
X2xvY2F0aW9uTWFwLmZpbmQoa2V5KS0+c2Vjb25kOwogICAgIHJldHVybiBzdGQ6OnBhaXI8VHlw
ZUxvY2F0aW9uKiwgYm9vbD4obG9jYXRpb24sIGlzTmV3TG9jYXRpb24pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuaAppbmRleCBh
OGU4OGFkYmQxNWFhYjgwZTM0MWVlNmE0MzE3YWYzMTI0NTI0MGViLi44YTBhNzRlNTIwMGQzNDc2
NjZlNmE2ZGI0OGJkMWY1YzFjODc4ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpbmNsdWRl
ICJTb3VyY2VJRC5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNZXRob2QuaD4KLSNpbmNsdWRlIDx3dGYv
U3RkVW5vcmRlcmVkTWFwLmg+CisjaW5jbHVkZSA8d3RmL0dlbmVyaWNIYXNoS2V5Lmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0zOCw2ICszNywxMiBAQCBjbGFzcyBWTTsKIGNsYXNzIFR5cGVM
b2NhdGlvbkNhY2hlIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgTG9jYXRpb25LZXkgeworICAgICAg
ICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBM
b2NhdGlvbktleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBMb2NhdGlvbktleSYgYSwgY29uc3QgTG9jYXRpb25LZXkmIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAgfTsKKwogICAgICAgICBM
b2NhdGlvbktleSgpIHt9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhdGlvbktl
eSYgb3RoZXIpIGNvbnN0IAogICAgICAgICB7CkBAIC02MCw3ICs2NSw3IEBAIGNsYXNzIFR5cGVM
b2NhdGlvbkNhY2hlIHsKIAogICAgIHN0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBnZXRU
eXBlTG9jYXRpb24oR2xvYmFsVmFyaWFibGVJRCwgU291cmNlSUQsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBlbmQsIFJlZlB0cjxUeXBlU2V0PiYmLCBWTSopOwogcHJpdmF0ZToKLSAgICB1c2lu
ZyBMb2NhdGlvbk1hcCA9IFN0ZFVub3JkZXJlZE1hcDxMb2NhdGlvbktleSwgVHlwZUxvY2F0aW9u
KiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+OworICAgIHVzaW5nIExvY2F0aW9uTWFwID0gSGFz
aE1hcDxHZW5lcmljSGFzaEtleTxMb2NhdGlvbktleSwgTG9jYXRpb25LZXk6Okhhc2g+LCBUeXBl
TG9jYXRpb24qPjsKICAgICBMb2NhdGlvbk1hcCBtX2xvY2F0aW9uTWFwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTgyY2E2MmZkZTZlZWU4MjY3
NzFhMWIzMTdlZjg5MGFiMDdhOTcxZC4uOTFlNzgyYTM2NmRhZTIyMDk3NjBiN2I5YjlhZDIxMjcz
ZGE4ZTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
MDAsNiArODAwLDcgQEAKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQgLyogTm9ubW92
YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzRkQ2RDY2MjdBMUY2QUQwMDkzNTAwMCAvKiBHZW5lcmljSGFz
aEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljSGFzaEtleS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDE5RjJFNjIzQUI5RTIzMDBCMjYxMjkgLyogVmVjdG9ySGFzaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JIYXNoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRjaFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwYXRjaFNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE1LDYgKzExMTYsNyBAQAog
CQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICov
LAogCQkJCTFBMUQ4QjlCMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuaCAq
LywKIAkJCQk1M0YxRDk4NjIwNDc3Qjk4MDBFQkM2QkYgLyogRnVuY3Rpb25UcmFpdHMuaCAqLywK
KwkJCQlFM0ZENkQ2NjI3QTFGNkFEMDA5MzUwMDAgLyogR2VuZXJpY0hhc2hLZXkuaCAqLywKIAkJ
CQlFMzgzMUY5MjI3MDMxMDFBMDBFRjVFQjMgLyogR2VuZXJpY1RpbWVNaXhpbi5oICovLAogCQkJ
CUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKIAkJCQkwRjVCRjE3NDFG
MjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovLApAQCAtMTE0OSw5ICsxMTUxLDkgQEAK
IAkJCQlFMzM2Njc0OTI3MjI1NTA5MDAyNTkxMjIgLyogSW50MTI4LmNwcCAqLywKIAkJCQlGNkQ2
N0QzMjI2RjkwMTQyMDA2RTAzNDkgLyogSW50MTI4LmggKi8sCiAJCQkJMzNGRDQ4MTEyNjVDQjM4
MDAwQUJFNEY0IC8qIEludGVyZmVyZW5jZUdyYXBoLmggKi8sCi0JCQkJNTI5NUIwMDQyNzkyMEM1
NDAwNkQ3NDZBIC8qIEl0ZXJhdGlvblN0YXR1cy5oICovLAogCQkJCTBGN0VCODVCMUZBOEZGNDEw
MEYxQUJDQiAvKiBJc29NYWxsb2MuaCAqLywKIAkJCQkwRjdFQjg1QzFGQThGRjQyMDBGMUFCQ0Ig
LyogSXNvTWFsbG9jSW5saW5lcy5oICovLAorCQkJCTUyOTVCMDA0Mjc5MjBDNTQwMDZENzQ2QSAv
KiBJdGVyYXRpb25TdGF0dXMuaCAqLywKIAkJCQk3Q0REN0ZGNzE4NkQyOTFFMDA3NDMzQ0QgLyog
SXRlcmF0b3JBZGFwdG9ycy5oICovLAogCQkJCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJ
dGVyYXRvclJhbmdlLmggKi8sCiAJCQkJN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05W
YWx1ZXMuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA0OWUwYzc2Njk5MzZjNDVmNGI0
ZmIyZTBmNGZjYmM3NmMxODI5Y2YxLi45ZWM0N2ZmYjhlZTFjYmI0MDcwYWRjZjlhNGVkZDNhMWQ1
MWFiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtODEsNiArODEsNyBAQCBzZXQoV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgRnVuY3Rpb24uaAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5oCiAg
ICAgRnVuY3Rpb25UcmFpdHMuaAorICAgIEdlbmVyaWNIYXNoS2V5LmgKICAgICBHZW5lcmljVGlt
ZU1peGluLmgKICAgICBHZXRQdHIuaAogICAgIEdpZ2FjYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0dlbmVyaWNIYXNoS2V5LmggYi9Tb3VyY2UvV1RGL3d0Zi9HZW5lcmljSGFzaEtl
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxMzkxNjE3MTBmNTBiNTExMzgzMjMxNTE3ZTMxNmQ1MGUxYmU0YjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HZW5lcmljSGFzaEtleS5oCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxLZXk+PgorY2xhc3MgR2VuZXJpY0hhc2hLZXkgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCisgICAgc3RydWN0IEVtcHR5S2V5
IHsgfTsKKyAgICBzdHJ1Y3QgRGVsZXRlZEtleSB7IH07CisKK3B1YmxpYzoKKyAgICBjb25zdGV4
cHIgR2VuZXJpY0hhc2hLZXkoS2V5JiYga2V5KQorICAgICAgICA6IG1fdmFsdWUoc3RkOjppbl9w
bGFjZV90eXBlX3Q8S2V5PigpLCBXVEZNb3ZlKGtleSkpCisgICAgeworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEs+CisgICAgY29uc3RleHByIEdlbmVyaWNIYXNoS2V5KEsmJiBrZXkp
CisgICAgICAgIDogbV92YWx1ZShzdGQ6OmluX3BsYWNlX3R5cGVfdDxLZXk+KCksIHN0ZDo6Zm9y
d2FyZDxLPihrZXkpKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgR2VuZXJpY0hhc2hL
ZXkoSGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpCisgICAgICAgIDogbV92YWx1ZShFbXB0eUtleSB7
IH0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBHZW5lcmljSGFzaEtleShIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fdmFsdWUoRGVsZXRlZEtleSB7IH0pCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBjb25zdCBLZXkmIGtleSgpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6Z2V0PEtleT4obV92YWx1ZSk7IH0KKyAgICBjb25zdGV4cHIgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQo
IWlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgJiYgIWlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpKTsK
KyAgICAgICAgcmV0dXJuIEhhc2hBcmc6Omhhc2goa2V5KCkpOworICAgIH0KKworICAgIGNvbnN0
ZXhwciBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxEZWxldGVkS2V5PihtX3ZhbHVlKTsgfQorICAgIGNvbnN0ZXhwciBi
b29sIGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8RW1wdHlLZXk+KG1fdmFsdWUpOyB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEdlbmVyaWNIYXNoS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVCghaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSAmJiAhaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkpOworICAgICAgICByZXR1cm4gSGFzaEFyZzo6
ZXF1YWwoa2V5KCksIG90aGVyLmtleSgpKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEdlbmVyaWNIYXNoS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVCghaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSAmJiAhaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkpOworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dmFyaWFudDxLZXksIEVt
cHR5S2V5LCBEZWxldGVkS2V5PiBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSywg
dHlwZW5hbWUgSD4gc3RydWN0IEhhc2hUcmFpdHM8R2VuZXJpY0hhc2hLZXk8SywgSD4+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8R2VuZXJpY0hhc2hLZXk8SywgSD4+IHsKKyAgICBzdGF0aWMgR2VuZXJp
Y0hhc2hLZXk8SywgSD4gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEdlbmVyaWNIYXNoS2V5PEssIEg+
IHsgSGFzaFRhYmxlRW1wdHlWYWx1ZSB9OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKEdlbmVyaWNIYXNoS2V5PEssIEg+JiBzbG90KSB7IHNsb3QgPSBHZW5lcmljSGFz
aEtleTxLLCBIPiB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OyB9CisgICAgc3RhdGljIGJvb2wg
aXNEZWxldGVkVmFsdWUoY29uc3QgR2VuZXJpY0hhc2hLZXk8SywgSD4mIHZhbHVlKSB7IHJldHVy
biB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBLLCB0eXBlbmFtZSBIPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8R2VuZXJpY0hhc2hLZXk8Sywg
SD4+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBHZW5lcmljSGFzaEtleTxLLCBI
PiYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgR2VuZXJpY0hhc2hLZXk8SywgSD4mIGEsIGNvbnN0IEdlbmVyaWNIYXNoS2V5PEssIEg+JiBi
KSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK30KKwordXNpbmcgV1RGOjpHZW5l
cmljSGFzaEtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCmlu
ZGV4IDRiYWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFiZGIzYzYzMzBhODguLmM1NTZmNDQ0Zjlm
ZjU5N2QyNjM1NzgzNDEyOTExYmE3ZjgyZDg5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
UXVldWVkVmlkZW9PdXRwdXQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9PYnNl
cnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hT
ZXQuaD4KIAogT0JKQ19DTEFTUyBBVlBsYXllcjsKQEAgLTY3LDcgKzY4LDcgQEAgY2xhc3MgUXVl
dWVkVmlkZW9PdXRwdXQKICAgICB1c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBP
YnNlcnZlcjx2b2lkKCk+OwogICAgIHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
KGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOwogCi0gICAgdXNpbmcgSW1hZ2VN
YXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPj47Cisg
ICAgdXNpbmcgSW1hZ2VNYXAgPSBTdGRNYXA8TWVkaWFUaW1lLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4+OwogCiAgICAgdm9pZCByYXRlQ2hhbmdlZChmbG9hdCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450380</attachid>
            <date>2022-01-30 22:20:33 -0800</date>
            <delta_ts>2022-01-30 22:35:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235872-20220130222032.patch</filename>
            <type>text/plain</type>
            <size>28310</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NTUxYmNjNjM4NTcwYjk4ZjZjMTU3NDZkNzgwNjk3ZDZlZDkwMzVjLi44Y2ZiMGYxYThlMTJiYzg5
ZWIyYjEzMTRkOTJhNDMxOTQwYWIyMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBHZW5lcmljSGFzaEtleQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEdlbmVyaWNIYXNoS2V5IGFuZCBXVEY6
Okhhc2hTZXQgLyBXVEY6Okhhc2hNYXAuCisKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uRGF0YS5o
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hl
Y2tDb21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29t
YmluaW5nUGhhc2U6OlJhbmdlS2V5OjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6UmFuZ2VLZXk6Okhhc2g6OmVxdWFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aGFuZGxlQmxvY2spOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1l
ci5jcHA6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6Omhhc0V4ZWN1dGVkQXRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6Omluc2VydFVuZXhl
Y3V0ZWRSYW5nZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTo6cmVt
b3ZlVW5leGVjdXRlZFJhbmdlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlOjpnZXRGdW5jdGlvblJhbmdlcyk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkhhc0V4
ZWN1dGVkQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOjpG
dW5jdGlvblJhbmdlOjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlOjpGdW5jdGlvblJhbmdlOjpIYXNoOjplcXVhbCk6CisgICAgICAgICogcnVudGlt
ZS9UeXBlTG9jYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlR5cGVMb2NhdGlvbkNhY2hl
OjpnZXRUeXBlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUu
aDoKKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uQ2FjaGU6OkxvY2F0aW9uS2V5OjpIYXNoOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uQ2FjaGU6OkxvY2F0aW9uS2V5OjpIYXNo
OjplcXVhbCk6CisKIDIwMjItMDEtMjggIFRvbSBUYXJ0YXJpbiAgPHRvbUBsZWFuaW5ndGVjaC5j
b20+CiAKICAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIFdBU00gYnJhbmNoIGhpbnRpbmcg
cHJvcG9zYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggM2U0YmFlNTJkNTNiN2MxMTBlY2RiNDg5MTYxZjEzOGNkNTZiYmZjOC4u
NDUwMjYzZDFjMmViNzY1NGRhNTc3ZjVkNmJkNmZhOGZmOTYxNTgxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAyMi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXVEZdIEFkZCBHZW5lcmljSGFzaEtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIEdlbmVyaWNIYXNoS2V5PFQ+
LCB3aGljaCBjYW4gcmVwcmVzZW50IGFueSBIYXNoVGFibGUncyBrZXkKKyAgICAgICAgZXZlbiBp
ZiBLZXkgZG9lcyBub3QgaGF2ZSBFbXB0eSAvIERlbGV0ZWQgdmFsdWVzLiBQcmV2aW91c2x5IHdl
IHdlcmUgdXNpbmcKKyAgICAgICAgU3RkVW5vcmRlcmVkU2V0IC8gU3RkVW5vcmRlcmVkTWFwIGlu
c3RlYWQuIEJ1dCwgKDEpIHRoZXkgYXJlIGRvaW5nIHNpbWlsYXIKKyAgICAgICAgdGhpbmcgdG8g
R2VuZXJpY0hhc2hLZXkgdG8ga2VlcCBlbXB0eSBvciBkZWxldGVkIHZhbHVlcywgYW5kICgyKSBi
eSB1c2luZworICAgICAgICBHZW5lcmljSGFzaEtleSB3ZSBjYW4gY29uc2lzdGVudGx5IHVzZSBX
VEY6Okhhc2hNYXAgZXRjLiBmb3IgYWxsIHBvc3NpYmxlCisgICAgICAgIGNhc2VzLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9HZW5lcmljSGFzaEtleS5oOiBBZGRlZC4KKwogMjAy
Mi0wMS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VS
VElPTiBGQUlMRUQ6IG1fcHJvY2Vzc0NhbGxiYWNrIGluIFdlYkNvcmU6OkF1ZGlvV29ya2xldFBy
b2Nlc3Nvcjo6cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJhNzdkNWQ3NWUwZTQ2MTY3NjFiZTU1ZThk
OTc5YmEyNWNkMTM4YzYuLjAwMzk4OTQ0ZGMxYzk0ODQ4YzY2ZWZhOTBkYjAwODM0ODM2Y2JkODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0zMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBHZW5lcmljSGFzaEtleQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZp
b3IgY2hhbmdlLiBXZSBzaG91bGQgdXNlIFN0ZE1hcC4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUg
U3RkTWFwIHNpbmNlIGl0IHJlcXVpcmVzIG9yZGVyZWQgaXRlcmF0aW9ucyBieSB0aGUga2V5LCBz
byBpdCBzaG91bGQgbm90IGJlIGEgSGFzaE1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6CisKIDIwMjItMDEtMjgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJ
TEVEOiBtX3Byb2Nlc3NDYWxsYmFjayBpbiBXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6
OnByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKaW5kZXgg
MGRiNGFmZmFlNzg1NTA5ZmUxMjc3MmI1Yzg3NzRkZThkODUzYWRmMC4uNDgxZjZjZDIxNzIzZTVm
YWJlYWZjNzE4Y2IzNDJlNmNiMmM3MzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb25EYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb25EYXRhLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBDb21tb25EYXRhIDogcHVi
bGljIE1hdGhJQ0hvbGRlciB7CiAgICAgYm9vbCBoYXNWTVRyYXBzQnJlYWtwb2ludHNJbnN0YWxs
ZWQgeyBmYWxzZSB9OwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEJhZzxkb3VibGU+PiBkb3VibGVDb25zdGFudHM7CisgICAgQmFnPGRvdWJsZT4gZG91
YmxlQ29uc3RhbnRzOwogI2VuZGlmCiAgICAgCiAgICAgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNv
dW50IHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMWJlYzhkZWVkOWRiZGJhNTA3ZDlhM2ZiMWIwMzll
MjZlZTFhZGQ3Ny4uOTNiZmM2NjNmOTZmNjFiN2IyYmZmZjQzMDE4MzUxY2U2MDU5ZTM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDAsMTAgKzQwLDEwIEBACiAjaW5j
bHVkZSAiSklUU2Nhbm5hYmxlLmgiCiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvR2VuZXJp
Y0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGFj
a0NoZWNrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9T
dGRVbm9yZGVyZWRNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewpAQCAtMTE3OSw4ICsxMTc5LDggQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmly
dHVhbCBTY2FubmFibGUgewogICAgIEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmluZz4g
bV9jb3BpZWRTdHJpbmdzOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBTdGRVbm9yZGVy
ZWRNYXA8aW50NjRfdCwgZG91YmxlKj4gbV9kb3VibGVDb25zdGFudHNNYXA7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEJhZzxkb3VibGU+PiBtX2RvdWJsZUNvbnN0YW50czsKKyAgICBIYXNoTWFwPEdl
bmVyaWNIYXNoS2V5PGludDY0X3Q+LCBkb3VibGUqPiBtX2RvdWJsZUNvbnN0YW50c01hcDsKKyAg
ICBCYWc8ZG91YmxlPiBtX2RvdWJsZUNvbnN0YW50czsKICNlbmRpZgogICAgIAogICAgIE9wdGlt
aXphdGlvbkZpeHBvaW50U3RhdGUgbV9maXhwb2ludFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNw
cAppbmRleCBjOWFjZjJlNzRiMTI3YWUwYzRkOTRlZGU1NzQxMWE2NmJiOTcwZDBjLi5mMjBlNzYx
Y2U4ZTBiMTdhOWIwN2RhZTFiOTg3NDIwNDdjMzYyYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNw
cApAQCAtNTIsNiArNTIsMTIgQEAgY2xhc3MgSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUmFuZ2VLZXkgeworICAgICAgICBz
dHJ1Y3QgSGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSYW5n
ZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBSYW5nZUtleSYgYSwgY29uc3QgUmFuZ2VLZXkmIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgICAgIH07CisKICAgICAgICAgc3RhdGljIFJh
bmdlS2V5IGFkZGl0aW9uKEVkZ2UgZWRnZSkKICAgICAgICAgewogICAgICAgICAgICAgUmFuZ2VL
ZXkgcmVzdWx0OwpAQCAtMTg1LDggKzE5MSw4IEBAIGNsYXNzIEludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3IgIiwg
bm9kZSwgIjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFJhbmdlJiByYW5n
ZSA9IG1fbWFwW2RhdGEubV9rZXldOworCisgICAgICAgICAgICBSYW5nZSYgcmFuZ2UgPSBtX21h
cC5hZGQoZGF0YS5tX2tleSwgUmFuZ2UgeyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAg
ICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsKICAgICAg
ICAgICAgIGlmIChyYW5nZS5tX2NvdW50KSB7CkBAIC0yMTMsNyArMjE5LDcgQEAgY2xhc3MgSW50
ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgUmFu
Z2VLZXlBbmRBZGRlbmQgZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwogICAgICAgICAg
ICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgUmFu
Z2UgcmFuZ2UgPSBtX21hcFtkYXRhLm1fa2V5XTsKKyAgICAgICAgICAgIFJhbmdlIHJhbmdlID0g
bV9tYXAuZ2V0KGRhdGEubV9rZXkpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGRhdGEubV9r
ZXksIHJhbmdlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIApAQCAt
MjYwLDcgKzI2Niw3IEBAIGNsYXNzIEludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25l
LCBDaGVja0luQm91bmRzLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZShtaW5Ob2RlLCBJbnQzMlVzZSksIEVkZ2UoZGF0YS5tX2tleS5tX2tleSwgSW50MzJV
c2UpKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtX21hcFtk
YXRhLm1fa2V5XS5tX2RlcGVuZGVuY3kgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICBtX21hcC5maW5kKGRhdGEubV9rZXkpLT52YWx1ZS5tX2RlcGVuZGVu
Y3kgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZUluZGV4LCBTcGVjTm9uZSwgQ2hlY2tJbkJvdW5kcywgbm9kZS0+b3JpZ2luLAogICAgICAg
ICAgICAgICAgICAgICAgICAgRWRnZShtYXhOb2RlLCBJbnQzMlVzZSksIEVkZ2UoZGF0YS5tX2tl
eS5tX2tleSwgSW50MzJVc2UpLCBFZGdlKG1pbkNoZWNrLCBVbnR5cGVkVXNlKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjcxLDcgKzI3Nyw3IEBAIGNsYXNzIEludGVnZXJDaGVj
a0NvbWJpbmluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBtX21hcFtkYXRhLm1fa2V5XS5tX2hvaXN0ZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIG1fbWFwLmZpbmQoZGF0YS5tX2tleSktPnZhbHVlLm1faG9pc3RlZCA9IHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIERvIHRoZSBlbGltaW5hdGlv
bi4KQEAgLTI4NSw3ICsyOTEsNyBAQCBjbGFzcyBJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2hl
Y2tJbkJvdW5kcyk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlk
YXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigpKSkKICAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywg
bm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obV9tYXBbZGF0YS5tX2tleV0ubV9kZXBl
bmRlbmN5KTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG1fbWFw
LmdldChkYXRhLm1fa2V5KS5tX2RlcGVuZGVuY3kpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkBAIC0z
NzgsNyArMzg0LDcgQEAgY2xhc3MgSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihhZGRl
bmQpLCBzb3VyY2UudXNlS2luZCgpKSk7CiAgICAgfQogICAgIAotICAgIHVzaW5nIFJhbmdlTWFw
ID0gU3RkVW5vcmRlcmVkTWFwPFJhbmdlS2V5LCBSYW5nZSwgSGFzaE1ldGhvZDxSYW5nZUtleT4+
OworICAgIHVzaW5nIFJhbmdlTWFwID0gSGFzaE1hcDxHZW5lcmljSGFzaEtleTxSYW5nZUtleSwg
UmFuZ2VLZXk6Okhhc2g+LCBSYW5nZT47CiAgICAgUmFuZ2VNYXAgbV9tYXA7CiAgICAgCiAgICAg
SW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlYjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0
YTc0YTcxZjk0Li4xZjY1ZWMwNGUyNDZhYmJmOTkzMDhjZWIzNDYyNTA3ZmMxZmZmYTk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNTMxLDE3
ICs1MzEsMTEgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5v
ZGUqIG5vZGUpCiB7CiAgICAgZG91YmxlIHZhbHVlID0gbm9kZS0+YXNOdW1iZXIoKTsKICAgICBp
bnQ2NF90IHZhbHVlQml0cyA9IGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSk7Ci0gICAgYXV0
byBpdCA9IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHNNYXAuZmluZCh2YWx1ZUJpdHMpOwotICAg
IGlmIChpdCAhPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzTWFwLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKLQotICAgIGlmICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykK
LSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VVbmlxdWU8QmFnPGRvdWJs
ZT4+KCk7Ci0KLSAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IG1fZ3JhcGgubV9k
b3VibGVDb25zdGFudHMtPmFkZCgpOwotICAgICphZGRyZXNzSW5Db25zdGFudFBvb2wgPSB2YWx1
ZTsKLSAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzTWFwW3ZhbHVlQml0c10gPSBhZGRyZXNz
SW5Db25zdGFudFBvb2w7Ci0gICAgcmV0dXJuIGFkZHJlc3NJbkNvbnN0YW50UG9vbDsKKyAgICBy
ZXR1cm4gbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50c01hcC5lbnN1cmUodmFsdWVCaXRzLCBbJl17
CisgICAgICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0gbV9ncmFwaC5tX2RvdWJs
ZUNvbnN0YW50cy5hZGQoKTsKKyAgICAgICAgKmFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IHZhbHVl
OworICAgICAgICByZXR1cm4gYWRkcmVzc0luQ29uc3RhbnRQb29sOworICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggNjA5ZTZkZGY1MTgxOGM1YzBhNTFkZjY5NTgwNzJkZTRlYzg4
ZGMzOC4uZDBhYzUxYzhlOGZhZTczYWVhMzFhM2VjNTRjNThlYzkwZGQ3MzIwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxLDggKzEw
MSw4IEBACiAjaW5jbHVkZSAiWWFyckpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgPGF0b21pYz4K
ICNpbmNsdWRlIDx3dGYvQm94Lmg+CisjaW5jbHVkZSA8d3RmL0dlbmVyaWNIYXNoS2V5Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlY3Vyc2FibGVMYW1iZGEuaD4KLSNpbmNsdWRlIDx3dGYvU3RkVW5vcmRl
cmVkU2V0Lmg+CiAKICN1bmRlZiBSRUxFQVNFX0FTU0VSVAogI2RlZmluZSBSRUxFQVNFX0FTU0VS
VChhc3NlcnRpb24pIGRvIHsgXApAQCAtMTc4NDYsNyArMTc4NDYsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgIAogICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZT4gY2FzZXM7
CiAgICAgICAgIC8vIFRoZXNlIG1heSBiZSBuZWdhdGl2ZSwgb3IgemVybywgb3IgcHJvYmFibHkg
b3RoZXIgc3R1ZmYsIHRvby4gV2UgZG9uJ3Qgd2FudCB0byBtZXNzIHdpdGggSGFzaFNldCdzIGNv
cm5lciBjYXNlcyBhbmQgd2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgdGhyb3VnaHB1dCBoZXJl
LgotICAgICAgICBTdGRVbm9yZGVyZWRTZXQ8aW50MzJfdD4gYWxyZWFkeUhhbmRsZWQ7CisgICAg
ICAgIEhhc2hTZXQ8R2VuZXJpY0hhc2hLZXk8aW50MzJfdD4+IGFscmVhZHlIYW5kbGVkOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgZmFjdCB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBieXRl
Y29kZSdzIHN3aXRjaCB0YWJsZSBtZWFucyB0aGF0IHRoZQogICAgICAgICAgICAgLy8gZm9sbG93
aW5nIERGRyBJUiB0cmFuc2Zvcm1hdGlvbiB3b3VsZCBiZSBpbnZhbGlkLgpAQCAtMTc4ODQsNyAr
MTc4ODQsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgaXRlciAhPSB1bmxpbmtlZFRhYmxlLm1fb2Zmc2V0VGFibGUu
ZW5kKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBVc2UgbV9pbmRleEluVGFibGUg
aW5zdGVhZCBvZiBtX2JyYW5jaE9mZnNldCB0byBtYWtlIFN3aXRjaCB0YWJsZSBkZW5zZS4KLSAg
ICAgICAgICAgIGlmICghYWxyZWFkeUhhbmRsZWQuaW5zZXJ0KGl0ZXItPnZhbHVlLm1faW5kZXhJ
blRhYmxlKS5zZWNvbmQpCisgICAgICAgICAgICBpZiAoIWFscmVhZHlIYW5kbGVkLmFkZChpdGVy
LT52YWx1ZS5tX2luZGV4SW5UYWJsZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXgg
ZmQ0OTRhZmU1MGE4MmY1YmEyZWNkZTgyMjUyMjY1ZWU4YzFlNTRlMi4uOGMzMzc0NjZlMTc4NTRj
ZDJjY2NjNTMwNGMyOTU3MTEwYmZmZDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBEZWZlcnJlZFdvcmtUaW1lckludGVybmFsIHsKLXN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CiB9CiAKIGlubGluZSBEZWZlcnJlZFdvcmtUaW1lcjo6VGlja2V0RGF0
YTo6VGlja2V0RGF0YShWTSYgdm0sIEpTT2JqZWN0KiBzY3JpcHRFeGVjdXRpb25Pd25lciwgVmVj
dG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCmlu
ZGV4IDY4YzA2MDZiMDcxMzEyNGM3YWExNzBjMWRhMmQ5OTZkOGUxNGUzYjIuLjRhYzg2NzRhMWY4
YWY4MjgyZmI4ZTQwY2VjNzI4Mjk3Yzg3YzhmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcApAQCAt
MzIsMTYgKzMyLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBib29sIEZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZTo6aGFzRXhlY3V0ZWRBdE9mZnNldChTb3VyY2VJRCBpZCwgdW5zaWduZWQgb2Zmc2V0
KQogewotICAgIGlmIChtX3JhbmdlTWFwLmZpbmQoaWQpID09IG1fcmFuZ2VNYXAuZW5kKCkpCisg
ICAgYXV0byBpdGVyYXRvciA9IG1fcmFuZ2VNYXAuZmluZChpZCk7CisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fcmFuZ2VNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJhbmdl
TWFwJiBtYXAgPSBtX3JhbmdlTWFwLmZpbmQoaWQpLT5zZWNvbmQ7CisgICAgUmFuZ2VNYXAmIG1h
cCA9IGl0ZXJhdG9yLT52YWx1ZTsKICAgICB1bnNpZ25lZCBkaXN0YW5jZSA9IFVJTlRfTUFYOwog
ICAgIGJvb2wgaGFzRXhlY3V0ZWQgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXAp
IHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25SYW5nZSYgcmFuZ2UgPSBwYWlyLmZpcnN0OworICAg
ICAgICBjb25zdCBGdW5jdGlvblJhbmdlJiByYW5nZSA9IHBhaXIua2V5LmtleSgpOwogICAgICAg
ICBpZiAocmFuZ2UubV9zdGFydCA8PSBvZmZzZXQgJiYgb2Zmc2V0IDw9IHJhbmdlLm1fZW5kICYm
IHJhbmdlLm1fZW5kIC0gcmFuZ2UubV9zdGFydCA8IGRpc3RhbmNlKSB7Ci0gICAgICAgICAgICBo
YXNFeGVjdXRlZCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgaGFzRXhlY3V0ZWQgPSBwYWly
LnZhbHVlOwogICAgICAgICAgICAgZGlzdGFuY2UgPSByYW5nZS5tX2VuZCAtIHJhbmdlLm1fc3Rh
cnQ7CiAgICAgICAgIH0KICAgICB9CkBAIC01MSw0NiArNTIsNDEgQEAgYm9vbCBGdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGU6Omhhc0V4ZWN1dGVkQXRPZmZzZXQoU291cmNlSUQgaWQsIHVuc2lnbmVk
IG9mZnNldCkKIAogdm9pZCBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6Omluc2VydFVuZXhlY3V0
ZWRSYW5nZShTb3VyY2VJRCBpZCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKLSAg
ICBpZiAobV9yYW5nZU1hcC5maW5kKGlkKSA9PSBtX3JhbmdlTWFwLmVuZCgpKSB7Ci0gICAgICAg
IFJhbmdlTWFwIG1hcDsKLSAgICAgICAgbV9yYW5nZU1hcFtpZF0gPSBtYXA7Ci0gICAgfQotCi0g
ICAgUmFuZ2VNYXAmIG1hcCA9IG1fcmFuZ2VNYXAuZmluZChpZCktPnNlY29uZDsKKyAgICBSYW5n
ZU1hcCYgbWFwID0gbV9yYW5nZU1hcC5hZGQoaWQsIFJhbmdlTWFwIHsgfSkuaXRlcmF0b3ItPnZh
bHVlOwogICAgIEZ1bmN0aW9uUmFuZ2UgcmFuZ2U7CiAgICAgcmFuZ2UubV9zdGFydCA9IHN0YXJ0
OwogICAgIHJhbmdlLm1fZW5kID0gZW5kOwogICAgIC8vIE9ubHkgaW5zZXJ0IHVuZXhlY3V0ZWQg
cmFuZ2VzIG9uY2UgZm9yIGEgZ2l2ZW4gc291cmNlSUQgYmVjYXVzZSB3ZSBtYXkgcnVuIGludG8g
YSBzaXR1YXRpb24gd2hlcmUgYW4gZXhlY3V0YWJsZSBleGVjdXRlcywgdGhlbiBpcyBHQ2VkLCBh
bmQgdGhlbiBpcyBhbGxvY2F0ZWQgYWdhaW4sCiAgICAgLy8gYW5kIHRyaWVzIHRvIHJlaW5zZXJ0
IGl0c2VsZiwgY2xhaW1pbmcgaXQgaGFzIG5ldmVyIHJ1biwgYnV0IHRoaXMgaXMgZmFsc2UgYmVj
YXVzZSBpdCBpbmRlZWQgYWxyZWFkeSBleGVjdXRlZC4KLSAgICBpZiAobWFwLmZpbmQocmFuZ2Up
ID09IG1hcC5lbmQoKSkKLSAgICAgICAgbWFwW3JhbmdlXSA9IGZhbHNlOworICAgIG1hcC5hZGQo
cmFuZ2UsIGZhbHNlKTsKIH0KIAogdm9pZCBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU6OnJlbW92
ZVVuZXhlY3V0ZWRSYW5nZShTb3VyY2VJRCBpZCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVu
ZCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5ldmVyIGhhdmUgYW4gaW5zdGFuY2Ugd2hl
cmUgd2UgcmV0dXJuIGhlcmUsIGJ1dCBjdXJyZW50bHkgZG8gaW4gc29tZSBzaXR1YXRpb25zLiBG
aW5kIG91dCB3aHkuCi0gICAgaWYgKG1fcmFuZ2VNYXAuZmluZChpZCkgPT0gbV9yYW5nZU1hcC5l
bmQoKSkKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yYW5nZU1hcC5maW5kKGlkKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9yYW5nZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmFu
Z2VNYXAmIG1hcCA9IG1fcmFuZ2VNYXAuZmluZChpZCktPnNlY29uZDsKKyAgICBSYW5nZU1hcCYg
bWFwID0gaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgRnVuY3Rpb25SYW5nZSByYW5nZTsKICAgICBy
YW5nZS5tX3N0YXJ0ID0gc3RhcnQ7CiAgICAgcmFuZ2UubV9lbmQgPSBlbmQ7Ci0gICAgbWFwW3Jh
bmdlXSA9IHRydWU7CisgICAgbWFwLnNldChyYW5nZSwgdHJ1ZSk7CiB9CiAKIFZlY3RvcjxzdGQ6
OnR1cGxlPGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZD4+IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZTo6Z2V0RnVuY3Rpb25SYW5nZXMoU291cmNlSUQgaWQpCiB7CiAgICAgVmVjdG9yPHN0ZDo6dHVw
bGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPj4gcmFuZ2VzKDApOwotICAgIGF1dG8gZmluZFJl
c3VsdCA9IG1fcmFuZ2VNYXAuZmluZChpZCk7Ci0gICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYW5n
ZU1hcC5lbmQoKSkKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yYW5nZU1hcC5maW5kKGlkKTsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9yYW5nZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJhbmdl
czsKIAotICAgIFJhbmdlTWFwJiBtYXAgPSBtX3JhbmdlTWFwLmZpbmQoaWQpLT5zZWNvbmQ7Cisg
ICAgUmFuZ2VNYXAmIG1hcCA9IGl0ZXJhdG9yLT52YWx1ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBtYXApIHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25SYW5nZSYgcmFuZ2UgPSBwYWlyLmZpcnN0
OwotICAgICAgICBib29sIGhhc0V4ZWN1dGVkID0gcGFpci5zZWNvbmQ7CisgICAgICAgIGNvbnN0
IEZ1bmN0aW9uUmFuZ2UmIHJhbmdlID0gcGFpci5rZXkua2V5KCk7CisgICAgICAgIGJvb2wgaGFz
RXhlY3V0ZWQgPSBwYWlyLnZhbHVlOwogICAgICAgICByYW5nZXMuYXBwZW5kKHN0ZDo6dHVwbGU8
Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPihoYXNFeGVjdXRlZCwgcmFuZ2UubV9zdGFydCwgcmFu
Z2UubV9lbmQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKaW5kZXggY2FhOTJkNmZlZTY0ZTg4
YmRmYzRmMDBiNmEzNzJlMmI4MTljY2Q5MS4uOWJjODA4MTM4ODY0YmFhMWIwNmFiZTM5MjFkMjE2
MzBjODdiMWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgKQEAgLTI2LDggKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1ldGhvZC5o
PgotI2luY2x1ZGUgPHd0Zi9TdGRVbm9yZGVyZWRNYXAuaD4KKyNpbmNsdWRlIDx3dGYvR2VuZXJp
Y0hhc2hLZXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMzUsNiArMzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUgewogcHVibGljOgogICAgIHN0cnVjdCBGdW5jdGlvblJhbmdlIHsKKyAgICAgICAg
c3RydWN0IEhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRnVu
Y3Rpb25SYW5nZSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBGdW5jdGlvblJhbmdlJiBhLCBjb25zdCBGdW5jdGlvblJhbmdl
JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgICAgICB9OworCiAg
ICAgICAgIEZ1bmN0aW9uUmFuZ2UoKSB7fQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RnVuY3Rpb25SYW5nZSYgb3RoZXIpIGNvbnN0IAogICAgICAgICB7CkBAIC01NSw4ICs2MCw4IEBA
IGNsYXNzIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSB7CiAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8
Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPj4gZ2V0RnVuY3Rpb25SYW5nZXMoU291cmNlSUQpOwog
CiBwcml2YXRlOgotICAgIHVzaW5nIFJhbmdlTWFwID0gU3RkVW5vcmRlcmVkTWFwPEZ1bmN0aW9u
UmFuZ2UsIGJvb2wsIEhhc2hNZXRob2Q8RnVuY3Rpb25SYW5nZT4+OwotICAgIHVzaW5nIFNvdXJj
ZUlEVG9SYW5nZU1hcCA9IFN0ZFVub3JkZXJlZE1hcDxpbnRwdHJfdCwgUmFuZ2VNYXA+OworICAg
IHVzaW5nIFJhbmdlTWFwID0gSGFzaE1hcDxHZW5lcmljSGFzaEtleTxGdW5jdGlvblJhbmdlLCBG
dW5jdGlvblJhbmdlOjpIYXNoPiwgYm9vbD47CisgICAgdXNpbmcgU291cmNlSURUb1JhbmdlTWFw
ID0gSGFzaE1hcDxHZW5lcmljSGFzaEtleTxpbnRwdHJfdD4sIFJhbmdlTWFwPjsKICAgICBTb3Vy
Y2VJRFRvUmFuZ2VNYXAgbV9yYW5nZU1hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAppbmRleCAxNTNiNjc1OGJiOTRi
MTIxZTY2YmI3NDJlZTg1ODMzZjlhODczNjljLi5jMmFmNjE5ZDNjNzBlMDk0Y2ViMDNiZmNlMjhh
OWI1YWQ4MTVlODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlTG9jYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZUxvY2F0aW9uQ2FjaGUuY3BwCkBAIC00MSwyMSArNDEsMjMgQEAgc3RkOjpwYWlyPFR5cGVM
b2NhdGlvbiosIGJvb2w+IFR5cGVMb2NhdGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRpb24oR2xvYmFs
VmFyaWFibGUKICAgICBrZXkubV9zdGFydCA9IHN0YXJ0OwogICAgIGtleS5tX2VuZCA9IGVuZDsK
IAorICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBudWxscHRyOwogICAgIGJvb2wgaXNOZXdM
b2NhdGlvbiA9IGZhbHNlOwotICAgIGlmIChtX2xvY2F0aW9uTWFwLmZpbmQoa2V5KSA9PSBtX2xv
Y2F0aW9uTWFwLmVuZCgpKSB7CisgICAgYXV0byBpdGVyYXRvciA9IG1fbG9jYXRpb25NYXAuZmlu
ZChrZXkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2xvY2F0aW9uTWFwLmVuZCgpKSB7CiAgICAg
ICAgIEFTU0VSVCh2bS0+dHlwZVByb2ZpbGVyKCkpOwotICAgICAgICBUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uID0gdm0tPnR5cGVQcm9maWxlcigpLT5uZXh0VHlwZUxvY2F0aW9uKCk7CisgICAgICAg
IGxvY2F0aW9uID0gdm0tPnR5cGVQcm9maWxlcigpLT5uZXh0VHlwZUxvY2F0aW9uKCk7CiAgICAg
ICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBnbG9iYWxWYXJpYWJsZUlEOwogICAg
ICAgICBsb2NhdGlvbi0+bV9zb3VyY2VJRCA9IHNvdXJjZUlEOwogICAgICAgICBsb2NhdGlvbi0+
bV9kaXZvdFN0YXJ0ID0gc3RhcnQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90RW5kID0gZW5k
OwogICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gV1RGTW92ZShnbG9iYWxUeXBl
U2V0KTsKIAotICAgICAgICBtX2xvY2F0aW9uTWFwW2tleV0gPSBsb2NhdGlvbjsKKyAgICAgICAg
bV9sb2NhdGlvbk1hcC5hZGQoa2V5LCBsb2NhdGlvbik7CiAgICAgICAgIGlzTmV3TG9jYXRpb24g
PSB0cnVlOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbG9jYXRpb24gPSBpdGVyYXRvci0+
dmFsdWU7CiAKLSAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gbV9sb2NhdGlvbk1hcC5maW5k
KGtleSktPnNlY29uZDsKICAgICByZXR1cm4gc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+
KGxvY2F0aW9uLCBpc05ld0xvY2F0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmgKaW5kZXggYThlODhhZGJkMTVhYWI4MGUz
NDFlZTZhNDMxN2FmMzEyNDUyNDBlYi4uZjcyZGRiZDYxZGI3ZTQ3ODFkNzY3NGE3NmU5Yjk3MWRl
NDQxOWM1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxv
Y2F0aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9j
YXRpb25DYWNoZS5oCkBAIC0yOCw4ICsyOCw3IEBACiAjaW5jbHVkZSAiU291cmNlSUQuaCIKICNp
bmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWV0aG9kLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZFVub3JkZXJlZE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9HZW5lcmljSGFzaEtleS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMzgsNiArMzcsMTIgQEAgY2xhc3MgVk07CiBjbGFzcyBUeXBlTG9jYXRpb25DYWNoZSB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IExvY2F0aW9uS2V5IHsKKyAgICAgICAgc3RydWN0IEhhc2ggewor
ICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTG9jYXRpb25LZXkmIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgTG9jYXRpb25LZXkmIGEsIGNvbnN0IExvY2F0aW9uS2V5JiBiKSB7IHJldHVybiBhID09IGI7
IH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOworICAgICAgICB9OworCiAgICAgICAgIExvY2F0aW9uS2V5KCkg
e30KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExvY2F0aW9uS2V5JiBvdGhlcikgY29u
c3QgCiAgICAgICAgIHsKQEAgLTYwLDcgKzY1LDcgQEAgY2xhc3MgVHlwZUxvY2F0aW9uQ2FjaGUg
ewogCiAgICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IGdldFR5cGVMb2NhdGlvbihH
bG9iYWxWYXJpYWJsZUlELCBTb3VyY2VJRCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwg
UmVmUHRyPFR5cGVTZXQ+JiYsIFZNKik7CiBwcml2YXRlOgotICAgIHVzaW5nIExvY2F0aW9uTWFw
ID0gU3RkVW5vcmRlcmVkTWFwPExvY2F0aW9uS2V5LCBUeXBlTG9jYXRpb24qLCBIYXNoTWV0aG9k
PExvY2F0aW9uS2V5Pj47CisgICAgdXNpbmcgTG9jYXRpb25NYXAgPSBIYXNoTWFwPEdlbmVyaWNI
YXNoS2V5PExvY2F0aW9uS2V5LCBMb2NhdGlvbktleTo6SGFzaD4sIFR5cGVMb2NhdGlvbio+Owog
ICAgIExvY2F0aW9uTWFwIG1fbG9jYXRpb25NYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ODJjYTYyZmRlNmVlZTgyNjc3MWExYjMxN2VmODkw
YWIwN2E5NzFkLi45MWU3ODJhMzY2ZGFlMjIwOTc2MGI3YjliOWFkMjEyNzNkYThlN2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMCw2ICs4MDAsNyBA
QAogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNF
ODE2MkYyNzY0Nzk5MzAwQkFBNDVCIC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTNGRDZENjYyN0ExRjZBRDAwOTM1MDAwIC8qIEdlbmVyaWNIYXNoS2V5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdlbmVyaWNIYXNoS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0MTlGMkU2MjNBQjlFMjMwMEIyNjEyOSAvKiBWZWN0b3JIYXNoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvckhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BhdGNoU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTUsNiArMTExNiw3IEBACiAJCQkJMUExRDhCOUQx
NzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhC
OUIxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCTUzRjFE
OTg2MjA0NzdCOTgwMEVCQzZCRiAvKiBGdW5jdGlvblRyYWl0cy5oICovLAorCQkJCUUzRkQ2RDY2
MjdBMUY2QUQwMDkzNTAwMCAvKiBHZW5lcmljSGFzaEtleS5oICovLAogCQkJCUUzODMxRjkyMjcw
MzEwMUEwMEVGNUVCMyAvKiBHZW5lcmljVGltZU1peGluLmggKi8sCiAJCQkJQThBNDcyQTgxNTFB
ODI1QTAwNDEyM0ZGIC8qIEdldFB0ci5oICovLAogCQkJCTBGNUJGMTc0MUYyM0Q0OUEwMDI5RDkx
RCAvKiBHaWdhY2FnZS5jcHAgKi8sCkBAIC0xMTQ5LDkgKzExNTEsOSBAQAogCQkJCUUzMzY2NzQ5
MjcyMjU1MDkwMDI1OTEyMiAvKiBJbnQxMjguY3BwICovLAogCQkJCUY2RDY3RDMyMjZGOTAxNDIw
MDZFMDM0OSAvKiBJbnQxMjguaCAqLywKIAkJCQkzM0ZENDgxMTI2NUNCMzgwMDBBQkU0RjQgLyog
SW50ZXJmZXJlbmNlR3JhcGguaCAqLywKLQkJCQk1Mjk1QjAwNDI3OTIwQzU0MDA2RDc0NkEgLyog
SXRlcmF0aW9uU3RhdHVzLmggKi8sCiAJCQkJMEY3RUI4NUIxRkE4RkY0MTAwRjFBQkNCIC8qIElz
b01hbGxvYy5oICovLAogCQkJCTBGN0VCODVDMUZBOEZGNDIwMEYxQUJDQiAvKiBJc29NYWxsb2NJ
bmxpbmVzLmggKi8sCisJCQkJNTI5NUIwMDQyNzkyMEM1NDAwNkQ3NDZBIC8qIEl0ZXJhdGlvblN0
YXR1cy5oICovLAogCQkJCTdDREQ3RkY3MTg2RDI5MUUwMDc0MzNDRCAvKiBJdGVyYXRvckFkYXB0
b3JzLmggKi8sCiAJCQkJN0NERDdGRjkxODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2Uu
aCAqLywKIAkJCQk3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5ZTBjNzY2OTkzNmM0NWY0YjRmYjJlMGY0ZmNiYzc2
YzE4MjljZjEuLjllYzQ3ZmZiOGVlMWNiYjQwNzBhZGNmOWE0ZWRkM2ExZDUxYWI0YTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC04MSw2ICs4MSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMK
ICAgICBGdW5jdGlvbi5oCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmgKICAgICBGdW5jdGlvblRy
YWl0cy5oCisgICAgR2VuZXJpY0hhc2hLZXkuaAogICAgIEdlbmVyaWNUaW1lTWl4aW4uaAogICAg
IEdldFB0ci5oCiAgICAgR2lnYWNhZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2Vu
ZXJpY0hhc2hLZXkuaCBiL1NvdXJjZS9XVEYvd3RmL0dlbmVyaWNIYXNoS2V5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgzYjM1NDhlNjIwZTQxNWQwZjA3YzMxOWUzOGZlMmY4NWY5ODc5MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0dlbmVyaWNIYXNoS2V5LmgKQEAgLTAsMCArMSwxMDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgSGFzaEFyZyA9
IERlZmF1bHRIYXNoPEtleT4+CitjbGFzcyBHZW5lcmljSGFzaEtleSBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBzdHJ1Y3QgRW1wdHlLZXkgeyB9OworICAgIHN0
cnVjdCBEZWxldGVkS2V5IHsgfTsKKworcHVibGljOgorICAgIGNvbnN0ZXhwciBHZW5lcmljSGFz
aEtleShLZXkmJiBrZXkpCisgICAgICAgIDogbV92YWx1ZShzdGQ6OmluX3BsYWNlX3R5cGVfdDxL
ZXk+KCksIFdURk1vdmUoa2V5KSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSz4KKyAgICBjb25zdGV4cHIgR2VuZXJpY0hhc2hLZXkoSyYmIGtleSkKKyAgICAgICAgOiBt
X3ZhbHVlKHN0ZDo6aW5fcGxhY2VfdHlwZV90PEtleT4oKSwgc3RkOjpmb3J3YXJkPEs+KGtleSkp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBHZW5lcmljSGFzaEtleShIYXNoVGFibGVF
bXB0eVZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3ZhbHVlKEVtcHR5S2V5IHsgfSkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3RleHByIEdlbmVyaWNIYXNoS2V5KEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCisgICAgICAgIDogbV92YWx1ZShEZWxldGVkS2V5IHsgfSkKKyAgICB7CisgICAgfQor
CisgICAgY29uc3RleHByIGNvbnN0IEtleSYga2V5KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8
S2V5PihtX3ZhbHVlKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVCghaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSAmJiAhaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkpOworICAgICAgICByZXR1
cm4gSGFzaEFyZzo6aGFzaChrZXkoKSk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPERlbGV0ZWRLZXk+KG1fdmFsdWUpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFi
bGVFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxFbXB0
eUtleT4obV92YWx1ZSk7IH0KKworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
R2VuZXJpY0hhc2hLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWUu
aW5kZXgoKSAhPSBvdGhlci5tX3ZhbHVlLmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChtX3ZhbHVlLmluZGV4KCkgIT0gMCkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gSGFzaEFyZzo6ZXF1YWwoa2V5KCksIG90aGVyLmtleSgp
KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdlbmVyaWNI
YXNoS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp2YXJpYW50PEtleSwgRW1wdHlLZXks
IERlbGV0ZWRLZXk+IG1fdmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBIPiBzdHJ1Y3QgSGFzaFRyYWl0czxHZW5lcmljSGFzaEtleTxLLCBIPj4gOiBHZW5lcmljSGFz
aFRyYWl0czxHZW5lcmljSGFzaEtleTxLLCBIPj4geworICAgIHN0YXRpYyBHZW5lcmljSGFzaEtl
eTxLLCBIPiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gR2VuZXJpY0hhc2hLZXk8SywgSD4geyBIYXNo
VGFibGVFbXB0eVZhbHVlIH07IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoR2VuZXJpY0hhc2hLZXk8SywgSD4mIHNsb3QpIHsgc2xvdCA9IEdlbmVyaWNIYXNoS2V5PEss
IEg+IHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShjb25zdCBHZW5lcmljSGFzaEtleTxLLCBIPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEss
IHR5cGVuYW1lIEg+IHN0cnVjdCBEZWZhdWx0SGFzaDxHZW5lcmljSGFzaEtleTxLLCBIPj4gewor
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEdlbmVyaWNIYXNoS2V5PEssIEg+JiBrZXkp
IHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBHZW5l
cmljSGFzaEtleTxLLCBIPiYgYSwgY29uc3QgR2VuZXJpY0hhc2hLZXk8SywgSD4mIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKworfQorCit1c2luZyBXVEY6OkdlbmVyaWNIYXNo
S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmgKaW5kZXggNGJh
ZjBlYTExZTVjNGZiZTMyNGQ5NTI1YWRmMWJkYjNjNjMzMGE4OC4uYzU1NmY0NDRmOWZmNTk3ZDI2
MzU3ODM0MTI5MTFiYTdmODJkODliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRW
aWRlb091dHB1dC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgog
CiBPQkpDX0NMQVNTIEFWUGxheWVyOwpAQCAtNjcsNyArNjgsNyBAQCBjbGFzcyBRdWV1ZWRWaWRl
b091dHB1dAogICAgIHVzaW5nIEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVy
PHZvaWQoKT47CiAgICAgdm9pZCBhZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3Qg
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyJik7CiAKLSAgICB1c2luZyBJbWFnZU1hcCA9IHN0
ZDo6bWFwPE1lZGlhVGltZSwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PjsKKyAgICB1c2lu
ZyBJbWFnZU1hcCA9IFN0ZE1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
Pj47CiAKICAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKIAo=
</data>
<flag name="review"
          id="476784"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>