<?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>123174</bug_id>
          
          <creation_ts>2013-10-22 14:22:12 -0700</creation_ts>
          <short_desc>Get rid of IDBObjectStoreBackendLevelDB</short_desc>
          <delta_ts>2013-10-22 20:47:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>123027</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942409</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 14:22:12 -0700</bug_when>
    <thetext>Get rid of IDBObjectStoreBackendLevelDB

This stuff can be merged into IDBBackingStoreInterface and a new IDBIndexWriter class.

Part of the push towards https://bugs.webkit.org/show_bug.cgi?id=123027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942425</commentid>
    <comment_count>1</comment_count>
      <attachid>214888</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 14:56:21 -0700</bug_when>
    <thetext>Created attachment 214888
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942432</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 15:23:05 -0700</bug_when>
    <thetext>Mac ews will fail - Once again I forgot to include WK2 changes!  Updating shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942435</commentid>
    <comment_count>3</comment_count>
      <attachid>214888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-22 15:26:07 -0700</bug_when>
    <thetext>Comment on attachment 214888
Patch v1 

Attachment 214888 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/9408004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942437</commentid>
    <comment_count>4</comment_count>
      <attachid>214888</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-22 15:27:43 -0700</bug_when>
    <thetext>Comment on attachment 214888
Patch v1 

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

&gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:1350
&gt; +

extra space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942438</commentid>
    <comment_count>5</comment_count>
      <attachid>214888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-22 15:28:28 -0700</bug_when>
    <thetext>Comment on attachment 214888
Patch v1 

Attachment 214888 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/9358007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942449</commentid>
    <comment_count>6</comment_count>
      <attachid>214888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-22 15:42:39 -0700</bug_when>
    <thetext>Comment on attachment 214888
Patch v1 

Attachment 214888 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4428012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942553</commentid>
    <comment_count>7</comment_count>
      <attachid>214919</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 19:29:30 -0700</bug_when>
    <thetext>Created attachment 214919
Patch v2 - EWS just for sanity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942556</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 19:45:16 -0700</bug_when>
    <thetext>&quot;Unable to build without patch&quot;

Great.  This is a useless exercise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942558</commentid>
    <comment_count>9</comment_count>
      <attachid>214919</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-22 20:12:24 -0700</bug_when>
    <thetext>Comment on attachment 214919
Patch v2 - EWS just for sanity

Attachment 214919 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/7828065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942560</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 20:22:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/157844</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942563</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-22 20:38:23 -0700</bug_when>
    <thetext>This patch broke the Windows build:
http://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/71846/steps/compile-webkit/logs/stdio

