<?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>192594</bug_id>
          
          <creation_ts>2018-12-11 09:39:50 -0800</creation_ts>
          <short_desc>Introduce makeBlockPtr for lambdas</short_desc>
          <delta_ts>2018-12-12 16:39:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486953</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-12-11 09:39:50 -0800</bug_when>
    <thetext>Introduce makeBlockPtr for lambdas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486961</commentid>
    <comment_count>1</comment_count>
      <attachid>357061</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-12-11 09:55:18 -0800</bug_when>
    <thetext>Created attachment 357061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486986</commentid>
    <comment_count>2</comment_count>
      <attachid>357061</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 11:21:46 -0800</bug_when>
    <thetext>Comment on attachment 357061
Patch

Clearing flags on attachment: 357061

Committed r239078: &lt;https://trac.webkit.org/changeset/239078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486987</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 11:21:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486988</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-11 11:22:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/46635331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486997</commentid>
    <comment_count>5</comment_count>
      <attachid>357061</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-11 11:48:11 -0800</bug_when>
    <thetext>Comment on attachment 357061
Patch

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

&gt; Source/WTF/wtf/BlockPtr.h:197
&gt; +    return BlockPtr&lt;R (Args...)&gt;::fromCallable(std::forward&lt;F&gt;(function));

Could we make fromCallable private now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487066</commentid>
    <comment_count>6</comment_count>
      <attachid>357061</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-12-11 16:56:09 -0800</bug_when>
    <thetext>Comment on attachment 357061
Patch

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

&gt;&gt; Source/WTF/wtf/BlockPtr.h:197
&gt;&gt; +    return BlockPtr&lt;R (Args...)&gt;::fromCallable(std::forward&lt;F&gt;(function));
&gt; 
&gt; Could we make fromCallable private now?