Landed gardening fix in r157845: &lt;http://trac.webkit.org/r157845&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942564</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 20:41:53 -0700</bug_when>
    <thetext>Why is any of this affecting the windows build?  Indexed DB is not enabled on Windows.(In reply to comment #11)
&gt; This patch broke the Windows build:
&gt; http://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/71846/steps/compile-webkit/logs/stdio
&gt; 
&gt; Landed gardening fix in r157845: &lt;http://trac.webkit.org/r157845&gt;.

Why is any of this affecting the windows build?  Indexed DB is not enabled on Windows.  (Or, at least, not supposed to be.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942566</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-22 20:43:38 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Why is any of this affecting the windows build?  Indexed DB is not enabled on Windows.  (Or, at least, not supposed to be.)

The deleted file was still included the VC project and the build was failing to find it.  I simply remove the reference to it since the file is now deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942568</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-22 20:47:38 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Why is any of this affecting the windows build?  Indexed DB is not enabled on Windows.  (Or, at least, not supposed to be.)
&gt; 
&gt; The deleted file was still included the VC project and the build was failing to find it.  I simply remove the reference to it since the file is now deleted.

I see, yikes.  The entire Modules/indexeddb/leveldb directory can be removed from the vcproj if this ever comes up again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214888</attachid>
            <date>2013-10-22 14:56:21 -0700</date>
            <delta_ts>2013-10-22 19:29:30 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>53170</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzFjYTZhNS4uNjhiMTVjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc3MSw2ICs3NzEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5j
cHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5jcHAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5j
cHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKQEAgLTc4OCw3ICs3ODks
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKLSAgICBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmMTg0YmJhLi4yNzFiYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTcgQEAKKzIwMTMtMTAtMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIEdldCByaWQgb2YgSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBmaWxlIHdhcyBraW5k
IG9mIGEgZHVtcGluZyBncm91bmQuCisgICAgICAgIEl0cyBjb250ZW50cyBjYW4gYmUgbWVyZ2Vk
IGludG8gSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlIGFuZCBhIG5ldyBJREJJbmRleFdyaXRlciBj
bGFzcy4KKworICAgICAgICBBbHNvIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIGRvIGEgbGl0dGxl
IGJpdCBvZiBSZWZQdHI8PiBhbmQgcG9pbnRlci12cy1yZWZlcmVuY2UgY2xlYW51cC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZExldmVsREIuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4V3JpdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleFdyaXRlcjo6SURCSW5kZXhXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhX
cml0ZXI6OndyaXRlSW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4V3JpdGVy
Ojp2ZXJpZnlJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhXcml0ZXI6OmFk
ZGluZ0tleUFsbG93ZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4V3Jp
dGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhXcml0ZXI6OmNyZWF0ZSk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxl
dmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6bWFr
ZUluZGV4V3JpdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERC
OjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERC
Ojp1cGRhdGVLZXlHZW5lcmF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OnNldEluZGV4S2V5cyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleGVzUmVhZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREI6OnNjaGVkdWxlUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaDoKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
Qk9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpwZXJmb3Jt
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREJPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246OlB1dE9wZXJhdGlvbik6
CisKIDIwMTMtMTAtMjIgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggOTRlOTczOC4uZmNhZmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0xODI0LDYgKzE4MjQsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSGlzdG9ncmFtcy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4V3JpdGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGgu
Y3BwIFwKQEAgLTE4MzMsOCArMTgzNSw2IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkxldmVsREJDb2Rp
bmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkxl
dmVsREJDb2RpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0
YWRhdGEuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRMZXZlbERCLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UuaAppbmRleCBhMTNiYWRkLi41MWYzZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uu
aApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2VfaAog
I2RlZmluZSBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2VfaAogCisjaW5jbHVkZSAiSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJJbmRleGVkREIuaCIKIApAQCAtMzcsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgSURCSW5kZXhXcml0ZXI7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJLZXlQ
YXRoOwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBJREJSZWNvcmRJZGVudGlmaWVyOworY2xh
c3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U+IHsKQEAgLTEwMyw2ICsxMDYsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCYga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcikgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCkg
PSAwOwogCisgICAgdmlydHVhbCBib29sIG1ha2VJbmRleFdyaXRlcnMoSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJiwgSURCS2V5JiBwcmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBW
ZWN0b3I8UmVmUHRyPElEQkluZGV4V3JpdGVyPj4mIGluZGV4V3JpdGVycywgU3RyaW5nKiBlcnJv
ck1lc3NhZ2UsIGJvb2wmIGNvbXBsZXRlZCkgPSAwOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQktleT4gZ2VuZXJhdGVLZXkoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9yKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYs
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
LCBib29sIGNoZWNrQ3VycmVudCkgPSAwOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDlmMzM2OWMuLjZkNGVjYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIElEQktleVJh
bmdlOwogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
K3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBJbmRleEtleXM7CiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlQmFj
a2VuZEltcGwgYW5kIG9wdGlvbmFsbHkgb3RoZXJzIChpbiBvcmRlciB0byBwcm94eQpAQCAtNzks
OCArODAsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBNaW5pbXVtSW5k
ZXhJZCA9IDMwOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4+IEluZGV4S2V5
czsKLQogICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4s
IGJvb2wga2V5T25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgLy8gTm90
ZSB0aGF0ICd2YWx1ZScgbWF5IGJlIGNvbnN1bWVkL2Fkb3B0ZWQgYnkgdGhpcyBjYWxsLgogICAg
IHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMjdlYTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5jcHAKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogICAgICAgICAgICAgICAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklE
QkluZGV4V3JpdGVyLmgiCisKKyNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitJREJJbmRleFdyaXRlcjo6SURCSW5kZXhXcml0ZXIoY29uc3QgSURCSW5k
ZXhNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEluZGV4S2V5cyYga2V5cykKKyAgICA6IG1faW5k
ZXhNZXRhZGF0YShtZXRhZGF0YSkKKyAgICAsIG1faW5kZXhLZXlzKGtleXMpCit7Cit9CisKK3Zv
aWQgSURCSW5kZXhXcml0ZXI6OndyaXRlSW5kZXhLZXlzKGNvbnN0IElEQlJlY29yZElkZW50aWZp
ZXIqIHJlY29yZElkZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYgYmFja2luZ1N0
b3JlLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHJlY29yZElkZW50aWZpZXIpOworICAgIGludDY0X3QgaW5kZXhJZCA9IG1faW5kZXhN
ZXRhZGF0YS5pZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5kZXhLZXlzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGJvb2wgb2sgPSBiYWNraW5nU3RvcmUucHV0SW5kZXhEYXRhRm9y
UmVjb3JkKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAq
KG1faW5kZXhLZXlzKVtpXS5nZXQoKSwgcmVjb3JkSWRlbnRpZmllcik7CisgICAgICAgIC8vIFRo
aXMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHZlcmlmaWVkIGFzIGEgdmFsaWQgd3JpdGUgZHVy
aW5nIHZlcmlmeUluZGV4S2V5cy4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAg
IH0KK30KKworYm9vbCBJREJJbmRleFdyaXRlcjo6dmVyaWZ5SW5kZXhLZXlzKElEQkJhY2tpbmdT
dG9yZUludGVyZmFjZSYgYmFja2luZ1N0b3JlLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgYm9vbCYgY2FuQWRkS2V5cywgY29uc3QgSURCS2V5
KiBwcmltYXJ5S2V5LCBTdHJpbmcqIGVycm9yTWVzc2FnZSkgY29uc3QKK3sKKyAgICBjYW5BZGRL
ZXlzID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luZGV4S2V5cy5zaXpl
KCk7ICsraSkgeworICAgICAgICBib29sIG9rID0gYWRkaW5nS2V5QWxsb3dlZChiYWNraW5nU3Rv
cmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAobV9p
bmRleEtleXMpW2ldLmdldCgpLCBwcmltYXJ5S2V5LCBjYW5BZGRLZXlzKTsKKyAgICAgICAgaWYg
KCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjYW5BZGRLZXlz
KSB7CisgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICAgICAgICAgICplcnJv
ck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIGFkZCBrZXkgdG8gaW5kZXggJyVz
JzogYXQgbGVhc3Qgb25lIGtleSBkb2VzIG5vdCBzYXRpc2Z5IHRoZSB1bmlxdWVuZXNzIHJlcXVp
cmVtZW50cy4iLCBtX2luZGV4TWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIGNhbkFkZEtleXMgPSB0cnVl
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIElEQkluZGV4V3JpdGVyOjphZGRpbmdLZXlB
bGxvd2VkKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYgYmFja2luZ1N0b3JlLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25z
dAoreworICAgIGFsbG93ZWQgPSBmYWxzZTsKKyAgICBpZiAoIW1faW5kZXhNZXRhZGF0YS51bmlx
dWUpIHsKKyAgICAgICAgYWxsb3dlZCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIFJlZlB0cjxJREJLZXk+IGZvdW5kUHJpbWFyeUtleTsKKyAgICBib29sIGZvdW5k
ID0gZmFsc2U7CisgICAgYm9vbCBvayA9IGJhY2tpbmdTdG9yZS5rZXlFeGlzdHNJbkluZGV4KHRy
YW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAqaW5kZXhLZXks
IGZvdW5kUHJpbWFyeUtleSwgZm91bmQpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWZvdW5kIHx8IChwcmltYXJ5S2V5ICYmIGZvdW5kUHJpbWFyeUtleS0+
aXNFcXVhbChwcmltYXJ5S2V5KSkpCisgICAgICAgIGFsbG93ZWQgPSB0cnVlOworICAgIHJldHVy
biB0cnVlOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhXcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4V3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Zjk5YzY3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4V3JpdGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgICAg
ICAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJREJJbmRleFdyaXRlcl9oCisjZGVmaW5lIElEQkluZGV4V3JpdGVyX2gKKworI2luY2x1ZGUg
IklEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBJbmRleEtleXM7CisK
K2NsYXNzIElEQkluZGV4V3JpdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SURCSW5kZXhXcml0ZXI+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleFdyaXRlcj4gY3JlYXRl
KGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IEluZGV4S2V5cyYg
aW5kZXhLZXlzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleFdy
aXRlcihpbmRleE1ldGFkYXRhLCBpbmRleEtleXMpKTsKKyAgICB9CisKKyAgICBib29sIHZlcmlm
eUluZGV4S2V5cyhJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2U6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgYm9vbCYgY2FuQWRkS2V5cywgY29uc3QgSURCS2V5KiBw
cmltYXJ5S2V5ID0gMCwgU3RyaW5nKiBlcnJvck1lc3NhZ2UgPSAwKSBjb25zdCBXQVJOX1VOVVNF
RF9SRVRVUk47CisKKyAgICB2b2lkIHdyaXRlSW5kZXhLZXlzKGNvbnN0IElEQlJlY29yZElkZW50
aWZpZXIqLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpIGNvbnN0OworCitwcml2YXRlOgorICAgIElEQkluZGV4V3JpdGVyKGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmLCBjb25zdCBJbmRleEtleXMmKTsKKworICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dl
ZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmlt
YXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICBj
b25zdCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKKyAgICBJbmRleEtleXMgbV9p
bmRleEtleXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJJbmRleFdyaXRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAppbmRleCAxNmU4NzYy
Li5hOGNhMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1l
dGFkYXRhLmgKQEAgLTgxLDcgKzgxLDYgQEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEg
ewogCiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7CiAKLSNpZiBVU0UoTEVWRUxEQikKICAg
ICAvLyBGSVhNRTogVGhlc2UgYXJlIG9ubHkgaGVyZSB0byBzdXBwb3J0IHRoZSBMZXZlbERCIGJh
Y2tlbmQgd2hpY2ggaW5jb3JyZWN0bHkgaGFuZGxlcyB2ZXJzaW9uaW5nLgogICAgIC8vIE9uY2Ug
TGV2ZWxEQiBzdXBwb3J0cyBhIHNpbmdsZSwgdWludDY0X3QgdmVyc2lvbiBhbmQgdGhyb3dzIG91
dCB0aGUgb2xkIHN0cmluZyB2ZXJzaW9uLCB0aGVzZQogICAgIC8vIHNob3VsZCBiZSBnb3R0ZW4g
cmlkIG9mLgpAQCAtOTcsNyArOTYsNiBAQCBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7CiAg
ICAgICAgIE5vSW50VmVyc2lvbiA9IElOVDY0X01BWCwKICAgICAgICAgRGVmYXVsdEludFZlcnNp
b24gPSAwCiAgICAgfTsKLSNlbmRpZiAvLyBVU0UoTEVWRUxEQikKIAogICAgIHR5cGVkZWYgSGFz
aE1hcDxpbnQ2NF90LCBJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBPYmplY3RTdG9yZU1hcDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCAzYzAwMDYxLi5mODgwYzljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ3JlYXRlSW5kZXhPcGVyYXRpb24oaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZURlbGV0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVHZXRPcGVyYXRpb24oY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVQdXRPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVQdXRPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4m
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9u
KHNpemVfdCBpbmRleENvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlT3BlbkN1
cnNvck9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJbmRleGVk
REI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNv
dW50T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tp
bmdTdG9yZUxldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcAppbmRleCA1OWFhZTNkMS4uN2Y4NThlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJC
YWNraW5nU3RvcmVMZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCkBAIC0zMCwxMSArMzAsMTMg
QEAKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIaXN0b2dyYW1TdXBwb3J0
LmgiCisjaW5jbHVkZSAiSURCSW5kZXhXcml0ZXIuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNp
bmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRl
ICJJREJMZXZlbERCQ29kaW5nLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJMZXZlbERCQ29t
cGFyYXRvci5oIgogI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxldmVs
REJJdGVyYXRvci5oIgpAQCAtMTMzNCw2ICsxMzM2LDYyIEBAIGJvb2wgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5z
YWN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKworYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERC
OjptYWtlSW5kZXhXcml0ZXJzKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYgdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmUsIElEQktleSYgcHJpbWFyeUtleSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBp
bmRleEtleXMsIFZlY3RvcjxSZWZQdHI8SURCSW5kZXhXcml0ZXI+PiYgaW5kZXhXcml0ZXJzLCBT
dHJpbmcqIGVycm9yTWVzc2FnZSwgYm9vbCYgY29tcGxldGVkKQoreworICAgIEFTU0VSVChpbmRl
eElkcy5zaXplKCkgPT0gaW5kZXhLZXlzLnNpemUoKSk7CisgICAgY29tcGxldGVkID0gZmFsc2U7
CisKKyAgICBIYXNoTWFwPGludDY0X3QsIEluZGV4S2V5cz4gaW5kZXhLZXlNYXA7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBpbmRleElkcy5zaXplKCk7ICsraSkKKyAgICAgICAgaW5kZXhL
ZXlNYXAuYWRkKGluZGV4SWRzW2ldLCBpbmRleEtleXNbaV0pOworCisgICAgZm9yIChJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBvYmplY3RTdG9y
ZS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3JlLmluZGV4ZXMuZW5kKCk7ICsraXQp
IHsKKworICAgICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleCA9IGl0LT52YWx1ZTsK
KworICAgICAgICBJbmRleEtleXMga2V5cyA9IGluZGV4S2V5TWFwLmdldChpdC0+a2V5KTsKKyAg
ICAgICAgLy8gSWYgdGhlIG9iamVjdFN0b3JlIGlzIHVzaW5nIGF1dG9JbmNyZW1lbnQsIHRoZW4g
YW55IGluZGV4ZXMgd2l0aCBhbiBpZGVudGljYWwga2V5UGF0aCBuZWVkIHRvIGFsc28gdXNlIHRo
ZSBwcmltYXJ5IChnZW5lcmF0ZWQpIGtleSBhcyBhIGtleS4KKyAgICAgICAgaWYgKGtleVdhc0dl
bmVyYXRlZCAmJiAoaW5kZXgua2V5UGF0aCA9PSBvYmplY3RTdG9yZS5rZXlQYXRoKSkKKyAgICAg
ICAgICAgIGtleXMuYXBwZW5kKCZwcmltYXJ5S2V5KTsKKworICAgICAgICBSZWZQdHI8SURCSW5k
ZXhXcml0ZXI+IGluZGV4V3JpdGVyID0gSURCSW5kZXhXcml0ZXI6OmNyZWF0ZShpbmRleCwga2V5
cyk7CisgICAgICAgIGJvb2wgY2FuQWRkS2V5cyA9IGZhbHNlOworICAgICAgICBib29sIGJhY2tp
bmdTdG9yZVN1Y2Nlc3MgPSBpbmRleFdyaXRlci0+dmVyaWZ5SW5kZXhLZXlzKCp0aGlzLCB0cmFu
c2FjdGlvbi5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZS5pZCwgaW5kZXguaWQsIGNhbkFkZEtleXMsICZwcmltYXJ5S2V5LCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZVN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghY2FuQWRkS2V5cykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIGluZGV4V3JpdGVycy5hcHBlbmQoaW5kZXhXcml0ZXIucmVsZWFzZSgpKTsKKyAg
ICB9CisKKyAgICBjb21wbGV0ZWQgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCitQYXNz
UmVmUHRyPElEQktleT4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2VuZXJhdGVLZXkoSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCit7CisgICAgY29uc3QgaW50NjRfdCBtYXhHZW5lcmF0
b3JWYWx1ZSA9IDkwMDcxOTkyNTQ3NDA5OTJMTDsgLy8gTWF4aW11bSBpbnRlZ2VyIHN0b3JhYmxl
IGFzIEVDTUFTY3JpcHQgbnVtYmVyLgorICAgIGludDY0X3QgY3VycmVudE51bWJlcjsKKyAgICBi
b29sIG9rID0gZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcih0cmFuc2FjdGlvbi5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBjdXJyZW50TnVt
YmVyKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldEtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIiKTsKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRl
SW52YWxpZCgpOworICAgIH0KKyAgICBpZiAoY3VycmVudE51bWJlciA8IDAgfHwgY3VycmVudE51
bWJlciA+IG1heEdlbmVyYXRvclZhbHVlKQorICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJ
bnZhbGlkKCk7CisKKyAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoY3VycmVudE51bWJl
cik7Cit9CisKKworYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjp1cGRhdGVLZXlHZW5lcmF0
b3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBib29s
IGNoZWNrQ3VycmVudCkKK3sKKyAgICBBU1NFUlQoa2V5LnR5cGUoKSA9PSBJREJLZXk6Ok51bWJl
clR5cGUpOworICAgIHJldHVybiBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIo
dHJhbnNhY3Rpb24uYmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmxvb3Ioa2V5Lm51bWJlcigpKSkgKyAxLCBj
aGVja0N1cnJlbnQpOworfQorCiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNv
cihjb25zdCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3IqIG90aGVyKQogICAgIDogbV90
cmFuc2FjdGlvbihvdGhlci0+bV90cmFuc2FjdGlvbikKICAgICAsIG1fY3Vyc29yT3B0aW9ucyhv
dGhlci0+bV9jdXJzb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaApp
bmRleCBhYmJlYTAyLi4zOTViNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIu
aApAQCAtMTY2LDYgKzE2NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxMZXZlbERCVHJh
bnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAgICAgfTsKIAorICAgIHZpcnR1YWwgYm9vbCBtYWtl
SW5kZXhXcml0ZXJzKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIElEQktleSYgcHJpbWFyeUtl
eSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMs
IGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiwgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+
JiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQpIE9W
RVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJL
ZXk+IGdlbmVyYXRlS2V5KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9yKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYs
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
LCBib29sIGNoZWNrQ3VycmVudCkgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBJREJCYWNr
aW5nU3RvcmVMZXZlbERCKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc093blB0cjxMZXZl
bERCRGF0YWJhc2U+LCBQYXNzT3duUHRyPExldmVsREJDb21wYXJhdG9yPik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZl
bGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCmluZGV4IGM5ODcwMmUuLmY5NDQ1OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcApAQCAtMjYsMTUg
KzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNr
ZW5kTGV2ZWxEQi5oIgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIFVTRShMRVZF
TERCKQorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZExldmVsREIuaCIK
KyNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgotI2lu
Y2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCSW5kZXhXcml0ZXIuaCIKICNpbmNsdWRl
ICJJREJLZXlSYW5nZS5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIu
aCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgiCisjaW5jbHVkZSAi
SURCUmVjb3JkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0yNDAsNiArMjQy
LDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwdXQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2
ZWxEQjo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKIHsK
ICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OnNldEluZGV4
S2V5cyIpOworICAgIEFTU0VSVChwcnBQcmltYXJ5S2V5KTsKKwogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjYw
LDEyICsyNjQsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleEtl
eXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFZlY3RvcjxPd25QdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6
SW5kZXhXcml0ZXI+PiBpbmRleFdyaXRlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdy
aXRlcj4+IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJvb2wg
b2JleXNDb25zdHJhaW50cyA9IGZhbHNlOwogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0
b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdl
dChvYmplY3RTdG9yZUlkKTsKLSAgICBib29sIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRMZXZlbERCOjptYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCBzdG9y
ZS5nZXQoKSwgaWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgcHJpbWFyeUtleSwgZmFsc2UsIGlu
ZGV4SWRzLCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlzQ29u
c3RyYWludHMpOworICAgIGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IHN0b3JlLT5tYWtlSW5k
ZXhXcml0ZXJzKCp0cmFuc2FjdGlvbiwgaWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgKnByaW1h
cnlLZXksIGZhbHNlLCBpbmRleElkcywgaW5kZXhLZXlzLCBpbmRleFdyaXRlcnMsICZlcnJvck1l
c3NhZ2UsIG9iZXlzQ29uc3RyYWludHMpOwogICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2Vzcykg
ewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvcjogYmFja2lu
ZyBzdG9yZSBlcnJvciB1cGRhdGluZyBpbmRleCBrZXlzLiIpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjc2LDE0ICsyODAsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJ
bmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamUKICAgICB9CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4V3JpdGVycy5zaXplKCk7ICsraSkgewotICAg
ICAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCOjpJbmRleFdyaXRlciogaW5kZXhXcml0
ZXIgPSBpbmRleFdyaXRlcnNbaV0uZ2V0KCk7CisgICAgICAgIElEQkluZGV4V3JpdGVyKiBpbmRl
eFdyaXRlciA9IGluZGV4V3JpdGVyc1tpXS5nZXQoKTsKICAgICAgICAgaW5kZXhXcml0ZXItPndy
aXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpzdG9yZS5nZXQoKSwgdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGlkKCksIG9iamVjdFN0b3JlSWQpOwog
ICAgIH0KIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleGVzUmVh
ZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzKQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5k
TGV2ZWxEQjo6c2V0SW5kZXhlc1JlYWR5Iik7CisgICAgTE9HKFN0b3JhZ2VBUEksICJJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleGVzUmVhZHkiKTsKIAogICAgIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJh
bnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKQEAgLTYxNCw0ICs2MTgsNCBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IHBycENhbGxiYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2
ZWxEQi5oCmluZGV4IDBmMDk4ZmYuLjY5MTIyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQi5oCkBAIC0yNywxMyArMjcsMTQgQEAKICNkZWZpbmUgSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQl9oCiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJ
REJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAotI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxEQikKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzAsNiArMTcxLDYgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpICYmIFVTRShMRVZFTERCKQorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
CiAjZW5kaWYgLy8gSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZExldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGJiOTg2ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5oIgotCi0jaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpICYmIFVTRShMRVZFTERCKQotCi0jaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlTGV2
ZWxEQi5oIgotI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJD
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oIgotI2luY2x1
ZGUgIklEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNh
bGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
SURCS2V5LmgiCi0jaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIklEQktleVJhbmdl
LmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIgotI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWJvb2wgSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6SW5kZXhXcml0ZXI6
OnZlcmlmeUluZGV4S2V5cyhJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmIGJhY2tpbmdTdG9yZSwg
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGJv
b2wmIGNhbkFkZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwgU3RyaW5nKiBlcnJvck1l
c3NhZ2UpIGNvbnN0Ci17Ci0gICAgY2FuQWRkS2V5cyA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9pbmRleEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYm9vbCBvayA9
IGFkZGluZ0tleUFsbG93ZWQoYmFja2luZ1N0b3JlLCB0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKG1faW5kZXhLZXlzKVtpXS5nZXQoKSwgcHJpbWFyeUtl
eSwgY2FuQWRkS2V5cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmICghY2FuQWRkS2V5cykgewotICAgICAgICAgICAgaWYgKGVycm9yTWVz
c2FnZSkKLSAgICAgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVu
YWJsZSB0byBhZGQga2V5IHRvIGluZGV4ICclcyc6IGF0IGxlYXN0IG9uZSBrZXkgZG9lcyBub3Qg
c2F0aXNmeSB0aGUgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIiwgbV9pbmRleE1ldGFkYXRhLm5h
bWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBjYW5BZGRLZXlzID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCOjpJbmRleFdyaXRlcjo6d3JpdGVJbmRleEtl
eXMoY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllciwgSURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkgY29uc3QKLXsKLSAgICBBU1NFUlQocmVjb3JkSWRlbnRpZmllcik7Ci0gICAg
aW50NjRfdCBpbmRleElkID0gbV9pbmRleE1ldGFkYXRhLmlkOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9pbmRleEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYm9vbCBvayA9IGJh
Y2tpbmdTdG9yZS5wdXRJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICoobV9pbmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJ
ZGVudGlmaWVyKTsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gdmVy
aWZpZWQgYXMgYSB2YWxpZCB3cml0ZSBkdXJpbmcgdmVyaWZ5SW5kZXhLZXlzLgotICAgICAgICBB
U1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgfQotfQotCi1ib29sIElEQk9iamVjdFN0b3JlQmFj
a2VuZExldmVsREI6OkluZGV4V3JpdGVyOjphZGRpbmdLZXlBbGxvd2VkKElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZSYgYmFja2luZ1N0b3JlLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURC
S2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdAotewotICAgIGFsbG93ZWQgPSBm
YWxzZTsKLSAgICBpZiAoIW1faW5kZXhNZXRhZGF0YS51bmlxdWUpIHsKLSAgICAgICAgYWxsb3dl
ZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJL
ZXk+IGZvdW5kUHJpbWFyeUtleTsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgYm9vbCBv
ayA9IGJhY2tpbmdTdG9yZS5rZXlFeGlzdHNJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAqaW5kZXhLZXksIGZvdW5kUHJpbWFyeUtleSwgZm91
bmQpOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWZvdW5k
IHx8IChwcmltYXJ5S2V5ICYmIGZvdW5kUHJpbWFyeUtleS0+aXNFcXVhbChwcmltYXJ5S2V5KSkp
Ci0gICAgICAgIGFsbG93ZWQgPSB0cnVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIElE
Qk9iamVjdFN0b3JlQmFja2VuZExldmVsREI6Om1ha2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXksIGJvb2wga2V5V2FzR2VuZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzLCBjb25zdCBWZWN0b3I8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+
JiBpbmRleEtleXMsIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+PiogaW5kZXhXcml0ZXJzLCBT
dHJpbmcqIGVycm9yTWVzc2FnZSwgYm9vbCYgY29tcGxldGVkKQotewotICAgIEFTU0VSVChpbmRl
eElkcy5zaXplKCkgPT0gaW5kZXhLZXlzLnNpemUoKSk7Ci0gICAgY29tcGxldGVkID0gZmFsc2U7
Ci0KLSAgICBIYXNoTWFwPGludDY0X3QsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6SW5k
ZXhLZXlzPiBpbmRleEtleU1hcDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4SWRz
LnNpemUoKTsgKytpKQotICAgICAgICBpbmRleEtleU1hcC5hZGQoaW5kZXhJZHNbaV0sIGluZGV4
S2V5c1tpXSk7Ci0KLSAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2Jq
ZWN0U3RvcmUuaW5kZXhlcy5lbmQoKTsgKytpdCkgewotCi0gICAgICAgIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIGluZGV4ID0gaXQtPnZhbHVlOwotCi0gICAgICAgIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6SW5kZXhLZXlzIGtleXMgPSBpbmRleEtleU1hcC5nZXQoaXQtPmtleSk7Ci0g
ICAgICAgIC8vIElmIHRoZSBvYmplY3RTdG9yZSBpcyB1c2luZyBhdXRvSW5jcmVtZW50LCB0aGVu
IGFueSBpbmRleGVzIHdpdGggYW4gaWRlbnRpY2FsIGtleVBhdGggbmVlZCB0byBhbHNvIHVzZSB0
aGUgcHJpbWFyeSAoZ2VuZXJhdGVkKSBrZXkgYXMgYSBrZXkuCi0gICAgICAgIGlmIChrZXlXYXNH
ZW5lcmF0ZWQgJiYgKGluZGV4LmtleVBhdGggPT0gb2JqZWN0U3RvcmUua2V5UGF0aCkpCi0gICAg
ICAgICAgICBrZXlzLmFwcGVuZChwcmltYXJ5S2V5KTsKLQotICAgICAgICBPd25QdHI8SW5kZXhX
cml0ZXI+IGluZGV4V3JpdGVyKGFkb3B0UHRyKG5ldyBJbmRleFdyaXRlcihpbmRleCwga2V5cykp
KTsKLSAgICAgICAgYm9vbCBjYW5BZGRLZXlzID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgYmFja2lu
Z1N0b3JlU3VjY2VzcyA9IGluZGV4V3JpdGVyLT52ZXJpZnlJbmRleEtleXMoKmJhY2tpbmdTdG9y
ZSwgdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlLmlkLCBpbmRleC5pZCwgY2FuQWRkS2V5cywgcHJpbWFyeUtleS5nZXQoKSwgZXJy
b3JNZXNzYWdlKTsKLSAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNhbkFkZEtleXMpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpbmRleFdyaXRlcnMtPmFwcGVuZChpbmRleFdyaXRlci5y
ZWxlYXNlKCkpOwotICAgIH0KLQotICAgIGNvbXBsZXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLVBhc3NSZWZQdHI8SURCS2V5PiBJREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERC
OjpnZW5lcmF0ZUtleShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gYmFja2lu
Z1N0b3JlLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKLXsKLSAgICBj
b25zdCBpbnQ2NF90IG1heEdlbmVyYXRvclZhbHVlID0gOTAwNzE5OTI1NDc0MDk5MkxMOyAvLyBN
YXhpbXVtIGludGVnZXIgc3RvcmFibGUgYXMgRUNNQVNjcmlwdCBudW1iZXIuCi0gICAgaW50NjRf
dCBjdXJyZW50TnVtYmVyOwotICAgIGJvb2wgb2sgPSBiYWNraW5nU3RvcmUtPmdldEtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGN1cnJlbnROdW1iZXIpOwotICAgIGlmICghb2sp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51
bWJlciIpOwotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgfQot
ICAgIGlmIChjdXJyZW50TnVtYmVyIDwgMCB8fCBjdXJyZW50TnVtYmVyID4gbWF4R2VuZXJhdG9y
VmFsdWUpCi0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUludmFsaWQoKTsKLQotICAgIHJl
dHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcihjdXJyZW50TnVtYmVyKTsKLX0KLQotYm9vbCBJREJP
YmplY3RTdG9yZUJhY2tlbmRMZXZlbERCOjp1cGRhdGVLZXlHZW5lcmF0b3IoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IGJhY2tpbmdTdG9yZSwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCPiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSoga2V5LCBib29sIGNoZWNrQ3VycmVu
dCkKLXsKLSAgICBBU1NFUlQoa2V5ICYmIGtleS0+dHlwZSgpID09IElEQktleTo6TnVtYmVyVHlw
ZSk7Ci0gICAgcmV0dXJuIGJhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJy
ZW50TnVtYmVyKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihmbG9vcihrZXktPm51bWJl
cigpKSkgKyAxLCBjaGVja0N1cnJlbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlZjYzNGM0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSURCT2JqZWN0U3RvcmVC
YWNrZW5kTGV2ZWxEQl9oCi0jZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREJfaAot
Ci0jaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oIgotI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0Uo
TEVWRUxEQikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJREJEYXRhYmFzZUJhY2tl
bmRMZXZlbERCOwotY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjsKLXN0cnVjdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOwotCi0vLyBGSVhNRTogdGhpcyBuYW1lc3BhY2UgaXMgdGVt
cG9yYXJ5IHVudGlsIHdlIG1vdmUgaXRzIGNvbnRlbnRzIG91dCB0byB0aGVpciBvd24gaG9tZS4K
LW5hbWVzcGFjZSBJREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCIHsKLQotICAgIGNsYXNzIElu
ZGV4V3JpdGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEluZGV4V3JpdGVyKGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCi0gICAgICAgICAgICA6IG1faW5k
ZXhNZXRhZGF0YShpbmRleE1ldGFkYXRhKQotICAgICAgICB7IH0KLQotICAgICAgICBJbmRleFdy
aXRlcihjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cyYgaW5kZXhLZXlzKQotICAgICAgICAgICAg
OiBtX2luZGV4TWV0YWRhdGEoaW5kZXhNZXRhZGF0YSkKLSAgICAgICAgICAgICwgbV9pbmRleEtl
eXMoaW5kZXhLZXlzKQotICAgICAgICB7IH0KLQotICAgICAgICBib29sIHZlcmlmeUluZGV4S2V5
cyhJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgYm9vbCYgY2FuQWRkS2V5cywgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5
ID0gMCwgU3RyaW5nKiBlcnJvck1lc3NhZ2UgPSAwKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47
Ci0KLSAgICAgICAgdm9pZCB3cml0ZUluZGV4S2V5cyhjb25zdCBJREJSZWNvcmRJZGVudGlmaWVy
KiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBj
b25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5
LCBib29sJiBhbGxvd2VkKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47Ci0KLSAgICAgICAgY29u
c3QgSURCSW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7Ci0gICAgICAgIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlzIG1faW5kZXhLZXlzOwotICAgIH07Ci0KLSAgICBi
b29sIG1ha2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMs
IGNvbnN0IFZlY3RvcjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cz4mLCBW
ZWN0b3I8T3duUHRyPEluZGV4V3JpdGVyPj4qIGluZGV4V3JpdGVycywgU3RyaW5nKiBlcnJvck1l
c3NhZ2UsIGJvb2wmIGNvbXBsZXRlZCkgV0FSTl9VTlVTRURfUkVUVVJOOwotCi0gICAgUGFzc1Jl
ZlB0cjxJREJLZXk+IGdlbmVyYXRlS2V5KFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIGJvb2wgdXBkYXRlS2V5R2Vu
ZXJhdG9yKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSosIGJvb2wgY2hlY2tDdXJyZW50KTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKSAmJiBVU0UoTEVWRUxEQikKLQotI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlQmFja2VuZExl
dmVsREJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAK
aW5kZXggMWU2NmI3NC4uMWJhOWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREIuY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZUdldE9wZXJhdGlvbihjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXQKICAgICBzY2hlZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNr
aW5nU3RvcmUuZ2V0KCksIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwgY3Vyc29yVHlwZSwgY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQjo6c2NoZWR1bGVQdXRPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQordm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCOjpzY2hlZHVsZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFs
dWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5k
ZXhLZXlzKQogewogICAgIHNjaGVkdWxlVGFzayhQdXRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBt
X2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0
YSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDE0
OGVmZjcuLjVlNjU5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQi5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDcmVhdGVJbmRleE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQklu
ZGV4TWV0YWRhdGEmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVE
ZWxldGVJbmRleE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVHZXRP
cGVyYXRpb24oY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIEZJTkFMOwotICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktl
eT4sIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+JikgT1ZFUlJJREUgRklOQUw7
CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUHV0T3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZl
Y3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVfdCBpbmRleENvdW50KSBPVkVSUklERSBG
SU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVPcGVuQ3Vyc29yT3BlcmF0aW9uKGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb3VudE9wZXJh
dGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgRklOQUw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJh
dGlvbnMuY3BwCmluZGV4IDQ4NDdkYmQuLmRlZWI2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
Qk9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3BwCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCSW5kZXhXcml0ZXIuaCIK
ICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2Vu
ZExldmVsREIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBQdXRPcGVyYXRpb246OnBlcmZvcm0o
KQogCiAgICAgUmVmUHRyPElEQktleT4ga2V5OwogICAgIGlmIChtX3B1dE1vZGUgIT0gSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JVcGRhdGUgJiYgbV9vYmplY3RTdG9yZS5hdXRv
SW5jcmVtZW50ICYmICFtX2tleSkgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5
ID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6Z2VuZXJhdGVLZXkobV9iYWNraW5nU3Rv
cmUsIG1fdHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CisgICAg
ICAgIFJlZlB0cjxJREJLZXk+IGF1dG9JbmNLZXkgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVL
ZXkoKm1fdHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAgICAg
ICAgIGtleVdhc0dlbmVyYXRlZCA9IHRydWU7CiAgICAgICAgIGlmICghYXV0b0luY0tleS0+aXNW
YWxpZCgpKSB7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgIk1heGlt
dW0ga2V5IGdlbmVyYXRvciB2YWx1ZSByZWFjaGVkLiIpKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBA
IHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIFZl
Y3RvcjxPd25QdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6SW5kZXhXcml0ZXI+PiBp
bmRleFdyaXRlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+IGluZGV4V3Jp
dGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJvb2wgb2JleXNDb25zdHJhaW50
cyA9IGZhbHNlOwotICAgIGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IElEQk9iamVjdFN0b3Jl
QmFja2VuZExldmVsREI6Om1ha2VJbmRleFdyaXRlcnMobV90cmFuc2FjdGlvbiwgbV9iYWNraW5n
U3RvcmUuZ2V0KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZSwga2V5LCBrZXlXYXNHZW5l
cmF0ZWQsIG1faW5kZXhJZHMsIG1faW5kZXhLZXlzLCAmaW5kZXhXcml0ZXJzLCAmZXJyb3JNZXNz
YWdlLCBvYmV5c0NvbnN0cmFpbnRzKTsKKyAgICBib29sIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBt
X2JhY2tpbmdTdG9yZS0+bWFrZUluZGV4V3JpdGVycygqbV90cmFuc2FjdGlvbiwgbV9kYXRhYmFz
ZUlkLCBtX29iamVjdFN0b3JlLCAqa2V5LCBrZXlXYXNHZW5lcmF0ZWQsIG1faW5kZXhJZHMsIG1f
aW5kZXhLZXlzLCBpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlzQ29uc3RyYWludHMp
OwogICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2VzcykgewogICAgICAgICBtX2NhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIkludGVybmFsIGVycm9yOiBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5n
IGluZGV4IGtleXMuIikpOwogICAgICAgICByZXR1cm47CkBAIC0yMjcsMTIgKzIyNywxMiBAQCB2
b2lkIFB1dE9wZXJhdGlvbjo6cGVyZm9ybSgpCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kTGV2ZWxEQjo6SW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0gaW5kZXhXcml0ZXJz
W2ldLmdldCgpOworICAgICAgICBJREJJbmRleFdyaXRlciogaW5kZXhXcml0ZXIgPSBpbmRleFdy
aXRlcnNbaV0uZ2V0KCk7CiAgICAgICAgIGluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNv
cmRJZGVudGlmaWVyLmdldCgpLCAqbV9iYWNraW5nU3RvcmUsIG1fdHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAg
ICAgfQogCiAgICAgaWYgKG1fb2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCAmJiBtX3B1dE1vZGUg
IT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JVcGRhdGUgJiYga2V5LT50eXBl
KCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSB7Ci0gICAgICAgIGJvb2wgb2sgPSBJREJPYmplY3RT
dG9yZUJhY2tlbmRMZXZlbERCOjp1cGRhdGVLZXlHZW5lcmF0b3IobV9iYWNraW5nU3RvcmUsIG1f
dHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwga2V5LmdldCgpLCAh
a2V5V2FzR2VuZXJhdGVkKTsKKyAgICAgICAgYm9vbCBvayA9IG1fYmFja2luZ1N0b3JlLT51cGRh
dGVLZXlHZW5lcmF0b3IoKm1fdHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZS5pZCwgKmtleSwgIWtleVdhc0dlbmVyYXRlZCk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAg
ICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcg
a2V5IGdlbmVyYXRvci4iKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmgKaW5kZXggYzZi
MzBhOS4uYmNmNzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuaApAQCAtMjc0LDEzICsyNzQsMTMgQEAgcHJpdmF0ZToK
IAogY2xhc3MgUHV0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REI6Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEm
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSBwdXRNb2Rl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJ
bmRleEtleXM+JiBpbmRleEtleXMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0
b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9i
amVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSBwdXRNb2RlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdXRPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tp
bmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNh
bGxiYWNrcywgaW5kZXhJZHMsIGluZGV4S2V5cykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBQdXRPcGVyYXRpb24oSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHZh
bHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJhdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
dmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZTo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYg
aW5kZXhLZXlzKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAg
ICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAsIG1fZGF0YWJhc2VJZChk
YXRhYmFzZUlkKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlIG1fcHV0TW9kZTsKICAgICBjb25zdCBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBjb25zdCBWZWN0b3I8aW50NjRfdD4g
bV9pbmRleElkczsKLSAgICBjb25zdCBWZWN0b3I8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpJbmRleEtleXM+IG1faW5kZXhLZXlzOworICAgIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+IG1f
aW5kZXhLZXlzOwogfTsKIAogY2xhc3MgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uIDogcHVibGlj
IElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGU5MmE2OS4u
YjYxMTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTYzOSw2ICsxNjM5LDggQEAKIAkJNTEwRDRBMzYxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwICovOyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuaCAqLzsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oICovOyB9OworCQk1MTBFQzQyQTE4MTcwQzc1MDBDODk3RDYgLyogSURCSW5kZXhX
cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwRUM0MjgxODE3MEM3NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmNwcCAqLzsgfTsKKwkJ
NTEwRUM0MkIxODE3MEM3NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBFQzQyOTE4MTcwQzc1MDBDODk3
RDYgLyogSURCSW5kZXhXcml0ZXIuaCAqLzsgfTsKIAkJNTExMjkzNUYzRDU0QjRCNTJGQUY5NzNG
IC8qIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTI5MzYxM0Q2REI0QjUyRkFGOTczRiAvKiBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgKi87IH07CiAJCTUxMTI5MzYwM0Q2MEI0QjUyRkFG
OTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjkzNjIzRDg1QjRCNTJGQUY5NzNGIC8qIElu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmggKi87IH07CiAJCTUxMUVGMkMwMTdGMEZEMzUwMEU0
RkExNiAvKiBKU0lEQkFueS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTFFRjJBODE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJBbnkuY3BwICovOyB9
OwpAQCAtODIxNyw2ICs4MjE5LDggQEAKIAkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzIxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwRUM0MjgxODE3MEM3NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkluZGV4V3JpdGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRUM0MjkxODE3MEM3NTAwQzg5N0Q2
IC8qIElEQkluZGV4V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkluZGV4V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTI5MzYxM0Q2
REI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTI5MzYyM0Q4NUI0QjUyRkFGOTcz
RiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTFFRjJBODE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJBbnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNJREJBbnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTY3MzksNiArMTY3NDMsOCBAQAogCQkJCTUxRDcxOThFMTgxMTA2RTAwMDE2REM1MSAv
KiBJREJJbmRleC5jcHAgKi8sCiAJCQkJNTFENzE5OEYxODExMDZFMDAwMTZEQzUxIC8qIElEQklu
ZGV4LmggKi8sCiAJCQkJNTFENzE5OTAxODExMDZFMDAwMTZEQzUxIC8qIElEQkluZGV4LmlkbCAq
LywKKwkJCQk1MTBFQzQyODE4MTcwQzc1MDBDODk3RDYgLyogSURCSW5kZXhXcml0ZXIuY3BwICov
LAorCQkJCTUxMEVDNDI5MTgxNzBDNzUwMEM4OTdENiAvKiBJREJJbmRleFdyaXRlci5oICovLAog
CQkJCTUxRDcxOTkxMTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXkuY3BwICovLAogCQkJCTUxRDcx
OTkyMTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXkuaCAqLywKIAkJCQk1MUQ3MTk5MzE4MTEwNkUw
MDAxNkRDNTEgLyogSURCS2V5UGF0aC5jcHAgKi8sCkBAIC0yNDIwOSw2ICsyNDIxNSw3IEBACiAJ
CQkJQjIyMjdBMTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRG
YWNlTmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTFFMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGb250RmFjZVNyY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEVD
NDJCMTgxNzBDNzUwMEM4OTdENiAvKiBJREJJbmRleFdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBMjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlVXJpRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EyNzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjczNDEsNiArMjczNDgsNyBA
QAogCQkJCUIyMjI3QTA1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3QTA4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NUU3MkZCMEZEMjYyMzkwMEE4
N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRUM0MkExODE3MEM3
NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4MUVC
RjNBMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTBCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3QTBFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="237500"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="237504"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214919</attachid>
            <date>2013-10-22 19:29:30 -0700</date>
            <delta_ts>2013-10-22 20:12:24 -0700</delta_ts>
            <desc>Patch v2 - EWS just for sanity</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55146</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzFjYTZhNS4uNjhiMTVjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc3MSw2ICs3NzEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5j
cHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5jcHAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5j
cHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKQEAgLTc4OCw3ICs3ODks
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKLSAgICBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmMTg0YmJhLi5hYTBiN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTcgQEAKKzIwMTMtMTAtMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIEdldCByaWQgb2YgSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBUaGlzIGZpbGUgd2FzIGtpbmQgb2Yg
YSBkdW1waW5nIGdyb3VuZC4KKyAgICAgICAgSXRzIGNvbnRlbnRzIGNhbiBiZSBtZXJnZWQgaW50
byBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UgYW5kIGEgbmV3IElEQkluZGV4V3JpdGVyIGNsYXNz
LgorCisgICAgICAgIEFsc28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8gYSBsaXR0bGUgYml0
IG9mIFJlZlB0cjw+IGFuZCBwb2ludGVyLXZzLXJlZmVyZW5jZSBjbGVhbnVwLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kTGV2ZWxEQi5oOiBSZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXhXcml0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
V3JpdGVyOjpJREJJbmRleFdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleFdyaXRl
cjo6d3JpdGVJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhXcml0ZXI6OnZl
cmlmeUluZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleFdyaXRlcjo6YWRkaW5n
S2V5QWxsb3dlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleFdyaXRlcjo6Y3JlYXRlKToKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjptYWtlSW5k
ZXhXcml0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6Omdl
bmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OnVw
ZGF0ZUtleUdlbmVyYXRvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJCYWNraW5nU3RvcmVMZXZlbERCLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OnNldEluZGV4ZXNSZWFkeSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmg6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQjo6c2NoZWR1bGVQdXRPcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oOgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246OnBlcmZvcm0pOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQk9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlvbjo6UHV0T3BlcmF0aW9uKToKKwog
MjAxMy0xMC0yMiAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAg
ICAgICBbV2luQ2Fpcm9dIENvbXBpbGUgZXJyb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCA5NGU5NzM4Li5mY2FmYWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTE4MjQsNiArMTgyNCw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJIaXN0b2dyYW1zLmggXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhXcml0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleFdyaXRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXkuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXkuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAg
XApAQCAtMTgzMyw4ICsxODM1LDYgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxE
QkNvZGluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0
YS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZExldmVsREIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZS5oCmluZGV4IGExM2JhZGQuLjUxZjNlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZV9oCiAjZGVm
aW5lIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZV9oCiAKKyNpbmNsdWRlICJJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklu
ZGV4ZWREQi5oIgogCkBAIC0zNywxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBJREJJbmRleFdyaXRlcjsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleVBhdGg7
CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIElEQlJlY29yZElkZW50aWZpZXI7CitjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZT4gewpAQCAtMTAzLDYgKzEwNiwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlSW50
ZXJmYWNlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90JiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KSA9IDA7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgbWFrZUluZGV4V3JpdGVycyhJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmLCBJREJLZXkmIHByaW1hcnlLZXksIGJvb2wga2V5V2FzR2VuZXJhdGVkLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYsIFZlY3Rv
cjxSZWZQdHI8SURCSW5kZXhXcml0ZXI+PiYgaW5kZXhXcml0ZXJzLCBTdHJpbmcqIGVycm9yTWVz
c2FnZSwgYm9vbCYgY29tcGxldGVkKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
S2V5PiBnZW5lcmF0ZUtleShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UmLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCB1cGRhdGVLZXlHZW5lcmF0b3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGJv
b2wgY2hlY2tDdXJyZW50KSA9IDA7CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggOWYzMzY5Yy4uNmQ0ZWNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgSURCS2V5UmFuZ2U7
CiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAordHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4+IEluZGV4S2V5czsKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CkBAIC03OSw4ICs4
MCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IE1pbmltdW1JbmRleElk
ID0gMzA7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4gSW5kZXhLZXlzOwot
CiAgICAgdmlydHVhbCB2b2lkIGdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgYm9v
bCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKICAgICAvLyBOb3RlIHRo
YXQgJ3ZhbHVlJyBtYXkgYmUgY29uc3VtZWQvYWRvcHRlZCBieSB0aGlzIGNhbGwuCiAgICAgdmly
dHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4sIFB1
dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBp
bmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyN2VhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4V3JpdGVyLmNwcApAQCAtMCwwICsx
LDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgICAgICAgICAgICAgIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCSW5k
ZXhXcml0ZXIuaCIKKworI2luY2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0lEQkluZGV4V3JpdGVyOjpJREJJbmRleFdyaXRlcihjb25zdCBJREJJbmRleE1l
dGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgSW5kZXhLZXlzJiBrZXlzKQorICAgIDogbV9pbmRleE1l
dGFkYXRhKG1ldGFkYXRhKQorICAgICwgbV9pbmRleEtleXMoa2V5cykKK3sKK30KKwordm9pZCBJ
REJJbmRleFdyaXRlcjo6d3JpdGVJbmRleEtleXMoY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciog
cmVjb3JkSWRlbnRpZmllciwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlJiBiYWNraW5nU3RvcmUs
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgY29uc3QKK3sKKyAgICBBU1NF
UlQocmVjb3JkSWRlbnRpZmllcik7CisgICAgaW50NjRfdCBpbmRleElkID0gbV9pbmRleE1ldGFk
YXRhLmlkOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmRleEtleXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgYm9vbCBvayA9IGJhY2tpbmdTdG9yZS5wdXRJbmRleERhdGFGb3JSZWNv
cmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICoobV9p
bmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVudGlmaWVyKTsKKyAgICAgICAgLy8gVGhpcyBz
aG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gdmVyaWZpZWQgYXMgYSB2YWxpZCB3cml0ZSBkdXJpbmcg
dmVyaWZ5SW5kZXhLZXlzLgorICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgfQor
fQorCitib29sIElEQkluZGV4V3JpdGVyOjp2ZXJpZnlJbmRleEtleXMoSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLCBjb25zdCBJREJLZXkqIHBy
aW1hcnlLZXksIFN0cmluZyogZXJyb3JNZXNzYWdlKSBjb25zdAoreworICAgIGNhbkFkZEtleXMg
PSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5kZXhLZXlzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGJvb2wgb2sgPSBhZGRpbmdLZXlBbGxvd2VkKGJhY2tpbmdTdG9yZSwg
dHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIChtX2luZGV4
S2V5cylbaV0uZ2V0KCksIHByaW1hcnlLZXksIGNhbkFkZEtleXMpOworICAgICAgICBpZiAoIW9r
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWNhbkFkZEtleXMpIHsK
KyAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCisgICAgICAgICAgICAgICAgKmVycm9yTWVz
c2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmFibGUgdG8gYWRkIGtleSB0byBpbmRleCAnJXMnOiBh
dCBsZWFzdCBvbmUga2V5IGRvZXMgbm90IHNhdGlzZnkgdGhlIHVuaXF1ZW5lc3MgcmVxdWlyZW1l
bnRzLiIsIG1faW5kZXhNZXRhZGF0YS5uYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgY2FuQWRkS2V5cyA9IHRydWU7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSURCSW5kZXhXcml0ZXI6OmFkZGluZ0tleUFsbG93
ZWQoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkqIGlu
ZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1hcnlLZXksIGJvb2wmIGFsbG93ZWQpIGNvbnN0Cit7
CisgICAgYWxsb3dlZCA9IGZhbHNlOworICAgIGlmICghbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSkg
eworICAgICAgICBhbGxvd2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgUmVmUHRyPElEQktleT4gZm91bmRQcmltYXJ5S2V5OworICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICBib29sIG9rID0gYmFja2luZ1N0b3JlLmtleUV4aXN0c0luSW5kZXgodHJhbnNh
Y3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICppbmRleEtleSwgZm91
bmRQcmltYXJ5S2V5LCBmb3VuZCk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZm91bmQgfHwgKHByaW1hcnlLZXkgJiYgZm91bmRQcmltYXJ5S2V5LT5pc0Vx
dWFsKHByaW1hcnlLZXkpKSkKKyAgICAgICAgYWxsb3dlZCA9IHRydWU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhXcml0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTlj
NjcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhXcml0ZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgICAgIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElE
QkluZGV4V3JpdGVyX2gKKyNkZWZpbmUgSURCSW5kZXhXcml0ZXJfaAorCisjaW5jbHVkZSAiSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4+IEluZGV4S2V5czsKKworY2xh
c3MgSURCSW5kZXhXcml0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJJbmRleFdyaXRlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4V3JpdGVyPiBjcmVhdGUoY29u
c3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgSW5kZXhLZXlzJiBpbmRl
eEtleXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4V3JpdGVy
KGluZGV4TWV0YWRhdGEsIGluZGV4S2V5cykpOworICAgIH0KKworICAgIGJvb2wgdmVyaWZ5SW5k
ZXhLZXlzKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLCBjb25zdCBJREJLZXkqIHByaW1h
cnlLZXkgPSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApIGNvbnN0IFdBUk5fVU5VU0VEX1JF
VFVSTjsKKworICAgIHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURCUmVjb3JkSWRlbnRpZmll
ciosIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgSURCSW5kZXhXcml0ZXIoY29uc3QgSURCSW5kZXhNZXRh
ZGF0YSYsIGNvbnN0IEluZGV4S2V5cyYpOworCisgICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkqIGluZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1hcnlL
ZXksIGJvb2wmIGFsbG93ZWQpIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAgIGNvbnN0
IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFkYXRhOworICAgIEluZGV4S2V5cyBtX2luZGV4
S2V5czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkluZGV4V3JpdGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCmluZGV4IDE2ZTg3NjIuLmE4
Y2EyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1l
dGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRh
dGEuaApAQCAtODEsNyArODEsNiBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSB7CiAK
IHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKIAotI2lmIFVTRShMRVZFTERCKQogICAgIC8v
IEZJWE1FOiBUaGVzZSBhcmUgb25seSBoZXJlIHRvIHN1cHBvcnQgdGhlIExldmVsREIgYmFja2Vu
ZCB3aGljaCBpbmNvcnJlY3RseSBoYW5kbGVzIHZlcnNpb25pbmcuCiAgICAgLy8gT25jZSBMZXZl
bERCIHN1cHBvcnRzIGEgc2luZ2xlLCB1aW50NjRfdCB2ZXJzaW9uIGFuZCB0aHJvd3Mgb3V0IHRo
ZSBvbGQgc3RyaW5nIHZlcnNpb24sIHRoZXNlCiAgICAgLy8gc2hvdWxkIGJlIGdvdHRlbiByaWQg
b2YuCkBAIC05Nyw3ICs5Niw2IEBAIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKICAgICAg
ICAgTm9JbnRWZXJzaW9uID0gSU5UNjRfTUFYLAogICAgICAgICBEZWZhdWx0SW50VmVyc2lvbiA9
IDAKICAgICB9OwotI2VuZGlmIC8vIFVTRShMRVZFTERCKQogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PGludDY0X3QsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0b3JlTWFwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDNjMDAwNjEuLmY4ODBjOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDcmVhdGVJbmRleE9wZXJhdGlvbihpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlRGVsZXRlSW5kZXhPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJJbmRleE1ldGFkYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUdl
dE9wZXJhdGlvbihjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJbmRleGVkREI6
OkN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4sIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4sIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24oc2l6
ZV90IGluZGV4Q291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVPcGVuQ3Vyc29y
T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ291bnRP
cGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0
b3JlTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCmluZGV4IDU5YWFlM2QxLi44YzdlN2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tp
bmdTdG9yZUxldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKQEAgLTMwLDExICszMCwxMyBAQAog
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhpc3RvZ3JhbVN1cHBvcnQuaCIK
KyNpbmNsdWRlICJJREJJbmRleFdyaXRlci5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1
ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklE
QkxldmVsREJDb2RpbmcuaCIKICNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgorI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkxldmVsREJDb21wYXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkl0
ZXJhdG9yLmgiCkBAIC0xMzM0LDYgKzEzMzYsNjEgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZl
bERCOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorCitib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om1h
a2VJbmRleFdyaXRlcnMoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmpl
Y3RTdG9yZSwgSURCS2V5JiBwcmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4
S2V5cywgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+JiBpbmRleFdyaXRlcnMsIFN0cmlu
ZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQpCit7CisgICAgQVNTRVJUKGluZGV4SWRz
LnNpemUoKSA9PSBpbmRleEtleXMuc2l6ZSgpKTsKKyAgICBjb21wbGV0ZWQgPSBmYWxzZTsKKwor
ICAgIEhhc2hNYXA8aW50NjRfdCwgSW5kZXhLZXlzPiBpbmRleEtleU1hcDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGluZGV4SWRzLnNpemUoKTsgKytpKQorICAgICAgICBpbmRleEtleU1h
cC5hZGQoaW5kZXhJZHNbaV0sIGluZGV4S2V5c1tpXSk7CisKKyAgICBmb3IgKElEQk9iamVjdFN0
b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLmlu
ZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3RvcmUuaW5kZXhlcy5lbmQoKTsgKytpdCkgewor
ICAgICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleCA9IGl0LT52YWx1ZTsKKworICAg
ICAgICBJbmRleEtleXMga2V5cyA9IGluZGV4S2V5TWFwLmdldChpdC0+a2V5KTsKKyAgICAgICAg
Ly8gSWYgdGhlIG9iamVjdFN0b3JlIGlzIHVzaW5nIGF1dG9JbmNyZW1lbnQsIHRoZW4gYW55IGlu
ZGV4ZXMgd2l0aCBhbiBpZGVudGljYWwga2V5UGF0aCBuZWVkIHRvIGFsc28gdXNlIHRoZSBwcmlt
YXJ5IChnZW5lcmF0ZWQpIGtleSBhcyBhIGtleS4KKyAgICAgICAgaWYgKGtleVdhc0dlbmVyYXRl
ZCAmJiAoaW5kZXgua2V5UGF0aCA9PSBvYmplY3RTdG9yZS5rZXlQYXRoKSkKKyAgICAgICAgICAg
IGtleXMuYXBwZW5kKCZwcmltYXJ5S2V5KTsKKworICAgICAgICBSZWZQdHI8SURCSW5kZXhXcml0
ZXI+IGluZGV4V3JpdGVyID0gSURCSW5kZXhXcml0ZXI6OmNyZWF0ZShpbmRleCwga2V5cyk7Cisg
ICAgICAgIGJvb2wgY2FuQWRkS2V5cyA9IGZhbHNlOworICAgICAgICBib29sIGJhY2tpbmdTdG9y
ZVN1Y2Nlc3MgPSBpbmRleFdyaXRlci0+dmVyaWZ5SW5kZXhLZXlzKCp0aGlzLCB0cmFuc2FjdGlv
bi5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZS5pZCwg
aW5kZXguaWQsIGNhbkFkZEtleXMsICZwcmltYXJ5S2V5LCBlcnJvck1lc3NhZ2UpOworICAgICAg
ICBpZiAoIWJhY2tpbmdTdG9yZVN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmICghY2FuQWRkS2V5cykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgIGluZGV4V3JpdGVycy5hcHBlbmQoaW5kZXhXcml0ZXIucmVsZWFzZSgpKTsKKyAgICB9CisK
KyAgICBjb21wbGV0ZWQgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCitQYXNzUmVmUHRy
PElEQktleT4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2VuZXJhdGVLZXkoSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpCit7CisgICAgY29uc3QgaW50NjRfdCBtYXhHZW5lcmF0b3JWYWx1
ZSA9IDkwMDcxOTkyNTQ3NDA5OTJMTDsgLy8gTWF4aW11bSBpbnRlZ2VyIHN0b3JhYmxlIGFzIEVD
TUFTY3JpcHQgbnVtYmVyLgorICAgIGludDY0X3QgY3VycmVudE51bWJlcjsKKyAgICBib29sIG9r
ID0gZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcih0cmFuc2FjdGlvbi5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBjdXJyZW50TnVtYmVyKTsK
KyAgICBpZiAoIW9rKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldEtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIiKTsKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlSW52YWxp
ZCgpOworICAgIH0KKyAgICBpZiAoY3VycmVudE51bWJlciA8IDAgfHwgY3VycmVudE51bWJlciA+
IG1heEdlbmVyYXRvclZhbHVlKQorICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJbnZhbGlk
KCk7CisKKyAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoY3VycmVudE51bWJlcik7Cit9
CisKKworYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjp1cGRhdGVLZXlHZW5lcmF0b3IoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBib29sIGNoZWNr
Q3VycmVudCkKK3sKKyAgICBBU1NFUlQoa2V5LnR5cGUoKSA9PSBJREJLZXk6Ok51bWJlclR5cGUp
OworICAgIHJldHVybiBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIodHJhbnNh
Y3Rpb24uYmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmxvb3Ioa2V5Lm51bWJlcigpKSkgKyAxLCBjaGVja0N1
cnJlbnQpOworfQorCiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNvcihjb25z
dCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3IqIG90aGVyKQogICAgIDogbV90cmFuc2Fj
dGlvbihvdGhlci0+bV90cmFuc2FjdGlvbikKICAgICAsIG1fY3Vyc29yT3B0aW9ucyhvdGhlci0+
bV9jdXJzb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAppbmRleCBh
YmJlYTAyLi4zOTViNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaApAQCAt
MTY2LDYgKzE2NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rp
b24+IG1fdHJhbnNhY3Rpb247CiAgICAgfTsKIAorICAgIHZpcnR1YWwgYm9vbCBtYWtlSW5kZXhX
cml0ZXJzKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIElEQktleSYgcHJpbWFyeUtleSwgYm9v
bCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0
IFZlY3RvcjxJbmRleEtleXM+JiwgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+JiBpbmRl
eFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQpIE9WRVJSSURF
IFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdl
bmVyYXRlS2V5KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
dXBkYXRlS2V5R2VuZXJhdG9yKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBib29s
IGNoZWNrQ3VycmVudCkgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBJREJCYWNraW5nU3Rv
cmVMZXZlbERCKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc093blB0cjxMZXZlbERCRGF0
YWJhc2U+LCBQYXNzT3duUHRyPExldmVsREJDb21wYXJhdG9yPik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5k
TGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCmluZGV4IGM5ODcwMmUuLmY5NDQ1OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJh
c2VCYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcApAQCAtMjYsMTUgKzI2LDE3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kTGV2
ZWxEQi5oIgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIFVTRShMRVZFTERCKQor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZExldmVsREIuaCIKKyNpbmNs
dWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VD
YWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUg
IklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCSW5kZXhXcml0ZXIuaCIKICNpbmNsdWRlICJJREJL
ZXlSYW5nZS5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuaCIKLSNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgiCisjaW5jbHVkZSAiSURCUmVj
b3JkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0yNDAsNiArMjQyLDggQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6
c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKIHsKICAgICBM
T0coU3RvcmFnZUFQSSwgIklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OnNldEluZGV4S2V5cyIp
OworICAgIEFTU0VSVChwcnBQcmltYXJ5S2V5KTsKKwogICAgIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjYwLDEyICsy
NjQsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleEtleXMoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFZlY3RvcjxPd25QdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6SW5kZXhX
cml0ZXI+PiBpbmRleFdyaXRlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+
IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJvb2wgb2JleXND
b25zdHJhaW50cyA9IGZhbHNlOwogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5j
b250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmpl
Y3RTdG9yZUlkKTsKLSAgICBib29sIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBJREJPYmplY3RTdG9y
ZUJhY2tlbmRMZXZlbERCOjptYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCBzdG9yZS5nZXQo
KSwgaWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgcHJpbWFyeUtleSwgZmFsc2UsIGluZGV4SWRz
LCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlzQ29uc3RyYWlu
dHMpOworICAgIGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IHN0b3JlLT5tYWtlSW5kZXhXcml0
ZXJzKCp0cmFuc2FjdGlvbiwgaWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgKnByaW1hcnlLZXks
IGZhbHNlLCBpbmRleElkcywgaW5kZXhLZXlzLCBpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2Us
IG9iZXlzQ29uc3RyYWludHMpOwogICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2VzcykgewogICAg
ICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvcjogYmFja2luZyBzdG9y
ZSBlcnJvciB1cGRhdGluZyBpbmRleCBrZXlzLiIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc2
LDE0ICsyODAsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleEtl
eXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamUKICAgICB9CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGluZGV4V3JpdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBJ
REJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCOjpJbmRleFdyaXRlciogaW5kZXhXcml0ZXIgPSBp
bmRleFdyaXRlcnNbaV0uZ2V0KCk7CisgICAgICAgIElEQkluZGV4V3JpdGVyKiBpbmRleFdyaXRl
ciA9IGluZGV4V3JpdGVyc1tpXS5nZXQoKTsKICAgICAgICAgaW5kZXhXcml0ZXItPndyaXRlSW5k
ZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpzdG9yZS5nZXQoKSwgdHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGlkKCksIG9iamVjdFN0b3JlSWQpOwogICAgIH0K
IH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpzZXRJbmRleGVzUmVhZHkoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzKQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxE
Qjo6c2V0SW5kZXhlc1JlYWR5Iik7CisgICAgTE9HKFN0b3JhZ2VBUEksICJJREJEYXRhYmFzZUJh
Y2tlbmRMZXZlbERCOjpzZXRJbmRleGVzUmVhZHkiKTsKIAogICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rp
b25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKQEAgLTYxNCw0ICs2MTgsNCBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZExldmVsREI6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IHBycENhbGxiYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCisjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5o
CmluZGV4IDBmMDk4ZmYuLjY5MTIyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5k
TGV2ZWxEQi5oCkBAIC0yNywxMyArMjcsMTQgQEAKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5k
TGV2ZWxEQl9oCiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJEYXRh
YmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKSAmJiBVU0UoTEVWRUxEQikKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzAsNiArMTcxLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYm
IFVTRShMRVZFTERCKQorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjZW5k
aWYgLy8gSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVs
REIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRMZXZlbERCLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGJiOTg2ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURC
T2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpICYmIFVTRShMRVZFTERCKQotCi0jaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5o
IgotI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJDYWxsYmFj
a3MuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oIgotI2luY2x1ZGUgIklE
QkRhdGFiYXNlQmFja2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURCS2V5
LmgiCi0jaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0j
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIgotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWJvb2wgSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6SW5kZXhXcml0ZXI6OnZlcmlm
eUluZGV4S2V5cyhJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmIGJhY2tpbmdTdG9yZSwgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGJvb2wmIGNh
bkFkZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwgU3RyaW5nKiBlcnJvck1lc3NhZ2Up
IGNvbnN0Ci17Ci0gICAgY2FuQWRkS2V5cyA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9pbmRleEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYm9vbCBvayA9IGFkZGlu
Z0tleUFsbG93ZWQoYmFja2luZ1N0b3JlLCB0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgaW5kZXhJZCwgKG1faW5kZXhLZXlzKVtpXS5nZXQoKSwgcHJpbWFyeUtleSwgY2Fu
QWRkS2V5cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGlmICghY2FuQWRkS2V5cykgewotICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkK
LSAgICAgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuYWJsZSB0
byBhZGQga2V5IHRvIGluZGV4ICclcyc6IGF0IGxlYXN0IG9uZSBrZXkgZG9lcyBub3Qgc2F0aXNm
eSB0aGUgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIiwgbV9pbmRleE1ldGFkYXRhLm5hbWUudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBjYW5BZGRLZXlzID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRMZXZlbERCOjpJbmRleFdyaXRlcjo6d3JpdGVJbmRleEtleXMoY29u
c3QgSURCUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllciwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCkgY29uc3QKLXsKLSAgICBBU1NFUlQocmVjb3JkSWRlbnRpZmllcik7Ci0gICAgaW50NjRf
dCBpbmRleElkID0gbV9pbmRleE1ldGFkYXRhLmlkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9pbmRleEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYm9vbCBvayA9IGJhY2tpbmdT
dG9yZS5wdXRJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsICoobV9pbmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVudGlm
aWVyKTsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gdmVyaWZpZWQg
YXMgYSB2YWxpZCB3cml0ZSBkdXJpbmcgdmVyaWZ5SW5kZXhLZXlzLgotICAgICAgICBBU1NFUlRf
VU5VU0VEKG9rLCBvayk7Ci0gICAgfQotfQotCi1ib29sIElEQk9iamVjdFN0b3JlQmFja2VuZExl
dmVsREI6OkluZGV4V3JpdGVyOjphZGRpbmdLZXlBbGxvd2VkKElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSYgYmFja2luZ1N0b3JlLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBw
cmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdAotewotICAgIGFsbG93ZWQgPSBmYWxzZTsK
LSAgICBpZiAoIW1faW5kZXhNZXRhZGF0YS51bmlxdWUpIHsKLSAgICAgICAgYWxsb3dlZCA9IHRy
dWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJLZXk+IGZv
dW5kUHJpbWFyeUtleTsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgYm9vbCBvayA9IGJh
Y2tpbmdTdG9yZS5rZXlFeGlzdHNJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkLCAqaW5kZXhLZXksIGZvdW5kUHJpbWFyeUtleSwgZm91bmQpOwot
ICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWZvdW5kIHx8IChw
cmltYXJ5S2V5ICYmIGZvdW5kUHJpbWFyeUtleS0+aXNFcXVhbChwcmltYXJ5S2V5KSkpCi0gICAg
ICAgIGFsbG93ZWQgPSB0cnVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIElEQk9iamVj
dFN0b3JlQmFja2VuZExldmVsREI6Om1ha2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXks
IGJvb2wga2V5V2FzR2VuZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+JiBpbmRl
eEtleXMsIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+PiogaW5kZXhXcml0ZXJzLCBTdHJpbmcq
IGVycm9yTWVzc2FnZSwgYm9vbCYgY29tcGxldGVkKQotewotICAgIEFTU0VSVChpbmRleElkcy5z
aXplKCkgPT0gaW5kZXhLZXlzLnNpemUoKSk7Ci0gICAgY29tcGxldGVkID0gZmFsc2U7Ci0KLSAg
ICBIYXNoTWFwPGludDY0X3QsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlz
PiBpbmRleEtleU1hcDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4SWRzLnNpemUo
KTsgKytpKQotICAgICAgICBpbmRleEtleU1hcC5hZGQoaW5kZXhJZHNbaV0sIGluZGV4S2V5c1tp
XSk7Ci0KLSAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3Rv
cmUuaW5kZXhlcy5lbmQoKTsgKytpdCkgewotCi0gICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRh
dGEmIGluZGV4ID0gaXQtPnZhbHVlOwotCi0gICAgICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhLZXlzIGtleXMgPSBpbmRleEtleU1hcC5nZXQoaXQtPmtleSk7Ci0gICAgICAg
IC8vIElmIHRoZSBvYmplY3RTdG9yZSBpcyB1c2luZyBhdXRvSW5jcmVtZW50LCB0aGVuIGFueSBp
bmRleGVzIHdpdGggYW4gaWRlbnRpY2FsIGtleVBhdGggbmVlZCB0byBhbHNvIHVzZSB0aGUgcHJp
bWFyeSAoZ2VuZXJhdGVkKSBrZXkgYXMgYSBrZXkuCi0gICAgICAgIGlmIChrZXlXYXNHZW5lcmF0
ZWQgJiYgKGluZGV4LmtleVBhdGggPT0gb2JqZWN0U3RvcmUua2V5UGF0aCkpCi0gICAgICAgICAg
ICBrZXlzLmFwcGVuZChwcmltYXJ5S2V5KTsKLQotICAgICAgICBPd25QdHI8SW5kZXhXcml0ZXI+
IGluZGV4V3JpdGVyKGFkb3B0UHRyKG5ldyBJbmRleFdyaXRlcihpbmRleCwga2V5cykpKTsKLSAg
ICAgICAgYm9vbCBjYW5BZGRLZXlzID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgYmFja2luZ1N0b3Jl
U3VjY2VzcyA9IGluZGV4V3JpdGVyLT52ZXJpZnlJbmRleEtleXMoKmJhY2tpbmdTdG9yZSwgdHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlLmlkLCBpbmRleC5pZCwgY2FuQWRkS2V5cywgcHJpbWFyeUtleS5nZXQoKSwgZXJyb3JNZXNz
YWdlKTsKLSAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVTdWNjZXNzKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNhbkFkZEtleXMpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgICAgICBpbmRleFdyaXRlcnMtPmFwcGVuZChpbmRleFdyaXRlci5yZWxlYXNl
KCkpOwotICAgIH0KLQotICAgIGNvbXBsZXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVBhc3NSZWZQdHI8SURCS2V5PiBJREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCOjpnZW5l
cmF0ZUtleShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gYmFja2luZ1N0b3Jl
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKLXsKLSAgICBjb25zdCBp
bnQ2NF90IG1heEdlbmVyYXRvclZhbHVlID0gOTAwNzE5OTI1NDc0MDk5MkxMOyAvLyBNYXhpbXVt
IGludGVnZXIgc3RvcmFibGUgYXMgRUNNQVNjcmlwdCBudW1iZXIuCi0gICAgaW50NjRfdCBjdXJy
ZW50TnVtYmVyOwotICAgIGJvb2wgb2sgPSBiYWNraW5nU3RvcmUtPmdldEtleUdlbmVyYXRvckN1
cnJlbnROdW1iZXIodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGN1cnJlbnROdW1iZXIpOwotICAgIGlmICghb2spIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlciIp
OwotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgfQotICAgIGlm
IChjdXJyZW50TnVtYmVyIDwgMCB8fCBjdXJyZW50TnVtYmVyID4gbWF4R2VuZXJhdG9yVmFsdWUp
Ci0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUludmFsaWQoKTsKLQotICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZU51bWJlcihjdXJyZW50TnVtYmVyKTsKLX0KLQotYm9vbCBJREJPYmplY3RT
dG9yZUJhY2tlbmRMZXZlbERCOjp1cGRhdGVLZXlHZW5lcmF0b3IoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2U+IGJhY2tpbmdTdG9yZSwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCPiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSoga2V5LCBib29sIGNoZWNrQ3VycmVudCkKLXsK
LSAgICBBU1NFUlQoa2V5ICYmIGtleS0+dHlwZSgpID09IElEQktleTo6TnVtYmVyVHlwZSk7Ci0g
ICAgcmV0dXJuIGJhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVt
YmVyKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihmbG9vcihrZXktPm51bWJlcigpKSkg
KyAxLCBjaGVja0N1cnJlbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZjYzNGM0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSURCT2JqZWN0U3RvcmVCYWNrZW5k
TGV2ZWxEQl9oCi0jZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREJfaAotCi0jaW5j
bHVkZSAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxE
QikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRMZXZl
bERCOwotY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjsKLXN0cnVjdCBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhOwotCi0vLyBGSVhNRTogdGhpcyBuYW1lc3BhY2UgaXMgdGVtcG9yYXJ5
IHVudGlsIHdlIG1vdmUgaXRzIGNvbnRlbnRzIG91dCB0byB0aGVpciBvd24gaG9tZS4KLW5hbWVz
cGFjZSBJREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCIHsKLQotICAgIGNsYXNzIEluZGV4V3Jp
dGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEluZGV4V3JpdGVyKGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCi0gICAgICAgICAgICA6IG1faW5kZXhNZXRh
ZGF0YShpbmRleE1ldGFkYXRhKQotICAgICAgICB7IH0KLQotICAgICAgICBJbmRleFdyaXRlcihj
b25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cyYgaW5kZXhLZXlzKQotICAgICAgICAgICAgOiBtX2lu
ZGV4TWV0YWRhdGEoaW5kZXhNZXRhZGF0YSkKLSAgICAgICAgICAgICwgbV9pbmRleEtleXMoaW5k
ZXhLZXlzKQotICAgICAgICB7IH0KLQotICAgICAgICBib29sIHZlcmlmeUluZGV4S2V5cyhJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgYm9vbCYgY2FuQWRkS2V5cywgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCwg
U3RyaW5nKiBlcnJvck1lc3NhZ2UgPSAwKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47Ci0KLSAg
ICAgICAgdm9pZCB3cml0ZUluZGV4S2V5cyhjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyKiwgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdDsK
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29s
JiBhbGxvd2VkKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47Ci0KLSAgICAgICAgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7Ci0gICAgICAgIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6SW5kZXhLZXlzIG1faW5kZXhLZXlzOwotICAgIH07Ci0KLSAgICBib29sIG1h
a2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgYm9v
bCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0
IFZlY3RvcjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cz4mLCBWZWN0b3I8
T3duUHRyPEluZGV4V3JpdGVyPj4qIGluZGV4V3JpdGVycywgU3RyaW5nKiBlcnJvck1lc3NhZ2Us
IGJvb2wmIGNvbXBsZXRlZCkgV0FSTl9VTlVTRURfUkVUVVJOOwotCi0gICAgUGFzc1JlZlB0cjxJ
REJLZXk+IGdlbmVyYXRlS2V5KFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9y
KFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCPiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQktleSosIGJvb2wgY2hlY2tDdXJyZW50KTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAm
JiBVU0UoTEVWRUxEQikKLQotI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXgg
MWU2NmI3NC4uMWJhOWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREIuY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCOjpzY2hlZHVsZUdldE9wZXJhdGlvbihjb25zdCBJREJEYXRhYmFzZU1ldGFkYXQK
ICAgICBzY2hlZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3Rv
cmUuZ2V0KCksIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vy
c29yVHlwZSwgY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6c2NoZWR1bGVQdXRPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmVNZXRhZGF0YSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUg
cHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCOjpzY2hlZHVsZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiBvYmplY3RTdG9yZU1ldGFkYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9k
ZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
KQogewogICAgIHNjaGVkdWxlVGFzayhQdXRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tp
bmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgdmFs
dWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDE0OGVmZjcu
LjVlNjU5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDcmVh
dGVJbmRleE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0
YWRhdGEmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEZWxldGVJ
bmRleE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRh
dGEmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVHZXRPcGVyYXRp
b24oY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JU
eXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4sIElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+JikgT1ZFUlJJREUgRklOQUw7CisgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlUHV0T3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlU2V0
SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVfdCBpbmRleENvdW50KSBPVkVSUklERSBGSU5BTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVPcGVuQ3Vyc29yT3BlcmF0aW9uKGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBP
VkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb3VudE9wZXJhdGlvbihp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgRklOQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMu
Y3BwCmluZGV4IDQ4NDdkYmQuLmRlZWI2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCSW5kZXhXcml0ZXIuaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZExldmVs
REIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBQdXRPcGVyYXRpb246OnBlcmZvcm0oKQogCiAg
ICAgUmVmUHRyPElEQktleT4ga2V5OwogICAgIGlmIChtX3B1dE1vZGUgIT0gSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JVcGRhdGUgJiYgbV9vYmplY3RTdG9yZS5hdXRvSW5jcmVt
ZW50ICYmICFtX2tleSkgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0gSURC
T2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6Z2VuZXJhdGVLZXkobV9iYWNraW5nU3RvcmUsIG1f
dHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CisgICAgICAgIFJl
ZlB0cjxJREJLZXk+IGF1dG9JbmNLZXkgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXkoKm1f
dHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAgICAgICAgIGtl
eVdhc0dlbmVyYXRlZCA9IHRydWU7CiAgICAgICAgIGlmICghYXV0b0luY0tleS0+aXNWYWxpZCgp
KSB7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgIk1heGltdW0ga2V5
IGdlbmVyYXRvciB2YWx1ZSByZWFjaGVkLiIpKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHZvaWQg
UHV0T3BlcmF0aW9uOjpwZXJmb3JtKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIFZlY3RvcjxP
d25QdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQjo6SW5kZXhXcml0ZXI+PiBpbmRleFdy
aXRlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+IGluZGV4V3JpdGVyczsK
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJvb2wgb2JleXNDb25zdHJhaW50cyA9IGZh
bHNlOwotICAgIGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IElEQk9iamVjdFN0b3JlQmFja2Vu
ZExldmVsREI6Om1ha2VJbmRleFdyaXRlcnMobV90cmFuc2FjdGlvbiwgbV9iYWNraW5nU3RvcmUu
Z2V0KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZSwga2V5LCBrZXlXYXNHZW5lcmF0ZWQs
IG1faW5kZXhJZHMsIG1faW5kZXhLZXlzLCAmaW5kZXhXcml0ZXJzLCAmZXJyb3JNZXNzYWdlLCBv
YmV5c0NvbnN0cmFpbnRzKTsKKyAgICBib29sIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBtX2JhY2tp
bmdTdG9yZS0+bWFrZUluZGV4V3JpdGVycygqbV90cmFuc2FjdGlvbiwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlLCAqa2V5LCBrZXlXYXNHZW5lcmF0ZWQsIG1faW5kZXhJZHMsIG1faW5kZXhL
ZXlzLCBpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlzQ29uc3RyYWludHMpOwogICAg
IGlmICghYmFja2luZ1N0b3JlU3VjY2VzcykgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIkludGVybmFsIGVycm9yOiBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5nIGluZGV4
IGtleXMuIikpOwogICAgICAgICByZXR1cm47CkBAIC0yMjcsMTIgKzIyNywxMiBAQCB2b2lkIFB1
dE9wZXJhdGlvbjo6cGVyZm9ybSgpCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpbmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kTGV2ZWxEQjo6SW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0gaW5kZXhXcml0ZXJzW2ldLmdl
dCgpOworICAgICAgICBJREJJbmRleFdyaXRlciogaW5kZXhXcml0ZXIgPSBpbmRleFdyaXRlcnNb
aV0uZ2V0KCk7CiAgICAgICAgIGluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVu
dGlmaWVyLmdldCgpLCAqbV9iYWNraW5nU3RvcmUsIG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAgICAgfQog
CiAgICAgaWYgKG1fb2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCAmJiBtX3B1dE1vZGUgIT0gSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JVcGRhdGUgJiYga2V5LT50eXBlKCkgPT0g
SURCS2V5OjpOdW1iZXJUeXBlKSB7Ci0gICAgICAgIGJvb2wgb2sgPSBJREJPYmplY3RTdG9yZUJh
Y2tlbmRMZXZlbERCOjp1cGRhdGVLZXlHZW5lcmF0b3IobV9iYWNraW5nU3RvcmUsIG1fdHJhbnNh
Y3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwga2V5LmdldCgpLCAha2V5V2Fz
R2VuZXJhdGVkKTsKKyAgICAgICAgYm9vbCBvayA9IG1fYmFja2luZ1N0b3JlLT51cGRhdGVLZXlH
ZW5lcmF0b3IoKm1fdHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwg
KmtleSwgIWtleVdhc0dlbmVyYXRlZCk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAg
IG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcga2V5IGdl
bmVyYXRvci4iKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmgKaW5kZXggYzZiMzBhOS4u
YmNmNzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQk9wZXJhdGlvbnMuaApAQCAtMjc0LDEzICsyNzQsMTMgQEAgcHJpdmF0ZToKIAogY2xh
c3MgUHV0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9w
ZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3Jl
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVj
dFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SWRzLCBjb25zdCBWZWN0b3I8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtl
eXM+JiBpbmRleEtleXMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
QiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0
b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBQdXRPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9y
ZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNr
cywgaW5kZXhJZHMsIGluZGV4S2V5cykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBQdXRPcGVyYXRpb24oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHZhbHVlLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1v
ZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJhdGlvbihJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYgdmFsdWUs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0
TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhL
ZXlzKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9i
YWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFz
ZUlkKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlIG1fcHV0TW9kZTsKICAgICBjb25zdCBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBjb25zdCBWZWN0b3I8aW50NjRfdD4gbV9pbmRl
eElkczsKLSAgICBjb25zdCBWZWN0b3I8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpJbmRl
eEtleXM+IG1faW5kZXhLZXlzOworICAgIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+IG1faW5kZXhL
ZXlzOwogfTsKIAogY2xhc3MgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uIDogcHVibGljIElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGU5MmE2OS4uYjYxMTdh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTYzOSw2ICsxNjM5LDggQEAKIAkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwICovOyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuaCAqLzsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oICovOyB9OworCQk1MTBFQzQyQTE4MTcwQzc1MDBDODk3RDYgLyogSURCSW5kZXhXcml0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRUM0
MjgxODE3MEM3NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmNwcCAqLzsgfTsKKwkJNTEwRUM0
MkIxODE3MEM3NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBFQzQyOTE4MTcwQzc1MDBDODk3RDYgLyog
SURCSW5kZXhXcml0ZXIuaCAqLzsgfTsKIAkJNTExMjkzNUYzRDU0QjRCNTJGQUY5NzNGIC8qIElu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTI5MzYxM0Q2REI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudC5jcHAgKi87IH07CiAJCTUxMTI5MzYwM0Q2MEI0QjUyRkFGOTczRiAv
KiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjkzNjIzRDg1QjRCNTJGQUY5NzNGIC8qIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50LmggKi87IH07CiAJCTUxMUVGMkMwMTdGMEZEMzUwMEU0RkExNiAv
KiBKU0lEQkFueS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFRjJBODE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJBbnkuY3BwICovOyB9OwpAQCAt
ODIxNyw2ICs4MjE5LDggQEAKIAkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEwRUM0MjgxODE3MEM3NTAwQzg5N0Q2IC8qIElEQkluZGV4V3JpdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkluZGV4V3JpdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRUM0MjkxODE3MEM3NTAwQzg5N0Q2IC8qIElE
QkluZGV4V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkluZGV4
V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTI5MzYxM0Q2REI0QjUy
RkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTI5MzYyM0Q4NUI0QjUyRkFGOTczRiAvKiBJ
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTFFRjJBODE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJBbnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNJREJBbnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY3MzksNiArMTY3NDMsOCBAQAogCQkJCTUxRDcxOThFMTgxMTA2RTAwMDE2REM1MSAvKiBJREJJ
bmRleC5jcHAgKi8sCiAJCQkJNTFENzE5OEYxODExMDZFMDAwMTZEQzUxIC8qIElEQkluZGV4Lmgg
Ki8sCiAJCQkJNTFENzE5OTAxODExMDZFMDAwMTZEQzUxIC8qIElEQkluZGV4LmlkbCAqLywKKwkJ
CQk1MTBFQzQyODE4MTcwQzc1MDBDODk3RDYgLyogSURCSW5kZXhXcml0ZXIuY3BwICovLAorCQkJ
CTUxMEVDNDI5MTgxNzBDNzUwMEM4OTdENiAvKiBJREJJbmRleFdyaXRlci5oICovLAogCQkJCTUx
RDcxOTkxMTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXkuY3BwICovLAogCQkJCTUxRDcxOTkyMTgx
MTA2RTAwMDE2REM1MSAvKiBJREJLZXkuaCAqLywKIAkJCQk1MUQ3MTk5MzE4MTEwNkUwMDAxNkRD
NTEgLyogSURCS2V5UGF0aC5jcHAgKi8sCkBAIC0yNDIwOSw2ICsyNDIxNSw3IEBACiAJCQkJQjIy
MjdBMTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBMUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlTmFt
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTFFMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGb250RmFjZVNyY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEVDNDJCMTgx
NzBDNzUwMEM4OTdENiAvKiBJREJJbmRleFdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBMjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlVXJpRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBMjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EyNzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjczNDEsNiArMjczNDgsNyBAQAogCQkJ
CUIyMjI3QTA1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTA4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NUU3MkZCMEZEMjYyMzkwMEE4N0Q3OSAv
KiBTVkdGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRUM0MkExODE3MEM3NTAwQzg5
N0Q2IC8qIElEQkluZGV4V3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4MUVCRjNBMEZE
MzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3QTBCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTBFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuaAppbmRleCBhZGJjMjUyLi5lZjc0
YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNr
ZW5kLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOwogICAgIC8vIE5vdGUgdGhhdCAndmFsdWUn
IG1heSBiZSBjb25zdW1lZC9hZG9wdGVkIGJ5IHRoaXMgY2FsbC4KLSAgICB2aXJ0dWFsIHZvaWQg
cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5
LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlz
PiYpOworICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB2YWx1ZSwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbmRleEtleXM+Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5
cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
aW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbmRleEtleXM+Jik7CiAgICAgdmlydHVh
bCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcyk7CiAgICAgdmlydHVh
bCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4s
IFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tU
eXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9p
ZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KTsK
</data>
<flag name="commit-queue"
          id="237541"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>