Yes, good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487070</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-12-11 17:02:14 -0800</bug_when>
    <thetext>(In reply to Andy Estes from comment #6)
&gt; Comment on attachment 357061 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357061&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/BlockPtr.h:197
&gt; &gt;&gt; +    return BlockPtr&lt;R (Args...)&gt;::fromCallable(std::forward&lt;F&gt;(function));
&gt; &gt; 
&gt; &gt; Could we make fromCallable private now?
&gt; 
&gt; Yes, good idea.

Actually I don&apos;t know how to :(

BlockPtr doesn&apos;t take typename F as an argument, so I don&apos;t know the exact specialization of makeBlockPtr to befriend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487408</commentid>
    <comment_count>8</comment_count>
      <attachid>357061</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-12 16:39:41 -0800</bug_when>
    <thetext>Comment on attachment 357061
Patch

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

&gt; Source/WTF/wtf/BlockPtr.h:207
&gt; +inline auto makeBlockPtr(F&amp;&amp; function)

Wow, I think there&apos;s a way, but this auto is quite profound.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357061</attachid>
            <date>2018-12-11 09:55:18 -0800</date>
            <delta_ts>2018-12-11 11:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192594-20181211095517.patch</filename>
            <type>text/plain</type>
            <size>83827</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiZWEwNDA5MzFiN2YxY2M0NGVlOGNi
ZWI0MWMyYTQxMTlkMzI4NWYuLmNmZjRiYmM4YWFhZmZhNWU1OWYxNGE3NmU4ZjM2MTdlNzFkY2E0
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMTItMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBtYWtlQmxvY2tQdHIgZm9yIGxhbWJkYXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjU5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJsb2NrUHRy
PC4uLj46OmZyb21DYWxsYWJsZSBpcyBjdW1iZXJzb21lIGJlY2F1c2UgaXQgcmVxdWlyZXMgcmVw
ZWF0aW5nIHRoZSBjYWxsYWJsZSdzCisgICAgICAgIHNpZ25hdHVyZSBhcyBhIGNsYXNzIHRlbXBs
YXRlIGFyZ3VtZW50LiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYW4gb3ZlcmxvYWQgb2YgbWFrZUJs
b2NrUHRyCisgICAgICAgIHRoYXQgZGVkdWNlcyB0aGUgY29ycmVjdCBCbG9ja1B0ciBpbnN0YW50
aWF0aW9uIGZyb20gYSBsYW1iZGEncyBvcGVyYXRvcigpIHNpZ25hdHVyZS4KKworICAgICAgICAq
IHd0Zi9CbG9ja1B0ci5oOgorICAgICAgICAoV1RGOjptYWtlQmxvY2tQdHIpOgorCisgICAgICAg
IEFkb3B0ZWQgbWFrZUJsb2NrUHRyLgorCisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1ZUNv
Y29hLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChX
VEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
Y29uY3VycmVudEFwcGx5KToKKwogMjAxOC0xMi0xMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVOQUJMRV9TRUNfSVRFTV9TSElNIG91dCBvZiBX
ZWJLaXQncyBjb25maWcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNlNjE4MzM2ZTQ2NWI0Y2Q2MGFhYTMyMGJl
MjNhYWY3YTBjMjg3YTcuLmRjMjVhNDBhMjRhYWE1ZTM2ZDEzZDdjNTkyOTdjMGZlYmFkMTgyYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOC0xMi0xMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIG1ha2VCbG9ja1B0ciBmb3IgbGFt
YmRhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRv
cHRlZCBtYWtlQmxvY2tQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRv
ckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXJPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
ck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6R1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uIGFk
ZERlbGVnYXRlT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRSZWRpcmVjdDpyZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDpd
KToKKwogMjAxOC0xMi0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgV2Vha1B0ciB0byByZWZlciB0byBWVFRDdWUgaW4gVlRUQ3VlQm94CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCBhODhjZDFhYWZiOTUzNDIyMWJkMzFiOGE4OTgzMDQ5ZDkzYjY4ZjI5Li4z
MTZmYzc0NjYyZTk1YzJkOTBjMWE2MmRiOGQ0MDM5MDBjNzg1YmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMi0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIG1ha2VCbG9ja1B0ciBmb3IgbGFtYmRhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNTk0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHRlZCBtYWtl
QmxvY2tQdHIuCisKKyAgICAgICAgKiBwYWwvTG9nZ2luZy5jcHA6CisgICAgICAgIChQQUw6OnJl
Z2lzdGVyTm90aWZ5Q2FsbGJhY2spOgorCiAyMDE4LTEyLTEwICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjM5MDIzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAwZGM3MTQ1N2RjMDIyZTMyZGZlMTljYTI2OGMxODBiOGUyMGFh
ZmQzLi5jMDc0NDk4MTQzNzU1ZWU0ZjE1MTcyMDU5YmZhNDUxNGFkMmNkMDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDg5IEBACisyMDE4LTEyLTExICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRyb2R1Y2UgbWFrZUJsb2NrUHRyIGZvciBsYW1iZGFzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI1OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdGVkIG1ha2VCbG9j
a1B0ci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25s
b2FkUHJvZ3Jlc3MubW06CisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBpbml0V2l0aERv
d25sb2FkVGFzazpkb3dubG9hZDpVUkw6c2FuZGJveEV4dGVuc2lvbjpdKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6d3JpdGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OnNhdmVDb29r
aWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkJsdWV0b290aFByb3hpbWl0eUFzc2VydGlv
bjo6c3VzcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUluc3Rh
bGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbToKKyAgICAgICAg
KFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3ROZXdQYWdlV2l0aE9wdGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdFN3
aXRjaFRvUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojpy
ZXF1ZXN0SGlkZVdpbmRvd09mUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50OjpyZXF1ZXN0UmVzdG9yZVdpbmRvd09mUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4aW1pemVXaW5kb3dPZlBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25M
b2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9h
ZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpDb250ZXh0TWVudUNsaWVudDo6
bWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJLaXQ6OlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0pOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktp
dDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OndpbmRvd0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXph
dGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOgorICAgICAgICAoLVtXS1NhZmVCcm93c2luZ1dhcm5p
bmcgY2xpY2tlZE9uTGluazpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJv
d3NpbmdDaGVjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0hpZENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkhpZENvbm5lY3Rpb246OnNlbmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5l
Y3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNvbnNl
bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9u
OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRp
b25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvU2Vydmlj
ZXNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpoYXNDb21wYXRpYmxlU2VydmljZXNG
b3JJdGVtcyk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4
aXN0aW5nU2VydmljZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgIChQYWdlTG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToK
KwogMjAxOC0xMi0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBbmltYXRlZCBzY3JvbGxpbmcgb24gR29vZ2xlIE1hcHMgc2Nyb2xscyB0aGUgcGFn
ZSBpbiBhZGRpdGlvbiB0byBtb3ZpbmcgdGhlIG1hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQmxvY2tQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0Jsb2NrUHRyLmgKaW5kZXggYTAxMTE5NTg3
ODJjOTBiMTk5NjkyZThiOGM0MGJkNzJkMTYwMTA5NS4uNDExYjFjOTU5M2YxYjZiNTQ1YjdiOWYy
ZDI2ODIzZTViYTBmNGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQmxvY2tQdHIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9CbG9ja1B0ci5oCkBAIC0xOTEsNiArMTkxLDI0IEBAIGlubGlu
ZSBCbG9ja1B0cjxSIChBcmdzLi4uKT4gbWFrZUJsb2NrUHRyKFIgKF5ibG9jaykoQXJncy4uLikp
CiAgICAgcmV0dXJuIEJsb2NrUHRyPFIgKEFyZ3MuLi4pPihibG9jayk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEYsIHR5cGVuYW1lIENsYXNzLCB0eXBlbmFtZSBSLCB0eXBlbmFtZS4uLiBBcmdz
PgoraW5saW5lIGF1dG8gbWFrZUJsb2NrUHRyKEYmJiBmdW5jdGlvbiwgUiAoQ2xhc3M6OiopKEFy
Z3MuLi4pIGNvbnN0KQoreworICAgIHJldHVybiBCbG9ja1B0cjxSIChBcmdzLi4uKT46OmZyb21D
YWxsYWJsZShzdGQ6OmZvcndhcmQ8Rj4oZnVuY3Rpb24pKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgRiwgdHlwZW5hbWUgQ2xhc3MsIHR5cGVuYW1lIFIsIHR5cGVuYW1lLi4uIEFyZ3M+Citpbmxp
bmUgYXV0byBtYWtlQmxvY2tQdHIoRiYmIGZ1bmN0aW9uLCBSIChDbGFzczo6KikoQXJncy4uLikp
Cit7CisgICAgcmV0dXJuIEJsb2NrUHRyPFIgKEFyZ3MuLi4pPjo6ZnJvbUNhbGxhYmxlKHN0ZDo6
Zm9yd2FyZDxGPihmdW5jdGlvbikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGPgoraW5saW5l
IGF1dG8gbWFrZUJsb2NrUHRyKEYmJiBmdW5jdGlvbikKK3sKKyAgICByZXR1cm4gbWFrZUJsb2Nr
UHRyKHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbiksICZGOjpvcGVyYXRvcigpKTsKK30KKwogfQog
CiB1c2luZyBXVEY6OkJsb2NrUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
V29ya1F1ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2Eu
Y3BwCmluZGV4IGQwOTU5ZWMyYjE3ZDM3NWM4YWI1MGE5YjBjNDIwZmY1ZGQxOGQ4N2IuLmY2YzRi
OGM4NzkxMTRmYmU3Y2FkNWRjZTY5MjdkNDgyNjQyYTM5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9Xb3JrUXVldWVDb2NvYS5jcHAKQEAgLTMzLDE0ICszMywxNCBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
IHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIEJsb2NrUHRyPHZvaWQoKT46
OmZyb21DYWxsYWJsZShbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVl
LCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgp
KTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwg
RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGR1cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRf
dD4oKSksIG1fZGlzcGF0Y2hRdWV1ZSwgQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlv
bildIHsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCBkdXJhdGlvbi5uYW5vc2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUsIG1h
a2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pXSB7CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAgfSkuZ2V0KCkpOwog
fQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkK
IAogdm9pZCBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgV1RG
OjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0
Y2hfYXBwbHkoaXRlcmF0aW9ucywgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgQmxvY2tQdHI8dm9pZChzaXplX3QgaW5kZXgpPjo6
ZnJvbUNhbGxhYmxlKFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShzaXplX3QgaW5kZXgp
IHsKKyAgICBkaXNwYXRjaF9hcHBseShpdGVyYXRpb25zLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBtYWtlQmxvY2tQdHIoW2Z1
bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildKHNpemVfdCBpbmRleCkgewogICAgICAgICBmdW5j
dGlvbihpbmRleCk7CiAgICAgfSkuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9Mb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5j
cHAKaW5kZXggZTYyNTQ4ZDQ2NzkxZjhmYTdlMTEzMTZjNzQzZDk4ZjE5ODhmN2MyZS4uOGU2ZmEy
MzBmYzQ1ZTZiMmYwNDZjMTFkZmFkMjcxNDMxOGMwNjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xv
Z2dpbmcuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhj
b25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsCiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IHRva2VuOwotICAgIG5vdGlmeV9yZWdpc3Rlcl9k
aXNwYXRjaChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIEJsb2NrUHRyPHZvaWQoaW50KT46OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5v
dGlmeUlELnV0ZjgoKS5kYXRhKCksICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bWFrZUJsb2NrUHRyKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShpbnQpIHsKICAgICAg
ICAgY2FsbGJhY2soKTsKICAgICB9KS5nZXQoKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KaW5kZXggZDM3ZTE3ZjczMTc2
OTRkMmNhNTBiMTBiMmU1YzBhM2M3MGE3ZGEyZS4uMWFiM2MzMzRjNjlkZmZhMzY0OGFiMDBhNDU1
OGQ5ZjI3ZTQzMDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
RmlsZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9G
aWxlTW9uaXRvckNvY29hLm1tCkBAIC01NCw3ICs1NCw3IEBAIEZpbGVNb25pdG9yOjpGaWxlTW9u
aXRvcihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBX
VEY6CiAKICAgICBMT0coUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIkNyZWF0aW5nIG1vbml0b3Ig
JXAiLCBtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSk7CiAKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0
X2V2ZW50X2hhbmRsZXIobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCksIEJsb2NrUHRyPHZvaWQoKT46
OmZyb21DYWxsYWJsZShbbW9kaWZpY2F0aW9uSGFuZGxlciA9IFdURk1vdmUobW9kaWZpY2F0aW9u
SGFuZGxlciksIGZpbGVNb25pdG9yID0gbV9wbGF0Zm9ybU1vbml0b3JdIHsKKyAgICBkaXNwYXRj
aF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCksIG1ha2VC
bG9ja1B0cihbbW9kaWZpY2F0aW9uSGFuZGxlciA9IFdURk1vdmUobW9kaWZpY2F0aW9uSGFuZGxl
ciksIGZpbGVNb25pdG9yID0gbV9wbGF0Zm9ybU1vbml0b3JdIHsKICAgICAgICAgLy8gSWYgdGhp
cyBpcyBnZXR0aW5nIGNhbGxlZCBhZnRlciB0aGUgbW9uaXRvciB3YXMgY2FuY2VsbGVkLCBqdXN0
IGRyb3AgdGhlIG5vdGlmaWNhdGlvbi4KICAgICAgICAgaWYgKGRpc3BhdGNoX3NvdXJjZV90ZXN0
Y2FuY2VsKGZpbGVNb25pdG9yLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJP
YmpDLm1tCmluZGV4IGNjMDViMmE0YjU3MmVlNTZiOTJjZGE5ZTAxNzVhZjFmMjJiNGM5MjcuLjgz
YjgxMjViMTI5ZDhiNDM1NzdlZDg0NzQxYTc3YzhiN2M3YjRkMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5t
bQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6QmxvY2tQdHI8
dm9pZCAoKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0geworICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KS5nZXQoKV07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29j
b2EvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwu
bW0KaW5kZXggYTczODBlODJlM2Y1OTZkZTYzOTgwZTBkZDMzMDg1MTUxNTQ0NjAyZC4uZjI3OTM5
ZTgxNmU2NWZkYzZmOGRjOTNlOTYzZTk5Zjk1Y2ZkYjE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5k
QnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0KQEAgLTQzLDcgKzQz
LDcgQEAgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcihjb25z
dCBHUFVMZWdhY3lDb21tYW5kUXVldWUmIHF1ZXUKIAogICAgIG1fbWV0YWwgPSBbcXVldWUubWV0
YWwoKSBjb21tYW5kQnVmZmVyXTsKIAotICAgIFttX21ldGFsIGFkZENvbXBsZXRlZEhhbmRsZXI6
QmxvY2tQdHI8dm9pZCAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pPjo6ZnJvbUNhbGxhYmxlKFtjb21w
bGV0ZWRDYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGVkQ2FsbGJhY2spXSAoaWQ8TVRMQ29tbWFu
ZEJ1ZmZlcj4pIG11dGFibGUgeworICAgIFttX21ldGFsIGFkZENvbXBsZXRlZEhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjb21wbGV0ZWRDYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGVkQ2FsbGJhY2sp
XSAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pIG11dGFibGUgewogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUoY29tcGxldGVkQ2FsbGJhY2spKTsKICAgICB9KS5nZXQoKV07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNzBlYjc3NjhlMzA2YzM4N2RjOTg2MDUwMTM5ZmM5MDJk
YWFhMDU3NC4uMTdlNjE2Nzk5NWY2NzFhOTU0YmY1MmNjMGZlYzZlMjExYTUwMzRiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIC0gKHZvaWQpdGFza0NvbXBs
ZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogLSAodm9pZClhZGREZWxl
Z2F0ZU9wZXJhdGlvbjooRnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9uCiB7CiAgICAgUmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb24+IHN0cm9uZ1NlbGYgeyBzZWxmIH07Ci0gICAgUmV0YWlu
UHRyPE5TQmxvY2tPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFtOU0Jsb2NrT3BlcmF0aW9uIGJsb2Nr
T3BlcmF0aW9uV2l0aEJsb2NrOkJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShXVEZNb3Zl
KGZ1bmN0aW9uKSkuZ2V0KCldOworICAgIFJldGFpblB0cjxOU0Jsb2NrT3BlcmF0aW9uPiBvcGVy
YXRpb24gPSBbTlNCbG9ja09wZXJhdGlvbiBibG9ja09wZXJhdGlvbldpdGhCbG9jazptYWtlQmxv
Y2tQdHIoV1RGTW92ZShmdW5jdGlvbikpLmdldCgpXTsKICAgICBkaXNwYXRjaF9hc3luYyhfaW50
ZXJuYWxRdWV1ZS5nZXQoKSwgW3N0cm9uZ1NlbGYsIG9wZXJhdGlvbl0gewogICAgICAgICBbc3Ry
b25nU2VsZi5nZXQoKS5kZWxlZ2F0ZVF1ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb24uZ2V0KCld
OwogICAgICAgICBbb3BlcmF0aW9uIHdhaXRVbnRpbEZpbmlzaGVkXTsKQEAgLTcwNyw3ICs3MDcs
NyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIHJl
Y2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cgogICAgICAgICAKICAgICAgICAgaWQ8TlNVUkxT
ZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURl
bGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChb
ZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNr
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6
KV0pIHsKLSAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJCbG9jayA9IEJsb2NrUHRy
PHZvaWQoTlNVUkxSZXF1ZXN0ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QpIG11
dGFibGUgeworICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckJsb2NrID0gbWFrZUJs
b2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShO
U1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQppbmRleCBmMGZkZmFkODhjZDg5NDdkNTg3ZWExMTY4NTUxNzlmNDIwYWM5OWQ0Li5l
YzdkMDFiYWJiMWE3ODQ5MmExODEzNDZkYzg1ZWYxYzQwMDZjZWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
CkBAIC02OCw3ICs2OCw3IEBAIC0gKHZvaWQpY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOihGdW5j
dGlvbjx2b2lkKCk+JiYpZnVuY3Rpb24KICAgICAgICAgcmV0dXJuIGNhbGxPbk1haW5UaHJlYWQo
V1RGTW92ZShmdW5jdGlvbikpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIHNjaGVkdWxlZCBp
biBhIGN1c3RvbSBydW4gbG9vcCBtb2RlLCBzY2hlZHVsZSBhIGJsb2NrIGluIHRoYXQgbW9kZS4K
LSAgICBhdXRvIGJsb2NrID0gQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFthbHJlYWR5
Q2FsbGVkID0gZmFsc2UsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildICgpIG11dGFibGUg
eworICAgIGF1dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW2FscmVhZHlDYWxsZWQgPSBmYWxzZSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChh
bHJlYWR5Q2FsbGVkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhbHJlYWR5Q2FsbGVk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmZWJhMGM5
NmJhMDBiODIwYjI3NDVmYTEzOTNhMjY0Y2Y0ZWRjMDlhLi5mMWE3MTI3YWQ1YjE4ZDNhMmJlZDc4
M2E0ZjIwMjM5NDIyMDI1MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1t
CkBAIC02Nyw3ICs2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvd25sb2FkVGFzazoo
TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopdGFzayBkb3dubG9hZDooCiAgICAgbV9zYW5kYm94
RXh0ZW5zaW9uID0gc2FuZGJveEV4dGVuc2lvbjsKIAogICAgIHNlbGYuY2FuY2VsbGFibGUgPSBZ
RVM7Ci0gICAgc2VsZi5jYW5jZWxsYXRpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9pZCgpPjo6ZnJv
bUNhbGxhYmxlKFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLRG93bmxvYWRQcm9ncmVzcz4geyBz
ZWxmIH1dIHsKKyAgICBzZWxmLmNhbmNlbGxhdGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3dl
YWtTZWxmID0gV2Vha09iakNQdHI8V0tEb3dubG9hZFByb2dyZXNzPiB7IHNlbGYgfV0gewogICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFzdHJv
bmdTZWxmKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2Eu
bW0KaW5kZXggYjY0MWEwNjQyZGQyNDQyMmRmNWE5NGRiMTdhMzM1NzllNDYxN2VlOC4uMzY5YmNm
OTczZjJkY2VlMGEzZDQzOTYzNDUzNzBiNjQ2MjFlOWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbENvY29hLm1tCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAg
ICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKICAgICBib29sIGRpZENhbGxDb21w
bGV0aW9uSGFuZGxlciA9IGZhbHNlOwogICAgIGF1dG8gZGlzcGF0Y2hRdWV1ZSA9IHF1ZXVlID8g
cXVldWUtPmRpc3BhdGNoUXVldWUoKSA6IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCk7Ci0gICAg
ZGlzcGF0Y2hfaW9fcmVhZChtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNldCwgc2l6ZSwgZGlzcGF0
Y2hRdWV1ZSwgQmxvY2tQdHI8dm9pZChib29sLCBkaXNwYXRjaF9kYXRhX3QsIGludCk+Ojpmcm9t
Q2FsbGFibGUoW2NoYW5uZWwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGRpZENhbGxDb21wbGV0aW9uSGFuZGxlcl0oYm9vbCBkb25lLCBkaXNwYXRjaF9k
YXRhX3QgZmlsZURhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hfaW9fcmVh
ZChtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNldCwgc2l6ZSwgZGlzcGF0Y2hRdWV1ZSwgbWFrZUJs
b2NrUHRyKFtjaGFubmVsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBkaWRDYWxsQ29tcGxldGlvbkhhbmRsZXJdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0
YV90IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VE
KGRvbmUsIGRvbmUgfHwgIWRpZENhbGxDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIGlmIChk
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDcsNyAr
MTA3LDcgQEAgdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEm
IGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW8KICAgICBSZWZQdHI8SU9DaGFubmVsPiBj
aGFubmVsKHRoaXMpOwogICAgIGF1dG8gZGlzcGF0Y2hEYXRhID0gZGF0YS5kaXNwYXRjaERhdGEo
KTsKICAgICBhdXRvIGRpc3BhdGNoUXVldWUgPSBxdWV1ZSA/IHF1ZXVlLT5kaXNwYXRjaFF1ZXVl
KCkgOiBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpOwotICAgIGRpc3BhdGNoX2lvX3dyaXRlKG1f
ZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBkaXNwYXRjaERhdGEsIGRpc3BhdGNoUXVldWUsIEJs
b2NrUHRyPHZvaWQoYm9vbCwgZGlzcGF0Y2hfZGF0YV90LCBpbnQpPjo6ZnJvbUNhbGxhYmxlKFtj
aGFubmVsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShi
b29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsK
KyAgICBkaXNwYXRjaF9pb193cml0ZShtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNldCwgZGlzcGF0
Y2hEYXRhLCBkaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW2NoYW5uZWwsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZG9uZSwgZGlzcGF0Y2hf
ZGF0YV90IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5V
U0VEKGRvbmUsIGRvbmUpOwogICAgICAgICBhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpp
bmRleCAzZTY4YjI4Mjk1NjcyNmIxZDc5ZDY1MTZiMjczODJkZTBmNGRlMTFhLi4xYzU1Nzc5ZDlk
MTc5NDQ0N2RlNjNiOGI1NDY4ZWY0ZmRkMGNiYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0x
ODEsNyArMTgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRp
bWUgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248dm9pZCAoKT4mJgogCiAgICAgaWYgKGF1dG8qIGNh
Y2hlID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlKCkpIHsKICAgICAgICAgYXV0
byBncm91cCA9IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXA7Ci0gICAgICAgIGRpc3BhdGNoX2dy
b3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0cjx2b2lk
KCk+Ojpmcm9tQ2FsbGFibGUoW2NhY2hlLCBtb2RpZmllZFNpbmNlLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgZGlz
cGF0Y2hfZ3JvdXBfYXN5bmMoZ3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VC
bG9ja1B0cihbY2FjaGUsIG1vZGlmaWVkU2luY2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgY2FjaGUtPmNs
ZWFyKG1vZGlmaWVkU2luY2UsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KS5nZXQo
KSk7CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0FsbENvb2tp
ZXMoKQogc3RhdGljIHZvaWQgc2F2ZUNvb2tpZXMoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2ll
U3RvcmFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgW2Nvb2tpZVN0b3JhZ2UgX3Nh
dmVDb29raWVzOkJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBbY29va2ll
U3RvcmFnZSBfc2F2ZUNvb2tpZXM6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAvLyBDRk5ldHdv
cmsgbWF5IGNhbGwgdGhlIGNvbXBsZXRpb24gYmxvY2sgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlLCBz
byB3ZSBuZWVkIHRvIHJlZGlzcGF0Y2ggdG8gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dh
dGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQppbmRleCAxNzhmM2I0MzdlZDFjMThl
NzZjOGE4NWY1ODg5NzczNTlmYzdlYTQxLi43MjIzYTUzYjkzOTNjODFkYmE1MjUzNTQxN2RhYzhi
MjlmYjRkMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNo
b3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQpAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kKFN1c3Bl
bnNpb25SZWFzb24gcmVhc29uLCBDb21wbGV0aW9uSGFuCiAgICAgICAgIC8vIGNvbXBsZXRpb24g
aGFuZGxlci4gSWYgd2Ugc3VzcGVuZCBiZWZvcmUgSURTIGZpbmlzaGVzIHNldHRpbmcgbGluayBw
cmVmZXJlbmNlcywgdGhlCiAgICAgICAgIC8vIEJsdWV0b290aCByYWRpbyBtaWdodCBzdGF5IGlu
IGEgaGlnaCBwb3dlciBtb2RlLCBoYXJtaW5nIGJhdHRlcnkgbGlmZS4gRGVsYXkgc3VzcGVuc2lv
bgogICAgICAgICAvLyBieSAzMCBzZWNvbmRzIHRvIGVuc3VyZSAtc2V0TGlua1ByZWZlcmVuY2Vz
OiBhbHdheXMgZmluaXNoZXMgaXRzIHdvcmsuCi0gICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDMwICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKSk7CisgICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDMwICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDc0MDU4NzFmMTQ0NmVjMjRlOGZj
MzQ5NzA1OGQ4OGY5OWU4NGUyMmYuLmJhMjA0OGVhYmFhYjY4Y2Q3MzM4MjVjNjRmOGI5MjBmYWI5
NjQ0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtNTIyMiw3ICs1MjIyLDcgQEAgLSAodm9pZClfc2V0SW5wdXREZWxlZ2F0ZTooaWQg
PF9XS0lucHV0RGVsZWdhdGU+KWlucHV0RGVsZWdhdGUKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoaW5wdXREZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OndpbGxTdWJt
aXRGb3JtVmFsdWVzOnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRsZXI6KSk7Ci0gICAgICAgICAg
ICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzptX3dlYlZpZXcgd2lsbFN1Ym1pdEZvcm1WYWx1ZXM6
dmFsdWVNYXAuZ2V0KCkgdXNlck9iamVjdDp1c2VyT2JqZWN0IHN1Ym1pc3Npb25IYW5kbGVyOkJs
b2NrUHRyPHZvaWQodm9pZCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSB7Cisg
ICAgICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzptX3dlYlZpZXcgd2lsbFN1Ym1pdEZv
cm1WYWx1ZXM6dmFsdWVNYXAuZ2V0KCkgdXNlck9iamVjdDp1c2VyT2JqZWN0IHN1Ym1pc3Npb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIHsKICAgICAgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggMDgxYzRjNmIzYTBlNGFkOWQzYzRjNWY1OTg4NzM5YjQxMTE1MTkxZC4uMTM5Njcy
MTJlM2U1MzUxMGQ0YjFjNzBmMDBjYjI5ZDhiMTQ5YzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTkwNCw3ICs5MDQsNyBAQCAtICh2b2lkKW1heWJl
SW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgICAgIHsKICAgICAgICAgICAgIFJldGFpblB0
cjxfV0tMaW5rSWNvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtbX1dLTGlua0lj
b25QYXJhbWV0ZXJzIGFsbG9jXSBfaW5pdFdpdGhMaW5rSWNvbjpsaW5rSWNvbl0pOwogCi0gICAg
ICAgICAgICBbbV93a1ZpZXcgX3Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVy
cy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEljb25Mb2FkQ29tcGxldGlv
bkhhbmRsZXIpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgICAgICBbbV93a1ZpZXcgX3Nob3VsZExvYWRJY29u
V2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElj
b25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9hZENvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQgKE5T
RGF0YSAqKT4obG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGQ4ZTdhZTQ4MjM4OGE2MmMxNDhhYjIzOGJlOTcy
NjdmOWM4NzA4NmYuLjQ0MGMxMGU4MDA3ODE3MDNhY2MzNjM4MzIxODk2NWZhMTNiYTBhYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMjY0
LDcgKzI2NCw3IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2Fu
TWFrZVBheW1lbnRzKCkKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
Q2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBQ
S0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBs
aWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5Lndl
YnNpdGVEYXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCksIEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxs
YWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9P
TCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
bihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LndlYnNpdGVE
YXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJv
cik7CiAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cgogICAgICAg
ICB9KTsKICAgICB9KS5nZXQoKSk7CiAjZWxzZQotICAgIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUs
IEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVu
dHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJBbmREb21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1l
LCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVu
dHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwogCkBA
IC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHIKIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcm
IG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGFzc0xp
YnJhcnkgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXNzTGlicmFyeUluc3RhbmNlKCkgaW5pdF0p
OwotICAgIFtwYXNzTGlicmFyeSBvcGVuUGF5bWVudFNldHVwRm9yTWVyY2hhbnRJZGVudGlmaWVy
Om1lcmNoYW50SWRlbnRpZmllciBkb21haW46ZG9tYWluTmFtZSBjb21wbGV0aW9uOkJsb2NrUHRy
PHZvaWQgKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShCT09MIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgW3Bhc3NMaWJy
YXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlm
aWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBsZXRpb246bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzdWx0XSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCAzNzRlZmI1M2ZmNDhkZDhjYmU0ZTg2ZDNhYTY0MjMz
YjA2YzBkMDFlLi4zNzg5N2YyNDYxMzFhMDM5MzE1OTU5M2Y4MTg0MTY0NTRmMDY2NDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC00MSw3ICs0MSw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShj
b25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0
U2VlZCA9IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgW1BBTDo6Z2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVl
c3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkKFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxl
KFtwYXltZW50UmVxdWVzdCwgc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkLCB3ZWFrVGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICBbUEFMOjpnZXRQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFz
cygpIHJlcXVlc3RWaWV3Q29udHJvbGxlcldpdGhQYXltZW50UmVxdWVzdDpwYXltZW50UmVxdWVz
dC5nZXQoKSBjb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbcGF5bWVudFJlcXVlc3QsIHNob3dQYXlt
ZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAq
dmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIGF1dG8gcGF5bWVudENv
b3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAgaWYgKCFwYXltZW50Q29v
cmRpbmF0b3JQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0KaW5kZXgg
MTlhYmExMmQ0ODZjYWQwYjBlOGMxOTYxZDg4NDczZGY1ZmUwOWZmNi4uZWZiMWU2YmUwMjk2ZTAz
NDNlODRjMjE1ZWEwYTA1Mjc2MjZmYjA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0KQEAgLTkwLDExICs5
MCwxMSBAQCBzdGF0aWMgaW5saW5lIF9XS0F1dG9tYXRpb25TZXNzaW9uQnJvd3NpbmdDb250ZXh0
T3B0aW9ucyB0b0FQSShBUEk6OkF1dG9tYXRpb25TZQogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudDo6cmVxdWVzdE5ld1BhZ2VXaXRoT3B0aW9ucyhXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vz
c2lvbiwgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnMgb3B0aW9u
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYlBhZ2VQcm94eSopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0TmV3V2Vi
Vmlld1dpdGhPcHRpb25zKSB7Ci0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9u
U2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3ROZXdXZWJWaWV3V2l0aE9wdGlvbnM6dG9B
UEkob3B0aW9ucykgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChXS1dlYlZpZXcgKik+
Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFdLV2ViVmlldyAqd2ViVmlldykgbXV0YWJsZSB7CisgICAgICAgIFttX2RlbGVnYXRl
LmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3ROZXdXZWJW
aWV3V2l0aE9wdGlvbnM6dG9BUEkob3B0aW9ucykgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXS1dl
YlZpZXcgKndlYlZpZXcpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
d2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwogICAgICAgICB9KS5nZXQoKV07CiAgICAgfSBlbHNlIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0TmV3UGFnZVdpdGhPcHRpb25zKSB7Ci0gICAgICAg
IFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJl
cXVlc3ROZXdQYWdlV2l0aE9wdGlvbnM6dG9BUEkob3B0aW9ucykgY29tcGxldGlvbkhhbmRsZXI6
QmxvY2tQdHI8dm9pZChXS1BhZ2VSZWYpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXS1BhZ2VSZWYgcGFnZSkgbXV0YWJsZSB7
CisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNl
c3Npb24pIHJlcXVlc3ROZXdQYWdlV2l0aE9wdGlvbnM6dG9BUEkob3B0aW9ucykgY29tcGxldGlv
bkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShXS1BhZ2VSZWYgcGFnZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih0b0ltcGwocGFnZSkpOwogICAgICAgICB9KS5nZXQoKV07CiAgICAgfQpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RT
d2l0Y2hUb1BhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IEJsb2NrUHRyPHZvaWQoKT46
OmZyb21DYWxsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBjb21w
bGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0U3dpdGNoVG9XZWJWaWV3KQogICAgICAg
ICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBy
ZXF1ZXN0U3dpdGNoVG9XZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkJsb2NrLmdldCgpXTsKICAgICBlbHNlIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5yZXF1ZXN0U3dpdGNoVG9QYWdlKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQXV0b21h
dGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RIaWRlV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25T
ZXNzaW9uJiBzZXNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbXBsZXRp
b25CbG9jayA9IEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgYXV0byBjb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1
ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9t
YXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdEhpZGVXaW5kb3dPZldlYlZpZXc6
ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uQmxvY2su
Z2V0KCldOwogICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RIaWRlV2luZG93
T2ZQYWdlKQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6
OnJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IEJsb2NrUHRy
PHZvaWQoKT46OmZyb21DYWxsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byBjb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0UmVzdG9yZVdpbmRvd09m
V2ViVmlldykKICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgcmVxdWVzdFJlc3RvcmVXaW5kb3dPZldlYlZpZXc6ZnJvbVdlYlBhZ2VQ
cm94eShwYWdlKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uQmxvY2suZ2V0KCldOwogICAg
IGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKQpA
QCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RN
YXhpbWl6ZVdpbmRvd09mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gY29tcGxldGlvbkJsb2NrID0gQmxvY2tQdHI8dm9pZCgpPjo6
ZnJvbUNhbGxhYmxlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIGNvbXBs
ZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mV2ViVmlldykK
ICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vz
c2lvbikgcmVxdWVzdE1heGltaXplV2luZG93T2ZXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFn
ZSkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkJsb2NrLmdldCgpXTsKICAgICBlbHNlIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0TWF4aW1pemVXaW5kb3dPZlBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IGU5ZDcy
Mzg0ZTQ5MWU5NjcyMWM2NTA2ZGRjYTNiMzRjYzAzMjQwYmQuLjNiNDk2MjhmZGY2ZGZjNWFhZGQw
MjlkNWEyY2JjYjZiZmI3OGNmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQb29sJiwg
RG93bmxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjpC
bG9ja1B0cjx2b2lkKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICopPjo6ZnJvbUNhbGxhYmxlKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1h
a2VSZWYoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihf
ZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KmNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIERvd25sb2Fk
Q2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNz
UG9vbCYsIERvdwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6
WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6QmxvY2tQdHI8dm9pZChCT09MLCBOU1N0cmluZyAqKT46OmZyb21DYWxsYWJsZShbY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSB7CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1l
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3Io
X2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRp
b25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7CiAgICAg
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCA4ZmFhOTJhZWNlNzdlMTllNTk2YmVkM2JiYWU1
ZThkNTc1NDY2ZDkzLi5iN2QyNDIxOTYxZjBiMzUwOTFjZDViNDc0NzRjMDUwMGUwOWI4ZjZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUubW0KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29u
TG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3IKIAogICAg
IFJldGFpblB0cjxfV0tMaW5rSWNvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtb
X1dLTGlua0ljb25QYXJhbWV0ZXJzIGFsbG9jXSBfaW5pdFdpdGhMaW5rSWNvbjpsaW5rSWNvbl0p
OwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9pY29uTG9hZGluZ0RlbGVnYXRlLm1fd2ViVmll
dyBzaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29t
cGxldGlvbkhhbmRsZXIpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29t
cGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1faWNvbkxv
YWRpbmdEZWxlZ2F0ZS5tX3dlYlZpZXcgc2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyczpwYXJh
bWV0ZXJzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEljb25Mb2FkQ29tcGxldGlvbkhh
bmRsZXIgbG9hZENvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKGxvYWRDb21wbGV0aW9uSGFuZGxlcikgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IEJs
b2NrX2NvcHkobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBlYWI3MWFkZDc1NzEzZWE5Nzk2NGQz
NjVhZmMyZDZmOWFlYzlkZGY0Li5mNWVlNGRmMTgwNDNkM2I1YTY0YjEwZDRjMmU2Mzc0MGQ5OTM5
NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQoV2ViS2l0OjpXZWJQYWcKICAgICB9
CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yUGx1Z2luTG9hZFdpdGhDdXJyZW50UG9saWN5OnBsdWdpbkluZm86Y29tcGxldGlvbkhh
bmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0
aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRlY2lkZVBv
bGljeUZvclBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeTp3a1BsdWdpbk1vZHVsZUxvYWRQb2xp
Y3koY3VycmVudFBsdWdpbkxvYWRQb2xpY3kpIHBsdWdpbkluZm86d3JhcHBlcihwbHVnaW5JbmZv
cm1hdGlvbikgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChfV0tQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5LCBOU1N0cmluZyAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
KF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcG9saWN5LCBOU1N0cmluZyAqdW5hdmFpbGFiaWxp
dHlEZXNjcmlwdGlvbikgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IGRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeTp3a1BsdWdp
bk1vZHVsZUxvYWRQb2xpY3koY3VycmVudFBsdWdpbkxvYWRQb2xpY3kpIHBsdWdpbkluZm86d3Jh
cHBlcihwbHVnaW5JbmZvcm1hdGlvbikgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0oX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwb2xpY3ksIE5TU3Ry
aW5nICp1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQw
Niw3ICs0MDYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2Vi
R0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTAogCiAgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KTsKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6d2ViR0xMb2Fk
UG9saWN5Rm9yVVJMOmRlY2lzaW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgd2ViR0xMb2FkUG9saWN5Rm9yVVJMOihOU1VSTCAqKXVybCBkZWNpc2lv
bkhhbmRsZXI6QmxvY2tQdHI8dm9pZChfV0tXZWJHTExvYWRQb2xpY3kpPjo6ZnJvbUNhbGxhYmxl
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oX1dLV2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7
CisgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdh
dGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHdlYkdMTG9hZFBvbGljeUZv
clVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildKF9XS1dlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11dGFibGUgewogICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpA
QCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvCiAgICAgCiAgICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKTsKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgWyhp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHJlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JV
Ukw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKF9XS1dlYkdMTG9h
ZFBvbGljeSk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJHTExvYWRQ
b2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKF9XS1dlYkdMTG9hZFBvbGlj
eSBwb2xpY3kpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFdlYlBhZ2VQCiAgICAgfTsKICAgICAKICAgICBpZiAoZGVsZWdhdGVIYXNXZWJzaXRl
UG9saWNpZXMpIHsKLSAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopPjo6ZnJvbUNh
bGxhYmxlKFdURk1vdmUoZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzKSk7CisgICAgICAgIGF1
dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoZGVjaXNpb25IYW5kbGVy
V2l0aFBvbGljaWVzKSk7CiAgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25V
c2VySW5mb0RlY2lzaW9uSGFuZGxlcldlYnNpdGVQb2xpY2llcykKICAgICAgICAgICAgIFsoaWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgdXNlckluZm86dXNlckluZm8gPyBzdGF0aWNf
Y2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBlcigpKSA6IG5pbCBkZWNp
c2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKICAgICAgICAgZWxzZSB7CkBAIC01
OTEsNyArNTkxLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVAKICAgICAgICAgYXV0byBkZWNp
c2lvbkhhbmRsZXJXaXRob3V0UG9saWNpZXMgPSBbZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVz
ID0gV1RGTW92ZShkZWNpc2lvbkhhbmRsZXJXaXRoUG9saWNpZXMpXSAoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5IGFjdGlvblBvbGljeSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBkZWNpc2lvbkhh
bmRsZXJXaXRoUG9saWNpZXMoYWN0aW9uUG9saWN5LCBuaWwpOwogICAgICAgICB9OwotICAgICAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9u
KSBkZWNpc2lvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
Pjo6ZnJvbUNhbGxhYmxlKFdURk1vdmUoZGVjaXNpb25IYW5kbGVyV2l0aG91dFBvbGljaWVzKSku
Z2V0KCldOworICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihu
YXZpZ2F0aW9uQWN0aW9uKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoZGVj
aXNpb25IYW5kbGVyV2l0aG91dFBvbGljaWVzKSkuZ2V0KCldOwogICAgIH0KIH0KIApAQCAtNjQ0
LDcgKzY0NCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgW25hdmlnYXRpb25E
ZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6d3JhcHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRlY2lzaW9u
SGFuZGxlcjpCbG9ja1B0cjx2b2lkKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KT46OmZyb21D
YWxsYWJsZShbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0oV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgcmVzcG9uc2VQb2xpY3kp
IHsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5hdmlnYXRp
b25SZXNwb25zZSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbbG9jYWxMaXN0ZW5lciA9
IFdURk1vdmUobGlzdGVuZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kgcmVzcG9uc2VQb2xpY3kpIHsKICAgICAgICAgaWYgKGNoZWNrZXIt
PmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg5Nyw3ICs4
OTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZwogICAgICAgICByZXR1cm4gYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwog
CiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtzdGF0aWNf
Y2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29t
cGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKT46OmZyb21DYWxsYWJsZShbY2hhbGxlbmdlID0g
bWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSB3ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtjaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CiAg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRl
eCBhNTU5YTljNThmZmZjODg1MDk1YmM3OGNkNjg4MjBlNDdhZTI4MThiLi5hN2E4M2I0ZWJhZmUw
MWQ2MTRmZjM2ZmU0ZjBiZWE4OGUxODU2NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OkNvbnRleHRNZW51Q2xpZW50OjptZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkmLCBO
U01lbnUgKgogCiAgICAgaWYgKG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
R2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51Rm9yRWxlbWVudFVzZXJJbmZvQ29tcGxldGlv
bkhhbmRsZXIpIHsKICAgICAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6Z2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51OmZvckVsZW1lbnQ6dXNlckluZm86Y29tcGxldGlvbkhh
bmRsZXI6KSk7Ci0gICAgICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51Om1lbnUgZm9yRWxlbWVudDpjb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpIHVzZXJJbmZv
OnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndy
YXBwZXIoKSkgOiBuaWwgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChOU01lbnUgKik+
Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoTlNNZW51ICptZW51KSBtdXRhYmxl
IHsKKyAgICAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnU6bWVu
dSBmb3JFbGVtZW50OmNvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCkgdXNlckluZm86dXNlcklu
Zm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBlcigp
KSA6IG5pbCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIp
XSAoTlNNZW51ICptZW51KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21w
bGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTI0MCw3
ICsyNDAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPgogICAgIGlmIChtX3VpRGVsZWdhdGUu
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZv
ck5hdmlnYXRpb25BY3Rpb25XaW5kb3dGZWF0dXJlc0FzeW5jKSB7CiAgICAgICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKF93ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpmb3JO
YXZpZ2F0aW9uQWN0aW9uOndpbmRvd0ZlYXR1cmVzOmNvbXBsZXRpb25IYW5kbGVyOikpOwogCi0g
ICAgICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKGFwaU5hdmlnYXRpb25BY3Rp
b24pIHdpbmRvd0ZlYXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpIGNvbXBsZXRpb25I
YW5kbGVyOkJsb2NrUHRyPHZvaWQoV0tXZWJWaWV3ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKSwgcmVsYXRlZFdlYlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVs
ZWdhdGUubV93ZWJWaWV3KV0gKFdLV2ViVmlldyAqd2ViVmlldykgbXV0YWJsZSB7CisgICAgICAg
IFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKGFwaU5hdmlnYXRpb25BY3Rpb24pIHdp
bmRvd0ZlYXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHJlbGF0ZWRXZWJWaWV3ID0gUmV0YWlu
UHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldIChXS1dlYlZpZXcgKndlYlZp
ZXcpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3
ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdh
dGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQ
cm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFu
ZGxlcjpCbG9ja1B0cjx2b2lkICgpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0g
eworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNj
cmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBl
cihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRh
dGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdU
Rk1vdmUoY2hlY2tlcildIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nCiAg
ICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0Q29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjop
KTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFT
Y3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQg
KEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1
bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJh
bWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0
eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTMyNyw3
ICszMjcsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJgogICAgIH0KIAogICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21w
dDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQ
cm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFu
ZGxlcjpCbG9ja1B0cjx2b2lkIChOU1N0cmluZyAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildIChOU1N0cmluZyAqcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2Vi
VmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdp
dGhQcm9tcHQ6bWVzc2FnZSBkZWZhdWx0VGV4dDpkZWZhdWx0VmFsdWUgaW5pdGlhdGVkQnlGcmFt
ZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5
T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0gKE5TU3RyaW5nICpyZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0z
NDksNyArMzQ5LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHIKICAgICB9CiAgICAgCiAgICAg
YXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVn
YXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbEZv
ckRvbWFpbjp1bmRlckN1cnJlbnREb21haW46Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgWyhp
ZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1f
d2ViVmlldyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1BhbmVsRm9yRG9tYWluOnJlcXVlc3RpbmdEb21h
aW4gdW5kZXJDdXJyZW50RG9tYWluOmN1cnJlbnREb21haW4gY29tcGxldGlvbkhhbmRsZXI6Qmxv
Y2tQdHI8dm9pZChCT09MKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09M
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Bh
bmVsRm9yRG9tYWluOnJlcXVlc3RpbmdEb21haW4gdW5kZXJDdXJyZW50RG9tYWluOmN1cnJlbnRE
b21haW4gY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0g
KEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViS2l0OjpXCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZTpkZWNpc2lvbkhhbmRs
ZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBzZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpKSkgZGVjaXNpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpm
cm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9u
SGFuZGxlciwgbnVsbHB0ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1
bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZSwgc2VjdXJpdHlP
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFu
ZGxlcigpOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6CiAgICAg
fQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjop
KTsKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
Om1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
KndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29t
cGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZy
YW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJp
dHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNo
ZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC00MzUs
NyArNDM1LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLAogCiAgICAgaWYgKG1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5
T3JpZ2luRGF0YWJhc2VOYW1lRGlzcGxheU5hbWVDdXJyZW50UXVvdGFDdXJyZW50T3JpZ2luVXNh
Z2VDdXJyZW50RGF0YWJhc2VVc2FnZUV4cGVjdGVkVXNhZ2VEZWNpc2lvbkhhbmRsZXIpIHsKICAg
ICAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlRGF0YWJhc2VRdW90YUZv
clNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlTmFtZTpkaXNwbGF5TmFtZTpjdXJyZW50UXVvdGE6Y3Vy
cmVudE9yaWdpblVzYWdlOmN1cnJlbnREYXRhYmFzZVVzYWdlOmV4cGVjdGVkVXNhZ2U6ZGVjaXNp
b25IYW5kbGVyOikpOwotICAgICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0
ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGRlY2lkZURhdGFiYXNlUXVvdGFGb3JT
ZWN1cml0eU9yaWdpbjp3cmFwcGVyKCpzZWN1cml0eU9yaWdpbikgZGF0YWJhc2VOYW1lOmRhdGFi
YXNlTmFtZSBkaXNwbGF5TmFtZTpkaXNwbGF5TmFtZSBjdXJyZW50UXVvdGE6Y3VycmVudFF1b3Rh
IGN1cnJlbnRPcmlnaW5Vc2FnZTpjdXJyZW50T3JpZ2luVXNhZ2UgY3VycmVudERhdGFiYXNlVXNh
Z2U6Y3VycmVudFVzYWdlIGV4cGVjdGVkVXNhZ2U6ZXhwZWN0ZWRVc2FnZSBkZWNpc2lvbkhhbmRs
ZXI6QmxvY2tQdHI8dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpPjo6ZnJvbUNhbGxh
YmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7Cisg
ICAgICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgZGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOndy
YXBwZXIoKnNlY3VyaXR5T3JpZ2luKSBkYXRhYmFzZU5hbWU6ZGF0YWJhc2VOYW1lIGRpc3BsYXlO
YW1lOmRpc3BsYXlOYW1lIGN1cnJlbnRRdW90YTpjdXJyZW50UXVvdGEgY3VycmVudE9yaWdpblVz
YWdlOmN1cnJlbnRPcmlnaW5Vc2FnZSBjdXJyZW50RGF0YWJhc2VVc2FnZTpjdXJyZW50VXNhZ2Ug
ZXhwZWN0ZWRVc2FnZTpleHBlY3RlZFVzYWdlIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsKICAgICAg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
CiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlRGF0YWJh
c2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90YTpjdXJyZW50T3JpZ2luVXNhZ2U6
Y3VycmVudERhdGFiYXNlVXNhZ2U6ZXhwZWN0ZWRVc2FnZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0g
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyBkZWNpZGVEYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBl
cigqc2VjdXJpdHlPcmlnaW4pIGN1cnJlbnRRdW90YTpjdXJyZW50UXVvdGEgY3VycmVudE9yaWdp
blVzYWdlOmN1cnJlbnRPcmlnaW5Vc2FnZSBjdXJyZW50RGF0YWJhc2VVc2FnZTpjdXJyZW50VXNh
Z2UgZXhwZWN0ZWRVc2FnZTpleHBlY3RlZFVzYWdlIGRlY2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2
b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsKKyAgICBbKGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3
IGRlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKCpzZWN1cml0eU9y
aWdpbikgY3VycmVudFF1b3RhOmN1cnJlbnRRdW90YSBjdXJyZW50T3JpZ2luVXNhZ2U6Y3VycmVu
dE9yaWdpblVzYWdlIGN1cnJlbnREYXRhYmFzZVVzYWdlOmN1cnJlbnRVc2FnZSBleHBlY3RlZFVz
YWdlOmV4cGVjdGVkVXNhZ2UgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgewogICAgICAgICBpZiAoY2hl
Y2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNjc0
LDcgKzY3NCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OndpbmRvd0ZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChXZWJDCiAgICAgaWYgKCFkZWxlZ2F0ZSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgCi0gICAgWyhpZCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBnZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKENH
UmVjdCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpnZXRXaW5kb3dGcmFtZVdpdGhD
b21wbGV0aW9uSGFuZGxlcjopKV0oQ0dSZWN0IGZyYW1lKSB7CisgICAgWyhpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBnZXRX
aW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2Vi
VmlldzpnZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopKV0oQ0dSZWN0IGZyYW1l
KSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyKCk7CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6dG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCkK
ICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CiAgICAgCi0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBnZXRUb29sYmFyc0FyZVZpc2libGVXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChCT09MKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93
ZWJWaWV3OmdldFRvb2xiYXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopKV0oQk9P
TCB2aXNpYmxlKSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBnZXRUb29sYmFyc0FyZVZpc2libGVXaXRoQ29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6Z2V0VG9vbGJhcnNB
cmVWaXNpYmxlV2l0aENvbXBsZXRpb25IYW5kbGVyOikpXShCT09MIHZpc2libGUpIHsKICAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OgogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCiAgICAgYXV0byBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0
b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdp
bjpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOndyYXBwZXIoc2VjdXJpdHlPcmlnaW4pIGRlY2lz
aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0eU9y
aWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChC
T09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFu
ZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tl
ci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04MzIsNyArODMyLDcgQEAgYm9vbCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqIHdlYkZyYW1lUHIKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKTsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5p
dGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2
b2lkKE5TQXJyYXkgKik+Ojpmcm9tQ2FsbGFibGUoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIp
LCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7
CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFu
ZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0ZWRC
eUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlciksIGxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcildIChO
U0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBib29s
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSogd2ViRnJhbWVQcgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdGF0aWMgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViRnJhbWVQ
cm94eSYgZnJhbWUsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QsIGlk
IDxXS1VJRGVsZWdhdGVQcml2YXRlPiBkZWxlZ2F0ZSwgV0tXZWJWaWV3JiB3ZWJWaWV3KQogewot
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9pZChCT09MKT46OmZyb21DYWxs
YWJsZShbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKEJPT0wgYXV0aG9yaXpl
ZCkgeworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRS
ZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgIGlm
ICghYXV0aG9yaXplZCkgewogICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+ZGVueShVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246
OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTEzLDcgKzkxMyw3
IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPSBwYWdlLnByZWZlcmVuY2VzKCkubW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwotICAgIGF1dG8gcmVxdWVzdENhbWVyYUF1dGhvcml6
YXRpb24gPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW3RoaXMsICZmcmFtZSwgcHJv
dGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHdlYlZpZXcgPSBSZXRhaW5QdHI8V0tX
ZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KSwgdXNpbmdNb2NrQ2FwdHVyZURldmljZXNd
KCkgeworICAgIGF1dG8gcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb24gPSBtYWtlQmxvY2tQdHIo
W3RoaXMsICZmcmFtZSwgcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHdlYlZp
ZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KSwgdXNpbmdN
b2NrQ2FwdHVyZURldmljZXNdKCkgewogCiAgICAgICAgIGlmICghcHJvdGVjdGVkUmVxdWVzdC0+
cmVxdWlyZXNWaWRlb0NhcHR1cmUoKSkgewogICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1
dGhvcml6YXRpb25Gb3JEZXZpY2VzKGZyYW1lLCBwcm90ZWN0ZWRSZXF1ZXN0LCAoaWQgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5n
ZXQoKSk7CkBAIC05MjksNyArOTI5LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3gKICAgICAg
ICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3RE
ZXRlcm1pbmVkOgotICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2
b2lkKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFt0aGlzLCAmZnJhbWUsIHByb3RlY3RlZFJlcXVlc3Qg
PSBtYWtlUmVmKHByb3RlY3RlZFJlcXVlc3QuZ2V0KCkpLCB3ZWJWaWV3ID0gUmV0YWluUHRyPFdL
V2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldKEJPT0wgYXV0aG9yaXplZCkgeworICAg
ICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsICZmcmFt
ZSwgcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocHJvdGVjdGVkUmVxdWVzdC5nZXQoKSksIHdl
YlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KV0oQk9P
TCBhdXRob3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVu
aWVkKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUzLDcgKzk1Myw3IEBAIGJv
b2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICByZXF1ZXN0LmRlbnkoVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJt
aXNzaW9uRGVuaWVkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEFW
QXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6Ci0gICAgICAgICAgICBhdXRvIGRlY2lz
aW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3Byb3RlY3Rl
ZFJlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpLCByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbl0o
Qk9PTCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHJlcXVlc3RD
YW1lcmFBdXRob3JpemF0aW9uXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIWF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+
ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5p
YWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC05ODcsNyArOTg3LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKICAgICBVUkwgcmVx
dWVzdEZyYW1lVVJMKFVSTCgpLCBmcmFtZS51cmwoKSk7CiAgICAgVVJMIG1haW5GcmFtZVVSTChV
UkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CiAKLSAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJs
b2NrUHRyPHZvaWQoTlNTdHJpbmcqLCBCT09MKT46OmZyb21DYWxsYWJsZShbcHJvdGVjdGVkUmVx
dWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKE5TU3RyaW5nKiwgQk9PTCBhdXRob3JpemVkKSB7Cisg
ICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFJlcXVlc3Qg
PSBtYWtlUmVmKHJlcXVlc3QpXShOU1N0cmluZyosIEJPT0wgYXV0aG9yaXplZCkgewogICAgICAg
ICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKGF1dGhvcml6ZWQpOwog
ICAgIH0pOwogCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbgog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OmRlY2lkZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90YTp0b3RhbEJ5dGVzTmVlZGVkOmRl
Y2lzaW9uSGFuZGxlcjopKTsKICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbik7CiAgICAgCi0gICAgWyhpZCA8V0tVSURlbGVnYXRl
UHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBkZWNpZGVX
ZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKGFwaU9yaWdp
bi5nZXQoKSkgY3VycmVudFF1b3RhOmN1cnJlbnRRdW90YSB0b3RhbEJ5dGVzTmVlZGVkOnRvdGFs
Qnl0ZXNOZWVkZWQgZGVjaXNpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQodW5zaWduZWQgbG9uZyBs
b25nKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKHVuc2lnbmVkIGxvbmcgbG9u
ZyBuZXdRdW90YSkgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgZGVjaWRlV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpIGN1cnJlbnRRdW90
YTpjdXJyZW50UXVvdGEgdG90YWxCeXRlc05lZWRlZDp0b3RhbEJ5dGVzTmVlZGVkIGRlY2lzaW9u
SGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSh1bnNpZ25lZCBsb25nIGxv
bmcgbmV3UXVvdGEpIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExOTEsNyArMTE5MSw3IEBAIHZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqIHBhZ2UpCiAg
ICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXdEaWRSZXF1ZXN0UG9pbnRl
ckxvY2s6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3RGlkUmVxdWVzdFBvaW50ZXJMb2NrOm1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChCT09M
KT46OmZyb21DYWxsYWJsZShbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHBhZ2UgPSBtYWtl
UmVmUHRyKHBhZ2UpXSAoQk9PTCBhbGxvdykgeworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4+KGRlbGVnYXRlKSBfd2ViVmlld0RpZFJlcXVlc3RQb2ludGVyTG9jazpt
X3VpRGVsZWdhdGUubV93ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlciksIHBhZ2UgPSBtYWtlUmVmUHRyKHBhZ2UpXSAoQk9PTCBh
bGxvdykgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21w
bGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCmluZGV4IGQxNmRiOGY2ODMzYzhiYzE5MGVlNWE2
MGEwOGM4NWM0MmY4ZTFhZDcuLjU0NDI1MWM3OWNlZGJmYjVlMzVhMDFiZmVmZjhkMDRhMjJiOTQy
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dz
aW5nV2FybmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVC
cm93c2luZ1dhcm5pbmcubW0KQEAgLTQ2Miw3ICs0NjIsNyBAQCAtICh2b2lkKWNsaWNrZWRPbkxp
bms6KE5TVVJMICopbGluawogICAgICAgICBbYWxlcnQgc2V0SW5mb3JtYXRpdmVUZXh0OldFQl9V
SV9OU1NUUklORyhAIk1lcmVseSB2aXNpdGluZyBhIHNpdGUgaXMgc3VmZmljaWVudCBmb3IgbWFs
d2FyZSB0byBpbnN0YWxsIGl0c2VsZiBhbmQgaGFybSB5b3VyIGNvbXB1dGVyLiIsICJNYWx3YXJl
IGNvbmZpcm1hdGlvbiBkaWFsb2ciKV07CiAgICAgICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0
bGU6V0VCX1VJX05TU1RSSU5HKEAiQ2FuY2VsIiwgIkNhbmNlbCIpXTsKICAgICAgICAgW2FsZXJ0
IGFkZEJ1dHRvbldpdGhUaXRsZTpXRUJfVUlfTlNTVFJJTkcoQCJDb250aW51ZSIsICJDb250aW51
ZSIpXTsKLSAgICAgICAgW2FsZXJ0IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRv
dyBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKE5TTW9kYWxSZXNwb25zZSk+Ojpmcm9t
Q2FsbGFibGUoW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tTYWZlQnJvd3NpbmdXYXJuaW5nPihz
ZWxmKSwgYWxlcnRdKE5TTW9kYWxSZXNwb25zZSByZXR1cm5Db2RlKSB7CisgICAgICAgIFthbGVy
dCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6c2VsZi53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLU2FmZUJyb3dzaW5nV2Fybmlu
Zz4oc2VsZiksIGFsZXJ0XShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHJldHVybkNvZGUgPT0gTlNBbGVydFNlY29uZEJ1dHRvblJldHVybiAmJiBzdHJvbmdT
ZWxmLT5fY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ1NlbGYt
Pl9jb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
aW5kZXggNjVhZWNkOTIxOTJmZTY2NjFmMWJhYTQyZDM0MDc4NmNlNGQxZDUzMi4uMzA4ZDAwOTM0
YTE4M2YzYTRkMWUzZTE4NGQyYmE2YTE0ZmI4MTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiB1cmws
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXIKICAgICBTU0JMb29rdXBDb250ZXh0ICpjb250ZXh0ID0g
W1NTQkxvb2t1cENvbnRleHQgc2hhcmVkTG9va3VwQ29udGV4dF07CiAgICAgaWYgKCFjb250ZXh0
KQogICAgICAgICByZXR1cm4gbGlzdGVuZXIuZGlkUmVjZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMo
eyB9KTsKLSAgICBbY29udGV4dCBsb29rVXBVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVyOkJsb2Nr
UHRyPHZvaWQoU1NCTG9va3VwUmVzdWx0ICosIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2xp
c3RlbmVyID0gbWFrZVJlZihsaXN0ZW5lciksIHVybCA9IHVybF0gKFNTQkxvb2t1cFJlc3VsdCAq
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgW2NvbnRleHQgbG9va1VwVVJM
OnVybCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2xpc3RlbmVyID0gbWFrZVJlZihs
aXN0ZW5lciksIHVybCA9IHVybF0gKFNTQkxvb2t1cFJlc3VsdCAqcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbGlzdGVu
ZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgcmVzdWx0ID0gcmV0YWluUHRyKHJlc3VsdCksIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yKSwgdXJsID0gV1RGTW92ZSh1cmwpXSB7CiAgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZVNhZmVCcm93
c2luZ1Jlc3VsdHMoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tCmluZGV4IGIz
YzE2NDA0OWNhMzk2NzA3MDJhMzQyZTBhY2QwZTc3M2UxZGRkNzcuLjM4OWI2MzlkMmU5ZTc4OTBl
MmRjZWVmNzE3NGRmOWFhODMzNzQ2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5t
bQpAQCAtODYsNyArODYsNyBAQCB2b2lkIEhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiB2b2lk
IEhpZENvbm5lY3Rpb246OnNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSAgICBhdXRv
IHRhc2sgPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW2RldmljZSA9IG1fZGV2aWNl
LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKKyAgICBhdXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW2RldmljZSA9IG1fZGV2aWNl
LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAgICAg
RGF0YVNlbnQgc2VudCA9IERhdGFTZW50OjpZZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5l
Y3Rpb24ubW0KaW5kZXggMGUzNDVkZjNlNTEyMGEzMWQ0YThlMzI3NGI2NWMxNTI3MjhlYjE2NS4u
OTQ0NzA1YzI2OWNiMTM1Njk1OGJmNzQ2NWRiZmM5MGQzMDAxMjU2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIExvY2FsQ29ubmVj
dGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFVzZXJDb25zZW50Q2Fs
bGJhY2smJgogICAgIC8vIEZJWE1FKDE4Mjc3MikKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0
XSk7Ci0gICAgYXV0byByZXBseSA9IEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZy
b21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIGF1dG8gcmVw
bHkgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAgICAgVXNlckNvbnNlbnQgY29u
c2VudCA9IFVzZXJDb25zZW50OjpZZXM7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTG9jYWxDb25u
ZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29u
dHJvbFJlZiBhCiAgICAgLy8gRklYTUUoMTgyNzcyKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGlu
aXRdKTsKLSAgICBhdXRvIHJlcGx5ID0gQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6
ZnJvbUNhbGxhYmxlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0cihbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJy
b3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
ICAgICBVc2VyQ29uc2VudCBjb25zZW50ID0gVXNlckNvbnNlbnQ6OlllczsKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkIExvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5n
JiBycElkLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLAogICAgIH07CiAKICAgICAvLyBGSVhNRSgx
ODM2NTIpOiBSZWR1Y2UgcHJvbXB0IGZvciBiaW9tZXRyaWNzCi0gICAgRGV2aWNlSWRlbnRpdHlJ
c3N1ZUNsaWVudENlcnRpZmljYXRlV2l0aENvbXBsZXRpb24oZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgb3B0aW9ucywgQmxvY2tQdHI8dm9pZChTZWNLZXlSZWYsIE5TQXJyYXkgKiwgTlNFcnJv
ciAqKT46OmZyb21DYWxsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkuZ2V0KCkpOwor
ICAgIERldmljZUlkZW50aXR5SXNzdWVDbGllbnRDZXJ0aWZpY2F0ZVdpdGhDb21wbGV0aW9uKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG9wdGlvbnMsIG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggMjZjOTk2NjAxY2Y0OTlhODdiYjBjNzYxYTEyZGFh
NGMzYTM5MmY1NS4uNGVmMjJlNzAxYzgzNDI0YzBiNzM5NDYyZjFiMTAxZGFiM2M2ZjEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
dm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OnNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSAgICBhdXRvIHRhc2sgPSBCbG9j
a1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKKyAgICBhdXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGU5YjFmMWMyMTljYWYxMGFmNzgwZmM0OTRl
N2RiNTJlY2I3YjI3ZDcuLmRjMGNkMzZjMDA2MjlkZDUxNDIxZDk4NTk2YWIzMmRhNTViM2Y2ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VEYXRh
SW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3QgSW50UmVjdCYgcHJldmlvdXNDYQogI2lmIFVTRShR
VUlDS19MT09LKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gcGFzc3dvcmRI
YW5kbGVyID0gQmxvY2tQdHI8dm9pZCAoTlNTdHJpbmcgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5TU3RyaW5nICpwYXNz
d29yZCkgeworICAgIGF1dG8gcGFzc3dvcmRIYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1N0cmluZyAqcGFzc3dv
cmQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFzc3dvcmQpOwogICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbQppbmRleCBmNjMzNmZjOWVjN2ZlZGYzOWZmZmY0NGU3ZmM4NjJhY2FiYTViOWJj
Li5jMWNmNTg3NThlY2JhOTg1N2EwYTYxYWQ0OGQ2YmZhM2UxYzBkN2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0KQEAgLTE4OCw3ICsxODgsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdy
YW50ZWQKICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVz
dC5vcmlnaW4uZ2V0KCkpKTsKICAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAg
ICAgICAgICAgICBXS1dlYlZpZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQo
KTsKLSAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpm
cmFtZUluZm8uZ2V0KCkgZGVjaXNpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9t
Q2FsbGFibGUoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2Vi
Vmlldzp2aWV3RnJvbVJlcXVlc3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVS
TDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRlY2lzaW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXND
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJv
bGxlci5tbQppbmRleCAzYzhiYzY0MmFmODFjZWNhNDJiMTcwNTQ2YTUzZjhjNTYzYTA5MTUwLi5j
ZDMwYjE3MmMxZTU1YmRmOTljMGU0ZTc3MTFlMzA1ZGZkZDFlZWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0KQEAgLTczLDcgKzcz
LDcgQEAgc3RhdGljIHZvaWQgaGFzQ29tcGF0aWJsZVNlcnZpY2VzRm9ySXRlbXMoZGlzcGF0Y2hf
Z3JvdXBfdCBncm91cCwgTlNBcnJheSAqaXRlbXMKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTQwMAogICAgIGlmIChbTlNTaGFyaW5nU2VydmljZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGdldFNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1zOm1hc2s6Y29tcGxl
dGlvbjopXSkgewogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihncm91cCk7Ci0gICAgICAg
IFtOU1NoYXJpbmdTZXJ2aWNlIGdldFNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1zOml0ZW1zIG1hc2s6
c2VydmljZXNNYXNrIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZChOU0FycmF5ICopPjo6ZnJvbUNh
bGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBn
cm91cF0oTlNBcnJheSAqc2VydmljZXMpIHsKKyAgICAgICAgW05TU2hhcmluZ1NlcnZpY2UgZ2V0
U2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6aXRlbXMgbWFzazpzZXJ2aWNlc01hc2sgY29tcGxldGlv
bjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGdyb3VwXShOU0FycmF5ICpzZXJ2aWNlcykgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc2VydmljZXMuY291bnQpOwogICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVh
dmUoZ3JvdXApOwogICAgICAgICB9KS5nZXQoKV07CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBT
ZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hFeGlzdGluZ1NlcnZpY2VzKGJvb2wgcmVmcmVzaElt
bWVkaWF0ZWx5KQogICAgICAgICAgICAgbV9oYXNSaWNoQ29udGVudFNlcnZpY2VzID0gaGFzU2Vy
dmljZXM7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGRpc3BhdGNoX2dyb3VwX25vdGlmeShzZXJ2
aWNlTG9va3VwR3JvdXAuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2NrUHRy
PHZvaWQodm9pZCk+Ojpmcm9tQ2FsbGFibGUoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfZ3Jv
dXBfbm90aWZ5KHNlcnZpY2VMb29rdXBHcm91cC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAgICBib29sIGF2YWlsYWJsZVNl
cnZpY2VzQ2hhbmdlZCA9IChtX2xhc3RTZW50SGFzSW1hZ2VTZXJ2aWNlcyAhPSBtX2hhc0ltYWdl
U2VydmljZXMpIHx8IChtX2xhc3RTZW50SGFzU2VsZWN0aW9uU2VydmljZXMgIT0gbV9oYXNTZWxl
Y3Rpb25TZXJ2aWNlcykgfHwgKG1fbGFzdFNlbnRIYXNSaWNoQ29udGVudFNlcnZpY2VzICE9IG1f
aGFzUmljaENvbnRlbnRTZXJ2aWNlcyk7CiAKICAgICAgICAgICAgIG1fbGFzdFNlbnRIYXNTZWxl
Y3Rpb25TZXJ2aWNlcyA9IG1faGFzU2VsZWN0aW9uU2VydmljZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KaW5kZXggMWQ0Y2MzMWQ1OWFiOGM4MGNjZWZhMjhhMjA1MWM2YjUzZDcz
ZjFlZS4uNGFlMjBmNGJjYWE5MGRhZWMyMjAxOGQ2MzNlZjRjOTBiMzhmOGM4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgUGFnZUxv
YWRlckNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJLaXQ6CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6d2lsbFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6Y29tcGxldGlvbkhhbmRsZXI6KTsKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSgpIHJlc3BvbmRz
VG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKICAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobG9hZERlbGVnYXRlKCksIHNlbGVj
dG9yKTsKLSAgICAgICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSB3aWxsU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0
cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSB3aWxsU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjM2VjZDcz
ZTFjOGM5MWI2MDk5Mjk1MDIwMzQxNmUwMmZmMDM3MTJjLi41YjI0Zjg3YmJjZjg4NDdkM2EzMjVi
ZWMyZTlkZTVhYTYxMTJjOTc5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTItMTEgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBtYWtlQmxvY2tQdHIgZm9yIGxh
bWJkYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjU5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
b3B0ZWQgbWFrZUJsb2NrUHRyIGFuZCBhZGRlZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OmNhbGxVSVNj
cmlwdENhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9CbG9ja1B0
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgaW5pdF0pOgorICAgICAgICAoLVtEb3dubG9hZFBy
b2dyZXNzVGVzdFJ1bm5lciBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdKToKKwogMjAxOC0x
Mi0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtD
TWFrZV0gQWRkIEVOQUJMRV9SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MgdG8gV2ViS2l0RmVhdHVy
ZXMuY21ha2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNTA4MDhiY2FkNjAw
Y2Y5ODExZTg5ZTFhMjVhZjljMmQ3ZWM2YTMxOC4uM2Y0YTI4OTkyYjUzYjNmMmJmNGVjZGY2NDU1
ZGY3MDczM2JjNzUxMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTI0Njcs
NyArMjQ2Nyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbFVJU2NyaXB0Q2FsbGJhY2sodW5zaWdu
ZWQgY2FsbGJhY2tJRCwgSlNTdHJpbmdSZWYgcmVzdWx0KQogICAgIH0pOwogI2Vsc2UKICAgICBX
ZWJUaHJlYWRSdW4oCi0gICAgICAgIEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lELCBwcm90ZWN0ZWRSZXN1bHRd
IHsKKyAgICAgICAgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNhbGxiYWNrSUQsIHByb3RlY3RlZFJlc3VsdF0gewogICAgICAgICAgICAgSlNDb250ZXh0UmVm
IGNvbnRleHQgPSBwcm90ZWN0ZWRUaGlzLT5tYWluRnJhbWVKU0NvbnRleHQoKTsKICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0VmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBw
cm90ZWN0ZWRSZXN1bHQuZ2V0KCkpOwogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FsbFRl
c3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCAxLCAmcmVzdWx0VmFsdWUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQmxvY2tQdHIubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9CbG9ja1B0ci5tbQppbmRleCBkM2ZhNTA1ZTQyOGZmZmI3ODdm
MzNjZmRjMjg0NTNhYzNiODEwOWMzLi4yOTZiOGYxNTcxNDg5MDU3ZWNmYTk1MDQ1YzdlMTRiNzNh
MGU3MWJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9CbG9ja1B0
ci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9CbG9ja1B0ci5tbQpAQCAt
NDcsNiArNDcsMjAgQEAgVEVTVChCbG9ja1B0ciwgRnJvbUxhbWJkYSkKICAgICB9KTsKIAogICAg
IEVYUEVDVF9FUSgxMHUsIGJsb2NrKCkpOworCisgICAgbW92ZU9ubHkgPSAyMDsKKyAgICBibG9j
ayA9IG1ha2VCbG9ja1B0cihbbW92ZU9ubHkgPSBXVEZNb3ZlKG1vdmVPbmx5KV0geworICAgICAg
ICByZXR1cm4gbW92ZU9ubHkudmFsdWUoKTsKKyAgICB9KTsKKworICAgIEVYUEVDVF9FUSgyMHUs
IGJsb2NrKCkpOworCisgICAgbW92ZU9ubHkgPSAzMDsKKyAgICBibG9jayA9IG1ha2VCbG9ja1B0
cihbbW92ZU9ubHkgPSBXVEZNb3ZlKG1vdmVPbmx5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcmV0
dXJuIG1vdmVPbmx5LnZhbHVlKCk7CisgICAgfSk7CisKKyAgICBFWFBFQ1RfRVEoMzB1LCBibG9j
aygpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCmluZGV4IGY2MjMyZTI3NGE4NjM2OTRlZTM3
ZDY3NGUxZjJlODIzNWRkOGFkOTAuLmY3NzEyNDMzODNmZTk0Yzc5YmI0OTk1ZDc4NGFkMjM0ZmY5
ODQ1MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWRQcm9ncmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KQEAgLTE0MSw3ICsxNDEsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdAogCiAgICAgY3VycmVudFRlc3RSdW5uZXIgPSBzZWxmOwogCi0gICAgbV91bnB1
Ymxpc2hpbmdCbG9jayA9IEJsb2NrUHRyPHZvaWQodm9pZCk+Ojpmcm9tQ2FsbGFibGUoW3NlbGZd
IHsKKyAgICBtX3VucHVibGlzaGluZ0Jsb2NrID0gbWFrZUJsb2NrUHRyKFtzZWxmXSB7CiAgICAg
ICAgIFtzZWxmIF9kaWRMb3NlUHJvZ3Jlc3NdOwogICAgIH0pLmdldCgpOwogCkBAIC0yMTAsNyAr
MjEwLDcgQEAgLSAodm9pZClfZGlkTG9zZVByb2dyZXNzCiAtICh2b2lkKXN1YnNjcmliZUFuZFdh
aXRGb3JQcm9ncmVzcwogewogICAgIGlmICghbV9wcm9ncmVzc1N1YnNjcmliZXIpIHsKLSAgICAg
ICAgYXV0byBwdWJsaXNoaW5nSGFuZGxlciA9IEJsb2NrUHRyPE5TUHJvZ3Jlc3NVbnB1Ymxpc2hp
bmdIYW5kbGVyKE5TUHJvZ3Jlc3MgKik+Ojpmcm9tQ2FsbGFibGUoW3dlYWtTZWxmID0gV2Vha09i
akNQdHI8RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXI+IHsgc2VsZiB9XShOU1Byb2dyZXNzICpw
cm9ncmVzcykgeworICAgICAgICBhdXRvIHB1Ymxpc2hpbmdIYW5kbGVyID0gbWFrZUJsb2NrUHRy
KFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPERvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyPiB7IHNl
bGYgfV0oTlNQcm9ncmVzcyAqcHJvZ3Jlc3MpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHN0cm9u
Z1NlbGYgPSB3ZWFrU2VsZi5nZXQoKSkgewogICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmLmdl
dCgpIF9kaWRHZXRQcm9ncmVzczpwcm9ncmVzc107CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
cm9uZ1NlbGYtPm1fdW5wdWJsaXNoaW5nQmxvY2suZ2V0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>