<?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>164059</bug_id>
          
          <creation_ts>2016-10-27 05:08:46 -0700</creation_ts>
          <short_desc>PeerMediaDescription does not need to be refcounted</short_desc>
          <delta_ts>2016-10-28 06:39:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245096</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-27 05:08:46 -0700</bug_when>
    <thetext>And it should be a struct probably</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245098</commentid>
    <comment_count>1</comment_count>
      <attachid>293013</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-27 05:16:58 -0700</bug_when>
    <thetext>Created attachment 293013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245102</commentid>
    <comment_count>2</comment_count>
      <attachid>293014</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-27 05:27:53 -0700</bug_when>
    <thetext>Created attachment 293014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245122</commentid>
    <comment_count>3</comment_count>
      <attachid>293019</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-27 08:16:22 -0700</bug_when>
    <thetext>Created attachment 293019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245262</commentid>
    <comment_count>4</comment_count>
      <attachid>293019</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-27 14:31:13 -0700</bug_when>
    <thetext>Comment on attachment 293019
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:46
&gt; -class PeerMediaDescription;
&gt; +struct PeerMediaDescription;

We normally put struct forward declarations in a separate paragraph, rather than sorting them in with the classes.

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:49
&gt; -typedef Vector&lt;RefPtr&lt;PeerMediaDescription&gt;&gt; MediaDescriptionVector;
&gt; +typedef Vector&lt;PeerMediaDescription&gt; MediaDescriptionVector;

In code we are touching we want to move from typedef to using.

&gt; Source/WebCore/platform/mediastream/PeerMediaDescription.h:43
&gt;  public:

No need for &quot;public:&quot; in a struct.

&gt; Source/WebCore/platform/mediastream/PeerMediaDescription.h:52
&gt; +    String mode { &quot;sendrecv&quot; };

Slightly nicer to use { ASCIILiteral { &quot;sendrecv&quot; } }.

&gt; Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h:46
&gt; -class PeerMediaDescription;
&gt; +struct PeerMediaDescription;

Same comment about putting a struct in a separate paragraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245524</commentid>
    <comment_count>5</comment_count>
      <attachid>293137</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-28 03:41:49 -0700</bug_when>
    <thetext>Created attachment 293137
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245536</commentid>
    <comment_count>6</comment_count>
      <attachid>293137</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-28 04:17:43 -0700</bug_when>
    <thetext>Comment on attachment 293137
Patch for landing

Clearing flags on attachment: 293137

Committed r208043: &lt;http://trac.webkit.org/changeset/208043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245537</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-28 04:17:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245575</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-28 06:39:38 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #4)
&gt; Comment on attachment 293019 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293019&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:46
&gt; &gt; -class PeerMediaDescription;
&gt; &gt; +struct PeerMediaDescription;
&gt; 
&gt; We normally put struct forward declarations in a separate paragraph, rather
&gt; than sorting them in with the classes.

OK

&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:49
&gt; &gt; -typedef Vector&lt;RefPtr&lt;PeerMediaDescription&gt;&gt; MediaDescriptionVector;
&gt; &gt; +typedef Vector&lt;PeerMediaDescription&gt; MediaDescriptionVector;
&gt; 
&gt; In code we are touching we want to move from typedef to using.

OK

&gt; &gt; Source/WebCore/platform/mediastream/PeerMediaDescription.h:43
&gt; &gt;  public:
&gt; 
&gt; No need for &quot;public:&quot; in a struct.

Done

&gt; &gt; Source/WebCore/platform/mediastream/PeerMediaDescription.h:52
&gt; &gt; +    String mode { &quot;sendrecv&quot; };
&gt; 
&gt; Slightly nicer to use { ASCIILiteral { &quot;sendrecv&quot; } }.

Done

&gt; &gt; Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h:46
&gt; &gt; -class PeerMediaDescription;
&gt; &gt; +struct PeerMediaDescription;
&gt; 
&gt; Same comment about putting a struct in a separate paragraph.

OK</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293013</attachid>
            <date>2016-10-27 05:16:58 -0700</date>
            <delta_ts>2016-10-27 05:27:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164059-20161027141307.patch</filename>
            <type>text/plain</type>
            <size>47985</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg0NTg3YmZlOGEyZjY4
NmQxY2MzOWM1YjU1Yzc5MmFjNjRjYjE3YS4uNjg3ZmRjMmUyNjU4YmIxYTA2NjBkZmVmNDQyYzcx
YTJiODdjZDE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE2LTEwLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQZWVyTWVkaWFEZXNjcmlw
dGlvbiBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlZmNvdW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
T2ZmZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlQW5zd2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3VyY2VNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2Nh
bERlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RJY2VDYW5kaWRhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uZmlndXJhdGlvbkZyb21KU09OKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbmZpZ3VyYXRpb25Ub0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29y
OjpnZW5lcmF0ZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29y
OjpwYXJzZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0lj
ZUNhbmRpZGF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2lu
dFNlc3Npb25Db25maWd1cmF0aW9uOjptZWRpYURlc2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb246OmFkZE1lZGlhRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9u
OjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3Jp
cHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRQYXls
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRTc3JjKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbGVhclNzcmNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRJY2VDYW5kaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6flBlZXJNZWRpYURlc2Ny
aXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
Ojp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
OjpzZXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpwb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpzZXRQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2Ny
aXB0aW9uOjphZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURl
c2NyaXB0aW9uOjpzZXRBZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjptb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjpzZXRNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjptaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVl
ck1lZGlhRGVzY3JpcHRpb246OnNldE1pZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6cGF5bG9hZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldFBheWxvYWRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwTXV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRSdGNwTXV4KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwQWRkcmVzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0UnRjcEFk
ZHJlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246
OnJ0Y3BQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpzZXRSdGNwUG9ydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0TWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1UcmFja0lkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRNZWRpYVN0
cmVhbVRyYWNrSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3Jp
cHRpb246OmR0bHNTZXR1cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6c2V0RHRsc1NldHVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjpkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldER0bHNGaW5nZXJw
cmludEhhc2hGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6ZHRsc0ZpbmdlcnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXREdGxzRmluZ2VycHJpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNuYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRDbmFtZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c3NyY3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmljZVVmcmFnKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRJY2VVZnJh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6aWNl
UGFzc3dvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRp
b246OnNldEljZVBhc3N3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRp
YURlc2NyaXB0aW9uOjppY2VDYW5kaWRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6UGVlck1lZGlhRGVzY3JpcHRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYUVuZHBvaW50TWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRNYWM6OmFkZFJlbW90ZUNhbmRpZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50TWFjOjpPbkljZUNhbmRpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhRW5kcG9pbnRNYWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludE93cjo6dXBkYXRlU2VuZENvbmZp
Z3VyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVk
aWFFbmRwb2ludE93ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZUNvbmZp
Z3VyYXRpb25NaWRzKToKKwogMjAxNi0xMC0yNyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXggZm9yIGdjYy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZDBkYjVkZWFjYWFlNWE5
ODhlNTE5YjQ1YWJmMGNkZWNiOWFhZTI4Li5mODI0ODI2ZmJhMjQ0MGY4MWZmYjE4M2MzYTQ5ZjI3
M2IzYzZiOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjAs
MjEgKzE2MCwyMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2Zm
ZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgogCiAgICAgLy8gUmVtb3ZlIGFu
eSB0cmFuc2NlaXZlciBvYmplY3RzIGZyb20gdHJhbnNjZWl2ZXJzIHRoYXQgY2FuIGJlIG1hdGNo
ZWQgdG8gYW4gZXhpc3RpbmcgbWVkaWEgZGVzY3JpcHRpb24uCiAgICAgZm9yIChhdXRvJiBtZWRp
YURlc2NyaXB0aW9uIDogY29uZmlndXJhdGlvblNuYXBzaG90LT5tZWRpYURlc2NyaXB0aW9ucygp
KSB7Ci0gICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbi0+cG9ydCgpKSB7CisgICAgICAgIGlm
ICghbWVkaWFEZXNjcmlwdGlvbi5wb3J0KSB7CiAgICAgICAgICAgICAvLyBUaGlzIG1lZGlhIGRl
c2NyaXB0aW9uIHNob3VsZCBiZSByZWN5Y2xlZC4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hU
cmFuc2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgbWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOwor
ICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVy
QnlNaWQodHJhbnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAgICAgICAgIGlmICgh
dHJhbnNjZWl2ZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLT5zZXRNb2RlKHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmcoKSk7CisgICAgICAg
IG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9IHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmcoKTsK
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5oYXNTZW5kaW5nRGlyZWN0aW9uKCkpIHsKICAgICAg
ICAgICAgIFJUQ1J0cFNlbmRlciYgc2VuZGVyID0gKnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKIAot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzZW5kZXIubWVk
aWFTdHJlYW1JZHMoKVswXSk7Ci0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRp
YVN0cmVhbVRyYWNrSWQoc2VuZGVyLnRyYWNrSWQoKSk7CisgICAgICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXTsKKyAgICAg
ICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkID0gc2VuZGVyLnRyYWNr
SWQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHRyYW5zY2VpdmVycy5yZW1vdmVGaXJzdCh0cmFu
c2NlaXZlcik7CkBAIC0xODIsMjMgKzE4MiwyMyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbjo6Y3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgog
CiAgICAgLy8gQWRkIG1lZGlhIGRlc2NyaXB0aW9ucyBmb3IgcmVtYWluaW5nIHRyYW5zY2VpdmVy
cy4KICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzKSB7Ci0gICAgICAg
IFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gbWVkaWFEZXNjcmlwdGlvbiA9IFBlZXJNZWRp
YURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24gbWVk
aWFEZXNjcmlwdGlvbjsKICAgICAgICAgUlRDUnRwU2VuZGVyJiBzZW5kZXIgPSAqdHJhbnNjZWl2
ZXItPnNlbmRlcigpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1vZGUodHJhbnNj
ZWl2ZXItPmRpcmVjdGlvblN0cmluZygpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0
TWlkKHRyYW5zY2VpdmVyLT5wcm92aXNpb25hbE1pZCgpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXSk7Ci0gICAg
ICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldFR5cGUoc2VuZGVyLnRyYWNrS2luZCgpKTsKLSAgICAg
ICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0UGF5bG9hZHMoc2VuZGVyLnRyYWNrS2luZCgpID09ICJh
dWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2Fkcyk7
Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlv
bihtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+
c2V0RHRsc0ZpbmdlcnByaW50KG1fZHRsc0ZpbmdlcnByaW50KTsKLSAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0Q25hbWUobV9jbmFtZSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPmFk
ZFNzcmMoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7Ci0gICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24tPnNldEljZVVmcmFnKG1faWNlVWZyYWcpOwotICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLT5zZXRJY2VQYXNzd29yZChtX2ljZVBhc3N3b3JkKTsKKyAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi5tb2RlID0gdHJhbnNjZWl2ZXItPmRpcmVjdGlvblN0cmluZygpOworICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLm1pZCA9IHRyYW5zY2VpdmVyLT5wcm92aXNpb25hbE1pZCgpOworICAgICAg
ICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMo
KVswXTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi50eXBlID0gc2VuZGVyLnRyYWNrS2luZCgp
OworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLnBheWxvYWRzID0gc2VuZGVyLnRyYWNrS2luZCgp
ID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXls
b2FkczsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rp
b24gPSBtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uOworICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LmR0bHNGaW5nZXJwcmludCA9IG1fZHRsc0ZpbmdlcnByaW50OworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLmNuYW1lID0gbV9jbmFtZTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5hZGRTc3Jj
KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLmljZVVmcmFnID0gbV9pY2VVZnJhZzsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5pY2VQ
YXNzd29yZCA9IG1faWNlUGFzc3dvcmQ7CiAKICAgICAgICAgaWYgKHNlbmRlci50cmFjaygpKQot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1UcmFja0lkKHNlbmRl
ci50cmFja0lkKCkpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRy
YWNrSWQgPSBzZW5kZXIudHJhY2tJZCgpOwogCiAgICAgICAgIGNvbmZpZ3VyYXRpb25TbmFwc2hv
dC0+YWRkTWVkaWFEZXNjcmlwdGlvbihXVEZNb3ZlKG1lZGlhRGVzY3JpcHRpb24pKTsKICAgICB9
CkBAIC0yMzMsNTEgKzIzMyw1MSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlQW5zd2VyVGFzayhSVENBbnN3ZXJPcHRpb25zJiwgU2Vzc2lvbkRlcwogICAgIGNvbmZp
Z3VyYXRpb25TbmFwc2hvdC0+c2V0U2Vzc2lvblZlcnNpb24obV9zZHBBbnN3ZXJTZXNzaW9uVmVy
c2lvbisrKTsKIAogICAgIGF1dG8gdHJhbnNjZWl2ZXJzID0gUnRwVHJhbnNjZWl2ZXJWZWN0b3Io
bV9jbGllbnQtPmdldFRyYW5zY2VpdmVycygpKTsKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9u
VmVjdG9yJiByZW1vdGVNZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRp
b24oKS0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOworICAgIGF1dG8mIHJl
bW90ZU1lZGlhRGVzY3JpcHRpb25zID0gaW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpLT5jb25m
aWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
UGVlck1lZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAqcmVtb3RlTWVk
aWFEZXNjcmlwdGlvbnNbaV07CisgICAgICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24g
PSByZW1vdGVNZWRpYURlc2NyaXB0aW9uc1tpXTsKIAotICAgICAgICBSVENSdHBUcmFuc2NlaXZl
ciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1v
dGVNZWRpYURlc2NyaXB0aW9uLm1pZCgpKTsKKyAgICAgICAgYXV0byogdHJhbnNjZWl2ZXIgPSBt
YXRjaFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRpYURlc2NyaXB0aW9u
Lm1pZCk7CiAgICAgICAgIGlmICghdHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyB0cmFuc2NlaXZlciBmb3IgcmVtb3RlIGRlc2Ny
aXB0aW9uIHdoaWxlIGNyZWF0aW5nIGFuc3dlciIpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoaSA+PSBjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlh
RGVzY3JpcHRpb25zKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld01lZGlhRGVzY3Jp
cHRpb24gPSBQZWVyTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBQZWVy
TWVkaWFEZXNjcmlwdGlvbiBuZXdNZWRpYURlc2NyaXB0aW9uOwogCiAgICAgICAgICAgICBSVENS
dHBTZW5kZXImIHNlbmRlciA9ICp0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAgICAgICAgICAgICBp
ZiAoc2VuZGVyLnRyYWNrKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VuZGVyLm1lZGlhU3Ry
ZWFtSWRzKCkuc2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
LT5zZXRNZWRpYVN0cmVhbUlkKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdKTsKLSAgICAgICAg
ICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbVRyYWNrSWQoc2VuZGVy
LnRyYWNrSWQoKSk7Ci0gICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+YWRkU3Ny
YyhjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbUlkID0gc2VuZGVyLm1lZGlhU3RyZWFtSWRz
KClbMF07CisgICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRy
YWNrSWQgPSBzZW5kZXIudHJhY2tJZCgpOworICAgICAgICAgICAgICAgIG5ld01lZGlhRGVzY3Jp
cHRpb24uYWRkU3NyYyhjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZSh0cmFuc2Nl
aXZlci0+ZGlyZWN0aW9uU3RyaW5nKCkpOwotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlv
bi0+c2V0VHlwZShyZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGUoKSk7Ci0gICAgICAgICAgICBu
ZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRNaWQocmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5taWQoKSk7
Ci0gICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzU2V0dXAocmVtb3RlTWVk
aWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAoKSA9PSAiYWN0aXZlIiA/ICJwYXNzaXZlIiA6ICJhY3Rp
dmUiKTsKLSAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmlu
dEhhc2hGdW5jdGlvbihtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uKTsKLSAgICAgICAgICAgIG5l
d01lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludChtX2R0bHNGaW5nZXJwcmludCk7
Ci0gICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRDbmFtZShtX2NuYW1lKTsKLSAg
ICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldEljZVVmcmFnKG1faWNlVWZyYWcpOwot
ICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlUGFzc3dvcmQobV9pY2VQYXNz
d29yZCk7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLm1vZGUgPSB0cmFuc2NlaXZl
ci0+ZGlyZWN0aW9uU3RyaW5nKCk7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLnR5
cGUgPSByZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGU7CisgICAgICAgICAgICBuZXdNZWRpYURl
c2NyaXB0aW9uLm1pZCA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ubWlkOworICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAgPSByZW1vdGVNZWRpYURlc2NyaXB0aW9uLmR0
bHNTZXR1cCA9PSAiYWN0aXZlIiA/ICJwYXNzaXZlIiA6ICJhY3RpdmUiOworICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24gPSBtX2R0bHNG
aW5nZXJwcmludEZ1bmN0aW9uOworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxz
RmluZ2VycHJpbnQgPSBtX2R0bHNGaW5nZXJwcmludDsKKyAgICAgICAgICAgIG5ld01lZGlhRGVz
Y3JpcHRpb24uY25hbWUgPSBtX2NuYW1lOworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlv
bi5pY2VVZnJhZyA9IG1faWNlVWZyYWc7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
LmljZVBhc3N3b3JkID0gbV9pY2VQYXNzd29yZDsKIAogICAgICAgICAgICAgY29uZmlndXJhdGlv
blNuYXBzaG90LT5hZGRNZWRpYURlc2NyaXB0aW9uKFdURk1vdmUobmV3TWVkaWFEZXNjcmlwdGlv
bikpOwogICAgICAgICB9CiAKLSAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIGxvY2FsTWVk
aWFEZXNjcmlwdGlvbiA9ICpjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25z
KClbaV07CisgICAgICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uJiBsb2NhbE1lZGlhRGVzY3JpcHRp
b24gPSBjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25zKClbaV07CiAKLSAg
ICAgICAgbG9jYWxNZWRpYURlc2NyaXB0aW9uLnNldFBheWxvYWRzKHJlbW90ZU1lZGlhRGVzY3Jp
cHRpb24ucGF5bG9hZHMoKSk7Ci0gICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5zZXRSdGNw
TXV4KHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ucnRjcE11eCgpKTsKKyAgICAgICAgbG9jYWxNZWRp
YURlc2NyaXB0aW9uLnBheWxvYWRzID0gcmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkczsK
KyAgICAgICAgbG9jYWxNZWRpYURlc2NyaXB0aW9uLnJ0Y3BNdXggPSByZW1vdGVNZWRpYURlc2Ny
aXB0aW9uLnJ0Y3BNdXg7CiAKLSAgICAgICAgaWYgKCFsb2NhbE1lZGlhRGVzY3JpcHRpb24uc3Ny
Y3MoKS5zaXplKCkpCisgICAgICAgIGlmICghbG9jYWxNZWRpYURlc2NyaXB0aW9uLnNzcmNzLnNp
emUoKSkKICAgICAgICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5hZGRTc3JjKGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOwogCi0gICAgICAgIGlmIChsb2NhbE1lZGlhRGVzY3Jp
cHRpb24uZHRsc1NldHVwKCkgPT0gImFjdHBhc3MiKQotICAgICAgICAgICAgbG9jYWxNZWRpYURl
c2NyaXB0aW9uLnNldER0bHNTZXR1cCgicGFzc2l2ZSIpOworICAgICAgICBpZiAobG9jYWxNZWRp
YURlc2NyaXB0aW9uLmR0bHNTZXR1cCA9PSAiYWN0cGFzcyIpCisgICAgICAgICAgICBsb2NhbE1l
ZGlhRGVzY3JpcHRpb24uZHRsc1NldHVwID0gInBhc3NpdmUiOwogCiAgICAgICAgIHRyYW5zY2Vp
dmVycy5yZW1vdmVGaXJzdCh0cmFuc2NlaXZlcik7CiAgICAgfQpAQCAtMjk1LDExICsyOTUsMTEg
QEAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAgY3JlYXRlU291cmNlTWFwKGNvbnN0IE1l
ZGlhRGVzY3JpcHRpb25WZWN0b3ImIHJlbW8KICAgICBSZWFsdGltZU1lZGlhU291cmNlTWFwIHNv
dXJjZU1hcDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZW1vdGVNZWRpYURlc2Ny
aXB0aW9ucy5zaXplKCkgJiYgaSA8IGxvY2FsTWVkaWFEZXNjcmlwdGlvbkNvdW50OyArK2kpIHsK
LSAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAq
cmVtb3RlTWVkaWFEZXNjcmlwdGlvbnNbaV07Ci0gICAgICAgIGlmIChyZW1vdGVNZWRpYURlc2Ny
aXB0aW9uLnR5cGUoKSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSgp
ICE9ICJ2aWRlbyIpCisgICAgICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSByZW1v
dGVNZWRpYURlc2NyaXB0aW9uc1tpXTsKKyAgICAgICAgaWYgKHJlbW90ZU1lZGlhRGVzY3JpcHRp
b24udHlwZSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSAhPSAidmlk
ZW8iKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIq
IHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgcmVtb3Rl
TWVkaWFEZXNjcmlwdGlvbi5taWQoKSk7CisgICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFu
c2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIHJlbW90ZU1lZGlh
RGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgaWYgKHRyYW5zY2VpdmVyKSB7CiAgICAgICAgICAg
ICBpZiAodHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSAmJiB0cmFuc2NlaXZlci0+
c2VuZGVyKCktPnRyYWNrKCkpCiAgICAgICAgICAgICAgICAgc291cmNlTWFwLnNldCh0cmFuc2Nl
aXZlci0+bWlkKCksICZ0cmFuc2NlaXZlci0+c2VuZGVyKCktPnRyYWNrKCktPnNvdXJjZSgpKTsK
QEAgLTM1OSwxMSArMzU5LDkgQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNl
dExvY2FsRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzY3IKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEFzc29jaWF0ZSBtZWRpYSBkZXNjcmlwdGlvbnMgd2l0aCB0cmFuc2NlaXZl
cnMgKHNldCBwcm92aXNpb25hbCBtaWQgdG8gJ2ZpbmFsJyBtaWQpLgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBwcmV2aW91c051bWJlck9mTWVkaWFEZXNjcmlwdGlvbnM7IGkgPCBtZWRpYURl
c2NyaXB0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRp
b24mIG1lZGlhRGVzY3JpcHRpb24gPSAqbWVkaWFEZXNjcmlwdGlvbnNbaV07Ci0KKyAgICAgICAg
Zm9yIChhdXRvJiBtZWRpYURlc2NyaXB0aW9uIDogbWVkaWFEZXNjcmlwdGlvbnMpIHsKICAgICAg
ICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXIo
dHJhbnNjZWl2ZXJzLCBbJm1lZGlhRGVzY3JpcHRpb25dIChSVENSdHBUcmFuc2NlaXZlciYgY3Vy
cmVudCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50LnByb3Zpc2lvbmFsTWlkKCkg
PT0gbWVkaWFEZXNjcmlwdGlvbi5taWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dC5wcm92aXNpb25hbE1pZCgpID09IG1lZGlhRGVzY3JpcHRpb24ubWlkOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBpZiAodHJhbnNjZWl2ZXIpCiAgICAgICAgICAgICAgICAgdHJhbnNj
ZWl2ZXItPnNldE1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSk7CkBAIC00NjQsMTMg
KzQ2MiwxMiBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVz
Y3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvblZlY3RvciYgbWVkaWFEZXNjcmlwdGlvbnMg
PSBuZXdEZXNjcmlwdGlvbi0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOwor
ICAgIGF1dG8mIG1lZGlhRGVzY3JpcHRpb25zID0gbmV3RGVzY3JpcHRpb24tPmNvbmZpZ3VyYXRp
b24oKS0+bWVkaWFEZXNjcmlwdGlvbnMoKTsKICAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRp
b24gOiBtZWRpYURlc2NyaXB0aW9ucykgewotICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbi0+
dHlwZSgpICE9ICJhdWRpbyIgJiYgbWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpICE9ICJ2aWRlbyIp
CisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLnR5cGUgIT0gImF1ZGlvIiAmJiBtZWRpYURl
c2NyaXB0aW9uLnR5cGUgIT0gInZpZGVvIikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldFBheWxvYWRzKG1fbWVkaWFFbmRwb2ludC0+ZmlsdGVy
UGF5bG9hZHMobWVkaWFEZXNjcmlwdGlvbi0+cGF5bG9hZHMoKSwKLSAgICAgICAgICAgIG1lZGlh
RGVzY3JpcHRpb24tPnR5cGUoKSA9PSAiYXVkaW8iID8gbV9kZWZhdWx0QXVkaW9QYXlsb2FkcyA6
IG1fZGVmYXVsdFZpZGVvUGF5bG9hZHMpKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5wYXls
b2FkcyA9IG1fbWVkaWFFbmRwb2ludC0+ZmlsdGVyUGF5bG9hZHMobWVkaWFEZXNjcmlwdGlvbi5w
YXlsb2FkcywgbWVkaWFEZXNjcmlwdGlvbi50eXBlID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRp
b1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2Fkcyk7CiAgICAgfQogCiAgICAgYm9vbCBp
c0luaXRpYXRvciA9IG5ld0Rlc2NyaXB0aW9uLT50eXBlKCkgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uOjpTZHBUeXBlOjpBbnN3ZXI7CkBAIC00ODgsMzIgKzQ4NSwzMiBAQCB2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENT
ZXNzaW9uRGVzYwogICAgIC8vIE9uZSBsZWdhY3kgTWVkaWFTdHJlYW1FdmVudCB3aWxsIGJlIGZp
cmVkIGZvciBldmVyeSBuZXcgTWVkaWFTdHJlYW0gY3JlYXRlZCBhcyB0aGlzIHJlbW90ZSBkZXNj
cmlwdGlvbiBpcyBzZXQuCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUV2ZW50Pj4gbGVn
YWN5TWVkaWFTdHJlYW1FdmVudHM7CiAKLSAgICBmb3IgKGF1dG8gbWVkaWFEZXNjcmlwdGlvbiA6
IG1lZGlhRGVzY3JpcHRpb25zKSB7Ci0gICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2Nl
aXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIG1lZGlhRGVzY3JpcHRp
b24tPm1pZCgpKTsKKyAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBtZWRpYURlc2Ny
aXB0aW9ucykgeworICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRj
aFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAg
ICAgICAgIGlmICghdHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIGJvb2wgcmVjZWl2ZU9ubHlG
bGFnID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkg
PT0gInNlbmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkgPT0gInJlY3Zvbmx5Iikg
eworICAgICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAic2VuZHJlY3YiIHx8
IG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAicmVjdm9ubHkiKSB7CiAgICAgICAgICAgICAgICAg
Ly8gVHJ5IHRvIG1hdGNoIGFuIGV4aXN0aW5nIHRyYW5zY2VpdmVyLgogICAgICAgICAgICAgICAg
IHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcih0cmFuc2NlaXZlcnMsIFsmbWVkaWFEZXNj
cmlwdGlvbl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJyZW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3VycmVudC5taWQoKS5pc051bGwoKSAm
JiBjdXJyZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBtZWRpYURlc2NyaXB0aW9uLT50eXBl
KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3Vy
cmVudC5taWQoKS5pc051bGwoKSAmJiBjdXJyZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBt
ZWRpYURlc2NyaXB0aW9uLnR5cGU7CiAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAg
ICAgICBpZiAodHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB0cmFu
c2NlaXZlciB3YXMgY3JlYXRlZCBsb2NhbGx5IHdpdGggYSBwcm92aXNpb25hbCBtaWQuIEl0cyBy
ZWFsIG1pZCB3aWxsIG5vdyBiZSBzZXQgYnkgdGhlIHJlbW90ZQogICAgICAgICAgICAgICAgICAg
ICAvLyBkZXNjcmlwdGlvbiBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbWlkIG9mIHRoZSB0cmFu
c2NlaXZlcidzIG11dGVkIHNvdXJjZSB0byBwcmVzZXJ2ZSB0aGUgYXNzb2NpYXRpb24uCi0gICAg
ICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi0+bWlk
KCkpOwotICAgICAgICAgICAgICAgICAgICBtX21lZGlhRW5kcG9pbnQtPnJlcGxhY2VNdXRlZFJl
bW90ZVNvdXJjZU1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSwgbWVkaWFEZXNjcmlw
dGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2NlaXZlci0+c2V0TWlkKG1l
ZGlhRGVzY3JpcHRpb24ubWlkKTsKKyAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUVuZHBvaW50
LT5yZXBsYWNlTXV0ZWRSZW1vdGVTb3VyY2VNaWQodHJhbnNjZWl2ZXItPnByb3Zpc2lvbmFsTWlk
KCksIG1lZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgcmVjZWl2ZU9ubHlGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCF0cmFuc2NlaXZlcikgewotICAgICAgICAgICAgICAgIGF1dG8gc2Vu
ZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUobWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpLCBWZWN0
b3I8U3RyaW5nPigpLCBtX2NsaWVudC0+c2VuZGVyQ2xpZW50KCkpOwotICAgICAgICAgICAgICAg
IGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlcihtZWRpYURlc2NyaXB0aW9uLT5taWQoKSwg
bWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpLCBtZWRpYURlc2NyaXB0aW9uLT5tZWRpYVN0cmVhbVRy
YWNrSWQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNy
ZWF0ZShtZWRpYURlc2NyaXB0aW9uLnR5cGUsIFZlY3RvcjxTdHJpbmc+KCksIG1fY2xpZW50LT5z
ZW5kZXJDbGllbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJl
Y2VpdmVyKG1lZGlhRGVzY3JpcHRpb24ubWlkLCBtZWRpYURlc2NyaXB0aW9uLnR5cGUsIG1lZGlh
RGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkKTsKIAogICAgICAgICAgICAgICAgIGF1dG8g
bmV3VHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVy
KSwgV1RGTW92ZShyZWNlaXZlcikpOwotICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5z
ZXRNaWQobWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgIG5ld1RyYW5z
Y2VpdmVyLT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi5taWQpOwogICAgICAgICAgICAgICAgIGlm
IChyZWNlaXZlT25seUZsYWcpCiAgICAgICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5k
aXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogCkBAIC01MjIsMTUgKzUxOSwxNSBAQCB2b2lkIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0
cjxSVENTZXNzaW9uRGVzYwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSA9PSAic2VuZHJlY3YiIHx8IG1lZGlhRGVzY3JpcHRp
b24tPm1vZGUoKSA9PSAic2VuZG9ubHkiKSB7CisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9u
Lm1vZGUgPT0gInNlbmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPT0gInNlbmRvbmx5
IikgewogICAgICAgICAgICAgUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyID0gKnRyYW5zY2VpdmVy
LT5yZWNlaXZlcigpOwogICAgICAgICAgICAgaWYgKHJlY2VpdmVyLmlzRGlzcGF0Y2hlZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcmVjZWl2ZXIuc2V0RGlzcGF0
Y2hlZCh0cnVlKTsKIAogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFTdHJlYW1JZHM7
Ci0gICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtSWQoKS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKG1lZGlhRGVzY3Jp
cHRpb24tPm1lZGlhU3RyZWFtSWQoKSk7CisgICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRp
b24ubWVkaWFTdHJlYW1JZC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1J
ZHMuYXBwZW5kKG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1JZCk7CiAKICAgICAgICAgICAg
IC8vIEEgcmVtb3RlIHRyYWNrIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggMC4uKiBNZWRpYVN0cmVh
bXMuIFdlIGNyZWF0ZSBhIG5ldyBzdHJlYW0gZm9yCiAgICAgICAgICAgICAvLyBhIHRyYWNrIGlu
IGNhc2Ugb2YgYW4gdW5yZWNvZ25pemVkIHN0cmVhbSBpZCwgb3IganVzdCBhZGQgdGhlIHRyYWNr
IGlmIHRoZSBzdHJlYW0KQEAgLTY0Niw3ICs2NDMsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6YWRkSWNlQ2FuZGlkYXRlVGFzayhSVENJY2VDYW5kaWRhdGUmIHJ0Y0NhbmRp
ZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvblZl
Y3RvciYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMgPSBpbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9u
KCktPmNvbmZpZ3VyYXRpb24oKS0+bWVkaWFEZXNjcmlwdGlvbnMoKTsKKyAgICBhdXRvJiByZW1v
dGVNZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRpb24oKS0+Y29uZmln
dXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOwogICAgIFBlZXJNZWRpYURlc2NyaXB0aW9u
KiB0YXJnZXRNZWRpYURlc2NyaXB0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFdoZW4gaWRlbnRp
ZnlpbmcgdGhlIHRhcmdldCBtZWRpYSBkZXNjcmlwdGlvbiwgc2RwTWlkIHRha2VzIHByZWNlZGVu
Y2Ugb3ZlciBzZHBNTGluZUluZGV4CkBAIC02NTQsOCArNjUxLDggQEAgdm9pZCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBy
dGNDYW5kaWQKICAgICBpZiAoIXJ0Y0NhbmRpZGF0ZS5zZHBNaWQoKS5pc051bGwoKSkgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIG1pZCA9IHJ0Y0NhbmRpZGF0ZS5zZHBNaWQoKTsKICAgICAgICAg
Zm9yIChhdXRvJiBkZXNjcmlwdGlvbiA6IHJlbW90ZU1lZGlhRGVzY3JpcHRpb25zKSB7Ci0gICAg
ICAgICAgICBpZiAoZGVzY3JpcHRpb24tPm1pZCgpID09IG1pZCkgewotICAgICAgICAgICAgICAg
IHRhcmdldE1lZGlhRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5nZXQoKTsKKyAgICAgICAgICAg
IGlmIChkZXNjcmlwdGlvbi5taWQgPT0gbWlkKSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0TWVk
aWFEZXNjcmlwdGlvbiA9ICZkZXNjcmlwdGlvbjsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjcwLDcgKzY2Nyw3IEBAIHZvaWQgTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGVUYXNrKFJUQ0ljZUNhbmRpZGF0ZSYg
cnRjQ2FuZGlkCiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChPcGVyYXRpb25FcnJvciwgInNk
cE1MaW5lSW5kZXggaXMgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbiA9IHJlbW90ZU1lZGlhRGVzY3Jp
cHRpb25zW3NkcE1MaW5lSW5kZXhdLmdldCgpOworICAgICAgICB0YXJnZXRNZWRpYURlc2NyaXB0
aW9uID0gJnJlbW90ZU1lZGlhRGVzY3JpcHRpb25zW3NkcE1MaW5lSW5kZXhdOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkBAIC02
ODUsNyArNjgyLDggQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNh
bmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBydGNDYW5kaWQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fbWVkaWFFbmRwb2ludC0+YWRkUmVtb3RlQ2FuZGlkYXRlKHJlc3VsdC5j
YW5kaWRhdGUoKSwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+bWlkKCksIHRhcmdldE1lZGlhRGVz
Y3JpcHRpb24tPmljZVVmcmFnKCksIHRhcmdldE1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3Jk
KCkpOworICAgIEFTU0VSVCh0YXJnZXRNZWRpYURlc2NyaXB0aW9uKTsKKyAgICBtX21lZGlhRW5k
cG9pbnQtPmFkZFJlbW90ZUNhbmRpZGF0ZShyZXN1bHQuY2FuZGlkYXRlKCksIHRhcmdldE1lZGlh
RGVzY3JpcHRpb24tPm1pZCwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcsIHRhcmdl
dE1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3JkKTsKIAogICAgIHRhcmdldE1lZGlhRGVzY3Jp
cHRpb24tPmFkZEljZUNhbmRpZGF0ZShXVEZNb3ZlKHJlc3VsdC5jYW5kaWRhdGUoKSkpOwogCkBA
IC04MzcsMTEgKzgzNSwxMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Z290
SWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgbWlkLCBJY2VDYW5kaWRhdAogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9yJiBt
ZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigpLT5jb25maWd1cmF0
aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CisgICAgYXV0byYgbWVkaWFEZXNjcmlwdGlvbnMg
PSBpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2Ny
aXB0aW9ucygpOwogICAgIHNpemVfdCBtZWRpYURlc2NyaXB0aW9uSW5kZXggPSBub3RGb3VuZDsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25zW2ldLT5taWQoKSA9PSBtaWQpIHsK
KyAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25zW2ldLm1pZCA9PSBtaWQpIHsKICAgICAgICAg
ICAgIG1lZGlhRGVzY3JpcHRpb25JbmRleCA9IGk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtODU1LDkgKzg1Myw3IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
Ojpnb3RJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBtaWQsIEljZUNhbmRpZGF0CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvJiBtZWRpYURlc2NyaXB0aW9uID0gbWVkaWFEZXNj
cmlwdGlvbnNbbWVkaWFEZXNjcmlwdGlvbkluZGV4XTsKLSAgICBBU1NFUlQobWVkaWFEZXNjcmlw
dGlvbik7Ci0gICAgbWVkaWFEZXNjcmlwdGlvbi0+YWRkSWNlQ2FuZGlkYXRlKFdURk1vdmUoY2Fu
ZGlkYXRlKSk7CisgICAgbWVkaWFEZXNjcmlwdGlvbnNbbWVkaWFEZXNjcmlwdGlvbkluZGV4XS5h
ZGRJY2VDYW5kaWRhdGUoV1RGTW92ZShjYW5kaWRhdGUpKTsKIAogICAgIG1fY2xpZW50LT5maXJl
RXZlbnQoUlRDSWNlQ2FuZGlkYXRlRXZlbnQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIFJUQ0ljZUNh
bmRpZGF0ZTo6Y3JlYXRlKGNhbmRpZGF0ZUxpbmUsIG1pZCwgbWVkaWFEZXNjcmlwdGlvbkluZGV4
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKaW5kZXggMDEzZDM1ZTJlZjYx
YzI4YzVhYzljNmU4OGY5YTNkZTVjYjYwNzM3Yi4uZTAwNGU0ZDY4YmQzNDg5MDk0ZWE3NWI5YjM1
NDQyNDFhNGEzMGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC00Mywx
MCArNDMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNs
YXNzIE1lZGlhU3RyZWFtVHJhY2s7Ci1jbGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKK3N0cnVj
dCBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFNEUFByb2Nlc3NvcjsKIAotdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFBlZXJNZWRpYURlc2NyaXB0aW9uPj4gTWVkaWFEZXNjcmlwdGlvblZlY3Rv
cjsKK3R5cGVkZWYgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBNZWRpYURlc2NyaXB0aW9u
VmVjdG9yOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IFJ0cFNlbmRlclZl
Y3RvcjsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IFJ0cFRyYW5z
Y2VpdmVyVmVjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1NEUFByb2Nlc3Nvci5jcHAKaW5kZXggMzY1ODhkZGJjOTk4NDdkMzkyZTRlNTYwY2ZkOTZj
YThlMTY2ZWY4MC4uNDFmYmFkNGZjMmI3MmZiMGQwY2ZiMDg1ZTc2NjdkOGQ3NTgyNzEzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJvY2Vzc29y
LmNwcApAQCAtMTk5LDIyICsxOTksMjIgQEAgc3RhdGljIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vz
c2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNPTihjb25zdCBTdHIKICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVkaWFEZXNjcmlwdGlvbk9iamVjdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25zQXJyYXktPmdl
dChpKS0+YXNPYmplY3QobWVkaWFEZXNjcmlwdGlvbk9iamVjdCk7CiAKLSAgICAgICAgUmVmUHRy
PFBlZXJNZWRpYURlc2NyaXB0aW9uPiBtZWRpYURlc2NyaXB0aW9uID0gUGVlck1lZGlhRGVzY3Jp
cHRpb246OmNyZWF0ZSgpOworICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiBtZWRpYURlc2Ny
aXB0aW9uOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRTdHJpbmco
dHlwZVN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LT5zZXRUeXBlKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24udHlw
ZSA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5n
ZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgaW50VmFsdWUpKQotICAgICAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0UG9ydChpbnRWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LnBvcnQgPSBpbnRWYWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+
Z2V0U3RyaW5nKGFkZHJlc3NTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbi0+c2V0QWRkcmVzcyhzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLmFkZHJlc3MgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFE
ZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1vZGVTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZShzdHJpbmdWYWx1ZSk7CisgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBp
ZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1pZFN0cmluZygpLCBzdHJpbmdW
YWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNaWQoc3RyaW5nVmFsdWUp
OworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5taWQgPSBzdHJpbmdWYWx1ZTsKIAogICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHBheWxvYWRzQXJyYXkgPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdldEFycmF5KHBh
eWxvYWRzU3RyaW5nKCksIHBheWxvYWRzQXJyYXkpOwpAQCAtMjU4LDM3ICsyNTgsMzcgQEAgc3Rh
dGljIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b25Gcm9tSlNPTihjb25zdCBTdHIKICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5hZGRQYXJh
bWV0ZXIoInJ0eFRpbWUiLCBpbnRWYWx1ZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG1lZGlhRGVzY3JpcHRpb24tPmFkZFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSk7CisgICAgICAg
ICAgICBtZWRpYURlc2NyaXB0aW9uLmFkZFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBydGNwT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmpl
Y3QtPmdldE9iamVjdChydGNwU3RyaW5nKCksIHJ0Y3BPYmplY3QpKSB7CiAgICAgICAgICAgICBp
ZiAocnRjcE9iamVjdC0+Z2V0Qm9vbGVhbihtdXhTdHJpbmcoKSwgYm9vbFZhbHVlKSkKLSAgICAg
ICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRSdGNwTXV4KGJvb2xWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5ydGNwTXV4ID0gYm9vbFZhbHVlOwogCiAgICAg
ICAgICAgICBpZiAocnRjcE9iamVjdC0+Z2V0U3RyaW5nKHJ0Y3BBZGRyZXNzU3RyaW5nKCksIHN0
cmluZ1ZhbHVlKSkKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRSdGNwQWRk
cmVzcyhzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5ydGNw
QWRkcmVzcyA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAocnRjcE9iamVjdC0+Z2V0
SW50ZWdlcihydGNwUG9ydFN0cmluZygpLCBpbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbi0+c2V0UnRjcFBvcnQoaW50VmFsdWUpOworICAgICAgICAgICAgICAgIG1l
ZGlhRGVzY3JpcHRpb24ucnRjcFBvcnQgPSBpbnRWYWx1ZTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRTdHJpbmcobWVkaWFTdHJlYW1JZFN0cmlu
ZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRp
YVN0cmVhbUlkKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWVk
aWFTdHJlYW1JZCA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9u
T2JqZWN0LT5nZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5nKCksIHN0cmluZ1ZhbHVl
KSkKLSAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1lZGlhU3RyZWFtVHJhY2tJZChz
dHJpbmdWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtVHJh
Y2tJZCA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGR0
bHNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBpZiAobWVkaWFE
ZXNjcmlwdGlvbk9iamVjdC0+Z2V0T2JqZWN0KGR0bHNTdHJpbmcoKSwgZHRsc09iamVjdCkpIHsK
ICAgICAgICAgICAgIGlmIChkdGxzT2JqZWN0LT5nZXRTdHJpbmcoc2V0dXBTdHJpbmcoKSwgc3Ry
aW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldER0bHNTZXR1
cChzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzU2V0
dXAgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICAgICAgaWYgKGR0bHNPYmplY3QtPmdldFN0cmlu
ZyhmaW5nZXJwcmludEhhc2hGdW5jdGlvblN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAg
ICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9u
KHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmR0bHNGaW5n
ZXJwcmludEhhc2hGdW5jdGlvbiA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAoZHRs
c09iamVjdC0+Z2V0U3RyaW5nKGZpbmdlcnByaW50U3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAg
ICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzRmluZ2VycHJpbnQoc3RyaW5n
VmFsdWUpOworICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50
ID0gc3RyaW5nVmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IHNzcmNzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CkBAIC0yOTYsMTkgKzI5
NiwxOSBAQCBzdGF0aWMgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbkZyb21KU09OKGNvbnN0IFN0cgogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBzc3Jjc0FycmF5LT5sZW5ndGgoKTsgKytqKSB7CiAgICAgICAgICAgICBzc3Jj
c0FycmF5LT5nZXQoaiktPmFzSW50ZWdlcihpbnRWYWx1ZSk7Ci0gICAgICAgICAgICBtZWRpYURl
c2NyaXB0aW9uLT5hZGRTc3JjKGludFZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRp
b24uYWRkU3NyYyhpbnRWYWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWVkaWFEZXNj
cmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKGNuYW1lU3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAg
ICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldENuYW1lKHN0cmluZ1ZhbHVlKTsKKyAgICAg
ICAgICAgIG1lZGlhRGVzY3JpcHRpb24uY25hbWUgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpY2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0T2JqZWN0KGljZVN0
cmluZygpLCBpY2VPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoaWNlT2JqZWN0LT5nZXRTdHJp
bmcodWZyYWdTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24tPnNldEljZVVmcmFnKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLmljZVVmcmFnID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgICAgIGlmIChp
Y2VPYmplY3QtPmdldFN0cmluZyhwYXNzd29yZFN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAg
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlUGFzc3dvcmQoc3RyaW5nVmFsdWUp
OworICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uaWNlUGFzc3dvcmQgPSBzdHJpbmdW
YWx1ZTsKIAogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYW5kaWRhdGVzQXJy
YXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpY2VPYmplY3QtPmdl
dEFycmF5KGNhbmRpZGF0ZXNTdHJpbmcoKSwgY2FuZGlkYXRlc0FycmF5KTsKQEAgLTMxNyw3ICsz
MTcsNyBAQCBzdGF0aWMgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbkZyb21KU09OKGNvbnN0IFN0cgogICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNhbmRpZGF0ZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc0FycmF5LT5nZXQoaiktPmFzT2JqZWN0KGNh
bmRpZGF0ZU9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5hZGRJ
Y2VDYW5kaWRhdGUoY3JlYXRlQ2FuZGlkYXRlKCpjYW5kaWRhdGVPYmplY3QpKTsKKyAgICAgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmFkZEljZUNhbmRpZGF0ZShjcmVhdGVDYW5kaWRhdGUo
KmNhbmRpZGF0ZU9iamVjdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTM1MSwx
OCArMzUxLDE4IEBAIHN0YXRpYyBTdHJpbmcgY29uZmlndXJhdGlvblRvSlNPTihjb25zdCBNZWRp
YUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24mIGNvbmZpCiAKICAgICBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IG1lZGlhRGVzY3JpcHRpb25zQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRl
KCk7CiAKLSAgICBmb3IgKGNvbnN0IFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4mIG1lZGlh
RGVzY3JpcHRpb24gOiBjb25maWd1cmF0aW9uLm1lZGlhRGVzY3JpcHRpb25zKCkpIHsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBjb25maWd1cmF0aW9uLm1lZGlhRGVz
Y3JpcHRpb25zKCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVkaWFEZXNj
cmlwdGlvbk9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAKLSAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKHR5cGVTdHJpbmcoKSwgbWVkaWFEZXNjcmlw
dGlvbi0+dHlwZSgpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0SW50ZWdl
cihwb3J0U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnBvcnQoKSk7Ci0gICAgICAgIG1lZGlh
RGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhhZGRyZXNzU3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24tPmFkZHJlc3MoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0
cmluZyhtb2RlU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSk7Ci0gICAgICAgIG1l
ZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtaWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlw
dGlvbi0+bWlkKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmco
dHlwZVN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLnR5cGUpOworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uT2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5w
b3J0KTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKGFkZHJlc3NT
dHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5hZGRyZXNzKTsKKyAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbk9iamVjdC0+c2V0U3RyaW5nKG1vZGVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5tb2Rl
KTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKG1pZFN0cmluZygp
LCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5
PiBwYXlsb2Fkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgICAgIGZv
ciAoYXV0byYgcGF5bG9hZCA6IG1lZGlhRGVzY3JpcHRpb24tPnBheWxvYWRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBwYXlsb2FkIDogbWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkcykgewogICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGF5bG9hZE9iamVjdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHBheWxvYWRPYmplY3QtPnNldEludGVn
ZXIodHlwZVN0cmluZygpLCBwYXlsb2FkLnR5cGUpOwpAQCAtMzg3LDM1ICszODcsMzUgQEAgc3Rh
dGljIFN0cmluZyBjb25maWd1cmF0aW9uVG9KU09OKGNvbnN0IE1lZGlhRW5kcG9pbnRTZXNzaW9u
Q29uZmlndXJhdGlvbiYgY29uZmkKICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0
QXJyYXkocGF5bG9hZHNTdHJpbmcoKSwgcGF5bG9hZHNBcnJheSk7CiAKICAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcnRjcE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgICAgIHJ0Y3BPYmplY3QtPnNldEJvb2xlYW4obXV4U3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24tPnJ0Y3BNdXgoKSk7Ci0gICAgICAgIHJ0Y3BPYmplY3QtPnNldFN0cmluZyhhZGRyZXNz
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnJ0Y3BBZGRyZXNzKCkpOwotICAgICAgICBydGNw
T2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+cnRjcFBv
cnQoKSk7CisgICAgICAgIHJ0Y3BPYmplY3QtPnNldEJvb2xlYW4obXV4U3RyaW5nKCksIG1lZGlh
RGVzY3JpcHRpb24ucnRjcE11eCk7CisgICAgICAgIHJ0Y3BPYmplY3QtPnNldFN0cmluZyhhZGRy
ZXNzU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24ucnRjcEFkZHJlc3MpOworICAgICAgICBydGNw
T2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5ydGNwUG9y
dCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldE9iamVjdChydGNwU3RyaW5n
KCksIHJ0Y3BPYmplY3QpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0
cmluZyhtZWRpYVN0cmVhbUlkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFt
SWQoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtZWRpYVN0
cmVhbVRyYWNrSWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+bWVkaWFTdHJlYW1UcmFja0lk
KCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJl
YW1JZFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQpOworICAgICAgICBt
ZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5n
KCksIG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkKTsKIAogICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkdGxzT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIG1lZGlhRGVz
Y3JpcHRpb24tPmR0bHNTZXR1cCgpKTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZp
bmdlcnByaW50SGFzaEZ1bmN0aW9uU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmR0bHNGaW5n
ZXJwcmludEhhc2hGdW5jdGlvbigpKTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZp
bmdlcnByaW50U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmR0bHNGaW5nZXJwcmludCgpKTsK
KyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24uZHRsc1NldHVwKTsKKyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnBy
aW50SGFzaEZ1bmN0aW9uU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50
SGFzaEZ1bmN0aW9uKTsKKyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnByaW50
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50KTsKICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0T2JqZWN0KGR0bHNTdHJpbmcoKSwgZHRsc09iamVjdCk7
CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzc3Jjc0FycmF5ID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgICAgIGZvciAoYXV0byBzc3JjIDogbWVkaWFEZXNjcmlw
dGlvbi0+c3NyY3MoKSkKKyAgICAgICAgZm9yIChhdXRvIHNzcmMgOiBtZWRpYURlc2NyaXB0aW9u
LnNzcmNzKQogICAgICAgICAgICAgc3NyY3NBcnJheS0+cHVzaERvdWJsZShzc3JjKTsKICAgICAg
ICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0QXJyYXkoc3NyY3NTdHJpbmcoKSwgc3NyY3NB
cnJheSk7CiAKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKGNuYW1l
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmNuYW1lKCkpOworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcoY25hbWVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5j
bmFtZSk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaWNlT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgaWNlT2JqZWN0LT5zZXRTdHJpbmcodWZy
YWdTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcoKSk7Ci0gICAgICAgIGljZU9i
amVjdC0+c2V0U3RyaW5nKHBhc3N3b3JkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmljZVBh
c3N3b3JkKCkpOworICAgICAgICBpY2VPYmplY3QtPnNldFN0cmluZyh1ZnJhZ1N0cmluZygpLCBt
ZWRpYURlc2NyaXB0aW9uLmljZVVmcmFnKTsKKyAgICAgICAgaWNlT2JqZWN0LT5zZXRTdHJpbmco
cGFzc3dvcmRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5pY2VQYXNzd29yZCk7CiAKICAgICAg
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYW5kaWRhdGVzQXJyYXkgPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CiAKLSAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZWRpYURlc2Ny
aXB0aW9uLT5pY2VDYW5kaWRhdGVzKCkpCisgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDog
bWVkaWFEZXNjcmlwdGlvbi5pY2VDYW5kaWRhdGVzKQogICAgICAgICAgICAgY2FuZGlkYXRlc0Fy
cmF5LT5wdXNoT2JqZWN0KGNyZWF0ZUNhbmRpZGF0ZU9iamVjdChjYW5kaWRhdGUpKTsKIAogICAg
ICAgICBpY2VPYmplY3QtPnNldEFycmF5KGNhbmRpZGF0ZXNTdHJpbmcoKSwgY2FuZGlkYXRlc0Fy
cmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgKaW5kZXgg
YjMyYWVlOTYzNzhjODQ3ZmVmYmQ0Yjg2OTkxZjQ2MTgwM2NlOTkyOS4uYjgxNDZjMWIxMzdmMDgz
NjJlZGRjOGFkZDc2MGQ5NWMxY2U0YWY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Np
b25Db25maWd1cmF0aW9uLmgKQEAgLTUyLDggKzUyLDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IHNlc3Npb25WZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uVmVyc2lvbjsgfQogICAg
IHZvaWQgc2V0U2Vzc2lvblZlcnNpb24odW5zaWduZWQgc2Vzc2lvblZlcnNpb24pIHsgbV9zZXNz
aW9uVmVyc2lvbiA9IHNlc3Npb25WZXJzaW9uOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PFBlZXJNZWRpYURlc2NyaXB0aW9uPj4mIG1lZGlhRGVzY3JpcHRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYURlc2NyaXB0aW9uczsgfQotICAgIHZvaWQgYWRkTWVkaWFEZXNjcmlwdGlvbihS
ZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+JiYgZGVzY3JpcHRpb24pIHsgbV9tZWRpYURlc2Ny
aXB0aW9ucy5hcHBlbmQoV1RGTW92ZShkZXNjcmlwdGlvbikpOyB9CisgICAgVmVjdG9yPFBlZXJN
ZWRpYURlc2NyaXB0aW9uPiYgbWVkaWFEZXNjcmlwdGlvbnMoKSB7IHJldHVybiBtX21lZGlhRGVz
Y3JpcHRpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiYgbWVk
aWFEZXNjcmlwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRGVzY3JpcHRpb25zOyB9Cisg
ICAgdm9pZCBhZGRNZWRpYURlc2NyaXB0aW9uKFBlZXJNZWRpYURlc2NyaXB0aW9uJiYgZGVzY3Jp
cHRpb24pIHsgbV9tZWRpYURlc2NyaXB0aW9ucy5hcHBlbmQoV1RGTW92ZShkZXNjcmlwdGlvbikp
OyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHNkcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2RwOyB9CiAg
ICAgdm9pZCBzZXRTRFAoU3RyaW5nJiYgc2RwKSB7IG1fc2RwID0gV1RGTW92ZShzZHApOyB9CkBA
IC02Myw5ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNz
aW9uQ29uZmlndXJhdGlvbj4gY29weSA9IGNyZWF0ZSgpOwogICAgICAgICBjb3B5LT5tX3Nlc3Np
b25JZCA9IG1fc2Vzc2lvbklkOwogICAgICAgICBjb3B5LT5tX3Nlc3Npb25WZXJzaW9uID0gbV9z
ZXNzaW9uVmVyc2lvbjsKLQotICAgICAgICBmb3IgKGF1dG8mIG1kZXNjIDogbV9tZWRpYURlc2Ny
aXB0aW9ucykKLSAgICAgICAgICAgIGNvcHktPm1fbWVkaWFEZXNjcmlwdGlvbnMuYXBwZW5kKG1k
ZXNjLT5jbG9uZSgpKTsKKyAgICAgICAgY29weS0+bV9tZWRpYURlc2NyaXB0aW9ucyA9IG1fbWVk
aWFEZXNjcmlwdGlvbnM7CiAKICAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgfQpAQCAtODAsNyAr
NzksNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fc2Vzc2lvbklkOwogICAgIHVuc2lnbmVk
IG1fc2Vzc2lvblZlcnNpb24geyAwIH07CiAKLSAgICBWZWN0b3I8UmVmUHRyPFBlZXJNZWRpYURl
c2NyaXB0aW9uPj4gbV9tZWRpYURlc2NyaXB0aW9uczsKKyAgICBWZWN0b3I8UGVlck1lZGlhRGVz
Y3JpcHRpb24+IG1fbWVkaWFEZXNjcmlwdGlvbnM7CiAgICAgU3RyaW5nIG1fc2RwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlh
RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJN
ZWRpYURlc2NyaXB0aW9uLmgKaW5kZXggZjQxMGExY2QwMDlhYzM0OTAxZGFmYjQ2N2M1MTNlMzdl
ZWNmYTQwNS4uNzBlZTZlMzFlZmIxYTZiOWRkZGM4ZGE1NTc4YmE0NDhhOWY4NzY4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3Jp
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyTWVk
aWFEZXNjcmlwdGlvbi5oCkBAIC0yOCwxNTUgKzI4LDUxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgUGVlck1lZGlhRGVzY3JpcHRpb25faAotI2RlZmluZSBQZWVyTWVkaWFEZXNj
cmlwdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVk
ZSAiSWNlQ2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQYXlsb2FkLmgiCiAjaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBlZXJN
ZWRpYURlc2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlck1lZGlhRGVzY3JpcHRpb24+
IHsKK3N0cnVjdCBQZWVyTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGVlck1lZGlhRGVzY3JpcHRpb24oKSk7Ci0gICAgfQotICAgIHZpcnR1
YWwgflBlZXJNZWRpYURlc2NyaXB0aW9uKCkgeyB9CisgICAgdm9pZCBhZGRQYXlsb2FkKE1lZGlh
UGF5bG9hZCYmIHBheWxvYWQpIHsgcGF5bG9hZHMuYXBwZW5kKFdURk1vdmUocGF5bG9hZCkpOyB9
CisgICAgdm9pZCBhZGRTc3JjKHVuc2lnbmVkIHNzcmMpIHsgc3NyY3MuYXBwZW5kKHNzcmMpOyB9
CisgICAgdm9pZCBjbGVhclNzcmNzKCkgeyBzc3Jjcy5jbGVhcigpOyB9CisgICAgdm9pZCBhZGRJ
Y2VDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRlKSB7IGljZUNhbmRpZGF0ZXMuYXBw
ZW5kKFdURk1vdmUoY2FuZGlkYXRlKSk7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpIHsgbV90eXBlID0gdHlwZTsgfQorICAgIFN0cmluZyB0eXBlOworICAgIHVuc2lnbmVkIHNo
b3J0IHBvcnQgeyA5IH07CisgICAgU3RyaW5nIGFkZHJlc3MgeyAiMC4wLjAuMCIgfTsKKyAgICBT
dHJpbmcgbW9kZSB7ICJzZW5kcmVjdiIgfTsKKyAgICBTdHJpbmcgbWlkOwogCi0gICAgdW5zaWdu
ZWQgc2hvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQotICAgIHZvaWQgc2V0UG9y
dCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IG1fcG9ydCA9IHBvcnQ7IH0KKyAgICBWZWN0b3I8TWVk
aWFQYXlsb2FkPiBwYXlsb2FkczsKIAotICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNvbnN0
IHsgcmV0dXJuIG1fYWRkcmVzczsgfQotICAgIHZvaWQgc2V0QWRkcmVzcyhjb25zdCBTdHJpbmcm
IGFkZHJlc3MpIHsgbV9hZGRyZXNzID0gYWRkcmVzczsgfQorICAgIGJvb2wgcnRjcE11eCB7IHRy
dWUgfTsKKyAgICBTdHJpbmcgcnRjcEFkZHJlc3M7CisgICAgdW5zaWduZWQgc2hvcnQgcnRjcFBv
cnQgeyAwIH07CiAKLSAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KLSAgICB2b2lkIHNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKSB7IG1fbW9kZSA9IG1v
ZGU7IH0KKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1JZDsKKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1U
cmFja0lkOwogCi0gICAgY29uc3QgU3RyaW5nJiBtaWQoKSBjb25zdCB7IHJldHVybiBtX21pZDsg
fQotICAgIHZvaWQgc2V0TWlkKGNvbnN0IFN0cmluZyYgbWlkKSB7IG1fbWlkID0gbWlkOyB9Cisg
ICAgU3RyaW5nIGR0bHNTZXR1cCB7ICJhY3RwYXNzIiB9OworICAgIFN0cmluZyBkdGxzRmluZ2Vy
cHJpbnRIYXNoRnVuY3Rpb247CisgICAgU3RyaW5nIGR0bHNGaW5nZXJwcmludDsKIAotICAgIGNv
bnN0IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBwYXlsb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZHM7IH0KLSAgICB2b2lkIGFkZFBheWxvYWQoTWVkaWFQYXlsb2FkJiYgcGF5bG9hZCkgeyBt
X3BheWxvYWRzLmFwcGVuZChXVEZNb3ZlKHBheWxvYWQpKTsgfQotICAgIHZvaWQgc2V0UGF5bG9h
ZHMoVmVjdG9yPE1lZGlhUGF5bG9hZD4mJiBwYXlsb2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9h
ZHM7IH0KLSAgICB2b2lkIHNldFBheWxvYWRzKGNvbnN0IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBw
YXlsb2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9hZHM7IH0KKyAgICBWZWN0b3I8dW5zaWduZWQ+
IHNzcmNzOworICAgIFN0cmluZyBjbmFtZTsKIAotICAgIGJvb2wgcnRjcE11eCgpIGNvbnN0IHsg
cmV0dXJuIG1fcnRjcE11eDsgfQotICAgIHZvaWQgc2V0UnRjcE11eChib29sIHJ0Y3BNdXgpIHsg
bV9ydGNwTXV4ID0gcnRjcE11eDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBydGNwQWRkcmVzcygp
IGNvbnN0IHsgcmV0dXJuIG1fcnRjcEFkZHJlc3M7IH0KLSAgICB2b2lkIHNldFJ0Y3BBZGRyZXNz
KGNvbnN0IFN0cmluZyYgcnRjcEFkZHJlc3MpIHsgbV9ydGNwQWRkcmVzcyA9IHJ0Y3BBZGRyZXNz
OyB9Ci0KLSAgICB1bnNpZ25lZCBzaG9ydCBydGNwUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRj
cFBvcnQ7IH0KLSAgICB2b2lkIHNldFJ0Y3BQb3J0KHVuc2lnbmVkIHNob3J0IHJ0Y3BQb3J0KSB7
IG1fcnRjcFBvcnQgPSBydGNwUG9ydDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVh
bUlkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUlkOyB9Ci0gICAgdm9pZCBzZXRNZWRp
YVN0cmVhbUlkKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1JZCkgeyBtX21lZGlhU3RyZWFtSWQg
PSBtZWRpYVN0cmVhbUlkOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtVHJhY2tJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1UcmFja0lkOyB9Ci0gICAgdm9pZCBzZXRN
ZWRpYVN0cmVhbVRyYWNrSWQoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbVRyYWNrSWQpIHsgbV9t
ZWRpYVN0cmVhbVRyYWNrSWQgPSBtZWRpYVN0cmVhbVRyYWNrSWQ7IH0KLQotICAgIGNvbnN0IFN0
cmluZyYgZHRsc1NldHVwKCkgY29uc3QgeyByZXR1cm4gbV9kdGxzU2V0dXA7IH0KLSAgICB2b2lk
IHNldER0bHNTZXR1cChjb25zdCBTdHJpbmcmIGR0bHNTZXR1cCkgeyBtX2R0bHNTZXR1cCA9IGR0
bHNTZXR1cDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsgfQotICAg
IHZvaWQgc2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZHRsc0Zp
bmdlcnByaW50SGFzaEZ1bmN0aW9uKSB7IG1fZHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uID0g
ZHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGR0bHNG
aW5nZXJwcmludCgpIGNvbnN0IHsgcmV0dXJuIG1fZHRsc0ZpbmdlcnByaW50OyB9Ci0gICAgdm9p
ZCBzZXREdGxzRmluZ2VycHJpbnQoY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnQpIHsgbV9k
dGxzRmluZ2VycHJpbnQgPSBkdGxzRmluZ2VycHJpbnQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
Y25hbWUoKSBjb25zdCB7IHJldHVybiBtX2NuYW1lOyB9Ci0gICAgdm9pZCBzZXRDbmFtZShjb25z
dCBTdHJpbmcmIGNuYW1lKSB7IG1fY25hbWUgPSBjbmFtZTsgfQotCi0gICAgY29uc3QgVmVjdG9y
PHVuc2lnbmVkPiYgc3NyY3MoKSBjb25zdCB7IHJldHVybiBtX3NzcmNzOyB9Ci0gICAgdm9pZCBh
ZGRTc3JjKHVuc2lnbmVkIHNzcmMpIHsgbV9zc3Jjcy5hcHBlbmQoc3NyYyk7IH0KLSAgICB2b2lk
IGNsZWFyU3NyY3MoKSB7IG1fc3NyY3MuY2xlYXIoKTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBp
Y2VVZnJhZygpIGNvbnN0IHsgcmV0dXJuIG1faWNlVWZyYWc7IH0KLSAgICB2b2lkIHNldEljZVVm
cmFnKGNvbnN0IFN0cmluZyYgaWNlVWZyYWcpIHsgbV9pY2VVZnJhZyA9IGljZVVmcmFnOyB9Ci0K
LSAgICBjb25zdCBTdHJpbmcmIGljZVBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV9pY2VQYXNz
d29yZDsgfQotICAgIHZvaWQgc2V0SWNlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBpY2VQYXNzd29y
ZCkgeyBtX2ljZVBhc3N3b3JkID0gaWNlUGFzc3dvcmQ7IH0KLQotICAgIGNvbnN0IFZlY3RvcjxJ
Y2VDYW5kaWRhdGU+JiBpY2VDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VDYW5kaWRh
dGVzOyB9Ci0gICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRl
KSB7IG1faWNlQ2FuZGlkYXRlcy5hcHBlbmQoV1RGTW92ZShjYW5kaWRhdGUpKTsgfQotCi0gICAg
UmVmUHRyPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+IGNvcHkgPSBjcmVhdGUoKTsKLQotICAgICAg
ICBjb3B5LT5tX3R5cGUgPSBTdHJpbmcobV90eXBlKTsKLSAgICAgICAgY29weS0+bV9wb3J0ID0g
bV9wb3J0OwotICAgICAgICBjb3B5LT5tX2FkZHJlc3MgPSBTdHJpbmcobV9hZGRyZXNzKTsKLSAg
ICAgICAgY29weS0+bV9tb2RlID0gU3RyaW5nKG1fbW9kZSk7Ci0gICAgICAgIGNvcHktPm1fbWlk
ID0gU3RyaW5nKG1fbWlkKTsKLQotICAgICAgICBjb3B5LT5tX3BheWxvYWRzID0gbV9wYXlsb2Fk
czsKLQotICAgICAgICBjb3B5LT5tX3J0Y3BNdXggPSBtX3J0Y3BNdXg7Ci0gICAgICAgIGNvcHkt
Pm1fcnRjcEFkZHJlc3MgPSBTdHJpbmcobV9ydGNwQWRkcmVzcyk7Ci0gICAgICAgIGNvcHktPm1f
cnRjcFBvcnQgPSBtX3J0Y3BQb3J0OwotCi0gICAgICAgIGNvcHktPm1fbWVkaWFTdHJlYW1JZCA9
IFN0cmluZyhtX21lZGlhU3RyZWFtSWQpOwotICAgICAgICBjb3B5LT5tX21lZGlhU3RyZWFtVHJh
Y2tJZCA9IFN0cmluZyhtX21lZGlhU3RyZWFtVHJhY2tJZCk7Ci0KLSAgICAgICAgY29weS0+bV9k
dGxzU2V0dXAgPSBTdHJpbmcobV9kdGxzU2V0dXApOwotICAgICAgICBjb3B5LT5tX2R0bHNGaW5n
ZXJwcmludEhhc2hGdW5jdGlvbiA9IFN0cmluZyhtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlv
bik7Ci0gICAgICAgIGNvcHktPm1fZHRsc0ZpbmdlcnByaW50ID0gU3RyaW5nKG1fZHRsc0Zpbmdl
cnByaW50KTsKLQotICAgICAgICBmb3IgKGF1dG8gc3NyYyA6IG1fc3NyY3MpCi0gICAgICAgICAg
ICBjb3B5LT5tX3NzcmNzLmFwcGVuZChzc3JjKTsKLQotICAgICAgICBjb3B5LT5tX2NuYW1lID0g
U3RyaW5nKG1fY25hbWUpOwotCi0gICAgICAgIGNvcHktPm1faWNlVWZyYWcgPSBTdHJpbmcobV9p
Y2VVZnJhZyk7Ci0gICAgICAgIGNvcHktPm1faWNlUGFzc3dvcmQgPSBTdHJpbmcobV9pY2VQYXNz
d29yZCk7Ci0KLSAgICAgICAgY29weS0+bV9pY2VDYW5kaWRhdGVzID0gbV9pY2VDYW5kaWRhdGVz
OwotCi0gICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBQZWVyTWVk
aWFEZXNjcmlwdGlvbigpIHsgfQotCi0gICAgU3RyaW5nIG1fdHlwZTsKLSAgICB1bnNpZ25lZCBz
aG9ydCBtX3BvcnQgeyA5IH07Ci0gICAgU3RyaW5nIG1fYWRkcmVzcyB7ICIwLjAuMC4wIiB9Owot
ICAgIFN0cmluZyBtX21vZGUgeyAic2VuZHJlY3YiIH07Ci0gICAgU3RyaW5nIG1fbWlkOwotCi0g
ICAgVmVjdG9yPE1lZGlhUGF5bG9hZD4gbV9wYXlsb2FkczsKLQotICAgIGJvb2wgbV9ydGNwTXV4
IHsgdHJ1ZSB9OwotICAgIFN0cmluZyBtX3J0Y3BBZGRyZXNzOwotICAgIHVuc2lnbmVkIHNob3J0
IG1fcnRjcFBvcnQgeyAwIH07Ci0KLSAgICBTdHJpbmcgbV9tZWRpYVN0cmVhbUlkOwotICAgIFN0
cmluZyBtX21lZGlhU3RyZWFtVHJhY2tJZDsKLQotICAgIFN0cmluZyBtX2R0bHNTZXR1cCB7ICJh
Y3RwYXNzIiB9OwotICAgIFN0cmluZyBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsKLSAg
ICBTdHJpbmcgbV9kdGxzRmluZ2VycHJpbnQ7Ci0KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fc3Ny
Y3M7Ci0gICAgU3RyaW5nIG1fY25hbWU7Ci0KLSAgICBTdHJpbmcgbV9pY2VVZnJhZzsKLSAgICBT
dHJpbmcgbV9pY2VQYXNzd29yZDsKLSAgICBWZWN0b3I8SWNlQ2FuZGlkYXRlPiBtX2ljZUNhbmRp
ZGF0ZXM7CisgICAgU3RyaW5nIGljZVVmcmFnOworICAgIFN0cmluZyBpY2VQYXNzd29yZDsKKyAg
ICBWZWN0b3I8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGVzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCi0KLSNlbmRpZiAvLyBQZWVy
TWVkaWFEZXNjcmlwdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApp
bmRleCA2MTIwMWUxMGFkMTY3ZjEyYjAwNWJmMDJlMjg5ODYwYjMxYjExYTY1Li40YTk2YzZmOGVk
OTA1NzE2ODY5YTJjMjJjN2U1ZGY5OTUzYTMyYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5jcHAKQEAgLTI2MCwyNSArMjYwLDI1IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0
ZVJlc3VsdCBNZWRpYUVuZHBvaW50T3dyOjp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVu
ZHBvCiAgICAgZW5zdXJlVHJhbnNwb3J0QWdlbnRBbmRUcmFuc2NlaXZlcnMoaXNJbml0aWF0b3Is
IHRyYW5zY2VpdmVyQ29uZmlncyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90
cmFuc2NlaXZlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgT3dyU2Vzc2lvbiogc2Vzc2lvbiA9
IG1fdHJhbnNjZWl2ZXJzW2ldLT5zZXNzaW9uKCk7Ci0gICAgICAgIFBlZXJNZWRpYURlc2NyaXB0
aW9uJiBtZGVzYyA9ICpjb25maWd1cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldOworICAg
ICAgICBhdXRvKiBzZXNzaW9uID0gbV90cmFuc2NlaXZlcnNbaV0tPnNlc3Npb24oKTsKKyAgICAg
ICAgYXV0byYgbWRlc2MgPSAqY29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsK
IAotICAgICAgICBpZiAobWRlc2MudHlwZSgpID09ICJhdWRpbyIgfHwgbWRlc2MudHlwZSgpID09
ICJ2aWRlbyIpCi0gICAgICAgICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgInJ0Y3AtbXV4Iiwg
bWRlc2MucnRjcE11eCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1
ZGlvIiB8fCBtZGVzYy50eXBlID09ICJ2aWRlbyIpCisgICAgICAgICAgICBnX29iamVjdF9zZXQo
c2Vzc2lvbiwgInJ0Y3AtbXV4IiwgbWRlc2MucnRjcE11eCwgbnVsbHB0cik7CiAKLSAgICAgICAg
aWYgKG1kZXNjLmljZUNhbmRpZGF0ZXMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgY2FuZGlkYXRlIDogbWRlc2MuaWNlQ2FuZGlkYXRlcygpKQotICAgICAgICAgICAgICAgIGlu
dGVybmFsQWRkUmVtb3RlQ2FuZGlkYXRlKHNlc3Npb24sIGNhbmRpZGF0ZSwgbWRlc2MuaWNlVWZy
YWcoKSwgbWRlc2MuaWNlUGFzc3dvcmQoKSk7CisgICAgICAgIGlmIChtZGVzYy5pY2VDYW5kaWRh
dGVzLnNpemUoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZGVzYy5p
Y2VDYW5kaWRhdGVzKQorICAgICAgICAgICAgICAgIGludGVybmFsQWRkUmVtb3RlQ2FuZGlkYXRl
KHNlc3Npb24sIGNhbmRpZGF0ZSwgbWRlc2MuaWNlVWZyYWcsIG1kZXNjLmljZVBhc3N3b3JkKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgbV9udW1iZXJPZlNlbmRQcmVwYXJlZFNlc3Np
b25zKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCFzZW5kU291cmNlTWFw
LmNvbnRhaW5zKG1kZXNjLm1pZCgpKSkKKyAgICAgICAgaWYgKCFzZW5kU291cmNlTWFwLmNvbnRh
aW5zKG1kZXNjLm1pZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBN
ZWRpYVBheWxvYWQqIHBheWxvYWQgPSBudWxscHRyOwotICAgICAgICBmb3IgKGF1dG8mIHAgOiBt
ZGVzYy5wYXlsb2FkcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcCA6IG1kZXNjLnBheWxvYWRz
KSB7CiAgICAgICAgICAgICBpZiAocC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNh
c2UoKSAhPSAiUlRYIikgewogICAgICAgICAgICAgICAgIHBheWxvYWQgPSAmcDsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI4OCwxNCArMjg4LDE0IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0
ZVJlc3VsdCBNZWRpYUVuZHBvaW50T3dyOjp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVu
ZHBvCiAgICAgICAgIGlmICghcGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBVcGRhdGVSZXN1
bHQ6OkZhaWxlZDsKIAotICAgICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQo
bWRlc2MucGF5bG9hZHMoKSwgcGF5bG9hZC0+dHlwZSk7Ci0gICAgICAgIGF1dG8qIHNvdXJjZSA9
IHN0YXRpY19jYXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IqPihzZW5kU291cmNlTWFwLmdldCht
ZGVzYy5taWQoKSkpOworICAgICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQo
bWRlc2MucGF5bG9hZHMsIHBheWxvYWQtPnR5cGUpOworICAgICAgICBhdXRvKiBzb3VyY2UgPSBz
dGF0aWNfY2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyKj4oc2VuZFNvdXJjZU1hcC5nZXQobWRl
c2MubWlkKSk7CiAKICAgICAgICAgQVNTRVJUKGNvZGVjVHlwZXMuZmluZChwYXlsb2FkLT5lbmNv
ZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSkgIT0gbm90Rm91bmQpOwogICAgICAg
ICBhdXRvIGNvZGVjVHlwZSA9IHN0YXRpY19jYXN0PE93ckNvZGVjVHlwZT4oY29kZWNUeXBlcy5m
aW5kKHBheWxvYWQtPmVuY29kaW5nTmFtZS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKSk7CiAK
ICAgICAgICAgT3dyUGF5bG9hZCogc2VuZFBheWxvYWQ7Ci0gICAgICAgIGlmIChtZGVzYy50eXBl
KCkgPT0gImF1ZGlvIikKKyAgICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1ZGlvIikKICAgICAg
ICAgICAgIHNlbmRQYXlsb2FkID0gb3dyX2F1ZGlvX3BheWxvYWRfbmV3KGNvZGVjVHlwZSwgcGF5
bG9hZC0+dHlwZSwgcGF5bG9hZC0+Y2xvY2tSYXRlLCBwYXlsb2FkLT5jaGFubmVscyk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgc2VuZFBheWxvYWQgPSBvd3JfdmlkZW9fcGF5bG9hZF9u
ZXcoY29kZWNUeXBlLCBwYXlsb2FkLT50eXBlLCBwYXlsb2FkLT5jbG9ja1JhdGUsIHBheWxvYWQt
PmNjbWZpciwgcGF5bG9hZC0+bmFja3BsaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93
ci5oCmluZGV4IGFkMWYyY2EwMjgwNTFmMmFjYzNhY2Y3ZjZiMzM0NGJiNmRiZDcwODEuLjM4ODBh
ODFhYjdiZWU5ODhiNTYxNTM0Mjk0MmFiN2Y5NTQ5ZjkwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVk
aWFFbmRwb2ludE93ci5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IF9Pd3JUcmFu
c3BvcnRBZ2VudCBPd3JUcmFuc3BvcnRBZ2VudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKK3N0cnVjdCBQZWVyTWVkaWFEZXNjcmlwdGlvbjsK
IGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uUHJp
dmF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVk
aWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcAppbmRleCBmOTE5YTQ2OTFhMDJiNGVlZjJjMTY1ZWI5Y2VhNDI5NjFmMzI2ZmI5
Li42MTQyMzE1ZDU4YzcwMjcxMDY1OWIzZjdkNTEzOGE3NzRlOGY4ODc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApAQCAtMjI1
LDggKzIyNSw4IEBAIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OmVtdWxhdGVQbGF0Zm9ybUV2ZW50
KGNvbnN0IFN0cmluZyYgYWN0aW9uKQogdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dXBkYXRlQ29u
ZmlndXJhdGlvbk1pZHMoY29uc3QgTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKQogewogICAgIFZlY3RvcjxTdHJpbmc+IG1pZHM7Ci0gICAgZm9yIChjb25z
dCBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+JiBtZWRpYURlc2NyaXB0aW9uIDogY29uZmln
dXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKQotICAgICAgICBtaWRzLmFwcGVuZChtZWRpYURl
c2NyaXB0aW9uLT5taWQoKSk7CisgICAgZm9yIChhdXRvJiBtZWRpYURlc2NyaXB0aW9uIDogY29u
ZmlndXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKQorICAgICAgICBtaWRzLmFwcGVuZChtZWRp
YURlc2NyaXB0aW9uLm1pZCk7CiAgICAgbV9taWRzLnN3YXAobWlkcyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293014</attachid>
            <date>2016-10-27 05:27:53 -0700</date>
            <delta_ts>2016-10-27 08:16:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164059-20161027142403.patch</filename>
            <type>text/plain</type>
            <size>47928</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg0NTg3YmZlOGEyZjY4
NmQxY2MzOWM1YjU1Yzc5MmFjNjRjYjE3YS4uNjg3ZmRjMmUyNjU4YmIxYTA2NjBkZmVmNDQyYzcx
YTJiODdjZDE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE2LTEwLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQZWVyTWVkaWFEZXNjcmlw
dGlvbiBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlZmNvdW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
T2ZmZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlQW5zd2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3VyY2VNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2Nh
bERlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RJY2VDYW5kaWRhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uZmlndXJhdGlvbkZyb21KU09OKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbmZpZ3VyYXRpb25Ub0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29y
OjpnZW5lcmF0ZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29y
OjpwYXJzZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0lj
ZUNhbmRpZGF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2lu
dFNlc3Npb25Db25maWd1cmF0aW9uOjptZWRpYURlc2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb246OmFkZE1lZGlhRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9u
OjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3Jp
cHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRQYXls
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRTc3JjKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbGVhclNzcmNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRJY2VDYW5kaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6flBlZXJNZWRpYURlc2Ny
aXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
Ojp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
OjpzZXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpwb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpzZXRQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2Ny
aXB0aW9uOjphZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURl
c2NyaXB0aW9uOjpzZXRBZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjptb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjpzZXRNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjptaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVl
ck1lZGlhRGVzY3JpcHRpb246OnNldE1pZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6cGF5bG9hZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldFBheWxvYWRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwTXV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRSdGNwTXV4KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwQWRkcmVzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0UnRjcEFk
ZHJlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246
OnJ0Y3BQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpzZXRSdGNwUG9ydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0TWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1UcmFja0lkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRNZWRpYVN0
cmVhbVRyYWNrSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3Jp
cHRpb246OmR0bHNTZXR1cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6c2V0RHRsc1NldHVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjpkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldER0bHNGaW5nZXJw
cmludEhhc2hGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6ZHRsc0ZpbmdlcnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXREdGxzRmluZ2VycHJpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNuYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRDbmFtZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c3NyY3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmljZVVmcmFnKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRJY2VVZnJh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6aWNl
UGFzc3dvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRp
b246OnNldEljZVBhc3N3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRp
YURlc2NyaXB0aW9uOjppY2VDYW5kaWRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6UGVlck1lZGlhRGVzY3JpcHRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYUVuZHBvaW50TWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRNYWM6OmFkZFJlbW90ZUNhbmRpZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50TWFjOjpPbkljZUNhbmRpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhRW5kcG9pbnRNYWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludE93cjo6dXBkYXRlU2VuZENvbmZp
Z3VyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVk
aWFFbmRwb2ludE93ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZUNvbmZp
Z3VyYXRpb25NaWRzKToKKwogMjAxNi0xMC0yNyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXggZm9yIGdjYy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZDBkYjVkZWFjYWFlNWE5
ODhlNTE5YjQ1YWJmMGNkZWNiOWFhZTI4Li5mODI0ODI2ZmJhMjQ0MGY4MWZmYjE4M2MzYTQ5ZjI3
M2IzYzZiOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjAs
MjEgKzE2MCwyMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2Zm
ZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgogCiAgICAgLy8gUmVtb3ZlIGFu
eSB0cmFuc2NlaXZlciBvYmplY3RzIGZyb20gdHJhbnNjZWl2ZXJzIHRoYXQgY2FuIGJlIG1hdGNo
ZWQgdG8gYW4gZXhpc3RpbmcgbWVkaWEgZGVzY3JpcHRpb24uCiAgICAgZm9yIChhdXRvJiBtZWRp
YURlc2NyaXB0aW9uIDogY29uZmlndXJhdGlvblNuYXBzaG90LT5tZWRpYURlc2NyaXB0aW9ucygp
KSB7Ci0gICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbi0+cG9ydCgpKSB7CisgICAgICAgIGlm
ICghbWVkaWFEZXNjcmlwdGlvbi5wb3J0KSB7CiAgICAgICAgICAgICAvLyBUaGlzIG1lZGlhIGRl
c2NyaXB0aW9uIHNob3VsZCBiZSByZWN5Y2xlZC4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hU
cmFuc2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgbWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOwor
ICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVy
QnlNaWQodHJhbnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAgICAgICAgIGlmICgh
dHJhbnNjZWl2ZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLT5zZXRNb2RlKHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmcoKSk7CisgICAgICAg
IG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9IHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmcoKTsK
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5oYXNTZW5kaW5nRGlyZWN0aW9uKCkpIHsKICAgICAg
ICAgICAgIFJUQ1J0cFNlbmRlciYgc2VuZGVyID0gKnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKIAot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzZW5kZXIubWVk
aWFTdHJlYW1JZHMoKVswXSk7Ci0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRp
YVN0cmVhbVRyYWNrSWQoc2VuZGVyLnRyYWNrSWQoKSk7CisgICAgICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXTsKKyAgICAg
ICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkID0gc2VuZGVyLnRyYWNr
SWQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHRyYW5zY2VpdmVycy5yZW1vdmVGaXJzdCh0cmFu
c2NlaXZlcik7CkBAIC0xODIsMjMgKzE4MiwyMyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbjo6Y3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgog
CiAgICAgLy8gQWRkIG1lZGlhIGRlc2NyaXB0aW9ucyBmb3IgcmVtYWluaW5nIHRyYW5zY2VpdmVy
cy4KICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzKSB7Ci0gICAgICAg
IFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gbWVkaWFEZXNjcmlwdGlvbiA9IFBlZXJNZWRp
YURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24gbWVk
aWFEZXNjcmlwdGlvbjsKICAgICAgICAgUlRDUnRwU2VuZGVyJiBzZW5kZXIgPSAqdHJhbnNjZWl2
ZXItPnNlbmRlcigpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1vZGUodHJhbnNj
ZWl2ZXItPmRpcmVjdGlvblN0cmluZygpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0
TWlkKHRyYW5zY2VpdmVyLT5wcm92aXNpb25hbE1pZCgpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXSk7Ci0gICAg
ICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldFR5cGUoc2VuZGVyLnRyYWNrS2luZCgpKTsKLSAgICAg
ICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0UGF5bG9hZHMoc2VuZGVyLnRyYWNrS2luZCgpID09ICJh
dWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2Fkcyk7
Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlv
bihtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+
c2V0RHRsc0ZpbmdlcnByaW50KG1fZHRsc0ZpbmdlcnByaW50KTsKLSAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0Q25hbWUobV9jbmFtZSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPmFk
ZFNzcmMoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7Ci0gICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24tPnNldEljZVVmcmFnKG1faWNlVWZyYWcpOwotICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLT5zZXRJY2VQYXNzd29yZChtX2ljZVBhc3N3b3JkKTsKKyAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi5tb2RlID0gdHJhbnNjZWl2ZXItPmRpcmVjdGlvblN0cmluZygpOworICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLm1pZCA9IHRyYW5zY2VpdmVyLT5wcm92aXNpb25hbE1pZCgpOworICAgICAg
ICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMo
KVswXTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi50eXBlID0gc2VuZGVyLnRyYWNrS2luZCgp
OworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLnBheWxvYWRzID0gc2VuZGVyLnRyYWNrS2luZCgp
ID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXls
b2FkczsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rp
b24gPSBtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uOworICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LmR0bHNGaW5nZXJwcmludCA9IG1fZHRsc0ZpbmdlcnByaW50OworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLmNuYW1lID0gbV9jbmFtZTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5hZGRTc3Jj
KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLmljZVVmcmFnID0gbV9pY2VVZnJhZzsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5pY2VQ
YXNzd29yZCA9IG1faWNlUGFzc3dvcmQ7CiAKICAgICAgICAgaWYgKHNlbmRlci50cmFjaygpKQot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1UcmFja0lkKHNlbmRl
ci50cmFja0lkKCkpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRy
YWNrSWQgPSBzZW5kZXIudHJhY2tJZCgpOwogCiAgICAgICAgIGNvbmZpZ3VyYXRpb25TbmFwc2hv
dC0+YWRkTWVkaWFEZXNjcmlwdGlvbihXVEZNb3ZlKG1lZGlhRGVzY3JpcHRpb24pKTsKICAgICB9
CkBAIC0yMzMsNTEgKzIzMyw1MSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlQW5zd2VyVGFzayhSVENBbnN3ZXJPcHRpb25zJiwgU2Vzc2lvbkRlcwogICAgIGNvbmZp
Z3VyYXRpb25TbmFwc2hvdC0+c2V0U2Vzc2lvblZlcnNpb24obV9zZHBBbnN3ZXJTZXNzaW9uVmVy
c2lvbisrKTsKIAogICAgIGF1dG8gdHJhbnNjZWl2ZXJzID0gUnRwVHJhbnNjZWl2ZXJWZWN0b3Io
bV9jbGllbnQtPmdldFRyYW5zY2VpdmVycygpKTsKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9u
VmVjdG9yJiByZW1vdGVNZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRp
b24oKS0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOworICAgIGF1dG8mIHJl
bW90ZU1lZGlhRGVzY3JpcHRpb25zID0gaW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpLT5jb25m
aWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
UGVlck1lZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAqcmVtb3RlTWVk
aWFEZXNjcmlwdGlvbnNbaV07CisgICAgICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24g
PSByZW1vdGVNZWRpYURlc2NyaXB0aW9uc1tpXTsKIAotICAgICAgICBSVENSdHBUcmFuc2NlaXZl
ciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1v
dGVNZWRpYURlc2NyaXB0aW9uLm1pZCgpKTsKKyAgICAgICAgYXV0byogdHJhbnNjZWl2ZXIgPSBt
YXRjaFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRpYURlc2NyaXB0aW9u
Lm1pZCk7CiAgICAgICAgIGlmICghdHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyB0cmFuc2NlaXZlciBmb3IgcmVtb3RlIGRlc2Ny
aXB0aW9uIHdoaWxlIGNyZWF0aW5nIGFuc3dlciIpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoaSA+PSBjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlh
RGVzY3JpcHRpb25zKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld01lZGlhRGVzY3Jp
cHRpb24gPSBQZWVyTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBQZWVy
TWVkaWFEZXNjcmlwdGlvbiBuZXdNZWRpYURlc2NyaXB0aW9uOwogCiAgICAgICAgICAgICBSVENS
dHBTZW5kZXImIHNlbmRlciA9ICp0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAgICAgICAgICAgICBp
ZiAoc2VuZGVyLnRyYWNrKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VuZGVyLm1lZGlhU3Ry
ZWFtSWRzKCkuc2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
LT5zZXRNZWRpYVN0cmVhbUlkKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdKTsKLSAgICAgICAg
ICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbVRyYWNrSWQoc2VuZGVy
LnRyYWNrSWQoKSk7Ci0gICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+YWRkU3Ny
YyhjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbUlkID0gc2VuZGVyLm1lZGlhU3RyZWFtSWRz
KClbMF07CisgICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRy
YWNrSWQgPSBzZW5kZXIudHJhY2tJZCgpOworICAgICAgICAgICAgICAgIG5ld01lZGlhRGVzY3Jp
cHRpb24uYWRkU3NyYyhjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZSh0cmFuc2Nl
aXZlci0+ZGlyZWN0aW9uU3RyaW5nKCkpOwotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlv
bi0+c2V0VHlwZShyZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGUoKSk7Ci0gICAgICAgICAgICBu
ZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRNaWQocmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5taWQoKSk7
Ci0gICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzU2V0dXAocmVtb3RlTWVk
aWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAoKSA9PSAiYWN0aXZlIiA/ICJwYXNzaXZlIiA6ICJhY3Rp
dmUiKTsKLSAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmlu
dEhhc2hGdW5jdGlvbihtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uKTsKLSAgICAgICAgICAgIG5l
d01lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludChtX2R0bHNGaW5nZXJwcmludCk7
Ci0gICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRDbmFtZShtX2NuYW1lKTsKLSAg
ICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldEljZVVmcmFnKG1faWNlVWZyYWcpOwot
ICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlUGFzc3dvcmQobV9pY2VQYXNz
d29yZCk7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLm1vZGUgPSB0cmFuc2NlaXZl
ci0+ZGlyZWN0aW9uU3RyaW5nKCk7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLnR5
cGUgPSByZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGU7CisgICAgICAgICAgICBuZXdNZWRpYURl
c2NyaXB0aW9uLm1pZCA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ubWlkOworICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAgPSByZW1vdGVNZWRpYURlc2NyaXB0aW9uLmR0
bHNTZXR1cCA9PSAiYWN0aXZlIiA/ICJwYXNzaXZlIiA6ICJhY3RpdmUiOworICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24gPSBtX2R0bHNG
aW5nZXJwcmludEZ1bmN0aW9uOworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxz
RmluZ2VycHJpbnQgPSBtX2R0bHNGaW5nZXJwcmludDsKKyAgICAgICAgICAgIG5ld01lZGlhRGVz
Y3JpcHRpb24uY25hbWUgPSBtX2NuYW1lOworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlv
bi5pY2VVZnJhZyA9IG1faWNlVWZyYWc7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
LmljZVBhc3N3b3JkID0gbV9pY2VQYXNzd29yZDsKIAogICAgICAgICAgICAgY29uZmlndXJhdGlv
blNuYXBzaG90LT5hZGRNZWRpYURlc2NyaXB0aW9uKFdURk1vdmUobmV3TWVkaWFEZXNjcmlwdGlv
bikpOwogICAgICAgICB9CiAKLSAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIGxvY2FsTWVk
aWFEZXNjcmlwdGlvbiA9ICpjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25z
KClbaV07CisgICAgICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uJiBsb2NhbE1lZGlhRGVzY3JpcHRp
b24gPSBjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25zKClbaV07CiAKLSAg
ICAgICAgbG9jYWxNZWRpYURlc2NyaXB0aW9uLnNldFBheWxvYWRzKHJlbW90ZU1lZGlhRGVzY3Jp
cHRpb24ucGF5bG9hZHMoKSk7Ci0gICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5zZXRSdGNw
TXV4KHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ucnRjcE11eCgpKTsKKyAgICAgICAgbG9jYWxNZWRp
YURlc2NyaXB0aW9uLnBheWxvYWRzID0gcmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkczsK
KyAgICAgICAgbG9jYWxNZWRpYURlc2NyaXB0aW9uLnJ0Y3BNdXggPSByZW1vdGVNZWRpYURlc2Ny
aXB0aW9uLnJ0Y3BNdXg7CiAKLSAgICAgICAgaWYgKCFsb2NhbE1lZGlhRGVzY3JpcHRpb24uc3Ny
Y3MoKS5zaXplKCkpCisgICAgICAgIGlmICghbG9jYWxNZWRpYURlc2NyaXB0aW9uLnNzcmNzLnNp
emUoKSkKICAgICAgICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5hZGRTc3JjKGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOwogCi0gICAgICAgIGlmIChsb2NhbE1lZGlhRGVzY3Jp
cHRpb24uZHRsc1NldHVwKCkgPT0gImFjdHBhc3MiKQotICAgICAgICAgICAgbG9jYWxNZWRpYURl
c2NyaXB0aW9uLnNldER0bHNTZXR1cCgicGFzc2l2ZSIpOworICAgICAgICBpZiAobG9jYWxNZWRp
YURlc2NyaXB0aW9uLmR0bHNTZXR1cCA9PSAiYWN0cGFzcyIpCisgICAgICAgICAgICBsb2NhbE1l
ZGlhRGVzY3JpcHRpb24uZHRsc1NldHVwID0gInBhc3NpdmUiOwogCiAgICAgICAgIHRyYW5zY2Vp
dmVycy5yZW1vdmVGaXJzdCh0cmFuc2NlaXZlcik7CiAgICAgfQpAQCAtMjk1LDExICsyOTUsMTEg
QEAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAgY3JlYXRlU291cmNlTWFwKGNvbnN0IE1l
ZGlhRGVzY3JpcHRpb25WZWN0b3ImIHJlbW8KICAgICBSZWFsdGltZU1lZGlhU291cmNlTWFwIHNv
dXJjZU1hcDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZW1vdGVNZWRpYURlc2Ny
aXB0aW9ucy5zaXplKCkgJiYgaSA8IGxvY2FsTWVkaWFEZXNjcmlwdGlvbkNvdW50OyArK2kpIHsK
LSAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAq
cmVtb3RlTWVkaWFEZXNjcmlwdGlvbnNbaV07Ci0gICAgICAgIGlmIChyZW1vdGVNZWRpYURlc2Ny
aXB0aW9uLnR5cGUoKSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSgp
ICE9ICJ2aWRlbyIpCisgICAgICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSByZW1v
dGVNZWRpYURlc2NyaXB0aW9uc1tpXTsKKyAgICAgICAgaWYgKHJlbW90ZU1lZGlhRGVzY3JpcHRp
b24udHlwZSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSAhPSAidmlk
ZW8iKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIq
IHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgcmVtb3Rl
TWVkaWFEZXNjcmlwdGlvbi5taWQoKSk7CisgICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFu
c2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIHJlbW90ZU1lZGlh
RGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgaWYgKHRyYW5zY2VpdmVyKSB7CiAgICAgICAgICAg
ICBpZiAodHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSAmJiB0cmFuc2NlaXZlci0+
c2VuZGVyKCktPnRyYWNrKCkpCiAgICAgICAgICAgICAgICAgc291cmNlTWFwLnNldCh0cmFuc2Nl
aXZlci0+bWlkKCksICZ0cmFuc2NlaXZlci0+c2VuZGVyKCktPnRyYWNrKCktPnNvdXJjZSgpKTsK
QEAgLTM1OSwxMSArMzU5LDkgQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNl
dExvY2FsRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzY3IKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEFzc29jaWF0ZSBtZWRpYSBkZXNjcmlwdGlvbnMgd2l0aCB0cmFuc2NlaXZl
cnMgKHNldCBwcm92aXNpb25hbCBtaWQgdG8gJ2ZpbmFsJyBtaWQpLgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBwcmV2aW91c051bWJlck9mTWVkaWFEZXNjcmlwdGlvbnM7IGkgPCBtZWRpYURl
c2NyaXB0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRp
b24mIG1lZGlhRGVzY3JpcHRpb24gPSAqbWVkaWFEZXNjcmlwdGlvbnNbaV07Ci0KKyAgICAgICAg
Zm9yIChhdXRvJiBtZWRpYURlc2NyaXB0aW9uIDogbWVkaWFEZXNjcmlwdGlvbnMpIHsKICAgICAg
ICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXIo
dHJhbnNjZWl2ZXJzLCBbJm1lZGlhRGVzY3JpcHRpb25dIChSVENSdHBUcmFuc2NlaXZlciYgY3Vy
cmVudCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50LnByb3Zpc2lvbmFsTWlkKCkg
PT0gbWVkaWFEZXNjcmlwdGlvbi5taWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dC5wcm92aXNpb25hbE1pZCgpID09IG1lZGlhRGVzY3JpcHRpb24ubWlkOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBpZiAodHJhbnNjZWl2ZXIpCiAgICAgICAgICAgICAgICAgdHJhbnNj
ZWl2ZXItPnNldE1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSk7CkBAIC00NjQsMTMg
KzQ2MiwxMiBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVz
Y3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvblZlY3RvciYgbWVkaWFEZXNjcmlwdGlvbnMg
PSBuZXdEZXNjcmlwdGlvbi0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOwor
ICAgIGF1dG8mIG1lZGlhRGVzY3JpcHRpb25zID0gbmV3RGVzY3JpcHRpb24tPmNvbmZpZ3VyYXRp
b24oKS0+bWVkaWFEZXNjcmlwdGlvbnMoKTsKICAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRp
b24gOiBtZWRpYURlc2NyaXB0aW9ucykgewotICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbi0+
dHlwZSgpICE9ICJhdWRpbyIgJiYgbWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpICE9ICJ2aWRlbyIp
CisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLnR5cGUgIT0gImF1ZGlvIiAmJiBtZWRpYURl
c2NyaXB0aW9uLnR5cGUgIT0gInZpZGVvIikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldFBheWxvYWRzKG1fbWVkaWFFbmRwb2ludC0+ZmlsdGVy
UGF5bG9hZHMobWVkaWFEZXNjcmlwdGlvbi0+cGF5bG9hZHMoKSwKLSAgICAgICAgICAgIG1lZGlh
RGVzY3JpcHRpb24tPnR5cGUoKSA9PSAiYXVkaW8iID8gbV9kZWZhdWx0QXVkaW9QYXlsb2FkcyA6
IG1fZGVmYXVsdFZpZGVvUGF5bG9hZHMpKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5wYXls
b2FkcyA9IG1fbWVkaWFFbmRwb2ludC0+ZmlsdGVyUGF5bG9hZHMobWVkaWFEZXNjcmlwdGlvbi5w
YXlsb2FkcywgbWVkaWFEZXNjcmlwdGlvbi50eXBlID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRp
b1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2Fkcyk7CiAgICAgfQogCiAgICAgYm9vbCBp
c0luaXRpYXRvciA9IG5ld0Rlc2NyaXB0aW9uLT50eXBlKCkgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uOjpTZHBUeXBlOjpBbnN3ZXI7CkBAIC00ODgsMzIgKzQ4NSwzMiBAQCB2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENT
ZXNzaW9uRGVzYwogICAgIC8vIE9uZSBsZWdhY3kgTWVkaWFTdHJlYW1FdmVudCB3aWxsIGJlIGZp
cmVkIGZvciBldmVyeSBuZXcgTWVkaWFTdHJlYW0gY3JlYXRlZCBhcyB0aGlzIHJlbW90ZSBkZXNj
cmlwdGlvbiBpcyBzZXQuCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUV2ZW50Pj4gbGVn
YWN5TWVkaWFTdHJlYW1FdmVudHM7CiAKLSAgICBmb3IgKGF1dG8gbWVkaWFEZXNjcmlwdGlvbiA6
IG1lZGlhRGVzY3JpcHRpb25zKSB7Ci0gICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2Nl
aXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIG1lZGlhRGVzY3JpcHRp
b24tPm1pZCgpKTsKKyAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBtZWRpYURlc2Ny
aXB0aW9ucykgeworICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRj
aFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAg
ICAgICAgIGlmICghdHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIGJvb2wgcmVjZWl2ZU9ubHlG
bGFnID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkg
PT0gInNlbmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkgPT0gInJlY3Zvbmx5Iikg
eworICAgICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAic2VuZHJlY3YiIHx8
IG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAicmVjdm9ubHkiKSB7CiAgICAgICAgICAgICAgICAg
Ly8gVHJ5IHRvIG1hdGNoIGFuIGV4aXN0aW5nIHRyYW5zY2VpdmVyLgogICAgICAgICAgICAgICAg
IHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcih0cmFuc2NlaXZlcnMsIFsmbWVkaWFEZXNj
cmlwdGlvbl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJyZW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3VycmVudC5taWQoKS5pc051bGwoKSAm
JiBjdXJyZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBtZWRpYURlc2NyaXB0aW9uLT50eXBl
KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3Vy
cmVudC5taWQoKS5pc051bGwoKSAmJiBjdXJyZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBt
ZWRpYURlc2NyaXB0aW9uLnR5cGU7CiAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAg
ICAgICBpZiAodHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB0cmFu
c2NlaXZlciB3YXMgY3JlYXRlZCBsb2NhbGx5IHdpdGggYSBwcm92aXNpb25hbCBtaWQuIEl0cyBy
ZWFsIG1pZCB3aWxsIG5vdyBiZSBzZXQgYnkgdGhlIHJlbW90ZQogICAgICAgICAgICAgICAgICAg
ICAvLyBkZXNjcmlwdGlvbiBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbWlkIG9mIHRoZSB0cmFu
c2NlaXZlcidzIG11dGVkIHNvdXJjZSB0byBwcmVzZXJ2ZSB0aGUgYXNzb2NpYXRpb24uCi0gICAg
ICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi0+bWlk
KCkpOwotICAgICAgICAgICAgICAgICAgICBtX21lZGlhRW5kcG9pbnQtPnJlcGxhY2VNdXRlZFJl
bW90ZVNvdXJjZU1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSwgbWVkaWFEZXNjcmlw
dGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2NlaXZlci0+c2V0TWlkKG1l
ZGlhRGVzY3JpcHRpb24ubWlkKTsKKyAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUVuZHBvaW50
LT5yZXBsYWNlTXV0ZWRSZW1vdGVTb3VyY2VNaWQodHJhbnNjZWl2ZXItPnByb3Zpc2lvbmFsTWlk
KCksIG1lZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgcmVjZWl2ZU9ubHlGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCF0cmFuc2NlaXZlcikgewotICAgICAgICAgICAgICAgIGF1dG8gc2Vu
ZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUobWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpLCBWZWN0
b3I8U3RyaW5nPigpLCBtX2NsaWVudC0+c2VuZGVyQ2xpZW50KCkpOwotICAgICAgICAgICAgICAg
IGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlcihtZWRpYURlc2NyaXB0aW9uLT5taWQoKSwg
bWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpLCBtZWRpYURlc2NyaXB0aW9uLT5tZWRpYVN0cmVhbVRy
YWNrSWQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNy
ZWF0ZShtZWRpYURlc2NyaXB0aW9uLnR5cGUsIFZlY3RvcjxTdHJpbmc+KCksIG1fY2xpZW50LT5z
ZW5kZXJDbGllbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJl
Y2VpdmVyKG1lZGlhRGVzY3JpcHRpb24ubWlkLCBtZWRpYURlc2NyaXB0aW9uLnR5cGUsIG1lZGlh
RGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkKTsKIAogICAgICAgICAgICAgICAgIGF1dG8g
bmV3VHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVy
KSwgV1RGTW92ZShyZWNlaXZlcikpOwotICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5z
ZXRNaWQobWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgIG5ld1RyYW5z
Y2VpdmVyLT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi5taWQpOwogICAgICAgICAgICAgICAgIGlm
IChyZWNlaXZlT25seUZsYWcpCiAgICAgICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5k
aXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogCkBAIC01MjIsMTUgKzUxOSwxNSBAQCB2b2lkIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0
cjxSVENTZXNzaW9uRGVzYwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSA9PSAic2VuZHJlY3YiIHx8IG1lZGlhRGVzY3JpcHRp
b24tPm1vZGUoKSA9PSAic2VuZG9ubHkiKSB7CisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9u
Lm1vZGUgPT0gInNlbmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPT0gInNlbmRvbmx5
IikgewogICAgICAgICAgICAgUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyID0gKnRyYW5zY2VpdmVy
LT5yZWNlaXZlcigpOwogICAgICAgICAgICAgaWYgKHJlY2VpdmVyLmlzRGlzcGF0Y2hlZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcmVjZWl2ZXIuc2V0RGlzcGF0
Y2hlZCh0cnVlKTsKIAogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFTdHJlYW1JZHM7
Ci0gICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtSWQoKS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKG1lZGlhRGVzY3Jp
cHRpb24tPm1lZGlhU3RyZWFtSWQoKSk7CisgICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRp
b24ubWVkaWFTdHJlYW1JZC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1J
ZHMuYXBwZW5kKG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1JZCk7CiAKICAgICAgICAgICAg
IC8vIEEgcmVtb3RlIHRyYWNrIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggMC4uKiBNZWRpYVN0cmVh
bXMuIFdlIGNyZWF0ZSBhIG5ldyBzdHJlYW0gZm9yCiAgICAgICAgICAgICAvLyBhIHRyYWNrIGlu
IGNhc2Ugb2YgYW4gdW5yZWNvZ25pemVkIHN0cmVhbSBpZCwgb3IganVzdCBhZGQgdGhlIHRyYWNr
IGlmIHRoZSBzdHJlYW0KQEAgLTY0Niw3ICs2NDMsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6YWRkSWNlQ2FuZGlkYXRlVGFzayhSVENJY2VDYW5kaWRhdGUmIHJ0Y0NhbmRp
ZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvblZl
Y3RvciYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMgPSBpbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9u
KCktPmNvbmZpZ3VyYXRpb24oKS0+bWVkaWFEZXNjcmlwdGlvbnMoKTsKKyAgICBhdXRvJiByZW1v
dGVNZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRpb24oKS0+Y29uZmln
dXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOwogICAgIFBlZXJNZWRpYURlc2NyaXB0aW9u
KiB0YXJnZXRNZWRpYURlc2NyaXB0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFdoZW4gaWRlbnRp
ZnlpbmcgdGhlIHRhcmdldCBtZWRpYSBkZXNjcmlwdGlvbiwgc2RwTWlkIHRha2VzIHByZWNlZGVu
Y2Ugb3ZlciBzZHBNTGluZUluZGV4CkBAIC02NTQsOCArNjUxLDggQEAgdm9pZCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBy
dGNDYW5kaWQKICAgICBpZiAoIXJ0Y0NhbmRpZGF0ZS5zZHBNaWQoKS5pc051bGwoKSkgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIG1pZCA9IHJ0Y0NhbmRpZGF0ZS5zZHBNaWQoKTsKICAgICAgICAg
Zm9yIChhdXRvJiBkZXNjcmlwdGlvbiA6IHJlbW90ZU1lZGlhRGVzY3JpcHRpb25zKSB7Ci0gICAg
ICAgICAgICBpZiAoZGVzY3JpcHRpb24tPm1pZCgpID09IG1pZCkgewotICAgICAgICAgICAgICAg
IHRhcmdldE1lZGlhRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5nZXQoKTsKKyAgICAgICAgICAg
IGlmIChkZXNjcmlwdGlvbi5taWQgPT0gbWlkKSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0TWVk
aWFEZXNjcmlwdGlvbiA9ICZkZXNjcmlwdGlvbjsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjcwLDcgKzY2Nyw3IEBAIHZvaWQgTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGVUYXNrKFJUQ0ljZUNhbmRpZGF0ZSYg
cnRjQ2FuZGlkCiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChPcGVyYXRpb25FcnJvciwgInNk
cE1MaW5lSW5kZXggaXMgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbiA9IHJlbW90ZU1lZGlhRGVzY3Jp
cHRpb25zW3NkcE1MaW5lSW5kZXhdLmdldCgpOworICAgICAgICB0YXJnZXRNZWRpYURlc2NyaXB0
aW9uID0gJnJlbW90ZU1lZGlhRGVzY3JpcHRpb25zW3NkcE1MaW5lSW5kZXhdOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkBAIC02
ODUsNyArNjgyLDggQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNh
bmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBydGNDYW5kaWQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fbWVkaWFFbmRwb2ludC0+YWRkUmVtb3RlQ2FuZGlkYXRlKHJlc3VsdC5j
YW5kaWRhdGUoKSwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+bWlkKCksIHRhcmdldE1lZGlhRGVz
Y3JpcHRpb24tPmljZVVmcmFnKCksIHRhcmdldE1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3Jk
KCkpOworICAgIEFTU0VSVCh0YXJnZXRNZWRpYURlc2NyaXB0aW9uKTsKKyAgICBtX21lZGlhRW5k
cG9pbnQtPmFkZFJlbW90ZUNhbmRpZGF0ZShyZXN1bHQuY2FuZGlkYXRlKCksIHRhcmdldE1lZGlh
RGVzY3JpcHRpb24tPm1pZCwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcsIHRhcmdl
dE1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3JkKTsKIAogICAgIHRhcmdldE1lZGlhRGVzY3Jp
cHRpb24tPmFkZEljZUNhbmRpZGF0ZShXVEZNb3ZlKHJlc3VsdC5jYW5kaWRhdGUoKSkpOwogCkBA
IC04MzcsMTEgKzgzNSwxMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Z290
SWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgbWlkLCBJY2VDYW5kaWRhdAogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9yJiBt
ZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigpLT5jb25maWd1cmF0
aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CisgICAgYXV0byYgbWVkaWFEZXNjcmlwdGlvbnMg
PSBpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2Ny
aXB0aW9ucygpOwogICAgIHNpemVfdCBtZWRpYURlc2NyaXB0aW9uSW5kZXggPSBub3RGb3VuZDsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25zW2ldLT5taWQoKSA9PSBtaWQpIHsK
KyAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25zW2ldLm1pZCA9PSBtaWQpIHsKICAgICAgICAg
ICAgIG1lZGlhRGVzY3JpcHRpb25JbmRleCA9IGk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtODU1LDkgKzg1Myw3IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
Ojpnb3RJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBtaWQsIEljZUNhbmRpZGF0CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvJiBtZWRpYURlc2NyaXB0aW9uID0gbWVkaWFEZXNj
cmlwdGlvbnNbbWVkaWFEZXNjcmlwdGlvbkluZGV4XTsKLSAgICBBU1NFUlQobWVkaWFEZXNjcmlw
dGlvbik7Ci0gICAgbWVkaWFEZXNjcmlwdGlvbi0+YWRkSWNlQ2FuZGlkYXRlKFdURk1vdmUoY2Fu
ZGlkYXRlKSk7CisgICAgbWVkaWFEZXNjcmlwdGlvbnNbbWVkaWFEZXNjcmlwdGlvbkluZGV4XS5h
ZGRJY2VDYW5kaWRhdGUoV1RGTW92ZShjYW5kaWRhdGUpKTsKIAogICAgIG1fY2xpZW50LT5maXJl
RXZlbnQoUlRDSWNlQ2FuZGlkYXRlRXZlbnQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIFJUQ0ljZUNh
bmRpZGF0ZTo6Y3JlYXRlKGNhbmRpZGF0ZUxpbmUsIG1pZCwgbWVkaWFEZXNjcmlwdGlvbkluZGV4
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKaW5kZXggMDEzZDM1ZTJlZjYx
YzI4YzVhYzljNmU4OGY5YTNkZTVjYjYwNzM3Yi4uZTAwNGU0ZDY4YmQzNDg5MDk0ZWE3NWI5YjM1
NDQyNDFhNGEzMGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC00Mywx
MCArNDMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNs
YXNzIE1lZGlhU3RyZWFtVHJhY2s7Ci1jbGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKK3N0cnVj
dCBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFNEUFByb2Nlc3NvcjsKIAotdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFBlZXJNZWRpYURlc2NyaXB0aW9uPj4gTWVkaWFEZXNjcmlwdGlvblZlY3Rv
cjsKK3R5cGVkZWYgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBNZWRpYURlc2NyaXB0aW9u
VmVjdG9yOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IFJ0cFNlbmRlclZl
Y3RvcjsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IFJ0cFRyYW5z
Y2VpdmVyVmVjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1NEUFByb2Nlc3Nvci5jcHAKaW5kZXggZGIyYmQ1Mzc0YmYxN2JkZjA3ZGQxMGIzMzY0MzYy
MzNmNDRlZDFkNC4uOWExMWNhYjI4M2JiNWMyZTA2NmZjYjdmNTQ3ZDEyMmU1ZGQ2ZGQ0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJvY2Vzc29y
LmNwcApAQCAtMTk5LDIyICsxOTksMjIgQEAgc3RhdGljIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vz
c2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNPTihjb25zdCBTdHIKICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVkaWFEZXNjcmlwdGlvbk9iamVjdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25zQXJyYXktPmdl
dChpKS0+YXNPYmplY3QobWVkaWFEZXNjcmlwdGlvbk9iamVjdCk7CiAKLSAgICAgICAgUmVmUHRy
PFBlZXJNZWRpYURlc2NyaXB0aW9uPiBtZWRpYURlc2NyaXB0aW9uID0gUGVlck1lZGlhRGVzY3Jp
cHRpb246OmNyZWF0ZSgpOworICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiBtZWRpYURlc2Ny
aXB0aW9uOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRTdHJpbmco
dHlwZVN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LT5zZXRUeXBlKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24udHlw
ZSA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5n
ZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgaW50VmFsdWUpKQotICAgICAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0UG9ydChpbnRWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LnBvcnQgPSBpbnRWYWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+
Z2V0U3RyaW5nKGFkZHJlc3NTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbi0+c2V0QWRkcmVzcyhzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLmFkZHJlc3MgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFE
ZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1vZGVTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZShzdHJpbmdWYWx1ZSk7CisgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBp
ZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1pZFN0cmluZygpLCBzdHJpbmdW
YWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNaWQoc3RyaW5nVmFsdWUp
OworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5taWQgPSBzdHJpbmdWYWx1ZTsKIAogICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHBheWxvYWRzQXJyYXkgPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdldEFycmF5KHBh
eWxvYWRzU3RyaW5nKCksIHBheWxvYWRzQXJyYXkpOwpAQCAtMjU4LDM3ICsyNTgsMzcgQEAgc3Rh
dGljIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b25Gcm9tSlNPTihjb25zdCBTdHIKICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5hZGRQYXJh
bWV0ZXIoInJ0eFRpbWUiLCBpbnRWYWx1ZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG1lZGlhRGVzY3JpcHRpb24tPmFkZFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSk7CisgICAgICAg
ICAgICBtZWRpYURlc2NyaXB0aW9uLmFkZFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBydGNwT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmpl
Y3QtPmdldE9iamVjdChydGNwU3RyaW5nKCksIHJ0Y3BPYmplY3QpKSB7CiAgICAgICAgICAgICBp
ZiAocnRjcE9iamVjdC0+Z2V0Qm9vbGVhbihtdXhTdHJpbmcoKSwgYm9vbFZhbHVlKSkKLSAgICAg
ICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRSdGNwTXV4KGJvb2xWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5ydGNwTXV4ID0gYm9vbFZhbHVlOwogCiAgICAg
ICAgICAgICBpZiAocnRjcE9iamVjdC0+Z2V0U3RyaW5nKHJ0Y3BBZGRyZXNzU3RyaW5nKCksIHN0
cmluZ1ZhbHVlKSkKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRSdGNwQWRk
cmVzcyhzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5ydGNw
QWRkcmVzcyA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAocnRjcE9iamVjdC0+Z2V0
SW50ZWdlcihydGNwUG9ydFN0cmluZygpLCBpbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbi0+c2V0UnRjcFBvcnQoaW50VmFsdWUpOworICAgICAgICAgICAgICAgIG1l
ZGlhRGVzY3JpcHRpb24ucnRjcFBvcnQgPSBpbnRWYWx1ZTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRTdHJpbmcobWVkaWFTdHJlYW1JZFN0cmlu
ZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRp
YVN0cmVhbUlkKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWVk
aWFTdHJlYW1JZCA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9u
T2JqZWN0LT5nZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5nKCksIHN0cmluZ1ZhbHVl
KSkKLSAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1lZGlhU3RyZWFtVHJhY2tJZChz
dHJpbmdWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtVHJh
Y2tJZCA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGR0
bHNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBpZiAobWVkaWFE
ZXNjcmlwdGlvbk9iamVjdC0+Z2V0T2JqZWN0KGR0bHNTdHJpbmcoKSwgZHRsc09iamVjdCkpIHsK
ICAgICAgICAgICAgIGlmIChkdGxzT2JqZWN0LT5nZXRTdHJpbmcoc2V0dXBTdHJpbmcoKSwgc3Ry
aW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldER0bHNTZXR1
cChzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzU2V0
dXAgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICAgICAgaWYgKGR0bHNPYmplY3QtPmdldFN0cmlu
ZyhmaW5nZXJwcmludEhhc2hGdW5jdGlvblN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAg
ICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9u
KHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmR0bHNGaW5n
ZXJwcmludEhhc2hGdW5jdGlvbiA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAoZHRs
c09iamVjdC0+Z2V0U3RyaW5nKGZpbmdlcnByaW50U3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAg
ICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzRmluZ2VycHJpbnQoc3RyaW5n
VmFsdWUpOworICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50
ID0gc3RyaW5nVmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IHNzcmNzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CkBAIC0yOTYsMTkgKzI5
NiwxOSBAQCBzdGF0aWMgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbkZyb21KU09OKGNvbnN0IFN0cgogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBzc3Jjc0FycmF5LT5sZW5ndGgoKTsgKytqKSB7CiAgICAgICAgICAgICBzc3Jj
c0FycmF5LT5nZXQoaiktPmFzSW50ZWdlcihpbnRWYWx1ZSk7Ci0gICAgICAgICAgICBtZWRpYURl
c2NyaXB0aW9uLT5hZGRTc3JjKGludFZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRp
b24uYWRkU3NyYyhpbnRWYWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWVkaWFEZXNj
cmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKGNuYW1lU3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAg
ICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldENuYW1lKHN0cmluZ1ZhbHVlKTsKKyAgICAg
ICAgICAgIG1lZGlhRGVzY3JpcHRpb24uY25hbWUgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpY2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0T2JqZWN0KGljZVN0
cmluZygpLCBpY2VPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoaWNlT2JqZWN0LT5nZXRTdHJp
bmcodWZyYWdTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24tPnNldEljZVVmcmFnKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLmljZVVmcmFnID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgICAgIGlmIChp
Y2VPYmplY3QtPmdldFN0cmluZyhwYXNzd29yZFN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAg
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlUGFzc3dvcmQoc3RyaW5nVmFsdWUp
OworICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uaWNlUGFzc3dvcmQgPSBzdHJpbmdW
YWx1ZTsKIAogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYW5kaWRhdGVzQXJy
YXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpY2VPYmplY3QtPmdl
dEFycmF5KGNhbmRpZGF0ZXNTdHJpbmcoKSwgY2FuZGlkYXRlc0FycmF5KTsKQEAgLTMxNyw3ICsz
MTcsNyBAQCBzdGF0aWMgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbkZyb21KU09OKGNvbnN0IFN0cgogICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNhbmRpZGF0ZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc0FycmF5LT5nZXQoaiktPmFzT2JqZWN0KGNh
bmRpZGF0ZU9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5hZGRJ
Y2VDYW5kaWRhdGUoY3JlYXRlQ2FuZGlkYXRlKCpjYW5kaWRhdGVPYmplY3QpKTsKKyAgICAgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmFkZEljZUNhbmRpZGF0ZShjcmVhdGVDYW5kaWRhdGUo
KmNhbmRpZGF0ZU9iamVjdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTM1MSwx
OCArMzUxLDE4IEBAIHN0YXRpYyBTdHJpbmcgY29uZmlndXJhdGlvblRvSlNPTihjb25zdCBNZWRp
YUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24mIGNvbmZpCiAKICAgICBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IG1lZGlhRGVzY3JpcHRpb25zQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRl
KCk7CiAKLSAgICBmb3IgKGNvbnN0IFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4mIG1lZGlh
RGVzY3JpcHRpb24gOiBjb25maWd1cmF0aW9uLm1lZGlhRGVzY3JpcHRpb25zKCkpIHsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBjb25maWd1cmF0aW9uLm1lZGlhRGVz
Y3JpcHRpb25zKCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVkaWFEZXNj
cmlwdGlvbk9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAKLSAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKHR5cGVTdHJpbmcoKSwgbWVkaWFEZXNjcmlw
dGlvbi0+dHlwZSgpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0SW50ZWdl
cihwb3J0U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnBvcnQoKSk7Ci0gICAgICAgIG1lZGlh
RGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhhZGRyZXNzU3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24tPmFkZHJlc3MoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0
cmluZyhtb2RlU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSk7Ci0gICAgICAgIG1l
ZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtaWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlw
dGlvbi0+bWlkKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmco
dHlwZVN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLnR5cGUpOworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uT2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5w
b3J0KTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKGFkZHJlc3NT
dHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5hZGRyZXNzKTsKKyAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbk9iamVjdC0+c2V0U3RyaW5nKG1vZGVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5tb2Rl
KTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKG1pZFN0cmluZygp
LCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5
PiBwYXlsb2Fkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgICAgIGZv
ciAoYXV0byYgcGF5bG9hZCA6IG1lZGlhRGVzY3JpcHRpb24tPnBheWxvYWRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBwYXlsb2FkIDogbWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkcykgewogICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGF5bG9hZE9iamVjdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHBheWxvYWRPYmplY3QtPnNldEludGVn
ZXIodHlwZVN0cmluZygpLCBwYXlsb2FkLnR5cGUpOwpAQCAtMzg3LDM1ICszODcsMzUgQEAgc3Rh
dGljIFN0cmluZyBjb25maWd1cmF0aW9uVG9KU09OKGNvbnN0IE1lZGlhRW5kcG9pbnRTZXNzaW9u
Q29uZmlndXJhdGlvbiYgY29uZmkKICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0
QXJyYXkocGF5bG9hZHNTdHJpbmcoKSwgcGF5bG9hZHNBcnJheSk7CiAKICAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcnRjcE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgICAgIHJ0Y3BPYmplY3QtPnNldEJvb2xlYW4obXV4U3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24tPnJ0Y3BNdXgoKSk7Ci0gICAgICAgIHJ0Y3BPYmplY3QtPnNldFN0cmluZyhhZGRyZXNz
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnJ0Y3BBZGRyZXNzKCkpOwotICAgICAgICBydGNw
T2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+cnRjcFBv
cnQoKSk7CisgICAgICAgIHJ0Y3BPYmplY3QtPnNldEJvb2xlYW4obXV4U3RyaW5nKCksIG1lZGlh
RGVzY3JpcHRpb24ucnRjcE11eCk7CisgICAgICAgIHJ0Y3BPYmplY3QtPnNldFN0cmluZyhhZGRy
ZXNzU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24ucnRjcEFkZHJlc3MpOworICAgICAgICBydGNw
T2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5ydGNwUG9y
dCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldE9iamVjdChydGNwU3RyaW5n
KCksIHJ0Y3BPYmplY3QpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0
cmluZyhtZWRpYVN0cmVhbUlkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFt
SWQoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtZWRpYVN0
cmVhbVRyYWNrSWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+bWVkaWFTdHJlYW1UcmFja0lk
KCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJl
YW1JZFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQpOworICAgICAgICBt
ZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5n
KCksIG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkKTsKIAogICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkdGxzT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIG1lZGlhRGVz
Y3JpcHRpb24tPmR0bHNTZXR1cCgpKTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZp
bmdlcnByaW50SGFzaEZ1bmN0aW9uU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmR0bHNGaW5n
ZXJwcmludEhhc2hGdW5jdGlvbigpKTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZp
bmdlcnByaW50U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmR0bHNGaW5nZXJwcmludCgpKTsK
KyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24uZHRsc1NldHVwKTsKKyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnBy
aW50SGFzaEZ1bmN0aW9uU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50
SGFzaEZ1bmN0aW9uKTsKKyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnByaW50
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50KTsKICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0T2JqZWN0KGR0bHNTdHJpbmcoKSwgZHRsc09iamVjdCk7
CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzc3Jjc0FycmF5ID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgICAgIGZvciAoYXV0byBzc3JjIDogbWVkaWFEZXNjcmlw
dGlvbi0+c3NyY3MoKSkKKyAgICAgICAgZm9yIChhdXRvIHNzcmMgOiBtZWRpYURlc2NyaXB0aW9u
LnNzcmNzKQogICAgICAgICAgICAgc3NyY3NBcnJheS0+cHVzaERvdWJsZShzc3JjKTsKICAgICAg
ICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0QXJyYXkoc3NyY3NTdHJpbmcoKSwgc3NyY3NB
cnJheSk7CiAKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKGNuYW1l
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmNuYW1lKCkpOworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcoY25hbWVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5j
bmFtZSk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaWNlT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgaWNlT2JqZWN0LT5zZXRTdHJpbmcodWZy
YWdTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcoKSk7Ci0gICAgICAgIGljZU9i
amVjdC0+c2V0U3RyaW5nKHBhc3N3b3JkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmljZVBh
c3N3b3JkKCkpOworICAgICAgICBpY2VPYmplY3QtPnNldFN0cmluZyh1ZnJhZ1N0cmluZygpLCBt
ZWRpYURlc2NyaXB0aW9uLmljZVVmcmFnKTsKKyAgICAgICAgaWNlT2JqZWN0LT5zZXRTdHJpbmco
cGFzc3dvcmRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5pY2VQYXNzd29yZCk7CiAKICAgICAg
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYW5kaWRhdGVzQXJyYXkgPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CiAKLSAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZWRpYURlc2Ny
aXB0aW9uLT5pY2VDYW5kaWRhdGVzKCkpCisgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDog
bWVkaWFEZXNjcmlwdGlvbi5pY2VDYW5kaWRhdGVzKQogICAgICAgICAgICAgY2FuZGlkYXRlc0Fy
cmF5LT5wdXNoT2JqZWN0KGNyZWF0ZUNhbmRpZGF0ZU9iamVjdChjYW5kaWRhdGUpKTsKIAogICAg
ICAgICBpY2VPYmplY3QtPnNldEFycmF5KGNhbmRpZGF0ZXNTdHJpbmcoKSwgY2FuZGlkYXRlc0Fy
cmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgKaW5kZXgg
YmQyYjA4M2UwODk5NTBlMGFhZGZkY2M2NGM4NjI3MTJiN2Q2YTU4OS4uMjkzY2M4MmVlZWUzMWYw
MzJjMGVjODAyOWI2ZWNjYzY3NTU4YWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Np
b25Db25maWd1cmF0aW9uLmgKQEAgLTUyLDE3ICs1MiwxNiBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgc2Vzc2lvblZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25WZXJzaW9uOyB9CiAg
ICAgdm9pZCBzZXRTZXNzaW9uVmVyc2lvbih1bnNpZ25lZCBzZXNzaW9uVmVyc2lvbikgeyBtX3Nl
c3Npb25WZXJzaW9uID0gc2Vzc2lvblZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8UGVlck1lZGlhRGVzY3JpcHRpb24+PiYgbWVkaWFEZXNjcmlwdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhRGVzY3JpcHRpb25zOyB9Ci0gICAgdm9pZCBhZGRNZWRpYURlc2NyaXB0aW9u
KFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4mJiBkZXNjcmlwdGlvbikgeyBtX21lZGlhRGVz
Y3JpcHRpb25zLmFwcGVuZChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7IH0KKyAgICBWZWN0b3I8UGVl
ck1lZGlhRGVzY3JpcHRpb24+JiBtZWRpYURlc2NyaXB0aW9ucygpIHsgcmV0dXJuIG1fbWVkaWFE
ZXNjcmlwdGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8UGVlck1lZGlhRGVzY3JpcHRpb24+JiBt
ZWRpYURlc2NyaXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFEZXNjcmlwdGlvbnM7IH0K
KyAgICB2b2lkIGFkZE1lZGlhRGVzY3JpcHRpb24oUGVlck1lZGlhRGVzY3JpcHRpb24mJiBkZXNj
cmlwdGlvbikgeyBtX21lZGlhRGVzY3JpcHRpb25zLmFwcGVuZChXVEZNb3ZlKGRlc2NyaXB0aW9u
KSk7IH0KIAogICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNs
b25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNv
bmZpZ3VyYXRpb24+IGNvcHkgPSBjcmVhdGUoKTsKICAgICAgICAgY29weS0+bV9zZXNzaW9uSWQg
PSBtX3Nlc3Npb25JZDsKICAgICAgICAgY29weS0+bV9zZXNzaW9uVmVyc2lvbiA9IG1fc2Vzc2lv
blZlcnNpb247Ci0KLSAgICAgICAgZm9yIChhdXRvJiBtZGVzYyA6IG1fbWVkaWFEZXNjcmlwdGlv
bnMpCi0gICAgICAgICAgICBjb3B5LT5tX21lZGlhRGVzY3JpcHRpb25zLmFwcGVuZChtZGVzYy0+
Y2xvbmUoKSk7CisgICAgICAgIGNvcHktPm1fbWVkaWFEZXNjcmlwdGlvbnMgPSBtX21lZGlhRGVz
Y3JpcHRpb25zOwogCiAgICAgICAgIHJldHVybiBjb3B5OwogICAgIH0KQEAgLTc3LDcgKzc2LDcg
QEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3Nlc3Npb25JZDsKICAgICB1bnNpZ25lZCBtX3Nl
c3Npb25WZXJzaW9uIHsgMCB9OwogCi0gICAgVmVjdG9yPFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlw
dGlvbj4+IG1fbWVkaWFEZXNjcmlwdGlvbnM7CisgICAgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0
aW9uPiBtX21lZGlhRGVzY3JpcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlh
RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJN
ZWRpYURlc2NyaXB0aW9uLmgKaW5kZXggZjQxMGExY2QwMDlhYzM0OTAxZGFmYjQ2N2M1MTNlMzdl
ZWNmYTQwNS4uNzBlZTZlMzFlZmIxYTZiOWRkZGM4ZGE1NTc4YmE0NDhhOWY4NzY4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3Jp
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyTWVk
aWFEZXNjcmlwdGlvbi5oCkBAIC0yOCwxNTUgKzI4LDUxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgUGVlck1lZGlhRGVzY3JpcHRpb25faAotI2RlZmluZSBQZWVyTWVkaWFEZXNj
cmlwdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVk
ZSAiSWNlQ2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQYXlsb2FkLmgiCiAjaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBlZXJN
ZWRpYURlc2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlck1lZGlhRGVzY3JpcHRpb24+
IHsKK3N0cnVjdCBQZWVyTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGVlck1lZGlhRGVzY3JpcHRpb24oKSk7Ci0gICAgfQotICAgIHZpcnR1
YWwgflBlZXJNZWRpYURlc2NyaXB0aW9uKCkgeyB9CisgICAgdm9pZCBhZGRQYXlsb2FkKE1lZGlh
UGF5bG9hZCYmIHBheWxvYWQpIHsgcGF5bG9hZHMuYXBwZW5kKFdURk1vdmUocGF5bG9hZCkpOyB9
CisgICAgdm9pZCBhZGRTc3JjKHVuc2lnbmVkIHNzcmMpIHsgc3NyY3MuYXBwZW5kKHNzcmMpOyB9
CisgICAgdm9pZCBjbGVhclNzcmNzKCkgeyBzc3Jjcy5jbGVhcigpOyB9CisgICAgdm9pZCBhZGRJ
Y2VDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRlKSB7IGljZUNhbmRpZGF0ZXMuYXBw
ZW5kKFdURk1vdmUoY2FuZGlkYXRlKSk7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpIHsgbV90eXBlID0gdHlwZTsgfQorICAgIFN0cmluZyB0eXBlOworICAgIHVuc2lnbmVkIHNo
b3J0IHBvcnQgeyA5IH07CisgICAgU3RyaW5nIGFkZHJlc3MgeyAiMC4wLjAuMCIgfTsKKyAgICBT
dHJpbmcgbW9kZSB7ICJzZW5kcmVjdiIgfTsKKyAgICBTdHJpbmcgbWlkOwogCi0gICAgdW5zaWdu
ZWQgc2hvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQotICAgIHZvaWQgc2V0UG9y
dCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IG1fcG9ydCA9IHBvcnQ7IH0KKyAgICBWZWN0b3I8TWVk
aWFQYXlsb2FkPiBwYXlsb2FkczsKIAotICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNvbnN0
IHsgcmV0dXJuIG1fYWRkcmVzczsgfQotICAgIHZvaWQgc2V0QWRkcmVzcyhjb25zdCBTdHJpbmcm
IGFkZHJlc3MpIHsgbV9hZGRyZXNzID0gYWRkcmVzczsgfQorICAgIGJvb2wgcnRjcE11eCB7IHRy
dWUgfTsKKyAgICBTdHJpbmcgcnRjcEFkZHJlc3M7CisgICAgdW5zaWduZWQgc2hvcnQgcnRjcFBv
cnQgeyAwIH07CiAKLSAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KLSAgICB2b2lkIHNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKSB7IG1fbW9kZSA9IG1v
ZGU7IH0KKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1JZDsKKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1U
cmFja0lkOwogCi0gICAgY29uc3QgU3RyaW5nJiBtaWQoKSBjb25zdCB7IHJldHVybiBtX21pZDsg
fQotICAgIHZvaWQgc2V0TWlkKGNvbnN0IFN0cmluZyYgbWlkKSB7IG1fbWlkID0gbWlkOyB9Cisg
ICAgU3RyaW5nIGR0bHNTZXR1cCB7ICJhY3RwYXNzIiB9OworICAgIFN0cmluZyBkdGxzRmluZ2Vy
cHJpbnRIYXNoRnVuY3Rpb247CisgICAgU3RyaW5nIGR0bHNGaW5nZXJwcmludDsKIAotICAgIGNv
bnN0IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBwYXlsb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZHM7IH0KLSAgICB2b2lkIGFkZFBheWxvYWQoTWVkaWFQYXlsb2FkJiYgcGF5bG9hZCkgeyBt
X3BheWxvYWRzLmFwcGVuZChXVEZNb3ZlKHBheWxvYWQpKTsgfQotICAgIHZvaWQgc2V0UGF5bG9h
ZHMoVmVjdG9yPE1lZGlhUGF5bG9hZD4mJiBwYXlsb2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9h
ZHM7IH0KLSAgICB2b2lkIHNldFBheWxvYWRzKGNvbnN0IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBw
YXlsb2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9hZHM7IH0KKyAgICBWZWN0b3I8dW5zaWduZWQ+
IHNzcmNzOworICAgIFN0cmluZyBjbmFtZTsKIAotICAgIGJvb2wgcnRjcE11eCgpIGNvbnN0IHsg
cmV0dXJuIG1fcnRjcE11eDsgfQotICAgIHZvaWQgc2V0UnRjcE11eChib29sIHJ0Y3BNdXgpIHsg
bV9ydGNwTXV4ID0gcnRjcE11eDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBydGNwQWRkcmVzcygp
IGNvbnN0IHsgcmV0dXJuIG1fcnRjcEFkZHJlc3M7IH0KLSAgICB2b2lkIHNldFJ0Y3BBZGRyZXNz
KGNvbnN0IFN0cmluZyYgcnRjcEFkZHJlc3MpIHsgbV9ydGNwQWRkcmVzcyA9IHJ0Y3BBZGRyZXNz
OyB9Ci0KLSAgICB1bnNpZ25lZCBzaG9ydCBydGNwUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRj
cFBvcnQ7IH0KLSAgICB2b2lkIHNldFJ0Y3BQb3J0KHVuc2lnbmVkIHNob3J0IHJ0Y3BQb3J0KSB7
IG1fcnRjcFBvcnQgPSBydGNwUG9ydDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVh
bUlkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUlkOyB9Ci0gICAgdm9pZCBzZXRNZWRp
YVN0cmVhbUlkKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1JZCkgeyBtX21lZGlhU3RyZWFtSWQg
PSBtZWRpYVN0cmVhbUlkOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtVHJhY2tJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1UcmFja0lkOyB9Ci0gICAgdm9pZCBzZXRN
ZWRpYVN0cmVhbVRyYWNrSWQoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbVRyYWNrSWQpIHsgbV9t
ZWRpYVN0cmVhbVRyYWNrSWQgPSBtZWRpYVN0cmVhbVRyYWNrSWQ7IH0KLQotICAgIGNvbnN0IFN0
cmluZyYgZHRsc1NldHVwKCkgY29uc3QgeyByZXR1cm4gbV9kdGxzU2V0dXA7IH0KLSAgICB2b2lk
IHNldER0bHNTZXR1cChjb25zdCBTdHJpbmcmIGR0bHNTZXR1cCkgeyBtX2R0bHNTZXR1cCA9IGR0
bHNTZXR1cDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsgfQotICAg
IHZvaWQgc2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZHRsc0Zp
bmdlcnByaW50SGFzaEZ1bmN0aW9uKSB7IG1fZHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uID0g
ZHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGR0bHNG
aW5nZXJwcmludCgpIGNvbnN0IHsgcmV0dXJuIG1fZHRsc0ZpbmdlcnByaW50OyB9Ci0gICAgdm9p
ZCBzZXREdGxzRmluZ2VycHJpbnQoY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnQpIHsgbV9k
dGxzRmluZ2VycHJpbnQgPSBkdGxzRmluZ2VycHJpbnQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
Y25hbWUoKSBjb25zdCB7IHJldHVybiBtX2NuYW1lOyB9Ci0gICAgdm9pZCBzZXRDbmFtZShjb25z
dCBTdHJpbmcmIGNuYW1lKSB7IG1fY25hbWUgPSBjbmFtZTsgfQotCi0gICAgY29uc3QgVmVjdG9y
PHVuc2lnbmVkPiYgc3NyY3MoKSBjb25zdCB7IHJldHVybiBtX3NzcmNzOyB9Ci0gICAgdm9pZCBh
ZGRTc3JjKHVuc2lnbmVkIHNzcmMpIHsgbV9zc3Jjcy5hcHBlbmQoc3NyYyk7IH0KLSAgICB2b2lk
IGNsZWFyU3NyY3MoKSB7IG1fc3NyY3MuY2xlYXIoKTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBp
Y2VVZnJhZygpIGNvbnN0IHsgcmV0dXJuIG1faWNlVWZyYWc7IH0KLSAgICB2b2lkIHNldEljZVVm
cmFnKGNvbnN0IFN0cmluZyYgaWNlVWZyYWcpIHsgbV9pY2VVZnJhZyA9IGljZVVmcmFnOyB9Ci0K
LSAgICBjb25zdCBTdHJpbmcmIGljZVBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV9pY2VQYXNz
d29yZDsgfQotICAgIHZvaWQgc2V0SWNlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBpY2VQYXNzd29y
ZCkgeyBtX2ljZVBhc3N3b3JkID0gaWNlUGFzc3dvcmQ7IH0KLQotICAgIGNvbnN0IFZlY3RvcjxJ
Y2VDYW5kaWRhdGU+JiBpY2VDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VDYW5kaWRh
dGVzOyB9Ci0gICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRl
KSB7IG1faWNlQ2FuZGlkYXRlcy5hcHBlbmQoV1RGTW92ZShjYW5kaWRhdGUpKTsgfQotCi0gICAg
UmVmUHRyPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+IGNvcHkgPSBjcmVhdGUoKTsKLQotICAgICAg
ICBjb3B5LT5tX3R5cGUgPSBTdHJpbmcobV90eXBlKTsKLSAgICAgICAgY29weS0+bV9wb3J0ID0g
bV9wb3J0OwotICAgICAgICBjb3B5LT5tX2FkZHJlc3MgPSBTdHJpbmcobV9hZGRyZXNzKTsKLSAg
ICAgICAgY29weS0+bV9tb2RlID0gU3RyaW5nKG1fbW9kZSk7Ci0gICAgICAgIGNvcHktPm1fbWlk
ID0gU3RyaW5nKG1fbWlkKTsKLQotICAgICAgICBjb3B5LT5tX3BheWxvYWRzID0gbV9wYXlsb2Fk
czsKLQotICAgICAgICBjb3B5LT5tX3J0Y3BNdXggPSBtX3J0Y3BNdXg7Ci0gICAgICAgIGNvcHkt
Pm1fcnRjcEFkZHJlc3MgPSBTdHJpbmcobV9ydGNwQWRkcmVzcyk7Ci0gICAgICAgIGNvcHktPm1f
cnRjcFBvcnQgPSBtX3J0Y3BQb3J0OwotCi0gICAgICAgIGNvcHktPm1fbWVkaWFTdHJlYW1JZCA9
IFN0cmluZyhtX21lZGlhU3RyZWFtSWQpOwotICAgICAgICBjb3B5LT5tX21lZGlhU3RyZWFtVHJh
Y2tJZCA9IFN0cmluZyhtX21lZGlhU3RyZWFtVHJhY2tJZCk7Ci0KLSAgICAgICAgY29weS0+bV9k
dGxzU2V0dXAgPSBTdHJpbmcobV9kdGxzU2V0dXApOwotICAgICAgICBjb3B5LT5tX2R0bHNGaW5n
ZXJwcmludEhhc2hGdW5jdGlvbiA9IFN0cmluZyhtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlv
bik7Ci0gICAgICAgIGNvcHktPm1fZHRsc0ZpbmdlcnByaW50ID0gU3RyaW5nKG1fZHRsc0Zpbmdl
cnByaW50KTsKLQotICAgICAgICBmb3IgKGF1dG8gc3NyYyA6IG1fc3NyY3MpCi0gICAgICAgICAg
ICBjb3B5LT5tX3NzcmNzLmFwcGVuZChzc3JjKTsKLQotICAgICAgICBjb3B5LT5tX2NuYW1lID0g
U3RyaW5nKG1fY25hbWUpOwotCi0gICAgICAgIGNvcHktPm1faWNlVWZyYWcgPSBTdHJpbmcobV9p
Y2VVZnJhZyk7Ci0gICAgICAgIGNvcHktPm1faWNlUGFzc3dvcmQgPSBTdHJpbmcobV9pY2VQYXNz
d29yZCk7Ci0KLSAgICAgICAgY29weS0+bV9pY2VDYW5kaWRhdGVzID0gbV9pY2VDYW5kaWRhdGVz
OwotCi0gICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBQZWVyTWVk
aWFEZXNjcmlwdGlvbigpIHsgfQotCi0gICAgU3RyaW5nIG1fdHlwZTsKLSAgICB1bnNpZ25lZCBz
aG9ydCBtX3BvcnQgeyA5IH07Ci0gICAgU3RyaW5nIG1fYWRkcmVzcyB7ICIwLjAuMC4wIiB9Owot
ICAgIFN0cmluZyBtX21vZGUgeyAic2VuZHJlY3YiIH07Ci0gICAgU3RyaW5nIG1fbWlkOwotCi0g
ICAgVmVjdG9yPE1lZGlhUGF5bG9hZD4gbV9wYXlsb2FkczsKLQotICAgIGJvb2wgbV9ydGNwTXV4
IHsgdHJ1ZSB9OwotICAgIFN0cmluZyBtX3J0Y3BBZGRyZXNzOwotICAgIHVuc2lnbmVkIHNob3J0
IG1fcnRjcFBvcnQgeyAwIH07Ci0KLSAgICBTdHJpbmcgbV9tZWRpYVN0cmVhbUlkOwotICAgIFN0
cmluZyBtX21lZGlhU3RyZWFtVHJhY2tJZDsKLQotICAgIFN0cmluZyBtX2R0bHNTZXR1cCB7ICJh
Y3RwYXNzIiB9OwotICAgIFN0cmluZyBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsKLSAg
ICBTdHJpbmcgbV9kdGxzRmluZ2VycHJpbnQ7Ci0KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fc3Ny
Y3M7Ci0gICAgU3RyaW5nIG1fY25hbWU7Ci0KLSAgICBTdHJpbmcgbV9pY2VVZnJhZzsKLSAgICBT
dHJpbmcgbV9pY2VQYXNzd29yZDsKLSAgICBWZWN0b3I8SWNlQ2FuZGlkYXRlPiBtX2ljZUNhbmRp
ZGF0ZXM7CisgICAgU3RyaW5nIGljZVVmcmFnOworICAgIFN0cmluZyBpY2VQYXNzd29yZDsKKyAg
ICBWZWN0b3I8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGVzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCi0KLSNlbmRpZiAvLyBQZWVy
TWVkaWFEZXNjcmlwdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApp
bmRleCA2MTIwMWUxMGFkMTY3ZjEyYjAwNWJmMDJlMjg5ODYwYjMxYjExYTY1Li40YTk2YzZmOGVk
OTA1NzE2ODY5YTJjMjJjN2U1ZGY5OTUzYTMyYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5jcHAKQEAgLTI2MCwyNSArMjYwLDI1IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0
ZVJlc3VsdCBNZWRpYUVuZHBvaW50T3dyOjp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVu
ZHBvCiAgICAgZW5zdXJlVHJhbnNwb3J0QWdlbnRBbmRUcmFuc2NlaXZlcnMoaXNJbml0aWF0b3Is
IHRyYW5zY2VpdmVyQ29uZmlncyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90
cmFuc2NlaXZlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgT3dyU2Vzc2lvbiogc2Vzc2lvbiA9
IG1fdHJhbnNjZWl2ZXJzW2ldLT5zZXNzaW9uKCk7Ci0gICAgICAgIFBlZXJNZWRpYURlc2NyaXB0
aW9uJiBtZGVzYyA9ICpjb25maWd1cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldOworICAg
ICAgICBhdXRvKiBzZXNzaW9uID0gbV90cmFuc2NlaXZlcnNbaV0tPnNlc3Npb24oKTsKKyAgICAg
ICAgYXV0byYgbWRlc2MgPSAqY29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsK
IAotICAgICAgICBpZiAobWRlc2MudHlwZSgpID09ICJhdWRpbyIgfHwgbWRlc2MudHlwZSgpID09
ICJ2aWRlbyIpCi0gICAgICAgICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgInJ0Y3AtbXV4Iiwg
bWRlc2MucnRjcE11eCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1
ZGlvIiB8fCBtZGVzYy50eXBlID09ICJ2aWRlbyIpCisgICAgICAgICAgICBnX29iamVjdF9zZXQo
c2Vzc2lvbiwgInJ0Y3AtbXV4IiwgbWRlc2MucnRjcE11eCwgbnVsbHB0cik7CiAKLSAgICAgICAg
aWYgKG1kZXNjLmljZUNhbmRpZGF0ZXMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgY2FuZGlkYXRlIDogbWRlc2MuaWNlQ2FuZGlkYXRlcygpKQotICAgICAgICAgICAgICAgIGlu
dGVybmFsQWRkUmVtb3RlQ2FuZGlkYXRlKHNlc3Npb24sIGNhbmRpZGF0ZSwgbWRlc2MuaWNlVWZy
YWcoKSwgbWRlc2MuaWNlUGFzc3dvcmQoKSk7CisgICAgICAgIGlmIChtZGVzYy5pY2VDYW5kaWRh
dGVzLnNpemUoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZGVzYy5p
Y2VDYW5kaWRhdGVzKQorICAgICAgICAgICAgICAgIGludGVybmFsQWRkUmVtb3RlQ2FuZGlkYXRl
KHNlc3Npb24sIGNhbmRpZGF0ZSwgbWRlc2MuaWNlVWZyYWcsIG1kZXNjLmljZVBhc3N3b3JkKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgbV9udW1iZXJPZlNlbmRQcmVwYXJlZFNlc3Np
b25zKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCFzZW5kU291cmNlTWFw
LmNvbnRhaW5zKG1kZXNjLm1pZCgpKSkKKyAgICAgICAgaWYgKCFzZW5kU291cmNlTWFwLmNvbnRh
aW5zKG1kZXNjLm1pZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBN
ZWRpYVBheWxvYWQqIHBheWxvYWQgPSBudWxscHRyOwotICAgICAgICBmb3IgKGF1dG8mIHAgOiBt
ZGVzYy5wYXlsb2FkcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcCA6IG1kZXNjLnBheWxvYWRz
KSB7CiAgICAgICAgICAgICBpZiAocC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNh
c2UoKSAhPSAiUlRYIikgewogICAgICAgICAgICAgICAgIHBheWxvYWQgPSAmcDsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI4OCwxNCArMjg4LDE0IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0
ZVJlc3VsdCBNZWRpYUVuZHBvaW50T3dyOjp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVu
ZHBvCiAgICAgICAgIGlmICghcGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBVcGRhdGVSZXN1
bHQ6OkZhaWxlZDsKIAotICAgICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQo
bWRlc2MucGF5bG9hZHMoKSwgcGF5bG9hZC0+dHlwZSk7Ci0gICAgICAgIGF1dG8qIHNvdXJjZSA9
IHN0YXRpY19jYXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IqPihzZW5kU291cmNlTWFwLmdldCht
ZGVzYy5taWQoKSkpOworICAgICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQo
bWRlc2MucGF5bG9hZHMsIHBheWxvYWQtPnR5cGUpOworICAgICAgICBhdXRvKiBzb3VyY2UgPSBz
dGF0aWNfY2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyKj4oc2VuZFNvdXJjZU1hcC5nZXQobWRl
c2MubWlkKSk7CiAKICAgICAgICAgQVNTRVJUKGNvZGVjVHlwZXMuZmluZChwYXlsb2FkLT5lbmNv
ZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSkgIT0gbm90Rm91bmQpOwogICAgICAg
ICBhdXRvIGNvZGVjVHlwZSA9IHN0YXRpY19jYXN0PE93ckNvZGVjVHlwZT4oY29kZWNUeXBlcy5m
aW5kKHBheWxvYWQtPmVuY29kaW5nTmFtZS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKSk7CiAK
ICAgICAgICAgT3dyUGF5bG9hZCogc2VuZFBheWxvYWQ7Ci0gICAgICAgIGlmIChtZGVzYy50eXBl
KCkgPT0gImF1ZGlvIikKKyAgICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1ZGlvIikKICAgICAg
ICAgICAgIHNlbmRQYXlsb2FkID0gb3dyX2F1ZGlvX3BheWxvYWRfbmV3KGNvZGVjVHlwZSwgcGF5
bG9hZC0+dHlwZSwgcGF5bG9hZC0+Y2xvY2tSYXRlLCBwYXlsb2FkLT5jaGFubmVscyk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgc2VuZFBheWxvYWQgPSBvd3JfdmlkZW9fcGF5bG9hZF9u
ZXcoY29kZWNUeXBlLCBwYXlsb2FkLT50eXBlLCBwYXlsb2FkLT5jbG9ja1JhdGUsIHBheWxvYWQt
PmNjbWZpciwgcGF5bG9hZC0+bmFja3BsaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93
ci5oCmluZGV4IGFkMWYyY2EwMjgwNTFmMmFjYzNhY2Y3ZjZiMzM0NGJiNmRiZDcwODEuLjM4ODBh
ODFhYjdiZWU5ODhiNTYxNTM0Mjk0MmFiN2Y5NTQ5ZjkwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVk
aWFFbmRwb2ludE93ci5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IF9Pd3JUcmFu
c3BvcnRBZ2VudCBPd3JUcmFuc3BvcnRBZ2VudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKK3N0cnVjdCBQZWVyTWVkaWFEZXNjcmlwdGlvbjsK
IGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uUHJp
dmF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVk
aWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcAppbmRleCBmOTE5YTQ2OTFhMDJiNGVlZjJjMTY1ZWI5Y2VhNDI5NjFmMzI2ZmI5
Li42MTQyMzE1ZDU4YzcwMjcxMDY1OWIzZjdkNTEzOGE3NzRlOGY4ODc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApAQCAtMjI1
LDggKzIyNSw4IEBAIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OmVtdWxhdGVQbGF0Zm9ybUV2ZW50
KGNvbnN0IFN0cmluZyYgYWN0aW9uKQogdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dXBkYXRlQ29u
ZmlndXJhdGlvbk1pZHMoY29uc3QgTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKQogewogICAgIFZlY3RvcjxTdHJpbmc+IG1pZHM7Ci0gICAgZm9yIChjb25z
dCBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+JiBtZWRpYURlc2NyaXB0aW9uIDogY29uZmln
dXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKQotICAgICAgICBtaWRzLmFwcGVuZChtZWRpYURl
c2NyaXB0aW9uLT5taWQoKSk7CisgICAgZm9yIChhdXRvJiBtZWRpYURlc2NyaXB0aW9uIDogY29u
ZmlndXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKQorICAgICAgICBtaWRzLmFwcGVuZChtZWRp
YURlc2NyaXB0aW9uLm1pZCk7CiAgICAgbV9taWRzLnN3YXAobWlkcyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293019</attachid>
            <date>2016-10-27 08:16:22 -0700</date>
            <delta_ts>2016-10-28 03:41:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164059-20161027171231.patch</filename>
            <type>text/plain</type>
            <size>52677</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ4N2I0N2NhNjU5ZjM5
NTY4NTcwMjQ4MzhhMDcxM2RlZTJkNjA5MC4uMTc0YjU3YWJlOTdiOTlmN2VkZWI2ZmVhNDNiZDJk
NjkxYjRlODNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg4IEBACiAyMDE2LTEwLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBQZWVyTWVkaWFEZXNjcmlw
dGlvbiBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlZmNvdW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
T2ZmZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlQW5zd2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3VyY2VNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2Nh
bERlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RJY2VDYW5kaWRhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uZmlndXJhdGlvbkZyb21KU09OKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbmZpZ3VyYXRpb25Ub0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29y
OjpnZW5lcmF0ZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29y
OjpwYXJzZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0lj
ZUNhbmRpZGF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2lu
dFNlc3Npb25Db25maWd1cmF0aW9uOjptZWRpYURlc2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb246OmFkZE1lZGlhRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9u
OjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3Jp
cHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRQYXls
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRTc3JjKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbGVhclNzcmNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRJY2VDYW5kaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6flBlZXJNZWRpYURlc2Ny
aXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
Ojp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
OjpzZXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpwb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpzZXRQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2Ny
aXB0aW9uOjphZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURl
c2NyaXB0aW9uOjpzZXRBZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjptb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjpzZXRNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjptaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVl
ck1lZGlhRGVzY3JpcHRpb246OnNldE1pZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6cGF5bG9hZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldFBheWxvYWRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwTXV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRSdGNwTXV4KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwQWRkcmVzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0UnRjcEFk
ZHJlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246
OnJ0Y3BQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjpzZXRSdGNwUG9ydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0TWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1UcmFja0lkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRNZWRpYVN0
cmVhbVRyYWNrSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3Jp
cHRpb246OmR0bHNTZXR1cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6c2V0RHRsc1NldHVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjpkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldER0bHNGaW5nZXJw
cmludEhhc2hGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFE
ZXNjcmlwdGlvbjo6ZHRsc0ZpbmdlcnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXREdGxzRmluZ2VycHJpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNuYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRDbmFtZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c3NyY3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmljZVVmcmFnKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRJY2VVZnJh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6aWNl
UGFzc3dvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRp
b246OnNldEljZVBhc3N3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRp
YURlc2NyaXB0aW9uOjppY2VDYW5kaWRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6UGVlck1lZGlhRGVzY3JpcHRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYUVuZHBvaW50TWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRNYWM6OmFkZFJlbW90ZUNhbmRpZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50TWFjOjpPbkljZUNhbmRpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhRW5kcG9pbnRNYWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludE93cjo6dXBkYXRlU2VuZENvbmZp
Z3VyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVk
aWFFbmRwb2ludE93ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZUNvbmZp
Z3VyYXRpb25NaWRzKToKKworMjAxNi0xMC0yNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKICAgICAgICAgUkVHUkVTU0lPTihyMjA3NzUzLTIwNzc1NSk6IEFTU0VSVElPTiBG
QUlMRUQ6IG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5pc0luTWVtb3J5Q2FjaGUoKQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTA1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZDBkYjVkZWFjYWFlNWE5ODhlNTE5
YjQ1YWJmMGNkZWNiOWFhZTI4Li5mODI0ODI2ZmJhMjQ0MGY4MWZmYjE4M2MzYTQ5ZjI3M2IzYzZi
OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjAsMjEgKzE2
MCwyMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXJUYXNr
KFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgogCiAgICAgLy8gUmVtb3ZlIGFueSB0cmFu
c2NlaXZlciBvYmplY3RzIGZyb20gdHJhbnNjZWl2ZXJzIHRoYXQgY2FuIGJlIG1hdGNoZWQgdG8g
YW4gZXhpc3RpbmcgbWVkaWEgZGVzY3JpcHRpb24uCiAgICAgZm9yIChhdXRvJiBtZWRpYURlc2Ny
aXB0aW9uIDogY29uZmlndXJhdGlvblNuYXBzaG90LT5tZWRpYURlc2NyaXB0aW9ucygpKSB7Ci0g
ICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbi0+cG9ydCgpKSB7CisgICAgICAgIGlmICghbWVk
aWFEZXNjcmlwdGlvbi5wb3J0KSB7CiAgICAgICAgICAgICAvLyBUaGlzIG1lZGlhIGRlc2NyaXB0
aW9uIHNob3VsZCBiZSByZWN5Y2xlZC4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2Nl
aXZlckJ5TWlkKHRyYW5zY2VpdmVycywgbWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgICAg
ICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlNaWQo
dHJhbnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAgICAgICAgIGlmICghdHJhbnNj
ZWl2ZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LT5zZXRNb2RlKHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmcoKSk7CisgICAgICAgIG1lZGlh
RGVzY3JpcHRpb24ubW9kZSA9IHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmcoKTsKICAgICAg
ICAgaWYgKHRyYW5zY2VpdmVyLT5oYXNTZW5kaW5nRGlyZWN0aW9uKCkpIHsKICAgICAgICAgICAg
IFJUQ1J0cFNlbmRlciYgc2VuZGVyID0gKnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKIAotICAgICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzZW5kZXIubWVkaWFTdHJl
YW1JZHMoKVswXSk7Ci0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVh
bVRyYWNrSWQoc2VuZGVyLnRyYWNrSWQoKSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9u
Lm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXTsKKyAgICAgICAgICAg
IG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkID0gc2VuZGVyLnRyYWNrSWQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHRyYW5zY2VpdmVycy5yZW1vdmVGaXJzdCh0cmFuc2NlaXZl
cik7CkBAIC0xODIsMjMgKzE4MiwyMyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgogCiAgICAg
Ly8gQWRkIG1lZGlhIGRlc2NyaXB0aW9ucyBmb3IgcmVtYWluaW5nIHRyYW5zY2VpdmVycy4KICAg
ICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzKSB7Ci0gICAgICAgIFJlZlB0
cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gbWVkaWFEZXNjcmlwdGlvbiA9IFBlZXJNZWRpYURlc2Ny
aXB0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24gbWVkaWFEZXNj
cmlwdGlvbjsKICAgICAgICAgUlRDUnRwU2VuZGVyJiBzZW5kZXIgPSAqdHJhbnNjZWl2ZXItPnNl
bmRlcigpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1vZGUodHJhbnNjZWl2ZXIt
PmRpcmVjdGlvblN0cmluZygpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWlkKHRy
YW5zY2VpdmVyLT5wcm92aXNpb25hbE1pZCgpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+
c2V0TWVkaWFTdHJlYW1JZChzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXSk7Ci0gICAgICAgIG1l
ZGlhRGVzY3JpcHRpb24tPnNldFR5cGUoc2VuZGVyLnRyYWNrS2luZCgpKTsKLSAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbi0+c2V0UGF5bG9hZHMoc2VuZGVyLnRyYWNrS2luZCgpID09ICJhdWRpbyIg
PyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2Fkcyk7Ci0gICAg
ICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbihtX2R0
bHNGaW5nZXJwcmludEZ1bmN0aW9uKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0RHRs
c0ZpbmdlcnByaW50KG1fZHRsc0ZpbmdlcnByaW50KTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlv
bi0+c2V0Q25hbWUobV9jbmFtZSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPmFkZFNzcmMo
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRp
b24tPnNldEljZVVmcmFnKG1faWNlVWZyYWcpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5z
ZXRJY2VQYXNzd29yZChtX2ljZVBhc3N3b3JkKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5t
b2RlID0gdHJhbnNjZWl2ZXItPmRpcmVjdGlvblN0cmluZygpOworICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLm1pZCA9IHRyYW5zY2VpdmVyLT5wcm92aXNpb25hbE1pZCgpOworICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXTsK
KyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi50eXBlID0gc2VuZGVyLnRyYWNrS2luZCgpOworICAg
ICAgICBtZWRpYURlc2NyaXB0aW9uLnBheWxvYWRzID0gc2VuZGVyLnRyYWNrS2luZCgpID09ICJh
dWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2FkczsK
KyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24gPSBt
X2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmR0bHNG
aW5nZXJwcmludCA9IG1fZHRsc0ZpbmdlcnByaW50OworICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LmNuYW1lID0gbV9jbmFtZTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5hZGRTc3JjKGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmlj
ZVVmcmFnID0gbV9pY2VVZnJhZzsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5pY2VQYXNzd29y
ZCA9IG1faWNlUGFzc3dvcmQ7CiAKICAgICAgICAgaWYgKHNlbmRlci50cmFjaygpKQotICAgICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1UcmFja0lkKHNlbmRlci50cmFj
a0lkKCkpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRyYWNrSWQg
PSBzZW5kZXIudHJhY2tJZCgpOwogCiAgICAgICAgIGNvbmZpZ3VyYXRpb25TbmFwc2hvdC0+YWRk
TWVkaWFEZXNjcmlwdGlvbihXVEZNb3ZlKG1lZGlhRGVzY3JpcHRpb24pKTsKICAgICB9CkBAIC0y
MzMsNTEgKzIzMyw1MSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
QW5zd2VyVGFzayhSVENBbnN3ZXJPcHRpb25zJiwgU2Vzc2lvbkRlcwogICAgIGNvbmZpZ3VyYXRp
b25TbmFwc2hvdC0+c2V0U2Vzc2lvblZlcnNpb24obV9zZHBBbnN3ZXJTZXNzaW9uVmVyc2lvbisr
KTsKIAogICAgIGF1dG8gdHJhbnNjZWl2ZXJzID0gUnRwVHJhbnNjZWl2ZXJWZWN0b3IobV9jbGll
bnQtPmdldFRyYW5zY2VpdmVycygpKTsKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9y
JiByZW1vdGVNZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRpb24oKS0+
Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOworICAgIGF1dG8mIHJlbW90ZU1l
ZGlhRGVzY3JpcHRpb25zID0gaW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpLT5jb25maWd1cmF0
aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGVlck1l
ZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAqcmVtb3RlTWVkaWFEZXNj
cmlwdGlvbnNbaV07CisgICAgICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSByZW1v
dGVNZWRpYURlc2NyaXB0aW9uc1tpXTsKIAotICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJh
bnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRp
YURlc2NyaXB0aW9uLm1pZCgpKTsKKyAgICAgICAgYXV0byogdHJhbnNjZWl2ZXIgPSBtYXRjaFRy
YW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRpYURlc2NyaXB0aW9uLm1pZCk7
CiAgICAgICAgIGlmICghdHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGZpbmQgYSBtYXRjaGluZyB0cmFuc2NlaXZlciBmb3IgcmVtb3RlIGRlc2NyaXB0aW9u
IHdoaWxlIGNyZWF0aW5nIGFuc3dlciIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoaSA+PSBjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3Jp
cHRpb25zKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld01lZGlhRGVzY3JpcHRpb24g
PSBQZWVyTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBQZWVyTWVkaWFE
ZXNjcmlwdGlvbiBuZXdNZWRpYURlc2NyaXB0aW9uOwogCiAgICAgICAgICAgICBSVENSdHBTZW5k
ZXImIHNlbmRlciA9ICp0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAgICAgICAgICAgICBpZiAoc2Vu
ZGVyLnRyYWNrKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VuZGVyLm1lZGlhU3RyZWFtSWRz
KCkuc2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRN
ZWRpYVN0cmVhbUlkKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdKTsKLSAgICAgICAgICAgICAg
ICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbVRyYWNrSWQoc2VuZGVyLnRyYWNr
SWQoKSk7Ci0gICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+YWRkU3NyYyhjcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3TWVk
aWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbUlkID0gc2VuZGVyLm1lZGlhU3RyZWFtSWRzKClbMF07
CisgICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRyYWNrSWQg
PSBzZW5kZXIudHJhY2tJZCgpOworICAgICAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24u
YWRkU3NyYyhjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZSh0cmFuc2NlaXZlci0+
ZGlyZWN0aW9uU3RyaW5nKCkpOwotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0
VHlwZShyZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGUoKSk7Ci0gICAgICAgICAgICBuZXdNZWRp
YURlc2NyaXB0aW9uLT5zZXRNaWQocmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5taWQoKSk7Ci0gICAg
ICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzU2V0dXAocmVtb3RlTWVkaWFEZXNj
cmlwdGlvbi5kdGxzU2V0dXAoKSA9PSAiYWN0aXZlIiA/ICJwYXNzaXZlIiA6ICJhY3RpdmUiKTsK
LSAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludEhhc2hG
dW5jdGlvbihtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uKTsKLSAgICAgICAgICAgIG5ld01lZGlh
RGVzY3JpcHRpb24tPnNldER0bHNGaW5nZXJwcmludChtX2R0bHNGaW5nZXJwcmludCk7Ci0gICAg
ICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRDbmFtZShtX2NuYW1lKTsKLSAgICAgICAg
ICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldEljZVVmcmFnKG1faWNlVWZyYWcpOwotICAgICAg
ICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlUGFzc3dvcmQobV9pY2VQYXNzd29yZCk7
CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLm1vZGUgPSB0cmFuc2NlaXZlci0+ZGly
ZWN0aW9uU3RyaW5nKCk7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLnR5cGUgPSBy
ZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGU7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0
aW9uLm1pZCA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ubWlkOworICAgICAgICAgICAgbmV3TWVk
aWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAgPSByZW1vdGVNZWRpYURlc2NyaXB0aW9uLmR0bHNTZXR1
cCA9PSAiYWN0aXZlIiA/ICJwYXNzaXZlIiA6ICJhY3RpdmUiOworICAgICAgICAgICAgbmV3TWVk
aWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24gPSBtX2R0bHNGaW5nZXJw
cmludEZ1bmN0aW9uOworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2Vy
cHJpbnQgPSBtX2R0bHNGaW5nZXJwcmludDsKKyAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRp
b24uY25hbWUgPSBtX2NuYW1lOworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5pY2VV
ZnJhZyA9IG1faWNlVWZyYWc7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLmljZVBh
c3N3b3JkID0gbV9pY2VQYXNzd29yZDsKIAogICAgICAgICAgICAgY29uZmlndXJhdGlvblNuYXBz
aG90LT5hZGRNZWRpYURlc2NyaXB0aW9uKFdURk1vdmUobmV3TWVkaWFEZXNjcmlwdGlvbikpOwog
ICAgICAgICB9CiAKLSAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIGxvY2FsTWVkaWFEZXNj
cmlwdGlvbiA9ICpjb25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25zKClbaV07
CisgICAgICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uJiBsb2NhbE1lZGlhRGVzY3JpcHRpb24gPSBj
b25maWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25zKClbaV07CiAKLSAgICAgICAg
bG9jYWxNZWRpYURlc2NyaXB0aW9uLnNldFBheWxvYWRzKHJlbW90ZU1lZGlhRGVzY3JpcHRpb24u
cGF5bG9hZHMoKSk7Ci0gICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5zZXRSdGNwTXV4KHJl
bW90ZU1lZGlhRGVzY3JpcHRpb24ucnRjcE11eCgpKTsKKyAgICAgICAgbG9jYWxNZWRpYURlc2Ny
aXB0aW9uLnBheWxvYWRzID0gcmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkczsKKyAgICAg
ICAgbG9jYWxNZWRpYURlc2NyaXB0aW9uLnJ0Y3BNdXggPSByZW1vdGVNZWRpYURlc2NyaXB0aW9u
LnJ0Y3BNdXg7CiAKLSAgICAgICAgaWYgKCFsb2NhbE1lZGlhRGVzY3JpcHRpb24uc3NyY3MoKS5z
aXplKCkpCisgICAgICAgIGlmICghbG9jYWxNZWRpYURlc2NyaXB0aW9uLnNzcmNzLnNpemUoKSkK
ICAgICAgICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5hZGRTc3JjKGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyKCkpOwogCi0gICAgICAgIGlmIChsb2NhbE1lZGlhRGVzY3JpcHRpb24u
ZHRsc1NldHVwKCkgPT0gImFjdHBhc3MiKQotICAgICAgICAgICAgbG9jYWxNZWRpYURlc2NyaXB0
aW9uLnNldER0bHNTZXR1cCgicGFzc2l2ZSIpOworICAgICAgICBpZiAobG9jYWxNZWRpYURlc2Ny
aXB0aW9uLmR0bHNTZXR1cCA9PSAiYWN0cGFzcyIpCisgICAgICAgICAgICBsb2NhbE1lZGlhRGVz
Y3JpcHRpb24uZHRsc1NldHVwID0gInBhc3NpdmUiOwogCiAgICAgICAgIHRyYW5zY2VpdmVycy5y
ZW1vdmVGaXJzdCh0cmFuc2NlaXZlcik7CiAgICAgfQpAQCAtMjk1LDExICsyOTUsMTEgQEAgc3Rh
dGljIFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAgY3JlYXRlU291cmNlTWFwKGNvbnN0IE1lZGlhRGVz
Y3JpcHRpb25WZWN0b3ImIHJlbW8KICAgICBSZWFsdGltZU1lZGlhU291cmNlTWFwIHNvdXJjZU1h
cDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZW1vdGVNZWRpYURlc2NyaXB0aW9u
cy5zaXplKCkgJiYgaSA8IGxvY2FsTWVkaWFEZXNjcmlwdGlvbkNvdW50OyArK2kpIHsKLSAgICAg
ICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAqcmVtb3Rl
TWVkaWFEZXNjcmlwdGlvbnNbaV07Ci0gICAgICAgIGlmIChyZW1vdGVNZWRpYURlc2NyaXB0aW9u
LnR5cGUoKSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSgpICE9ICJ2
aWRlbyIpCisgICAgICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSByZW1vdGVNZWRp
YURlc2NyaXB0aW9uc1tpXTsKKyAgICAgICAgaWYgKHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlw
ZSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSAhPSAidmlkZW8iKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5z
Y2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgcmVtb3RlTWVkaWFE
ZXNjcmlwdGlvbi5taWQoKSk7CisgICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZl
ciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIHJlbW90ZU1lZGlhRGVzY3Jp
cHRpb24ubWlkKTsKICAgICAgICAgaWYgKHRyYW5zY2VpdmVyKSB7CiAgICAgICAgICAgICBpZiAo
dHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSAmJiB0cmFuc2NlaXZlci0+c2VuZGVy
KCktPnRyYWNrKCkpCiAgICAgICAgICAgICAgICAgc291cmNlTWFwLnNldCh0cmFuc2NlaXZlci0+
bWlkKCksICZ0cmFuc2NlaXZlci0+c2VuZGVyKCktPnRyYWNrKCktPnNvdXJjZSgpKTsKQEAgLTM1
OSwxMSArMzU5LDkgQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldExvY2Fs
RGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzY3IKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEFzc29jaWF0ZSBtZWRpYSBkZXNjcmlwdGlvbnMgd2l0aCB0cmFuc2NlaXZlcnMgKHNl
dCBwcm92aXNpb25hbCBtaWQgdG8gJ2ZpbmFsJyBtaWQpLgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBwcmV2aW91c051bWJlck9mTWVkaWFEZXNjcmlwdGlvbnM7IGkgPCBtZWRpYURlc2NyaXB0
aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIG1l
ZGlhRGVzY3JpcHRpb24gPSAqbWVkaWFEZXNjcmlwdGlvbnNbaV07Ci0KKyAgICAgICAgZm9yIChh
dXRvJiBtZWRpYURlc2NyaXB0aW9uIDogbWVkaWFEZXNjcmlwdGlvbnMpIHsKICAgICAgICAgICAg
IFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXIodHJhbnNj
ZWl2ZXJzLCBbJm1lZGlhRGVzY3JpcHRpb25dIChSVENSdHBUcmFuc2NlaXZlciYgY3VycmVudCkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50LnByb3Zpc2lvbmFsTWlkKCkgPT0gbWVk
aWFEZXNjcmlwdGlvbi5taWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudC5wcm92
aXNpb25hbE1pZCgpID09IG1lZGlhRGVzY3JpcHRpb24ubWlkOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBpZiAodHJhbnNjZWl2ZXIpCiAgICAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIt
PnNldE1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSk7CkBAIC00NjQsMTMgKzQ2Miwx
MiBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRp
b25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvblZlY3RvciYgbWVkaWFEZXNjcmlwdGlvbnMgPSBuZXdE
ZXNjcmlwdGlvbi0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9ucygpOworICAgIGF1
dG8mIG1lZGlhRGVzY3JpcHRpb25zID0gbmV3RGVzY3JpcHRpb24tPmNvbmZpZ3VyYXRpb24oKS0+
bWVkaWFEZXNjcmlwdGlvbnMoKTsKICAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBt
ZWRpYURlc2NyaXB0aW9ucykgewotICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgp
ICE9ICJhdWRpbyIgJiYgbWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpICE9ICJ2aWRlbyIpCisgICAg
ICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLnR5cGUgIT0gImF1ZGlvIiAmJiBtZWRpYURlc2NyaXB0
aW9uLnR5cGUgIT0gInZpZGVvIikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1l
ZGlhRGVzY3JpcHRpb24tPnNldFBheWxvYWRzKG1fbWVkaWFFbmRwb2ludC0+ZmlsdGVyUGF5bG9h
ZHMobWVkaWFEZXNjcmlwdGlvbi0+cGF5bG9hZHMoKSwKLSAgICAgICAgICAgIG1lZGlhRGVzY3Jp
cHRpb24tPnR5cGUoKSA9PSAiYXVkaW8iID8gbV9kZWZhdWx0QXVkaW9QYXlsb2FkcyA6IG1fZGVm
YXVsdFZpZGVvUGF5bG9hZHMpKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkcyA9
IG1fbWVkaWFFbmRwb2ludC0+ZmlsdGVyUGF5bG9hZHMobWVkaWFEZXNjcmlwdGlvbi5wYXlsb2Fk
cywgbWVkaWFEZXNjcmlwdGlvbi50eXBlID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxv
YWRzIDogbV9kZWZhdWx0VmlkZW9QYXlsb2Fkcyk7CiAgICAgfQogCiAgICAgYm9vbCBpc0luaXRp
YXRvciA9IG5ld0Rlc2NyaXB0aW9uLT50eXBlKCkgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpT
ZHBUeXBlOjpBbnN3ZXI7CkBAIC00ODgsMzIgKzQ4NSwzMiBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQ
ZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9u
RGVzYwogICAgIC8vIE9uZSBsZWdhY3kgTWVkaWFTdHJlYW1FdmVudCB3aWxsIGJlIGZpcmVkIGZv
ciBldmVyeSBuZXcgTWVkaWFTdHJlYW0gY3JlYXRlZCBhcyB0aGlzIHJlbW90ZSBkZXNjcmlwdGlv
biBpcyBzZXQuCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUV2ZW50Pj4gbGVnYWN5TWVk
aWFTdHJlYW1FdmVudHM7CiAKLSAgICBmb3IgKGF1dG8gbWVkaWFEZXNjcmlwdGlvbiA6IG1lZGlh
RGVzY3JpcHRpb25zKSB7Ci0gICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9
IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIG1lZGlhRGVzY3JpcHRpb24tPm1p
ZCgpKTsKKyAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBtZWRpYURlc2NyaXB0aW9u
cykgeworICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5z
Y2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAgICAgICAg
IGlmICghdHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIGJvb2wgcmVjZWl2ZU9ubHlGbGFnID0g
ZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkgPT0gInNl
bmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkgPT0gInJlY3Zvbmx5IikgeworICAg
ICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAic2VuZHJlY3YiIHx8IG1lZGlh
RGVzY3JpcHRpb24ubW9kZSA9PSAicmVjdm9ubHkiKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJ5
IHRvIG1hdGNoIGFuIGV4aXN0aW5nIHRyYW5zY2VpdmVyLgogICAgICAgICAgICAgICAgIHRyYW5z
Y2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcih0cmFuc2NlaXZlcnMsIFsmbWVkaWFEZXNjcmlwdGlv
bl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJyZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3VycmVudC5taWQoKS5pc051bGwoKSAmJiBjdXJy
ZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBtZWRpYURlc2NyaXB0aW9uLT50eXBlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3VycmVudC5t
aWQoKS5pc051bGwoKSAmJiBjdXJyZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBtZWRpYURl
c2NyaXB0aW9uLnR5cGU7CiAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB0cmFuc2NlaXZl
ciB3YXMgY3JlYXRlZCBsb2NhbGx5IHdpdGggYSBwcm92aXNpb25hbCBtaWQuIEl0cyByZWFsIG1p
ZCB3aWxsIG5vdyBiZSBzZXQgYnkgdGhlIHJlbW90ZQogICAgICAgICAgICAgICAgICAgICAvLyBk
ZXNjcmlwdGlvbiBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbWlkIG9mIHRoZSB0cmFuc2NlaXZl
cidzIG11dGVkIHNvdXJjZSB0byBwcmVzZXJ2ZSB0aGUgYXNzb2NpYXRpb24uCi0gICAgICAgICAg
ICAgICAgICAgIHRyYW5zY2VpdmVyLT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOwot
ICAgICAgICAgICAgICAgICAgICBtX21lZGlhRW5kcG9pbnQtPnJlcGxhY2VNdXRlZFJlbW90ZVNv
dXJjZU1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSwgbWVkaWFEZXNjcmlwdGlvbi0+
bWlkKCkpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2NlaXZlci0+c2V0TWlkKG1lZGlhRGVz
Y3JpcHRpb24ubWlkKTsKKyAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUVuZHBvaW50LT5yZXBs
YWNlTXV0ZWRSZW1vdGVTb3VyY2VNaWQodHJhbnNjZWl2ZXItPnByb3Zpc2lvbmFsTWlkKCksIG1l
ZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgcmVjZWl2ZU9ubHlGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKCF0cmFuc2NlaXZlcikgewotICAgICAgICAgICAgICAgIGF1dG8gc2VuZGVyID0g
UlRDUnRwU2VuZGVyOjpjcmVhdGUobWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBtX2NsaWVudC0+c2VuZGVyQ2xpZW50KCkpOwotICAgICAgICAgICAgICAgIGF1dG8g
cmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlcihtZWRpYURlc2NyaXB0aW9uLT5taWQoKSwgbWVkaWFE
ZXNjcmlwdGlvbi0+dHlwZSgpLCBtZWRpYURlc2NyaXB0aW9uLT5tZWRpYVN0cmVhbVRyYWNrSWQo
KSk7CisgICAgICAgICAgICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSht
ZWRpYURlc2NyaXB0aW9uLnR5cGUsIFZlY3RvcjxTdHJpbmc+KCksIG1fY2xpZW50LT5zZW5kZXJD
bGllbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVy
KG1lZGlhRGVzY3JpcHRpb24ubWlkLCBtZWRpYURlc2NyaXB0aW9uLnR5cGUsIG1lZGlhRGVzY3Jp
cHRpb24ubWVkaWFTdHJlYW1UcmFja0lkKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gbmV3VHJh
bnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgV1RG
TW92ZShyZWNlaXZlcikpOwotICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5zZXRNaWQo
bWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVy
LT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi5taWQpOwogICAgICAgICAgICAgICAgIGlmIChyZWNl
aXZlT25seUZsYWcpCiAgICAgICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5kaXNhYmxl
U2VuZGluZ0RpcmVjdGlvbigpOwogCkBAIC01MjIsMTUgKzUxOSwxNSBAQCB2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENT
ZXNzaW9uRGVzYwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1lZGlh
RGVzY3JpcHRpb24tPm1vZGUoKSA9PSAic2VuZHJlY3YiIHx8IG1lZGlhRGVzY3JpcHRpb24tPm1v
ZGUoKSA9PSAic2VuZG9ubHkiKSB7CisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLm1vZGUg
PT0gInNlbmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPT0gInNlbmRvbmx5Iikgewog
ICAgICAgICAgICAgUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyID0gKnRyYW5zY2VpdmVyLT5yZWNl
aXZlcigpOwogICAgICAgICAgICAgaWYgKHJlY2VpdmVyLmlzRGlzcGF0Y2hlZCgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcmVjZWl2ZXIuc2V0RGlzcGF0Y2hlZCh0
cnVlKTsKIAogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFTdHJlYW1JZHM7Ci0gICAg
ICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtSWQoKS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKG1lZGlhRGVzY3JpcHRpb24t
Pm1lZGlhU3RyZWFtSWQoKSk7CisgICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24ubWVk
aWFTdHJlYW1JZC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBw
ZW5kKG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1JZCk7CiAKICAgICAgICAgICAgIC8vIEEg
cmVtb3RlIHRyYWNrIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggMC4uKiBNZWRpYVN0cmVhbXMuIFdl
IGNyZWF0ZSBhIG5ldyBzdHJlYW0gZm9yCiAgICAgICAgICAgICAvLyBhIHRyYWNrIGluIGNhc2Ug
b2YgYW4gdW5yZWNvZ25pemVkIHN0cmVhbSBpZCwgb3IganVzdCBhZGQgdGhlIHRyYWNrIGlmIHRo
ZSBzdHJlYW0KQEAgLTY0Niw3ICs2NDMsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbjo6YWRkSWNlQ2FuZGlkYXRlVGFzayhSVENJY2VDYW5kaWRhdGUmIHJ0Y0NhbmRpZAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvblZlY3RvciYg
cmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMgPSBpbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKCktPmNv
bmZpZ3VyYXRpb24oKS0+bWVkaWFEZXNjcmlwdGlvbnMoKTsKKyAgICBhdXRvJiByZW1vdGVNZWRp
YURlc2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlv
bigpLT5tZWRpYURlc2NyaXB0aW9ucygpOwogICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uKiB0YXJn
ZXRNZWRpYURlc2NyaXB0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFdoZW4gaWRlbnRpZnlpbmcg
dGhlIHRhcmdldCBtZWRpYSBkZXNjcmlwdGlvbiwgc2RwTWlkIHRha2VzIHByZWNlZGVuY2Ugb3Zl
ciBzZHBNTGluZUluZGV4CkBAIC02NTQsOCArNjUxLDggQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBydGNDYW5k
aWQKICAgICBpZiAoIXJ0Y0NhbmRpZGF0ZS5zZHBNaWQoKS5pc051bGwoKSkgewogICAgICAgICBj
b25zdCBTdHJpbmcmIG1pZCA9IHJ0Y0NhbmRpZGF0ZS5zZHBNaWQoKTsKICAgICAgICAgZm9yIChh
dXRvJiBkZXNjcmlwdGlvbiA6IHJlbW90ZU1lZGlhRGVzY3JpcHRpb25zKSB7Ci0gICAgICAgICAg
ICBpZiAoZGVzY3JpcHRpb24tPm1pZCgpID09IG1pZCkgewotICAgICAgICAgICAgICAgIHRhcmdl
dE1lZGlhRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5nZXQoKTsKKyAgICAgICAgICAgIGlmIChk
ZXNjcmlwdGlvbi5taWQgPT0gbWlkKSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0TWVkaWFEZXNj
cmlwdGlvbiA9ICZkZXNjcmlwdGlvbjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtNjcwLDcgKzY2Nyw3IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGVUYXNrKFJUQ0ljZUNhbmRpZGF0ZSYgcnRjQ2Fu
ZGlkCiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChPcGVyYXRpb25FcnJvciwgInNkcE1MaW5l
SW5kZXggaXMgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbiA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb25z
W3NkcE1MaW5lSW5kZXhdLmdldCgpOworICAgICAgICB0YXJnZXRNZWRpYURlc2NyaXB0aW9uID0g
JnJlbW90ZU1lZGlhRGVzY3JpcHRpb25zW3NkcE1MaW5lSW5kZXhdOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkBAIC02ODUsNyAr
NjgyLDggQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0
ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBydGNDYW5kaWQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fbWVkaWFFbmRwb2ludC0+YWRkUmVtb3RlQ2FuZGlkYXRlKHJlc3VsdC5jYW5kaWRh
dGUoKSwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+bWlkKCksIHRhcmdldE1lZGlhRGVzY3JpcHRp
b24tPmljZVVmcmFnKCksIHRhcmdldE1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3JkKCkpOwor
ICAgIEFTU0VSVCh0YXJnZXRNZWRpYURlc2NyaXB0aW9uKTsKKyAgICBtX21lZGlhRW5kcG9pbnQt
PmFkZFJlbW90ZUNhbmRpZGF0ZShyZXN1bHQuY2FuZGlkYXRlKCksIHRhcmdldE1lZGlhRGVzY3Jp
cHRpb24tPm1pZCwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcsIHRhcmdldE1lZGlh
RGVzY3JpcHRpb24tPmljZVBhc3N3b3JkKTsKIAogICAgIHRhcmdldE1lZGlhRGVzY3JpcHRpb24t
PmFkZEljZUNhbmRpZGF0ZShXVEZNb3ZlKHJlc3VsdC5jYW5kaWRhdGUoKSkpOwogCkBAIC04Mzcs
MTEgKzgzNSwxMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Z290SWNlQ2Fu
ZGlkYXRlKGNvbnN0IFN0cmluZyYgbWlkLCBJY2VDYW5kaWRhdAogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9yJiBtZWRpYURl
c2NyaXB0aW9ucyA9IGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigpLT5jb25maWd1cmF0aW9uKCkt
Pm1lZGlhRGVzY3JpcHRpb25zKCk7CisgICAgYXV0byYgbWVkaWFEZXNjcmlwdGlvbnMgPSBpbnRl
cm5hbExvY2FsRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0aW9u
cygpOwogICAgIHNpemVfdCBtZWRpYURlc2NyaXB0aW9uSW5kZXggPSBub3RGb3VuZDsKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25zW2ldLT5taWQoKSA9PSBtaWQpIHsKKyAgICAg
ICAgaWYgKG1lZGlhRGVzY3JpcHRpb25zW2ldLm1pZCA9PSBtaWQpIHsKICAgICAgICAgICAgIG1l
ZGlhRGVzY3JpcHRpb25JbmRleCA9IGk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtODU1LDkgKzg1Myw3IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RJ
Y2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBtaWQsIEljZUNhbmRpZGF0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvJiBtZWRpYURlc2NyaXB0aW9uID0gbWVkaWFEZXNjcmlwdGlv
bnNbbWVkaWFEZXNjcmlwdGlvbkluZGV4XTsKLSAgICBBU1NFUlQobWVkaWFEZXNjcmlwdGlvbik7
Ci0gICAgbWVkaWFEZXNjcmlwdGlvbi0+YWRkSWNlQ2FuZGlkYXRlKFdURk1vdmUoY2FuZGlkYXRl
KSk7CisgICAgbWVkaWFEZXNjcmlwdGlvbnNbbWVkaWFEZXNjcmlwdGlvbkluZGV4XS5hZGRJY2VD
YW5kaWRhdGUoV1RGTW92ZShjYW5kaWRhdGUpKTsKIAogICAgIG1fY2xpZW50LT5maXJlRXZlbnQo
UlRDSWNlQ2FuZGlkYXRlRXZlbnQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIFJUQ0ljZUNhbmRpZGF0
ZTo6Y3JlYXRlKGNhbmRpZGF0ZUxpbmUsIG1pZCwgbWVkaWFEZXNjcmlwdGlvbkluZGV4KSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKaW5kZXggMDEzZDM1ZTJlZjYxYzI4YzVh
YzljNmU4OGY5YTNkZTVjYjYwNzM3Yi4uZTAwNGU0ZDY4YmQzNDg5MDk0ZWE3NWI5YjM1NDQyNDFh
NGEzMGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC00MywxMCArNDMs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1l
ZGlhU3RyZWFtVHJhY2s7Ci1jbGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKK3N0cnVjdCBQZWVy
TWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFNEUFByb2Nlc3NvcjsKIAotdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPFBlZXJNZWRpYURlc2NyaXB0aW9uPj4gTWVkaWFEZXNjcmlwdGlvblZlY3RvcjsKK3R5
cGVkZWYgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBNZWRpYURlc2NyaXB0aW9uVmVjdG9y
OwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IFJ0cFNlbmRlclZlY3RvcjsK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IFJ0cFRyYW5zY2VpdmVy
VmVjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1NEUFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NE
UFByb2Nlc3Nvci5jcHAKaW5kZXggZGIyYmQ1Mzc0YmYxN2JkZjA3ZGQxMGIzMzY0MzYyMzNmNDRl
ZDFkNC4uOWExMWNhYjI4M2JiNWMyZTA2NmZjYjdmNTQ3ZDEyMmU1ZGQ2ZGQ0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJvY2Vzc29yLmNwcApA
QCAtMTk5LDIyICsxOTksMjIgQEAgc3RhdGljIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNPTihjb25zdCBTdHIKICAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbWVkaWFEZXNjcmlwdGlvbk9iamVjdCA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25zQXJyYXktPmdldChpKS0+
YXNPYmplY3QobWVkaWFEZXNjcmlwdGlvbk9iamVjdCk7CiAKLSAgICAgICAgUmVmUHRyPFBlZXJN
ZWRpYURlc2NyaXB0aW9uPiBtZWRpYURlc2NyaXB0aW9uID0gUGVlck1lZGlhRGVzY3JpcHRpb246
OmNyZWF0ZSgpOworICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiBtZWRpYURlc2NyaXB0aW9u
OwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRTdHJpbmcodHlwZVN0
cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRU
eXBlKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24udHlwZSA9IHN0
cmluZ1ZhbHVlOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRJbnRl
Z2VyKHBvcnRTdHJpbmcoKSwgaW50VmFsdWUpKQotICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlv
bi0+c2V0UG9ydChpbnRWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLnBvcnQg
PSBpbnRWYWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3Ry
aW5nKGFkZHJlc3NTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0QWRkcmVzcyhzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLmFkZHJlc3MgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlw
dGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1vZGVTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZShzdHJpbmdWYWx1ZSk7CisgICAgICAgICAg
ICBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBpZiAobWVk
aWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1pZFN0cmluZygpLCBzdHJpbmdWYWx1ZSkp
Ci0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNaWQoc3RyaW5nVmFsdWUpOworICAg
ICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5taWQgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHBheWxvYWRzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdldEFycmF5KHBheWxvYWRz
U3RyaW5nKCksIHBheWxvYWRzQXJyYXkpOwpAQCAtMjU4LDM3ICsyNTgsMzcgQEAgc3RhdGljIFJl
ZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9t
SlNPTihjb25zdCBTdHIKICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5hZGRQYXJhbWV0ZXIo
InJ0eFRpbWUiLCBpbnRWYWx1ZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1lZGlh
RGVzY3JpcHRpb24tPmFkZFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSk7CisgICAgICAgICAgICBt
ZWRpYURlc2NyaXB0aW9uLmFkZFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBydGNwT2JqZWN0ID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdl
dE9iamVjdChydGNwU3RyaW5nKCksIHJ0Y3BPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAocnRj
cE9iamVjdC0+Z2V0Qm9vbGVhbihtdXhTdHJpbmcoKSwgYm9vbFZhbHVlKSkKLSAgICAgICAgICAg
ICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRSdGNwTXV4KGJvb2xWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi5ydGNwTXV4ID0gYm9vbFZhbHVlOwogCiAgICAgICAgICAg
ICBpZiAocnRjcE9iamVjdC0+Z2V0U3RyaW5nKHJ0Y3BBZGRyZXNzU3RyaW5nKCksIHN0cmluZ1Zh
bHVlKSkKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRSdGNwQWRkcmVzcyhz
dHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5ydGNwQWRkcmVz
cyA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAocnRjcE9iamVjdC0+Z2V0SW50ZWdl
cihydGNwUG9ydFN0cmluZygpLCBpbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0UnRjcFBvcnQoaW50VmFsdWUpOworICAgICAgICAgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24ucnRjcFBvcnQgPSBpbnRWYWx1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICht
ZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRTdHJpbmcobWVkaWFTdHJlYW1JZFN0cmluZygpLCBz
dHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVh
bUlkKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJl
YW1JZCA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0
LT5nZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAg
ICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1lZGlhU3RyZWFtVHJhY2tJZChzdHJpbmdW
YWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtVHJhY2tJZCA9
IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGR0bHNPYmpl
Y3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBpZiAobWVkaWFEZXNjcmlw
dGlvbk9iamVjdC0+Z2V0T2JqZWN0KGR0bHNTdHJpbmcoKSwgZHRsc09iamVjdCkpIHsKICAgICAg
ICAgICAgIGlmIChkdGxzT2JqZWN0LT5nZXRTdHJpbmcoc2V0dXBTdHJpbmcoKSwgc3RyaW5nVmFs
dWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldER0bHNTZXR1cChzdHJp
bmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAgPSBz
dHJpbmdWYWx1ZTsKIAogICAgICAgICAgICAgaWYgKGR0bHNPYmplY3QtPmdldFN0cmluZyhmaW5n
ZXJwcmludEhhc2hGdW5jdGlvblN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICAg
ICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKHN0cmlu
Z1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmR0bHNGaW5nZXJwcmlu
dEhhc2hGdW5jdGlvbiA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAoZHRsc09iamVj
dC0+Z2V0U3RyaW5nKGZpbmdlcnByaW50U3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAgICAgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzRmluZ2VycHJpbnQoc3RyaW5nVmFsdWUp
OworICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50ID0gc3Ry
aW5nVmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHNz
cmNzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CkBAIC0yOTYsMTkgKzI5NiwxOSBA
QCBzdGF0aWMgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbkZyb21KU09OKGNvbnN0IFN0cgogCiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBzc3Jjc0FycmF5LT5sZW5ndGgoKTsgKytqKSB7CiAgICAgICAgICAgICBzc3Jjc0FycmF5
LT5nZXQoaiktPmFzSW50ZWdlcihpbnRWYWx1ZSk7Ci0gICAgICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLT5hZGRTc3JjKGludFZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uYWRk
U3NyYyhpbnRWYWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlv
bk9iamVjdC0+Z2V0U3RyaW5nKGNuYW1lU3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAgICAgICAg
ICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldENuYW1lKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAg
IG1lZGlhRGVzY3JpcHRpb24uY25hbWUgPSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBpY2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0T2JqZWN0KGljZVN0cmluZygp
LCBpY2VPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoaWNlT2JqZWN0LT5nZXRTdHJpbmcodWZy
YWdTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRp
b24tPnNldEljZVVmcmFnKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLmljZVVmcmFnID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgICAgIGlmIChpY2VPYmpl
Y3QtPmdldFN0cmluZyhwYXNzd29yZFN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlUGFzc3dvcmQoc3RyaW5nVmFsdWUpOworICAg
ICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uaWNlUGFzc3dvcmQgPSBzdHJpbmdWYWx1ZTsK
IAogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYW5kaWRhdGVzQXJyYXkgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpY2VPYmplY3QtPmdldEFycmF5
KGNhbmRpZGF0ZXNTdHJpbmcoKSwgY2FuZGlkYXRlc0FycmF5KTsKQEAgLTMxNyw3ICszMTcsNyBA
QCBzdGF0aWMgUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbkZyb21KU09OKGNvbnN0IFN0cgogICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNhbmRpZGF0ZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICAgICAgY2FuZGlkYXRlc0FycmF5LT5nZXQoaiktPmFzT2JqZWN0KGNhbmRpZGF0
ZU9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5hZGRJY2VDYW5k
aWRhdGUoY3JlYXRlQ2FuZGlkYXRlKCpjYW5kaWRhdGVPYmplY3QpKTsKKyAgICAgICAgICAgICAg
ICBtZWRpYURlc2NyaXB0aW9uLmFkZEljZUNhbmRpZGF0ZShjcmVhdGVDYW5kaWRhdGUoKmNhbmRp
ZGF0ZU9iamVjdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTM1MSwxOCArMzUx
LDE4IEBAIHN0YXRpYyBTdHJpbmcgY29uZmlndXJhdGlvblRvSlNPTihjb25zdCBNZWRpYUVuZHBv
aW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24mIGNvbmZpCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IG1lZGlhRGVzY3JpcHRpb25zQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAK
LSAgICBmb3IgKGNvbnN0IFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4mIG1lZGlhRGVzY3Jp
cHRpb24gOiBjb25maWd1cmF0aW9uLm1lZGlhRGVzY3JpcHRpb25zKCkpIHsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBjb25maWd1cmF0aW9uLm1lZGlhRGVzY3JpcHRp
b25zKCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVkaWFEZXNjcmlwdGlv
bk9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAKLSAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKHR5cGVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+
dHlwZSgpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0SW50ZWdlcihwb3J0
U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnBvcnQoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3Jp
cHRpb25PYmplY3QtPnNldFN0cmluZyhhZGRyZXNzU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24t
PmFkZHJlc3MoKSk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyht
b2RlU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSk7Ci0gICAgICAgIG1lZGlhRGVz
Y3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtaWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+
bWlkKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcodHlwZVN0
cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLnR5cGUpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9u
T2JqZWN0LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5wb3J0KTsK
KyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKGFkZHJlc3NTdHJpbmco
KSwgbWVkaWFEZXNjcmlwdGlvbi5hZGRyZXNzKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9i
amVjdC0+c2V0U3RyaW5nKG1vZGVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5tb2RlKTsKKyAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKG1pZFN0cmluZygpLCBtZWRp
YURlc2NyaXB0aW9uLm1pZCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBwYXls
b2Fkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgICAgIGZvciAoYXV0
byYgcGF5bG9hZCA6IG1lZGlhRGVzY3JpcHRpb24tPnBheWxvYWRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBwYXlsb2FkIDogbWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkcykgewogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGF5bG9hZE9iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHBheWxvYWRPYmplY3QtPnNldEludGVnZXIodHlw
ZVN0cmluZygpLCBwYXlsb2FkLnR5cGUpOwpAQCAtMzg3LDM1ICszODcsMzUgQEAgc3RhdGljIFN0
cmluZyBjb25maWd1cmF0aW9uVG9KU09OKGNvbnN0IE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmln
dXJhdGlvbiYgY29uZmkKICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0QXJyYXko
cGF5bG9hZHNTdHJpbmcoKSwgcGF5bG9hZHNBcnJheSk7CiAKICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcnRjcE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ICAgIHJ0Y3BPYmplY3QtPnNldEJvb2xlYW4obXV4U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24t
PnJ0Y3BNdXgoKSk7Ci0gICAgICAgIHJ0Y3BPYmplY3QtPnNldFN0cmluZyhhZGRyZXNzU3RyaW5n
KCksIG1lZGlhRGVzY3JpcHRpb24tPnJ0Y3BBZGRyZXNzKCkpOwotICAgICAgICBydGNwT2JqZWN0
LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+cnRjcFBvcnQoKSk7
CisgICAgICAgIHJ0Y3BPYmplY3QtPnNldEJvb2xlYW4obXV4U3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24ucnRjcE11eCk7CisgICAgICAgIHJ0Y3BPYmplY3QtPnNldFN0cmluZyhhZGRyZXNzU3Ry
aW5nKCksIG1lZGlhRGVzY3JpcHRpb24ucnRjcEFkZHJlc3MpOworICAgICAgICBydGNwT2JqZWN0
LT5zZXRJbnRlZ2VyKHBvcnRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5ydGNwUG9ydCk7CiAg
ICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldE9iamVjdChydGNwU3RyaW5nKCksIHJ0
Y3BPYmplY3QpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyht
ZWRpYVN0cmVhbUlkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtSWQoKSk7
Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtZWRpYVN0cmVhbVRy
YWNrSWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+bWVkaWFTdHJlYW1UcmFja0lkKCkpOwor
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJlYW1JZFN0
cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQpOworICAgICAgICBtZWRpYURl
c2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5nKCksIG1l
ZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1UcmFja0lkKTsKIAogICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkdGxzT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRp
b24tPmR0bHNTZXR1cCgpKTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnBy
aW50SGFzaEZ1bmN0aW9uU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmR0bHNGaW5nZXJwcmlu
dEhhc2hGdW5jdGlvbigpKTsKLSAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnBy
aW50U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmR0bHNGaW5nZXJwcmludCgpKTsKKyAgICAg
ICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24u
ZHRsc1NldHVwKTsKKyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnByaW50SGFz
aEZ1bmN0aW9uU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50SGFzaEZ1
bmN0aW9uKTsKKyAgICAgICAgZHRsc09iamVjdC0+c2V0U3RyaW5nKGZpbmdlcnByaW50U3RyaW5n
KCksIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50KTsKICAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbk9iamVjdC0+c2V0T2JqZWN0KGR0bHNTdHJpbmcoKSwgZHRsc09iamVjdCk7CiAKICAg
ICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzc3Jjc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6
OmNyZWF0ZSgpOwogCi0gICAgICAgIGZvciAoYXV0byBzc3JjIDogbWVkaWFEZXNjcmlwdGlvbi0+
c3NyY3MoKSkKKyAgICAgICAgZm9yIChhdXRvIHNzcmMgOiBtZWRpYURlc2NyaXB0aW9uLnNzcmNz
KQogICAgICAgICAgICAgc3NyY3NBcnJheS0+cHVzaERvdWJsZShzc3JjKTsKICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0QXJyYXkoc3NyY3NTdHJpbmcoKSwgc3NyY3NBcnJheSk7
CiAKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKGNuYW1lU3RyaW5n
KCksIG1lZGlhRGVzY3JpcHRpb24tPmNuYW1lKCkpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9u
T2JqZWN0LT5zZXRTdHJpbmcoY25hbWVTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5jbmFtZSk7
CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaWNlT2JqZWN0ID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgaWNlT2JqZWN0LT5zZXRTdHJpbmcodWZyYWdTdHJp
bmcoKSwgbWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcoKSk7Ci0gICAgICAgIGljZU9iamVjdC0+
c2V0U3RyaW5nKHBhc3N3b3JkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3Jk
KCkpOworICAgICAgICBpY2VPYmplY3QtPnNldFN0cmluZyh1ZnJhZ1N0cmluZygpLCBtZWRpYURl
c2NyaXB0aW9uLmljZVVmcmFnKTsKKyAgICAgICAgaWNlT2JqZWN0LT5zZXRTdHJpbmcocGFzc3dv
cmRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5pY2VQYXNzd29yZCk7CiAKICAgICAgICAgUmVm
UHRyPEluc3BlY3RvckFycmF5PiBjYW5kaWRhdGVzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7CiAKLSAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZWRpYURlc2NyaXB0aW9u
LT5pY2VDYW5kaWRhdGVzKCkpCisgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbWVkaWFE
ZXNjcmlwdGlvbi5pY2VDYW5kaWRhdGVzKQogICAgICAgICAgICAgY2FuZGlkYXRlc0FycmF5LT5w
dXNoT2JqZWN0KGNyZWF0ZUNhbmRpZGF0ZU9iamVjdChjYW5kaWRhdGUpKTsKIAogICAgICAgICBp
Y2VPYmplY3QtPnNldEFycmF5KGNhbmRpZGF0ZXNTdHJpbmcoKSwgY2FuZGlkYXRlc0FycmF5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgKaW5kZXggYmQyYjA4
M2UwODk5NTBlMGFhZGZkY2M2NGM4NjI3MTJiN2Q2YTU4OS4uMjkzY2M4MmVlZWUzMWYwMzJjMGVj
ODAyOWI2ZWNjYzY3NTU4YWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25Db25m
aWd1cmF0aW9uLmgKQEAgLTUyLDE3ICs1MiwxNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2Vz
c2lvblZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25WZXJzaW9uOyB9CiAgICAgdm9p
ZCBzZXRTZXNzaW9uVmVyc2lvbih1bnNpZ25lZCBzZXNzaW9uVmVyc2lvbikgeyBtX3Nlc3Npb25W
ZXJzaW9uID0gc2Vzc2lvblZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGVl
ck1lZGlhRGVzY3JpcHRpb24+PiYgbWVkaWFEZXNjcmlwdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhRGVzY3JpcHRpb25zOyB9Ci0gICAgdm9pZCBhZGRNZWRpYURlc2NyaXB0aW9uKFJlZlB0
cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4mJiBkZXNjcmlwdGlvbikgeyBtX21lZGlhRGVzY3JpcHRp
b25zLmFwcGVuZChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7IH0KKyAgICBWZWN0b3I8UGVlck1lZGlh
RGVzY3JpcHRpb24+JiBtZWRpYURlc2NyaXB0aW9ucygpIHsgcmV0dXJuIG1fbWVkaWFEZXNjcmlw
dGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8UGVlck1lZGlhRGVzY3JpcHRpb24+JiBtZWRpYURl
c2NyaXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFEZXNjcmlwdGlvbnM7IH0KKyAgICB2
b2lkIGFkZE1lZGlhRGVzY3JpcHRpb24oUGVlck1lZGlhRGVzY3JpcHRpb24mJiBkZXNjcmlwdGlv
bikgeyBtX21lZGlhRGVzY3JpcHRpb25zLmFwcGVuZChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7IH0K
IAogICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNsb25lKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3Vy
YXRpb24+IGNvcHkgPSBjcmVhdGUoKTsKICAgICAgICAgY29weS0+bV9zZXNzaW9uSWQgPSBtX3Nl
c3Npb25JZDsKICAgICAgICAgY29weS0+bV9zZXNzaW9uVmVyc2lvbiA9IG1fc2Vzc2lvblZlcnNp
b247Ci0KLSAgICAgICAgZm9yIChhdXRvJiBtZGVzYyA6IG1fbWVkaWFEZXNjcmlwdGlvbnMpCi0g
ICAgICAgICAgICBjb3B5LT5tX21lZGlhRGVzY3JpcHRpb25zLmFwcGVuZChtZGVzYy0+Y2xvbmUo
KSk7CisgICAgICAgIGNvcHktPm1fbWVkaWFEZXNjcmlwdGlvbnMgPSBtX21lZGlhRGVzY3JpcHRp
b25zOwogCiAgICAgICAgIHJldHVybiBjb3B5OwogICAgIH0KQEAgLTc3LDcgKzc2LDcgQEAgcHJp
dmF0ZToKICAgICB1aW50NjRfdCBtX3Nlc3Npb25JZDsKICAgICB1bnNpZ25lZCBtX3Nlc3Npb25W
ZXJzaW9uIHsgMCB9OwogCi0gICAgVmVjdG9yPFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4+
IG1fbWVkaWFEZXNjcmlwdGlvbnM7CisgICAgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBt
X21lZGlhRGVzY3JpcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3Jp
cHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJNZWRpYURl
c2NyaXB0aW9uLmgKaW5kZXggZjQxMGExY2QwMDlhYzM0OTAxZGFmYjQ2N2M1MTNlMzdlZWNmYTQw
NS4uNzBlZTZlMzFlZmIxYTZiOWRkZGM4ZGE1NTc4YmE0NDhhOWY4NzY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3JpcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyTWVkaWFEZXNj
cmlwdGlvbi5oCkBAIC0yOCwxNTUgKzI4LDUxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgUGVlck1lZGlhRGVzY3JpcHRpb25faAotI2RlZmluZSBQZWVyTWVkaWFEZXNjcmlwdGlv
bl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiSWNl
Q2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQYXlsb2FkLmgiCiAjaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBlZXJNZWRpYURl
c2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlck1lZGlhRGVzY3JpcHRpb24+IHsKK3N0
cnVjdCBQZWVyTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxQ
ZWVyTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGVlck1lZGlhRGVzY3JpcHRpb24oKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgflBl
ZXJNZWRpYURlc2NyaXB0aW9uKCkgeyB9CisgICAgdm9pZCBhZGRQYXlsb2FkKE1lZGlhUGF5bG9h
ZCYmIHBheWxvYWQpIHsgcGF5bG9hZHMuYXBwZW5kKFdURk1vdmUocGF5bG9hZCkpOyB9CisgICAg
dm9pZCBhZGRTc3JjKHVuc2lnbmVkIHNzcmMpIHsgc3NyY3MuYXBwZW5kKHNzcmMpOyB9CisgICAg
dm9pZCBjbGVhclNzcmNzKCkgeyBzc3Jjcy5jbGVhcigpOyB9CisgICAgdm9pZCBhZGRJY2VDYW5k
aWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRlKSB7IGljZUNhbmRpZGF0ZXMuYXBwZW5kKFdU
Rk1vdmUoY2FuZGlkYXRlKSk7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQotICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIHsg
bV90eXBlID0gdHlwZTsgfQorICAgIFN0cmluZyB0eXBlOworICAgIHVuc2lnbmVkIHNob3J0IHBv
cnQgeyA5IH07CisgICAgU3RyaW5nIGFkZHJlc3MgeyAiMC4wLjAuMCIgfTsKKyAgICBTdHJpbmcg
bW9kZSB7ICJzZW5kcmVjdiIgfTsKKyAgICBTdHJpbmcgbWlkOwogCi0gICAgdW5zaWduZWQgc2hv
cnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQotICAgIHZvaWQgc2V0UG9ydCh1bnNp
Z25lZCBzaG9ydCBwb3J0KSB7IG1fcG9ydCA9IHBvcnQ7IH0KKyAgICBWZWN0b3I8TWVkaWFQYXls
b2FkPiBwYXlsb2FkczsKIAotICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNvbnN0IHsgcmV0
dXJuIG1fYWRkcmVzczsgfQotICAgIHZvaWQgc2V0QWRkcmVzcyhjb25zdCBTdHJpbmcmIGFkZHJl
c3MpIHsgbV9hZGRyZXNzID0gYWRkcmVzczsgfQorICAgIGJvb2wgcnRjcE11eCB7IHRydWUgfTsK
KyAgICBTdHJpbmcgcnRjcEFkZHJlc3M7CisgICAgdW5zaWduZWQgc2hvcnQgcnRjcFBvcnQgeyAw
IH07CiAKLSAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0K
LSAgICB2b2lkIHNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0K
KyAgICBTdHJpbmcgbWVkaWFTdHJlYW1JZDsKKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1UcmFja0lk
OwogCi0gICAgY29uc3QgU3RyaW5nJiBtaWQoKSBjb25zdCB7IHJldHVybiBtX21pZDsgfQotICAg
IHZvaWQgc2V0TWlkKGNvbnN0IFN0cmluZyYgbWlkKSB7IG1fbWlkID0gbWlkOyB9CisgICAgU3Ry
aW5nIGR0bHNTZXR1cCB7ICJhY3RwYXNzIiB9OworICAgIFN0cmluZyBkdGxzRmluZ2VycHJpbnRI
YXNoRnVuY3Rpb247CisgICAgU3RyaW5nIGR0bHNGaW5nZXJwcmludDsKIAotICAgIGNvbnN0IFZl
Y3RvcjxNZWRpYVBheWxvYWQ+JiBwYXlsb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZHM7
IH0KLSAgICB2b2lkIGFkZFBheWxvYWQoTWVkaWFQYXlsb2FkJiYgcGF5bG9hZCkgeyBtX3BheWxv
YWRzLmFwcGVuZChXVEZNb3ZlKHBheWxvYWQpKTsgfQotICAgIHZvaWQgc2V0UGF5bG9hZHMoVmVj
dG9yPE1lZGlhUGF5bG9hZD4mJiBwYXlsb2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9hZHM7IH0K
LSAgICB2b2lkIHNldFBheWxvYWRzKGNvbnN0IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBwYXlsb2Fk
cykgeyBtX3BheWxvYWRzID0gcGF5bG9hZHM7IH0KKyAgICBWZWN0b3I8dW5zaWduZWQ+IHNzcmNz
OworICAgIFN0cmluZyBjbmFtZTsKIAotICAgIGJvb2wgcnRjcE11eCgpIGNvbnN0IHsgcmV0dXJu
IG1fcnRjcE11eDsgfQotICAgIHZvaWQgc2V0UnRjcE11eChib29sIHJ0Y3BNdXgpIHsgbV9ydGNw
TXV4ID0gcnRjcE11eDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBydGNwQWRkcmVzcygpIGNvbnN0
IHsgcmV0dXJuIG1fcnRjcEFkZHJlc3M7IH0KLSAgICB2b2lkIHNldFJ0Y3BBZGRyZXNzKGNvbnN0
IFN0cmluZyYgcnRjcEFkZHJlc3MpIHsgbV9ydGNwQWRkcmVzcyA9IHJ0Y3BBZGRyZXNzOyB9Ci0K
LSAgICB1bnNpZ25lZCBzaG9ydCBydGNwUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRjcFBvcnQ7
IH0KLSAgICB2b2lkIHNldFJ0Y3BQb3J0KHVuc2lnbmVkIHNob3J0IHJ0Y3BQb3J0KSB7IG1fcnRj
cFBvcnQgPSBydGNwUG9ydDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUlkOyB9Ci0gICAgdm9pZCBzZXRNZWRpYVN0cmVh
bUlkKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1JZCkgeyBtX21lZGlhU3RyZWFtSWQgPSBtZWRp
YVN0cmVhbUlkOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtVHJhY2tJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1UcmFja0lkOyB9Ci0gICAgdm9pZCBzZXRNZWRpYVN0
cmVhbVRyYWNrSWQoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbVRyYWNrSWQpIHsgbV9tZWRpYVN0
cmVhbVRyYWNrSWQgPSBtZWRpYVN0cmVhbVRyYWNrSWQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
ZHRsc1NldHVwKCkgY29uc3QgeyByZXR1cm4gbV9kdGxzU2V0dXA7IH0KLSAgICB2b2lkIHNldER0
bHNTZXR1cChjb25zdCBTdHJpbmcmIGR0bHNTZXR1cCkgeyBtX2R0bHNTZXR1cCA9IGR0bHNTZXR1
cDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsgfQotICAgIHZvaWQg
c2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZHRsc0ZpbmdlcnBy
aW50SGFzaEZ1bmN0aW9uKSB7IG1fZHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uID0gZHRsc0Zp
bmdlcnByaW50SGFzaEZ1bmN0aW9uOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGR0bHNGaW5nZXJw
cmludCgpIGNvbnN0IHsgcmV0dXJuIG1fZHRsc0ZpbmdlcnByaW50OyB9Ci0gICAgdm9pZCBzZXRE
dGxzRmluZ2VycHJpbnQoY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnQpIHsgbV9kdGxzRmlu
Z2VycHJpbnQgPSBkdGxzRmluZ2VycHJpbnQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgY25hbWUo
KSBjb25zdCB7IHJldHVybiBtX2NuYW1lOyB9Ci0gICAgdm9pZCBzZXRDbmFtZShjb25zdCBTdHJp
bmcmIGNuYW1lKSB7IG1fY25hbWUgPSBjbmFtZTsgfQotCi0gICAgY29uc3QgVmVjdG9yPHVuc2ln
bmVkPiYgc3NyY3MoKSBjb25zdCB7IHJldHVybiBtX3NzcmNzOyB9Ci0gICAgdm9pZCBhZGRTc3Jj
KHVuc2lnbmVkIHNzcmMpIHsgbV9zc3Jjcy5hcHBlbmQoc3NyYyk7IH0KLSAgICB2b2lkIGNsZWFy
U3NyY3MoKSB7IG1fc3NyY3MuY2xlYXIoKTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBpY2VVZnJh
ZygpIGNvbnN0IHsgcmV0dXJuIG1faWNlVWZyYWc7IH0KLSAgICB2b2lkIHNldEljZVVmcmFnKGNv
bnN0IFN0cmluZyYgaWNlVWZyYWcpIHsgbV9pY2VVZnJhZyA9IGljZVVmcmFnOyB9Ci0KLSAgICBj
b25zdCBTdHJpbmcmIGljZVBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV9pY2VQYXNzd29yZDsg
fQotICAgIHZvaWQgc2V0SWNlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBpY2VQYXNzd29yZCkgeyBt
X2ljZVBhc3N3b3JkID0gaWNlUGFzc3dvcmQ7IH0KLQotICAgIGNvbnN0IFZlY3RvcjxJY2VDYW5k
aWRhdGU+JiBpY2VDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VDYW5kaWRhdGVzOyB9
Ci0gICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRlKSB7IG1f
aWNlQ2FuZGlkYXRlcy5hcHBlbmQoV1RGTW92ZShjYW5kaWRhdGUpKTsgfQotCi0gICAgUmVmUHRy
PFBlZXJNZWRpYURlc2NyaXB0aW9uPiBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBSZWZQ
dHI8UGVlck1lZGlhRGVzY3JpcHRpb24+IGNvcHkgPSBjcmVhdGUoKTsKLQotICAgICAgICBjb3B5
LT5tX3R5cGUgPSBTdHJpbmcobV90eXBlKTsKLSAgICAgICAgY29weS0+bV9wb3J0ID0gbV9wb3J0
OwotICAgICAgICBjb3B5LT5tX2FkZHJlc3MgPSBTdHJpbmcobV9hZGRyZXNzKTsKLSAgICAgICAg
Y29weS0+bV9tb2RlID0gU3RyaW5nKG1fbW9kZSk7Ci0gICAgICAgIGNvcHktPm1fbWlkID0gU3Ry
aW5nKG1fbWlkKTsKLQotICAgICAgICBjb3B5LT5tX3BheWxvYWRzID0gbV9wYXlsb2FkczsKLQot
ICAgICAgICBjb3B5LT5tX3J0Y3BNdXggPSBtX3J0Y3BNdXg7Ci0gICAgICAgIGNvcHktPm1fcnRj
cEFkZHJlc3MgPSBTdHJpbmcobV9ydGNwQWRkcmVzcyk7Ci0gICAgICAgIGNvcHktPm1fcnRjcFBv
cnQgPSBtX3J0Y3BQb3J0OwotCi0gICAgICAgIGNvcHktPm1fbWVkaWFTdHJlYW1JZCA9IFN0cmlu
ZyhtX21lZGlhU3RyZWFtSWQpOwotICAgICAgICBjb3B5LT5tX21lZGlhU3RyZWFtVHJhY2tJZCA9
IFN0cmluZyhtX21lZGlhU3RyZWFtVHJhY2tJZCk7Ci0KLSAgICAgICAgY29weS0+bV9kdGxzU2V0
dXAgPSBTdHJpbmcobV9kdGxzU2V0dXApOwotICAgICAgICBjb3B5LT5tX2R0bHNGaW5nZXJwcmlu
dEhhc2hGdW5jdGlvbiA9IFN0cmluZyhtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbik7Ci0g
ICAgICAgIGNvcHktPm1fZHRsc0ZpbmdlcnByaW50ID0gU3RyaW5nKG1fZHRsc0ZpbmdlcnByaW50
KTsKLQotICAgICAgICBmb3IgKGF1dG8gc3NyYyA6IG1fc3NyY3MpCi0gICAgICAgICAgICBjb3B5
LT5tX3NzcmNzLmFwcGVuZChzc3JjKTsKLQotICAgICAgICBjb3B5LT5tX2NuYW1lID0gU3RyaW5n
KG1fY25hbWUpOwotCi0gICAgICAgIGNvcHktPm1faWNlVWZyYWcgPSBTdHJpbmcobV9pY2VVZnJh
Zyk7Ci0gICAgICAgIGNvcHktPm1faWNlUGFzc3dvcmQgPSBTdHJpbmcobV9pY2VQYXNzd29yZCk7
Ci0KLSAgICAgICAgY29weS0+bV9pY2VDYW5kaWRhdGVzID0gbV9pY2VDYW5kaWRhdGVzOwotCi0g
ICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBQZWVyTWVkaWFEZXNj
cmlwdGlvbigpIHsgfQotCi0gICAgU3RyaW5nIG1fdHlwZTsKLSAgICB1bnNpZ25lZCBzaG9ydCBt
X3BvcnQgeyA5IH07Ci0gICAgU3RyaW5nIG1fYWRkcmVzcyB7ICIwLjAuMC4wIiB9OwotICAgIFN0
cmluZyBtX21vZGUgeyAic2VuZHJlY3YiIH07Ci0gICAgU3RyaW5nIG1fbWlkOwotCi0gICAgVmVj
dG9yPE1lZGlhUGF5bG9hZD4gbV9wYXlsb2FkczsKLQotICAgIGJvb2wgbV9ydGNwTXV4IHsgdHJ1
ZSB9OwotICAgIFN0cmluZyBtX3J0Y3BBZGRyZXNzOwotICAgIHVuc2lnbmVkIHNob3J0IG1fcnRj
cFBvcnQgeyAwIH07Ci0KLSAgICBTdHJpbmcgbV9tZWRpYVN0cmVhbUlkOwotICAgIFN0cmluZyBt
X21lZGlhU3RyZWFtVHJhY2tJZDsKLQotICAgIFN0cmluZyBtX2R0bHNTZXR1cCB7ICJhY3RwYXNz
IiB9OwotICAgIFN0cmluZyBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsKLSAgICBTdHJp
bmcgbV9kdGxzRmluZ2VycHJpbnQ7Ci0KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fc3NyY3M7Ci0g
ICAgU3RyaW5nIG1fY25hbWU7Ci0KLSAgICBTdHJpbmcgbV9pY2VVZnJhZzsKLSAgICBTdHJpbmcg
bV9pY2VQYXNzd29yZDsKLSAgICBWZWN0b3I8SWNlQ2FuZGlkYXRlPiBtX2ljZUNhbmRpZGF0ZXM7
CisgICAgU3RyaW5nIGljZVVmcmFnOworICAgIFN0cmluZyBpY2VQYXNzd29yZDsKKyAgICBWZWN0
b3I8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCi0KLSNlbmRpZiAvLyBQZWVyTWVkaWFE
ZXNjcmlwdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcAppbmRleCA2
MTIwMWUxMGFkMTY3ZjEyYjAwNWJmMDJlMjg5ODYwYjMxYjExYTY1Li4zZGNkNDAwMTY5ODgzYzJk
ZjFkYTY3ZDVlMGEwYzRlMGI5YjkyNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2lu
dE93ci5jcHAKQEAgLTIxNyw4ICsyMTcsOCBAQCBNZWRpYUVuZHBvaW50OjpVcGRhdGVSZXN1bHQg
TWVkaWFFbmRwb2ludE93cjo6dXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24oTWVkaWFFbgogICAg
IGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsgaSA8IGNvbmZpZ3VyYXRp
b24tPm1lZGlhRGVzY3JpcHRpb25zKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVHJhbnNjZWl2
ZXJDb25maWcgY29uZmlnOwogICAgICAgICBjb25maWcudHlwZSA9IFNlc3Npb25UeXBlTWVkaWE7
Ci0gICAgICAgIGNvbmZpZy5pc0R0bHNDbGllbnQgPSBjb25maWd1cmF0aW9uLT5tZWRpYURlc2Ny
aXB0aW9ucygpW2ldLT5kdGxzU2V0dXAoKSA9PSAiYWN0aXZlIjsKLSAgICAgICAgY29uZmlnLm1p
ZCA9IGNvbmZpZ3VyYXRpb24tPm1lZGlhRGVzY3JpcHRpb25zKClbaV0tPm1pZCgpOworICAgICAg
ICBjb25maWcuaXNEdGxzQ2xpZW50ID0gY29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMo
KVtpXS5kdGxzU2V0dXAgPT0gImFjdGl2ZSI7CisgICAgICAgIGNvbmZpZy5taWQgPSBjb25maWd1
cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLm1pZDsKICAgICAgICAgdHJhbnNjZWl2ZXJD
b25maWdzLmFwcGVuZChXVEZNb3ZlKGNvbmZpZykpOwogICAgIH0KIApAQCAtMjI3LDcgKzIyNyw3
IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdCBNZWRpYUVuZHBvaW50T3dyOjp1cGRhdGVS
ZWNlaXZlQ29uZmlndXJhdGlvbihNZWRpYUVuCiAgICAgLy8gUHJlcGFyZSB0aGUgbmV3IHNlc3Np
b25zLgogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbnVtYmVyT2ZSZWNlaXZlUHJlcGFyZWRTZXNz
aW9uczsgaSA8IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE93clNlc3Np
b24qIHNlc3Npb24gPSBtX3RyYW5zY2VpdmVyc1tpXS0+c2Vzc2lvbigpOwotICAgICAgICBwcmVw
YXJlTWVkaWFTZXNzaW9uKE9XUl9NRURJQV9TRVNTSU9OKHNlc3Npb24pLCBjb25maWd1cmF0aW9u
LT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLmdldCgpLCBpc0luaXRpYXRvcik7CisgICAgICAgIHBy
ZXBhcmVNZWRpYVNlc3Npb24oT1dSX01FRElBX1NFU1NJT04oc2Vzc2lvbiksICZjb25maWd1cmF0
aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLCBpc0luaXRpYXRvcik7CiAgICAgICAgIG93cl90
cmFuc3BvcnRfYWdlbnRfYWRkX3Nlc3Npb24obV90cmFuc3BvcnRBZ2VudCwgc2Vzc2lvbik7CiAg
ICAgfQogCkBAIC0yNTIsMzMgKzI1MiwzMyBAQCBNZWRpYUVuZHBvaW50OjpVcGRhdGVSZXN1bHQg
TWVkaWFFbmRwb2ludE93cjo6dXBkYXRlU2VuZENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwbwogICAg
IGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsgaSA8IGNvbmZpZ3VyYXRp
b24tPm1lZGlhRGVzY3JpcHRpb25zKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVHJhbnNjZWl2
ZXJDb25maWcgY29uZmlnOwogICAgICAgICBjb25maWcudHlwZSA9IFNlc3Npb25UeXBlTWVkaWE7
Ci0gICAgICAgIGNvbmZpZy5pc0R0bHNDbGllbnQgPSBjb25maWd1cmF0aW9uLT5tZWRpYURlc2Ny
aXB0aW9ucygpW2ldLT5kdGxzU2V0dXAoKSAhPSAiYWN0aXZlIjsKLSAgICAgICAgY29uZmlnLm1p
ZCA9IGNvbmZpZ3VyYXRpb24tPm1lZGlhRGVzY3JpcHRpb25zKClbaV0tPm1pZCgpOworICAgICAg
ICBjb25maWcuaXNEdGxzQ2xpZW50ID0gY29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMo
KVtpXS5kdGxzU2V0dXAgIT0gImFjdGl2ZSI7CisgICAgICAgIGNvbmZpZy5taWQgPSBjb25maWd1
cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLm1pZDsKICAgICAgICAgdHJhbnNjZWl2ZXJD
b25maWdzLmFwcGVuZChXVEZNb3ZlKGNvbmZpZykpOwogICAgIH0KIAogICAgIGVuc3VyZVRyYW5z
cG9ydEFnZW50QW5kVHJhbnNjZWl2ZXJzKGlzSW5pdGlhdG9yLCB0cmFuc2NlaXZlckNvbmZpZ3Mp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIE93clNlc3Npb24qIHNlc3Npb24gPSBtX3RyYW5zY2VpdmVyc1tpXS0+
c2Vzc2lvbigpOwotICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiYgbWRlc2MgPSAqY29uZmln
dXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsKKyAgICAgICAgYXV0byogc2Vzc2lvbiA9
IG1fdHJhbnNjZWl2ZXJzW2ldLT5zZXNzaW9uKCk7CisgICAgICAgIGF1dG8mIG1kZXNjID0gY29u
ZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsKIAotICAgICAgICBpZiAobWRlc2Mu
dHlwZSgpID09ICJhdWRpbyIgfHwgbWRlc2MudHlwZSgpID09ICJ2aWRlbyIpCi0gICAgICAgICAg
ICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgInJ0Y3AtbXV4IiwgbWRlc2MucnRjcE11eCgpLCBudWxs
cHRyKTsKKyAgICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1ZGlvIiB8fCBtZGVzYy50eXBlID09
ICJ2aWRlbyIpCisgICAgICAgICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgInJ0Y3AtbXV4Iiwg
bWRlc2MucnRjcE11eCwgbnVsbHB0cik7CiAKLSAgICAgICAgaWYgKG1kZXNjLmljZUNhbmRpZGF0
ZXMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbWRlc2Mu
aWNlQ2FuZGlkYXRlcygpKQotICAgICAgICAgICAgICAgIGludGVybmFsQWRkUmVtb3RlQ2FuZGlk
YXRlKHNlc3Npb24sIGNhbmRpZGF0ZSwgbWRlc2MuaWNlVWZyYWcoKSwgbWRlc2MuaWNlUGFzc3dv
cmQoKSk7CisgICAgICAgIGlmIChtZGVzYy5pY2VDYW5kaWRhdGVzLnNpemUoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZGVzYy5pY2VDYW5kaWRhdGVzKQorICAgICAg
ICAgICAgICAgIGludGVybmFsQWRkUmVtb3RlQ2FuZGlkYXRlKHNlc3Npb24sIGNhbmRpZGF0ZSwg
bWRlc2MuaWNlVWZyYWcsIG1kZXNjLmljZVBhc3N3b3JkKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgbV9udW1iZXJPZlNlbmRQcmVwYXJlZFNlc3Npb25zKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKCFzZW5kU291cmNlTWFwLmNvbnRhaW5zKG1kZXNjLm1pZCgp
KSkKKyAgICAgICAgaWYgKCFzZW5kU291cmNlTWFwLmNvbnRhaW5zKG1kZXNjLm1pZCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBNZWRpYVBheWxvYWQqIHBheWxvYWQg
PSBudWxscHRyOwotICAgICAgICBmb3IgKGF1dG8mIHAgOiBtZGVzYy5wYXlsb2FkcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgcCA6IG1kZXNjLnBheWxvYWRzKSB7CiAgICAgICAgICAgICBpZiAo
cC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSAhPSAiUlRYIikgewogICAg
ICAgICAgICAgICAgIHBheWxvYWQgPSAmcDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4
OCwxNCArMjg4LDE0IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdCBNZWRpYUVuZHBvaW50
T3dyOjp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvCiAgICAgICAgIGlmICghcGF5
bG9hZCkKICAgICAgICAgICAgIHJldHVybiBVcGRhdGVSZXN1bHQ6OkZhaWxlZDsKIAotICAgICAg
ICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQobWRlc2MucGF5bG9hZHMoKSwgcGF5
bG9hZC0+dHlwZSk7Ci0gICAgICAgIGF1dG8qIHNvdXJjZSA9IHN0YXRpY19jYXN0PFJlYWx0aW1l
TWVkaWFTb3VyY2VPd3IqPihzZW5kU291cmNlTWFwLmdldChtZGVzYy5taWQoKSkpOworICAgICAg
ICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQobWRlc2MucGF5bG9hZHMsIHBheWxv
YWQtPnR5cGUpOworICAgICAgICBhdXRvKiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZU1l
ZGlhU291cmNlT3dyKj4oc2VuZFNvdXJjZU1hcC5nZXQobWRlc2MubWlkKSk7CiAKICAgICAgICAg
QVNTRVJUKGNvZGVjVHlwZXMuZmluZChwYXlsb2FkLT5lbmNvZGluZ05hbWUuY29udmVydFRvQVND
SUlVcHBlcmNhc2UoKSkgIT0gbm90Rm91bmQpOwogICAgICAgICBhdXRvIGNvZGVjVHlwZSA9IHN0
YXRpY19jYXN0PE93ckNvZGVjVHlwZT4oY29kZWNUeXBlcy5maW5kKHBheWxvYWQtPmVuY29kaW5n
TmFtZS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKSk7CiAKICAgICAgICAgT3dyUGF5bG9hZCog
c2VuZFBheWxvYWQ7Ci0gICAgICAgIGlmIChtZGVzYy50eXBlKCkgPT0gImF1ZGlvIikKKyAgICAg
ICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1ZGlvIikKICAgICAgICAgICAgIHNlbmRQYXlsb2FkID0g
b3dyX2F1ZGlvX3BheWxvYWRfbmV3KGNvZGVjVHlwZSwgcGF5bG9hZC0+dHlwZSwgcGF5bG9hZC0+
Y2xvY2tSYXRlLCBwYXlsb2FkLT5jaGFubmVscyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgc2VuZFBheWxvYWQgPSBvd3JfdmlkZW9fcGF5bG9hZF9uZXcoY29kZWNUeXBlLCBwYXlsb2Fk
LT50eXBlLCBwYXlsb2FkLT5jbG9ja1JhdGUsIHBheWxvYWQtPmNjbWZpciwgcGF5bG9hZC0+bmFj
a3BsaSk7CkBAIC00NjYsOCArNDY2LDggQEAgdm9pZCBNZWRpYUVuZHBvaW50T3dyOjp1bm11dGVS
ZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiBtaWQsIE93ck1lZGlhU291cmNlKiByZWEKIAogdm9p
ZCBNZWRpYUVuZHBvaW50T3dyOjpwcmVwYXJlU2Vzc2lvbihPd3JTZXNzaW9uKiBzZXNzaW9uLCBQ
ZWVyTWVkaWFEZXNjcmlwdGlvbiogbWVkaWFEZXNjcmlwdGlvbikKIHsKLSAgICBnX29iamVjdF9z
ZXRfZGF0YV9mdWxsKEdfT0JKRUNUKHNlc3Npb24pLCAiaWNlLXVmcmFnIiwgZ19zdHJkdXAobWVk
aWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcoKS5hc2NpaSgpLmRhdGEoKSksIGdfZnJlZSk7Ci0gICAg
Z19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChzZXNzaW9uKSwgImljZS1wYXNzd29yZCIs
IGdfc3RyZHVwKG1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3JkKCkuYXNjaWkoKS5kYXRhKCkp
LCBnX2ZyZWUpOworICAgIGdfb2JqZWN0X3NldF9kYXRhX2Z1bGwoR19PQkpFQ1Qoc2Vzc2lvbiks
ICJpY2UtdWZyYWciLCBnX3N0cmR1cChtZWRpYURlc2NyaXB0aW9uLT5pY2VVZnJhZy5hc2NpaSgp
LmRhdGEoKSksIGdfZnJlZSk7CisgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChz
ZXNzaW9uKSwgImljZS1wYXNzd29yZCIsIGdfc3RyZHVwKG1lZGlhRGVzY3JpcHRpb24tPmljZVBh
c3N3b3JkLmFzY2lpKCkuZGF0YSgpKSwgZ19mcmVlKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
c2Vzc2lvbiwgIm9uLW5ldy1jYW5kaWRhdGUiLCBHX0NBTExCQUNLKGdvdENhbmRpZGF0ZSksIHRo
aXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lvbiwgIm9uLWNhbmRpZGF0ZS1nYXRoZXJp
bmctZG9uZSIsIEdfQ0FMTEJBQ0soY2FuZGlkYXRlR2F0aGVyaW5nRG9uZSksIHRoaXMpOwpAQCAt
NDc4LDI4ICs0NzgsMjggQEAgdm9pZCBNZWRpYUVuZHBvaW50T3dyOjpwcmVwYXJlTWVkaWFTZXNz
aW9uKE93ck1lZGlhU2Vzc2lvbiogbWVkaWFTZXNzaW9uLCBQZWVyTWUKIHsKICAgICBwcmVwYXJl
U2Vzc2lvbihPV1JfU0VTU0lPTihtZWRpYVNlc3Npb24pLCBtZWRpYURlc2NyaXB0aW9uKTsKIAot
ICAgIGJvb2wgdXNlUnRjcE11eCA9ICFpc0luaXRpYXRvciAmJiBtZWRpYURlc2NyaXB0aW9uLT5y
dGNwTXV4KCk7CisgICAgYm9vbCB1c2VSdGNwTXV4ID0gIWlzSW5pdGlhdG9yICYmIG1lZGlhRGVz
Y3JpcHRpb24tPnJ0Y3BNdXg7CiAgICAgZ19vYmplY3Rfc2V0KG1lZGlhU2Vzc2lvbiwgInJ0Y3At
bXV4IiwgdXNlUnRjcE11eCwgbnVsbHB0cik7CiAKLSAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24t
PmNuYW1lKCkuaXNFbXB0eSgpICYmIG1lZGlhRGVzY3JpcHRpb24tPnNzcmNzKCkuc2l6ZSgpKSB7
Ci0gICAgICAgIGdfb2JqZWN0X3NldChtZWRpYVNlc3Npb24sICJjbmFtZSIsIG1lZGlhRGVzY3Jp
cHRpb24tPmNuYW1lKCkuYXNjaWkoKS5kYXRhKCksCi0gICAgICAgICAgICAic2VuZC1zc3JjIiwg
bWVkaWFEZXNjcmlwdGlvbi0+c3NyY3MoKVswXSwKKyAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24t
PmNuYW1lLmlzRW1wdHkoKSAmJiBtZWRpYURlc2NyaXB0aW9uLT5zc3Jjcy5zaXplKCkpIHsKKyAg
ICAgICAgZ19vYmplY3Rfc2V0KG1lZGlhU2Vzc2lvbiwgImNuYW1lIiwgbWVkaWFEZXNjcmlwdGlv
bi0+Y25hbWUuYXNjaWkoKS5kYXRhKCksCisgICAgICAgICAgICAic2VuZC1zc3JjIiwgbWVkaWFE
ZXNjcmlwdGlvbi0+c3NyY3NbMF0sCiAgICAgICAgICAgICBudWxscHRyKTsKICAgICB9CiAKICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1lZGlhU2Vzc2lvbiwgIm9uLWluY29taW5nLXNvdXJjZSIsIEdf
Q0FMTEJBQ0soZ290SW5jb21pbmdTb3VyY2UpLCB0aGlzKTsKIAotICAgIGZvciAoYXV0byYgcGF5
bG9hZCA6IG1lZGlhRGVzY3JpcHRpb24tPnBheWxvYWRzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHBh
eWxvYWQgOiBtZWRpYURlc2NyaXB0aW9uLT5wYXlsb2FkcykgewogICAgICAgICBpZiAocGF5bG9h
ZC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSA9PSAiUlRYIikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8qIHJ0eFBheWxvYWQgPSBmaW5kUnR4UGF5
bG9hZChtZWRpYURlc2NyaXB0aW9uLT5wYXlsb2FkcygpLCBwYXlsb2FkLnR5cGUpOworICAgICAg
ICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQobWVkaWFEZXNjcmlwdGlvbi0+cGF5
bG9hZHMsIHBheWxvYWQudHlwZSk7CiAKICAgICAgICAgQVNTRVJUKGNvZGVjVHlwZXMuZmluZChw
YXlsb2FkLmVuY29kaW5nTmFtZSkgIT0gbm90Rm91bmQpOwogICAgICAgICBPd3JDb2RlY1R5cGUg
Y29kZWNUeXBlID0gc3RhdGljX2Nhc3Q8T3dyQ29kZWNUeXBlPihjb2RlY1R5cGVzLmZpbmQocGF5
bG9hZC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSkpOwogCiAgICAgICAg
IE93clBheWxvYWQqIHJlY2VpdmVQYXlsb2FkOwotICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlv
bi0+dHlwZSgpID09ICJhdWRpbyIpCisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLT50eXBl
ID09ICJhdWRpbyIpCiAgICAgICAgICAgICByZWNlaXZlUGF5bG9hZCA9IG93cl9hdWRpb19wYXls
b2FkX25ldyhjb2RlY1R5cGUsIHBheWxvYWQudHlwZSwgcGF5bG9hZC5jbG9ja1JhdGUsIHBheWxv
YWQuY2hhbm5lbHMpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlY2VpdmVQYXlsb2Fk
ID0gb3dyX3ZpZGVvX3BheWxvYWRfbmV3KGNvZGVjVHlwZSwgcGF5bG9hZC50eXBlLCBwYXlsb2Fk
LmNsb2NrUmF0ZSwgcGF5bG9hZC5jY21maXIsIHBheWxvYWQubmFja3BsaSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5k
cG9pbnRPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJy
dGMvTWVkaWFFbmRwb2ludE93ci5oCmluZGV4IGFkMWYyY2EwMjgwNTFmMmFjYzNhY2Y3ZjZiMzM0
NGJiNmRiZDcwODEuLjM4ODBhODFhYjdiZWU5ODhiNTYxNTM0Mjk0MmFiN2Y5NTQ5ZjkwZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
TWVkaWFFbmRwb2ludE93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9Pd3JUcmFuc3BvcnRBZ2VudCBPd3JUcmFuc3BvcnRBZ2VudDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKK3N0cnVjdCBQZWVy
TWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I7CiBjbGFzcyBS
VENDb25maWd1cmF0aW9uUHJpdmF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAppbmRleCBmOTE5YTQ2OTFhMDJiNGVlZjJjMTY1
ZWI5Y2VhNDI5NjFmMzI2ZmI5Li42MTQyMzE1ZDU4YzcwMjcxMDY1OWIzZjdkNTEzOGE3NzRlOGY4
ODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcApAQCAtMjI1LDggKzIyNSw4IEBAIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OmVt
dWxhdGVQbGF0Zm9ybUV2ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uKQogdm9pZCBNb2NrTWVkaWFF
bmRwb2ludDo6dXBkYXRlQ29uZmlndXJhdGlvbk1pZHMoY29uc3QgTWVkaWFFbmRwb2ludFNlc3Np
b25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIFZlY3RvcjxTdHJpbmc+IG1p
ZHM7Ci0gICAgZm9yIChjb25zdCBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+JiBtZWRpYURl
c2NyaXB0aW9uIDogY29uZmlndXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKQotICAgICAgICBt
aWRzLmFwcGVuZChtZWRpYURlc2NyaXB0aW9uLT5taWQoKSk7CisgICAgZm9yIChhdXRvJiBtZWRp
YURlc2NyaXB0aW9uIDogY29uZmlndXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKQorICAgICAg
ICBtaWRzLmFwcGVuZChtZWRpYURlc2NyaXB0aW9uLm1pZCk7CiAgICAgbV9taWRzLnN3YXAobWlk
cyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293137</attachid>
            <date>2016-10-28 03:41:49 -0700</date>
            <delta_ts>2016-10-28 04:17:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164059-20161028123756.patch</filename>
            <type>text/plain</type>
            <size>52946</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM2N2NlYTRhZjA0NjQ4
ZTU2YWQxNzA0NTQwN2ZiNTMzMGI3YjgwZi4uMjczZGZhMDRmN2M0M2UyNzljOTBmMWZmNDg2MmU5
ZjEwNGVjZWUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE2LTEwLTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQZWVyTWVkaWFEZXNjcmlw
dGlvbiBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlZmNvdW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2Zm
ZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlQW5zd2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3VyY2VNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2NhbERl
c2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZVRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RJY2VDYW5kaWRhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uZmlndXJhdGlvbkZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbmZpZ3VyYXRpb25Ub0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29yOjpn
ZW5lcmF0ZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29yOjpw
YXJzZUNhbmRpZGF0ZUxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNh
bmRpZGF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRT
ZXNzaW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNl
c3Npb25Db25maWd1cmF0aW9uOjptZWRpYURlc2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb246OmFkZE1lZGlhRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uOjpj
bG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3JpcHRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRQYXlsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRTc3JjKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpjbGVhclNzcmNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjphZGRJY2VDYW5kaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6flBlZXJNZWRpYURlc2NyaXB0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjp0
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpz
ZXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
Ojpwb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
OjpzZXRQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0
aW9uOjphZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2Ny
aXB0aW9uOjpzZXRBZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRp
YURlc2NyaXB0aW9uOjptb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRp
YURlc2NyaXB0aW9uOjpzZXRNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjptaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1l
ZGlhRGVzY3JpcHRpb246OnNldE1pZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVy
TWVkaWFEZXNjcmlwdGlvbjo6cGF5bG9hZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UGVlck1lZGlhRGVzY3JpcHRpb246OnNldFBheWxvYWRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwTXV4KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRSdGNwTXV4KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpydGNwQWRkcmVzcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c2V0UnRjcEFkZHJl
c3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnJ0
Y3BQb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9u
OjpzZXRSdGNwUG9ydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNj
cmlwdGlvbjo6bWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVy
TWVkaWFEZXNjcmlwdGlvbjo6c2V0TWVkaWFTdHJlYW1JZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6bWVkaWFTdHJlYW1UcmFja0lkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRNZWRpYVN0cmVh
bVRyYWNrSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRp
b246OmR0bHNTZXR1cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNj
cmlwdGlvbjo6c2V0RHRsc1NldHVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJN
ZWRpYURlc2NyaXB0aW9uOjpkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OnNldER0bHNGaW5nZXJwcmlu
dEhhc2hGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNj
cmlwdGlvbjo6ZHRsc0ZpbmdlcnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjpzZXREdGxzRmluZ2VycHJpbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmNuYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRDbmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6c3NyY3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246OmljZVVmcmFnKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURlc2NyaXB0aW9uOjpzZXRJY2VVZnJhZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyTWVkaWFEZXNjcmlwdGlvbjo6aWNlUGFz
c3dvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlck1lZGlhRGVzY3JpcHRpb246
OnNldEljZVBhc3N3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJNZWRpYURl
c2NyaXB0aW9uOjppY2VDYW5kaWRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJNZWRpYURlc2NyaXB0aW9uOjpjbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyTWVkaWFEZXNjcmlwdGlvbjo6UGVlck1lZGlhRGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYUVuZHBvaW50TWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRNYWM6OmFkZFJlbW90ZUNhbmRpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50TWFjOjpPbkljZUNhbmRpZGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhRW5kcG9pbnRNYWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludE93cjo6dXBkYXRlU2VuZENvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZUNvbmZpZ3Vy
YXRpb25NaWRzKToKKwogMjAxNi0xMC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBBTkdMRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDZkMGRiNWRlYWNhYWU1YTk4OGU1MTliNDVhYmYwY2RlY2I5
YWFlMjguLmY4MjQ4MjZmYmEyNDQwZjgxZmZiMTgzYzNhNDlmMjczYjNjNmI5YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTE2MCwyMSArMTYwLDIxIEBAIHZvaWQg
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlclRhc2soUlRDT2ZmZXJPcHRp
b25zJiwgU2Vzc2lvbkRlc2NyCiAKICAgICAvLyBSZW1vdmUgYW55IHRyYW5zY2VpdmVyIG9iamVj
dHMgZnJvbSB0cmFuc2NlaXZlcnMgdGhhdCBjYW4gYmUgbWF0Y2hlZCB0byBhbiBleGlzdGluZyBt
ZWRpYSBkZXNjcmlwdGlvbi4KICAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBjb25m
aWd1cmF0aW9uU25hcHNob3QtPm1lZGlhRGVzY3JpcHRpb25zKCkpIHsKLSAgICAgICAgaWYgKCFt
ZWRpYURlc2NyaXB0aW9uLT5wb3J0KCkpIHsKKyAgICAgICAgaWYgKCFtZWRpYURlc2NyaXB0aW9u
LnBvcnQpIHsKICAgICAgICAgICAgIC8vIFRoaXMgbWVkaWEgZGVzY3JpcHRpb24gc2hvdWxkIGJl
IHJlY3ljbGVkLgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBS
VENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlNaWQodHJh
bnNjZWl2ZXJzLCBtZWRpYURlc2NyaXB0aW9uLT5taWQoKSk7CisgICAgICAgIFJUQ1J0cFRyYW5z
Y2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMs
IG1lZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgaWYgKCF0cmFuc2NlaXZlcikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1vZGUodHJh
bnNjZWl2ZXItPmRpcmVjdGlvblN0cmluZygpKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5t
b2RlID0gdHJhbnNjZWl2ZXItPmRpcmVjdGlvblN0cmluZygpOwogICAgICAgICBpZiAodHJhbnNj
ZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSkgewogICAgICAgICAgICAgUlRDUnRwU2VuZGVy
JiBzZW5kZXIgPSAqdHJhbnNjZWl2ZXItPnNlbmRlcigpOwogCi0gICAgICAgICAgICBtZWRpYURl
c2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbUlkKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdKTsK
LSAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1lZGlhU3RyZWFtVHJhY2tJZChzZW5k
ZXIudHJhY2tJZCgpKTsKKyAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWVkaWFTdHJlYW1J
ZCA9IHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdOworICAgICAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi5tZWRpYVN0cmVhbVRyYWNrSWQgPSBzZW5kZXIudHJhY2tJZCgpOwogICAgICAgICB9CiAK
ICAgICAgICAgdHJhbnNjZWl2ZXJzLnJlbW92ZUZpcnN0KHRyYW5zY2VpdmVyKTsKQEAgLTE4Miwy
MyArMTgyLDIzIEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZl
clRhc2soUlRDT2ZmZXJPcHRpb25zJiwgU2Vzc2lvbkRlc2NyCiAKICAgICAvLyBBZGQgbWVkaWEg
ZGVzY3JpcHRpb25zIGZvciByZW1haW5pbmcgdHJhbnNjZWl2ZXJzLgogICAgIGZvciAoYXV0byYg
dHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnMpIHsKLSAgICAgICAgUmVmUHRyPFBlZXJNZWRpYURl
c2NyaXB0aW9uPiBtZWRpYURlc2NyaXB0aW9uID0gUGVlck1lZGlhRGVzY3JpcHRpb246OmNyZWF0
ZSgpOworICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiBtZWRpYURlc2NyaXB0aW9uOwogICAg
ICAgICBSVENSdHBTZW5kZXImIHNlbmRlciA9ICp0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAKLSAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TW9kZSh0cmFuc2NlaXZlci0+ZGlyZWN0aW9uU3Ry
aW5nKCkpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNaWQodHJhbnNjZWl2ZXItPnBy
b3Zpc2lvbmFsTWlkKCkpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVh
bUlkKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlv
bi0+c2V0VHlwZShzZW5kZXIudHJhY2tLaW5kKCkpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9u
LT5zZXRQYXlsb2FkcyhzZW5kZXIudHJhY2tLaW5kKCkgPT0gImF1ZGlvIiA/IG1fZGVmYXVsdEF1
ZGlvUGF5bG9hZHMgOiBtX2RlZmF1bHRWaWRlb1BheWxvYWRzKTsKLSAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKG1fZHRsc0ZpbmdlcnByaW50
RnVuY3Rpb24pOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzRmluZ2VycHJpbnQo
bV9kdGxzRmluZ2VycHJpbnQpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRDbmFtZSht
X2NuYW1lKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+YWRkU3NyYyhjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpKTsKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0SWNlVWZy
YWcobV9pY2VVZnJhZyk7Ci0gICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldEljZVBhc3N3b3Jk
KG1faWNlUGFzc3dvcmQpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1vZGUgPSB0cmFuc2Nl
aXZlci0+ZGlyZWN0aW9uU3RyaW5nKCk7CisgICAgICAgIG1lZGlhRGVzY3JpcHRpb24ubWlkID0g
dHJhbnNjZWl2ZXItPnByb3Zpc2lvbmFsTWlkKCk7CisgICAgICAgIG1lZGlhRGVzY3JpcHRpb24u
bWVkaWFTdHJlYW1JZCA9IHNlbmRlci5tZWRpYVN0cmVhbUlkcygpWzBdOworICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLnR5cGUgPSBzZW5kZXIudHJhY2tLaW5kKCk7CisgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24ucGF5bG9hZHMgPSBzZW5kZXIudHJhY2tLaW5kKCkgPT0gImF1ZGlvIiA/IG1fZGVm
YXVsdEF1ZGlvUGF5bG9hZHMgOiBtX2RlZmF1bHRWaWRlb1BheWxvYWRzOworICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLmR0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbiA9IG1fZHRsc0ZpbmdlcnBy
aW50RnVuY3Rpb247CisgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uZHRsc0ZpbmdlcnByaW50ID0g
bV9kdGxzRmluZ2VycHJpbnQ7CisgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uY25hbWUgPSBtX2Nu
YW1lOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmFkZFNzcmMoY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIoKSk7CisgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uaWNlVWZyYWcgPSBtX2lj
ZVVmcmFnOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmljZVBhc3N3b3JkID0gbV9pY2VQYXNz
d29yZDsKIAogICAgICAgICBpZiAoc2VuZGVyLnRyYWNrKCkpCi0gICAgICAgICAgICBtZWRpYURl
c2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbVRyYWNrSWQoc2VuZGVyLnRyYWNrSWQoKSk7CisgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtVHJhY2tJZCA9IHNlbmRlci50cmFj
a0lkKCk7CiAKICAgICAgICAgY29uZmlndXJhdGlvblNuYXBzaG90LT5hZGRNZWRpYURlc2NyaXB0
aW9uKFdURk1vdmUobWVkaWFEZXNjcmlwdGlvbikpOwogICAgIH0KQEAgLTIzMyw1MSArMjMzLDUx
IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVBbnN3ZXJUYXNrKFJU
Q0Fuc3dlck9wdGlvbnMmLCBTZXNzaW9uRGVzCiAgICAgY29uZmlndXJhdGlvblNuYXBzaG90LT5z
ZXRTZXNzaW9uVmVyc2lvbihtX3NkcEFuc3dlclNlc3Npb25WZXJzaW9uKyspOwogCiAgICAgYXV0
byB0cmFuc2NlaXZlcnMgPSBSdHBUcmFuc2NlaXZlclZlY3RvcihtX2NsaWVudC0+Z2V0VHJhbnNj
ZWl2ZXJzKCkpOwotICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb25WZWN0b3ImIHJlbW90ZU1lZGlh
RGVzY3JpcHRpb25zID0gaW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpLT5jb25maWd1cmF0aW9u
KCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CisgICAgYXV0byYgcmVtb3RlTWVkaWFEZXNjcmlwdGlv
bnMgPSBpbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKCktPmNvbmZpZ3VyYXRpb24oKS0+bWVkaWFE
ZXNjcmlwdGlvbnMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZW1vdGVNZWRp
YURlc2NyaXB0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlv
biYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbiA9ICpyZW1vdGVNZWRpYURlc2NyaXB0aW9uc1tpXTsK
KyAgICAgICAgYXV0byYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbiA9IHJlbW90ZU1lZGlhRGVzY3Jp
cHRpb25zW2ldOwogCi0gICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1h
dGNoVHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24u
bWlkKCkpOworICAgICAgICBhdXRvKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1p
ZCh0cmFuc2NlaXZlcnMsIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgaWYg
KCF0cmFuc2NlaXZlcikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBh
IG1hdGNoaW5nIHRyYW5zY2VpdmVyIGZvciByZW1vdGUgZGVzY3JpcHRpb24gd2hpbGUgY3JlYXRp
bmcgYW5zd2VyIik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpID49IGNvbmZpZ3VyYXRpb25TbmFwc2hvdC0+bWVkaWFEZXNjcmlwdGlvbnMoKS5zaXpl
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3TWVkaWFEZXNjcmlwdGlvbiA9IFBlZXJNZWRpYURl
c2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uIG5l
d01lZGlhRGVzY3JpcHRpb247CiAKICAgICAgICAgICAgIFJUQ1J0cFNlbmRlciYgc2VuZGVyID0g
KnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKICAgICAgICAgICAgIGlmIChzZW5kZXIudHJhY2soKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZW5kZXIubWVkaWFTdHJlYW1JZHMoKS5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24tPnNldE1lZGlhU3RyZWFtSWQo
c2VuZGVyLm1lZGlhU3RyZWFtSWRzKClbMF0pOwotICAgICAgICAgICAgICAgIG5ld01lZGlhRGVz
Y3JpcHRpb24tPnNldE1lZGlhU3RyZWFtVHJhY2tJZChzZW5kZXIudHJhY2tJZCgpKTsKLSAgICAg
ICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5hZGRTc3JjKGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyKCkpOworICAgICAgICAgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
Lm1lZGlhU3RyZWFtSWQgPSBzZW5kZXIubWVkaWFTdHJlYW1JZHMoKVswXTsKKyAgICAgICAgICAg
ICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtVHJhY2tJZCA9IHNlbmRlci50cmFj
a0lkKCk7CisgICAgICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5hZGRTc3JjKGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRNb2RlKHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJp
bmcoKSk7Ci0gICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLT5zZXRUeXBlKHJlbW90ZU1l
ZGlhRGVzY3JpcHRpb24udHlwZSgpKTsKLSAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24t
PnNldE1pZChyZW1vdGVNZWRpYURlc2NyaXB0aW9uLm1pZCgpKTsKLSAgICAgICAgICAgIG5ld01l
ZGlhRGVzY3JpcHRpb24tPnNldER0bHNTZXR1cChyZW1vdGVNZWRpYURlc2NyaXB0aW9uLmR0bHNT
ZXR1cCgpID09ICJhY3RpdmUiID8gInBhc3NpdmUiIDogImFjdGl2ZSIpOwotICAgICAgICAgICAg
bmV3TWVkaWFEZXNjcmlwdGlvbi0+c2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKG1fZHRs
c0ZpbmdlcnByaW50RnVuY3Rpb24pOwotICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi0+
c2V0RHRsc0ZpbmdlcnByaW50KG1fZHRsc0ZpbmdlcnByaW50KTsKLSAgICAgICAgICAgIG5ld01l
ZGlhRGVzY3JpcHRpb24tPnNldENuYW1lKG1fY25hbWUpOwotICAgICAgICAgICAgbmV3TWVkaWFE
ZXNjcmlwdGlvbi0+c2V0SWNlVWZyYWcobV9pY2VVZnJhZyk7Ci0gICAgICAgICAgICBuZXdNZWRp
YURlc2NyaXB0aW9uLT5zZXRJY2VQYXNzd29yZChtX2ljZVBhc3N3b3JkKTsKKyAgICAgICAgICAg
IG5ld01lZGlhRGVzY3JpcHRpb24ubW9kZSA9IHRyYW5zY2VpdmVyLT5kaXJlY3Rpb25TdHJpbmco
KTsKKyAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24udHlwZSA9IHJlbW90ZU1lZGlhRGVz
Y3JpcHRpb24udHlwZTsKKyAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24ubWlkID0gcmVt
b3RlTWVkaWFEZXNjcmlwdGlvbi5taWQ7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
LmR0bHNTZXR1cCA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb24uZHRsc1NldHVwID09ICJhY3RpdmUi
ID8gInBhc3NpdmUiIDogImFjdGl2ZSI7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9u
LmR0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbiA9IG1fZHRsc0ZpbmdlcnByaW50RnVuY3Rpb247
CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLmR0bHNGaW5nZXJwcmludCA9IG1fZHRs
c0ZpbmdlcnByaW50OworICAgICAgICAgICAgbmV3TWVkaWFEZXNjcmlwdGlvbi5jbmFtZSA9IG1f
Y25hbWU7CisgICAgICAgICAgICBuZXdNZWRpYURlc2NyaXB0aW9uLmljZVVmcmFnID0gbV9pY2VV
ZnJhZzsKKyAgICAgICAgICAgIG5ld01lZGlhRGVzY3JpcHRpb24uaWNlUGFzc3dvcmQgPSBtX2lj
ZVBhc3N3b3JkOwogCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uU25hcHNob3QtPmFkZE1lZGlh
RGVzY3JpcHRpb24oV1RGTW92ZShuZXdNZWRpYURlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiYgbG9jYWxNZWRpYURlc2NyaXB0aW9uID0gKmNv
bmZpZ3VyYXRpb25TbmFwc2hvdC0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsKKyAgICAgICAgUGVl
ck1lZGlhRGVzY3JpcHRpb24mIGxvY2FsTWVkaWFEZXNjcmlwdGlvbiA9IGNvbmZpZ3VyYXRpb25T
bmFwc2hvdC0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsKIAotICAgICAgICBsb2NhbE1lZGlhRGVz
Y3JpcHRpb24uc2V0UGF5bG9hZHMocmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5wYXlsb2FkcygpKTsK
LSAgICAgICAgbG9jYWxNZWRpYURlc2NyaXB0aW9uLnNldFJ0Y3BNdXgocmVtb3RlTWVkaWFEZXNj
cmlwdGlvbi5ydGNwTXV4KCkpOworICAgICAgICBsb2NhbE1lZGlhRGVzY3JpcHRpb24ucGF5bG9h
ZHMgPSByZW1vdGVNZWRpYURlc2NyaXB0aW9uLnBheWxvYWRzOworICAgICAgICBsb2NhbE1lZGlh
RGVzY3JpcHRpb24ucnRjcE11eCA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb24ucnRjcE11eDsKIAot
ICAgICAgICBpZiAoIWxvY2FsTWVkaWFEZXNjcmlwdGlvbi5zc3JjcygpLnNpemUoKSkKKyAgICAg
ICAgaWYgKCFsb2NhbE1lZGlhRGVzY3JpcHRpb24uc3NyY3Muc2l6ZSgpKQogICAgICAgICAgICAg
bG9jYWxNZWRpYURlc2NyaXB0aW9uLmFkZFNzcmMoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKSk7CiAKLSAgICAgICAgaWYgKGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5kdGxzU2V0dXAoKSA9
PSAiYWN0cGFzcyIpCi0gICAgICAgICAgICBsb2NhbE1lZGlhRGVzY3JpcHRpb24uc2V0RHRsc1Nl
dHVwKCJwYXNzaXZlIik7CisgICAgICAgIGlmIChsb2NhbE1lZGlhRGVzY3JpcHRpb24uZHRsc1Nl
dHVwID09ICJhY3RwYXNzIikKKyAgICAgICAgICAgIGxvY2FsTWVkaWFEZXNjcmlwdGlvbi5kdGxz
U2V0dXAgPSAicGFzc2l2ZSI7CiAKICAgICAgICAgdHJhbnNjZWl2ZXJzLnJlbW92ZUZpcnN0KHRy
YW5zY2VpdmVyKTsKICAgICB9CkBAIC0yOTUsMTEgKzI5NSwxMSBAQCBzdGF0aWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hcCBjcmVhdGVTb3VyY2VNYXAoY29uc3QgTWVkaWFEZXNjcmlwdGlvblZlY3Rv
ciYgcmVtbwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAgc291cmNlTWFwOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlbW90ZU1lZGlhRGVzY3JpcHRpb25zLnNpemUoKSAmJiBp
IDwgbG9jYWxNZWRpYURlc2NyaXB0aW9uQ291bnQ7ICsraSkgewotICAgICAgICBQZWVyTWVkaWFE
ZXNjcmlwdGlvbiYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbiA9ICpyZW1vdGVNZWRpYURlc2NyaXB0
aW9uc1tpXTsKLSAgICAgICAgaWYgKHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSgpICE9ICJh
dWRpbyIgJiYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbi50eXBlKCkgIT0gInZpZGVvIikKKyAgICAg
ICAgYXV0byYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbiA9IHJlbW90ZU1lZGlhRGVzY3JpcHRpb25z
W2ldOworICAgICAgICBpZiAocmVtb3RlTWVkaWFEZXNjcmlwdGlvbi50eXBlICE9ICJhdWRpbyIg
JiYgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbi50eXBlICE9ICJ2aWRlbyIpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRj
aFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRpYURlc2NyaXB0aW9uLm1p
ZCgpKTsKKyAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFu
c2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgcmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5taWQpOwog
ICAgICAgICBpZiAodHJhbnNjZWl2ZXIpIHsKICAgICAgICAgICAgIGlmICh0cmFuc2NlaXZlci0+
aGFzU2VuZGluZ0RpcmVjdGlvbigpICYmIHRyYW5zY2VpdmVyLT5zZW5kZXIoKS0+dHJhY2soKSkK
ICAgICAgICAgICAgICAgICBzb3VyY2VNYXAuc2V0KHRyYW5zY2VpdmVyLT5taWQoKSwgJnRyYW5z
Y2VpdmVyLT5zZW5kZXIoKS0+dHJhY2soKS0+c291cmNlKCkpOwpAQCAtMzU5LDExICszNTksOSBA
QCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvblRh
c2soUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcgogICAgICAgICB9CiAKICAgICAgICAgLy8gQXNzb2Np
YXRlIG1lZGlhIGRlc2NyaXB0aW9ucyB3aXRoIHRyYW5zY2VpdmVycyAoc2V0IHByb3Zpc2lvbmFs
IG1pZCB0byAnZmluYWwnIG1pZCkuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHByZXZpb3Vz
TnVtYmVyT2ZNZWRpYURlc2NyaXB0aW9uczsgaSA8IG1lZGlhRGVzY3JpcHRpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiYgbWVkaWFEZXNjcmlwdGlv
biA9ICptZWRpYURlc2NyaXB0aW9uc1tpXTsKLQorICAgICAgICBmb3IgKGF1dG8mIG1lZGlhRGVz
Y3JpcHRpb24gOiBtZWRpYURlc2NyaXB0aW9ucykgewogICAgICAgICAgICAgUlRDUnRwVHJhbnNj
ZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcih0cmFuc2NlaXZlcnMsIFsmbWVk
aWFEZXNjcmlwdGlvbl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJyZW50KSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnQucHJvdmlzaW9uYWxNaWQoKSA9PSBtZWRpYURlc2NyaXB0aW9u
Lm1pZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50LnByb3Zpc2lvbmFsTWlkKCkg
PT0gbWVkaWFEZXNjcmlwdGlvbi5taWQ7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGlm
ICh0cmFuc2NlaXZlcikKICAgICAgICAgICAgICAgICB0cmFuc2NlaXZlci0+c2V0TWlkKHRyYW5z
Y2VpdmVyLT5wcm92aXNpb25hbE1pZCgpKTsKQEAgLTQ2NCwxMyArNDYyLDEyIEBAIHZvaWQgTWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvblRhc2soUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBNZWRp
YURlc2NyaXB0aW9uVmVjdG9yJiBtZWRpYURlc2NyaXB0aW9ucyA9IG5ld0Rlc2NyaXB0aW9uLT5j
b25maWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CisgICAgYXV0byYgbWVkaWFEZXNj
cmlwdGlvbnMgPSBuZXdEZXNjcmlwdGlvbi0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURlc2NyaXB0
aW9ucygpOwogICAgIGZvciAoYXV0byYgbWVkaWFEZXNjcmlwdGlvbiA6IG1lZGlhRGVzY3JpcHRp
b25zKSB7Ci0gICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLT50eXBlKCkgIT0gImF1ZGlvIiAm
JiBtZWRpYURlc2NyaXB0aW9uLT50eXBlKCkgIT0gInZpZGVvIikKKyAgICAgICAgaWYgKG1lZGlh
RGVzY3JpcHRpb24udHlwZSAhPSAiYXVkaW8iICYmIG1lZGlhRGVzY3JpcHRpb24udHlwZSAhPSAi
dmlkZW8iKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbWVkaWFEZXNjcmlwdGlv
bi0+c2V0UGF5bG9hZHMobV9tZWRpYUVuZHBvaW50LT5maWx0ZXJQYXlsb2FkcyhtZWRpYURlc2Ny
aXB0aW9uLT5wYXlsb2FkcygpLAotICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgp
ID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRzIDogbV9kZWZhdWx0VmlkZW9QYXls
b2FkcykpOworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLnBheWxvYWRzID0gbV9tZWRpYUVuZHBv
aW50LT5maWx0ZXJQYXlsb2FkcyhtZWRpYURlc2NyaXB0aW9uLnBheWxvYWRzLCBtZWRpYURlc2Ny
aXB0aW9uLnR5cGUgPT0gImF1ZGlvIiA/IG1fZGVmYXVsdEF1ZGlvUGF5bG9hZHMgOiBtX2RlZmF1
bHRWaWRlb1BheWxvYWRzKTsKICAgICB9CiAKICAgICBib29sIGlzSW5pdGlhdG9yID0gbmV3RGVz
Y3JpcHRpb24tPnR5cGUoKSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dl
cjsKQEAgLTQ4OCwzMiArNDg1LDMyIEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
OjpzZXRSZW1vdGVEZXNjcmlwdGlvblRhc2soUmVmUHRyPFJUQ1Nlc3Npb25EZXNjCiAgICAgLy8g
T25lIGxlZ2FjeSBNZWRpYVN0cmVhbUV2ZW50IHdpbGwgYmUgZmlyZWQgZm9yIGV2ZXJ5IG5ldyBN
ZWRpYVN0cmVhbSBjcmVhdGVkIGFzIHRoaXMgcmVtb3RlIGRlc2NyaXB0aW9uIGlzIHNldC4KICAg
ICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtRXZlbnQ+PiBsZWdhY3lNZWRpYVN0cmVhbUV2ZW50
czsKIAotICAgIGZvciAoYXV0byBtZWRpYURlc2NyaXB0aW9uIDogbWVkaWFEZXNjcmlwdGlvbnMp
IHsKLSAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2Nl
aXZlckJ5TWlkKHRyYW5zY2VpdmVycywgbWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgIGZv
ciAoYXV0byYgbWVkaWFEZXNjcmlwdGlvbiA6IG1lZGlhRGVzY3JpcHRpb25zKSB7CisgICAgICAg
IFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXJCeU1pZCh0
cmFuc2NlaXZlcnMsIG1lZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICAgICAgaWYgKCF0cmFuc2Nl
aXZlcikgewogICAgICAgICAgICAgYm9vbCByZWNlaXZlT25seUZsYWcgPSBmYWxzZTsKIAotICAg
ICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSA9PSAic2VuZHJlY3YiIHx8IG1l
ZGlhRGVzY3JpcHRpb24tPm1vZGUoKSA9PSAicmVjdm9ubHkiKSB7CisgICAgICAgICAgICBpZiAo
bWVkaWFEZXNjcmlwdGlvbi5tb2RlID09ICJzZW5kcmVjdiIgfHwgbWVkaWFEZXNjcmlwdGlvbi5t
b2RlID09ICJyZWN2b25seSIpIHsKICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggYW4g
ZXhpc3RpbmcgdHJhbnNjZWl2ZXIuCiAgICAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIgPSBtYXRj
aFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVycywgWyZtZWRpYURlc2NyaXB0aW9uXSAoUlRDUnRwVHJh
bnNjZWl2ZXImIGN1cnJlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjdXJyZW50
LnN0b3BwZWQoKSAmJiBjdXJyZW50Lm1pZCgpLmlzTnVsbCgpICYmIGN1cnJlbnQuc2VuZGVyKCkt
PnRyYWNrS2luZCgpID09IG1lZGlhRGVzY3JpcHRpb24tPnR5cGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICFjdXJyZW50LnN0b3BwZWQoKSAmJiBjdXJyZW50Lm1pZCgpLmlzTnVsbCgp
ICYmIGN1cnJlbnQuc2VuZGVyKCktPnRyYWNrS2luZCgpID09IG1lZGlhRGVzY3JpcHRpb24udHlw
ZTsKICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgICAgIGlmICh0cmFuc2NlaXZl
cikgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIHdhcyBjcmVhdGVk
IGxvY2FsbHkgd2l0aCBhIHByb3Zpc2lvbmFsIG1pZC4gSXRzIHJlYWwgbWlkIHdpbGwgbm93IGJl
IHNldCBieSB0aGUgcmVtb3RlCiAgICAgICAgICAgICAgICAgICAgIC8vIGRlc2NyaXB0aW9uIHNv
IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBtaWQgb2YgdGhlIHRyYW5zY2VpdmVyJ3MgbXV0ZWQgc291
cmNlIHRvIHByZXNlcnZlIHRoZSBhc3NvY2lhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgdHJh
bnNjZWl2ZXItPnNldE1pZChtZWRpYURlc2NyaXB0aW9uLT5taWQoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fbWVkaWFFbmRwb2ludC0+cmVwbGFjZU11dGVkUmVtb3RlU291cmNlTWlkKHRyYW5z
Y2VpdmVyLT5wcm92aXNpb25hbE1pZCgpLCBtZWRpYURlc2NyaXB0aW9uLT5taWQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi5taWQp
OworICAgICAgICAgICAgICAgICAgICBtX21lZGlhRW5kcG9pbnQtPnJlcGxhY2VNdXRlZFJlbW90
ZVNvdXJjZU1pZCh0cmFuc2NlaXZlci0+cHJvdmlzaW9uYWxNaWQoKSwgbWVkaWFEZXNjcmlwdGlv
bi5taWQpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICByZWNl
aXZlT25seUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXRy
YW5zY2VpdmVyKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6
OmNyZWF0ZShtZWRpYURlc2NyaXB0aW9uLT50eXBlKCksIFZlY3RvcjxTdHJpbmc+KCksIG1fY2xp
ZW50LT5zZW5kZXJDbGllbnQoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byByZWNlaXZlciA9IGNy
ZWF0ZVJlY2VpdmVyKG1lZGlhRGVzY3JpcHRpb24tPm1pZCgpLCBtZWRpYURlc2NyaXB0aW9uLT50
eXBlKCksIG1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtVHJhY2tJZCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKG1lZGlhRGVzY3JpcHRp
b24udHlwZSwgVmVjdG9yPFN0cmluZz4oKSwgbV9jbGllbnQtPnNlbmRlckNsaWVudCgpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIobWVkaWFEZXNjcmlw
dGlvbi5taWQsIG1lZGlhRGVzY3JpcHRpb24udHlwZSwgbWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0
cmVhbVRyYWNrSWQpOwogCiAgICAgICAgICAgICAgICAgYXV0byBuZXdUcmFuc2NlaXZlciA9IFJU
Q1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVy
KSk7Ci0gICAgICAgICAgICAgICAgbmV3VHJhbnNjZWl2ZXItPnNldE1pZChtZWRpYURlc2NyaXB0
aW9uLT5taWQoKSk7CisgICAgICAgICAgICAgICAgbmV3VHJhbnNjZWl2ZXItPnNldE1pZChtZWRp
YURlc2NyaXB0aW9uLm1pZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlY2VpdmVPbmx5RmxhZykK
ICAgICAgICAgICAgICAgICAgICAgbmV3VHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0
aW9uKCk7CiAKQEAgLTUyMiwxNSArNTE5LDE1IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvblRhc2soUmVmUHRyPFJUQ1Nlc3Npb25EZXNjCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbi0+
bW9kZSgpID09ICJzZW5kcmVjdiIgfHwgbWVkaWFEZXNjcmlwdGlvbi0+bW9kZSgpID09ICJzZW5k
b25seSIpIHsKKyAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAic2VuZHJlY3Yi
IHx8IG1lZGlhRGVzY3JpcHRpb24ubW9kZSA9PSAic2VuZG9ubHkiKSB7CiAgICAgICAgICAgICBS
VENSdHBSZWNlaXZlciYgcmVjZWl2ZXIgPSAqdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCk7CiAgICAg
ICAgICAgICBpZiAocmVjZWl2ZXIuaXNEaXNwYXRjaGVkKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICByZWNlaXZlci5zZXREaXNwYXRjaGVkKHRydWUpOwogCiAgICAg
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYVN0cmVhbUlkczsKLSAgICAgICAgICAgIGlmICgh
bWVkaWFEZXNjcmlwdGlvbi0+bWVkaWFTdHJlYW1JZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQobWVkaWFEZXNjcmlwdGlvbi0+bWVkaWFTdHJlYW1J
ZCgpKTsKKyAgICAgICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbUlkLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQobWVkaWFEZXNj
cmlwdGlvbi5tZWRpYVN0cmVhbUlkKTsKIAogICAgICAgICAgICAgLy8gQSByZW1vdGUgdHJhY2sg
Y2FuIGJlIGFzc29jaWF0ZWQgd2l0aCAwLi4qIE1lZGlhU3RyZWFtcy4gV2UgY3JlYXRlIGEgbmV3
IHN0cmVhbSBmb3IKICAgICAgICAgICAgIC8vIGEgdHJhY2sgaW4gY2FzZSBvZiBhbiB1bnJlY29n
bml6ZWQgc3RyZWFtIGlkLCBvciBqdXN0IGFkZCB0aGUgdHJhY2sgaWYgdGhlIHN0cmVhbQpAQCAt
NjQ2LDcgKzY0Myw3IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjphZGRJY2VD
YW5kaWRhdGVUYXNrKFJUQ0ljZUNhbmRpZGF0ZSYgcnRjQ2FuZGlkCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9yJiByZW1vdGVNZWRpYURl
c2NyaXB0aW9ucyA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlvbigp
LT5tZWRpYURlc2NyaXB0aW9ucygpOworICAgIGF1dG8mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb25z
ID0gaW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpLT5jb25maWd1cmF0aW9uKCktPm1lZGlhRGVz
Y3JpcHRpb25zKCk7CiAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24qIHRhcmdldE1lZGlhRGVzY3Jp
cHRpb24gPSBudWxscHRyOwogCiAgICAgLy8gV2hlbiBpZGVudGlmeWluZyB0aGUgdGFyZ2V0IG1l
ZGlhIGRlc2NyaXB0aW9uLCBzZHBNaWQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHNkcE1MaW5lSW5k
ZXgKQEAgLTY1NCw4ICs2NTEsOCBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
YWRkSWNlQ2FuZGlkYXRlVGFzayhSVENJY2VDYW5kaWRhdGUmIHJ0Y0NhbmRpZAogICAgIGlmICgh
cnRjQ2FuZGlkYXRlLnNkcE1pZCgpLmlzTnVsbCgpKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
bWlkID0gcnRjQ2FuZGlkYXRlLnNkcE1pZCgpOwogICAgICAgICBmb3IgKGF1dG8mIGRlc2NyaXB0
aW9uIDogcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChkZXNjcmlw
dGlvbi0+bWlkKCkgPT0gbWlkKSB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0TWVkaWFEZXNjcmlw
dGlvbiA9IGRlc2NyaXB0aW9uLmdldCgpOworICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLm1p
ZCA9PSBtaWQpIHsKKyAgICAgICAgICAgICAgICB0YXJnZXRNZWRpYURlc2NyaXB0aW9uID0gJmRl
c2NyaXB0aW9uOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC02NzAsNyArNjY3LDcgQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OmFkZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJiBydGNDYW5kaWQKICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KE9wZXJhdGlvbkVycm9yLCAic2RwTUxpbmVJbmRleCBpcyBvdXQg
b2YgcmFuZ2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB0YXJn
ZXRNZWRpYURlc2NyaXB0aW9uID0gcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnNbc2RwTUxpbmVJbmRl
eF0uZ2V0KCk7CisgICAgICAgIHRhcmdldE1lZGlhRGVzY3JpcHRpb24gPSAmcmVtb3RlTWVkaWFE
ZXNjcmlwdGlvbnNbc2RwTUxpbmVJbmRleF07CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTY4NSw3ICs2ODIsOCBAQCB2b2lk
IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6YWRkSWNlQ2FuZGlkYXRlVGFzayhSVENJY2VD
YW5kaWRhdGUmIHJ0Y0NhbmRpZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9tZWRp
YUVuZHBvaW50LT5hZGRSZW1vdGVDYW5kaWRhdGUocmVzdWx0LmNhbmRpZGF0ZSgpLCB0YXJnZXRN
ZWRpYURlc2NyaXB0aW9uLT5taWQoKSwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWco
KSwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+aWNlUGFzc3dvcmQoKSk7CisgICAgQVNTRVJUKHRh
cmdldE1lZGlhRGVzY3JpcHRpb24pOworICAgIG1fbWVkaWFFbmRwb2ludC0+YWRkUmVtb3RlQ2Fu
ZGlkYXRlKHJlc3VsdC5jYW5kaWRhdGUoKSwgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+bWlkLCB0
YXJnZXRNZWRpYURlc2NyaXB0aW9uLT5pY2VVZnJhZywgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+
aWNlUGFzc3dvcmQpOwogCiAgICAgdGFyZ2V0TWVkaWFEZXNjcmlwdGlvbi0+YWRkSWNlQ2FuZGlk
YXRlKFdURk1vdmUocmVzdWx0LmNhbmRpZGF0ZSgpKSk7CiAKQEAgLTgzNywxMSArODM1LDExIEBA
IHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RJY2VDYW5kaWRhdGUoY29uc3Qg
U3RyaW5nJiBtaWQsIEljZUNhbmRpZGF0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb25WZWN0b3ImIG1lZGlhRGVzY3JpcHRpb25zID0g
aW50ZXJuYWxMb2NhbERlc2NyaXB0aW9uKCktPmNvbmZpZ3VyYXRpb24oKS0+bWVkaWFEZXNjcmlw
dGlvbnMoKTsKKyAgICBhdXRvJiBtZWRpYURlc2NyaXB0aW9ucyA9IGludGVybmFsTG9jYWxEZXNj
cmlwdGlvbigpLT5jb25maWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CiAgICAgc2l6
ZV90IG1lZGlhRGVzY3JpcHRpb25JbmRleCA9IG5vdEZvdW5kOwogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtZWRpYURlc2NyaXB0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
bWVkaWFEZXNjcmlwdGlvbnNbaV0tPm1pZCgpID09IG1pZCkgeworICAgICAgICBpZiAobWVkaWFE
ZXNjcmlwdGlvbnNbaV0ubWlkID09IG1pZCkgewogICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlv
bkluZGV4ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04NTUsOSArODUz
LDcgQEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmdvdEljZUNhbmRpZGF0ZShj
b25zdCBTdHJpbmcmIG1pZCwgSWNlQ2FuZGlkYXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gPSBtZWRpYURlc2NyaXB0aW9uc1ttZWRpYURlc2Ny
aXB0aW9uSW5kZXhdOwotICAgIEFTU0VSVChtZWRpYURlc2NyaXB0aW9uKTsKLSAgICBtZWRpYURl
c2NyaXB0aW9uLT5hZGRJY2VDYW5kaWRhdGUoV1RGTW92ZShjYW5kaWRhdGUpKTsKKyAgICBtZWRp
YURlc2NyaXB0aW9uc1ttZWRpYURlc2NyaXB0aW9uSW5kZXhdLmFkZEljZUNhbmRpZGF0ZShXVEZN
b3ZlKGNhbmRpZGF0ZSkpOwogCiAgICAgbV9jbGllbnQtPmZpcmVFdmVudChSVENJY2VDYW5kaWRh
dGVFdmVudDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY2Fu
ZGlkYXRlTGluZSwgbWlkLCBtZWRpYURlc2NyaXB0aW9uSW5kZXgpKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uaAppbmRleCAwMTNkMzVlMmVmNjFjMjhjNWFjOWM2ZTg4ZjlhM2Rl
NWNiNjA3MzdiLi41ZGU5MzRjZDZmNzk5MTYxNGY4ZDhmMDkxZjM3N2E3MzgzMjg5ZjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQ
ZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKQEAgLTQzLDEyICs0MywxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFj
azsKLWNsYXNzIFBlZXJNZWRpYURlc2NyaXB0aW9uOwogY2xhc3MgU0RQUHJvY2Vzc29yOwogCi10
eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+PiBNZWRpYURlc2NyaXB0
aW9uVmVjdG9yOwotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IFJ0cFNlbmRl
clZlY3RvcjsKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IFJ0cFRy
YW5zY2VpdmVyVmVjdG9yOworc3RydWN0IFBlZXJNZWRpYURlc2NyaXB0aW9uOworCit1c2luZyBN
ZWRpYURlc2NyaXB0aW9uVmVjdG9yID0gVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPjsKK3Vz
aW5nIFJ0cFNlbmRlclZlY3RvciA9IFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj47Cit1c2lu
ZyBSdHBUcmFuc2NlaXZlclZlY3RvciA9IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+
PjsKIAogY2xhc3MgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBlZXJDb25u
ZWN0aW9uQmFja2VuZCwgcHVibGljIE1lZGlhRW5kcG9pbnRDbGllbnQgewogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3Bw
CmluZGV4IGRiMmJkNTM3NGJmMTdiZGYwN2RkMTBiMzM2NDM2MjMzZjQ0ZWQxZDQuLjlhMTFjYWIy
ODNiYjVjMmUwNjZmY2I3ZjU0N2QxMjJlNWRkNmRkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAKQEAgLTE5OSwyMiArMTk5
LDIyIEBAIHN0YXRpYyBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uRnJvbUpTT04oY29uc3QgU3RyCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG1lZGlhRGVzY3JpcHRpb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgICAgICBtZWRpYURlc2NyaXB0aW9uc0FycmF5LT5nZXQoaSktPmFzT2JqZWN0KG1lZGlh
RGVzY3JpcHRpb25PYmplY3QpOwogCi0gICAgICAgIFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlv
bj4gbWVkaWFEZXNjcmlwdGlvbiA9IFBlZXJNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAg
ICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24gbWVkaWFEZXNjcmlwdGlvbjsKIAogICAgICAgICBp
ZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKHR5cGVTdHJpbmcoKSwgc3RyaW5n
VmFsdWUpKQotICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0VHlwZShzdHJpbmdWYWx1
ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLnR5cGUgPSBzdHJpbmdWYWx1ZTsKIAog
ICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihwb3J0U3RyaW5n
KCksIGludFZhbHVlKSkKLSAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldFBvcnQoaW50
VmFsdWUpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5wb3J0ID0gaW50VmFsdWU7CiAK
ICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdldFN0cmluZyhhZGRyZXNzU3Ry
aW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldEFk
ZHJlc3Moc3RyaW5nVmFsdWUpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5hZGRyZXNz
ID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdl
dFN0cmluZyhtb2RlU3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAgICAgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24tPnNldE1vZGUoc3RyaW5nVmFsdWUpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi5tb2RlID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25P
YmplY3QtPmdldFN0cmluZyhtaWRTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAg
bWVkaWFEZXNjcmlwdGlvbi0+c2V0TWlkKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIG1lZGlh
RGVzY3JpcHRpb24ubWlkID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBwYXlsb2Fkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgICAg
ICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRBcnJheShwYXlsb2Fkc1N0cmluZygpLCBwYXls
b2Fkc0FycmF5KTsKQEAgLTI1OCwzNyArMjU4LDM3IEBAIHN0YXRpYyBSZWZQdHI8TWVkaWFFbmRw
b2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRnJvbUpTT04oY29uc3QgU3Ry
CiAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuYWRkUGFyYW1ldGVyKCJydHhUaW1lIiwgaW50
VmFsdWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5h
ZGRQYXlsb2FkKFdURk1vdmUocGF5bG9hZCkpOworICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlv
bi5hZGRQYXlsb2FkKFdURk1vdmUocGF5bG9hZCkpOwogICAgICAgICB9CiAKICAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcnRjcE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5nZXRPYmplY3QocnRjcFN0
cmluZygpLCBydGNwT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKHJ0Y3BPYmplY3QtPmdldEJv
b2xlYW4obXV4U3RyaW5nKCksIGJvb2xWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWVkaWFEZXNj
cmlwdGlvbi0+c2V0UnRjcE11eChib29sVmFsdWUpOworICAgICAgICAgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24ucnRjcE11eCA9IGJvb2xWYWx1ZTsKIAogICAgICAgICAgICAgaWYgKHJ0Y3BPYmpl
Y3QtPmdldFN0cmluZyhydGNwQWRkcmVzc1N0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAg
ICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0UnRjcEFkZHJlc3Moc3RyaW5nVmFsdWUpOwor
ICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24ucnRjcEFkZHJlc3MgPSBzdHJpbmdWYWx1
ZTsKIAogICAgICAgICAgICAgaWYgKHJ0Y3BPYmplY3QtPmdldEludGVnZXIocnRjcFBvcnRTdHJp
bmcoKSwgaW50VmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldFJ0
Y3BQb3J0KGludFZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLnJ0Y3BQ
b3J0ID0gaW50VmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlv
bk9iamVjdC0+Z2V0U3RyaW5nKG1lZGlhU3RyZWFtSWRTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQot
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzdHJpbmdWYWx1
ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLm1lZGlhU3RyZWFtSWQgPSBzdHJpbmdW
YWx1ZTsKIAogICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+Z2V0U3RyaW5nKG1l
ZGlhU3RyZWFtVHJhY2tJZFN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRp
YURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbVRyYWNrSWQoc3RyaW5nVmFsdWUpOworICAgICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi5tZWRpYVN0cmVhbVRyYWNrSWQgPSBzdHJpbmdWYWx1ZTsK
IAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkdGxzT2JqZWN0ID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdl
dE9iamVjdChkdGxzU3RyaW5nKCksIGR0bHNPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZHRs
c09iamVjdC0+Z2V0U3RyaW5nKHNldHVwU3RyaW5nKCksIHN0cmluZ1ZhbHVlKSkKLSAgICAgICAg
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXREdGxzU2V0dXAoc3RyaW5nVmFsdWUpOworICAg
ICAgICAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24uZHRsc1NldHVwID0gc3RyaW5nVmFsdWU7CiAK
ICAgICAgICAgICAgIGlmIChkdGxzT2JqZWN0LT5nZXRTdHJpbmcoZmluZ2VycHJpbnRIYXNoRnVu
Y3Rpb25TdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVzY3Jp
cHRpb24tPnNldER0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbihzdHJpbmdWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24g
PSBzdHJpbmdWYWx1ZTsKIAogICAgICAgICAgICAgaWYgKGR0bHNPYmplY3QtPmdldFN0cmluZyhm
aW5nZXJwcmludFN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWVkaWFE
ZXNjcmlwdGlvbi0+c2V0RHRsc0ZpbmdlcnByaW50KHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBtZWRpYURlc2NyaXB0aW9uLmR0bHNGaW5nZXJwcmludCA9IHN0cmluZ1ZhbHVlOwogICAg
ICAgICB9CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzc3Jjc0FycmF5ID0gSW5z
cGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjk2LDE5ICsyOTYsMTkgQEAgc3RhdGljIFJlZlB0
cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNP
Tihjb25zdCBTdHIKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc3NyY3NBcnJh
eS0+bGVuZ3RoKCk7ICsraikgewogICAgICAgICAgICAgc3NyY3NBcnJheS0+Z2V0KGopLT5hc0lu
dGVnZXIoaW50VmFsdWUpOwotICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+YWRkU3NyYyhp
bnRWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLmFkZFNzcmMoaW50VmFsdWUp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPmdldFN0
cmluZyhjbmFtZVN0cmluZygpLCBzdHJpbmdWYWx1ZSkpCi0gICAgICAgICAgICBtZWRpYURlc2Ny
aXB0aW9uLT5zZXRDbmFtZShzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLmNuYW1lID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gaWNlT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYgKG1l
ZGlhRGVzY3JpcHRpb25PYmplY3QtPmdldE9iamVjdChpY2VTdHJpbmcoKSwgaWNlT2JqZWN0KSkg
ewogICAgICAgICAgICAgaWYgKGljZU9iamVjdC0+Z2V0U3RyaW5nKHVmcmFnU3RyaW5nKCksIHN0
cmluZ1ZhbHVlKSkKLSAgICAgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRJY2VVZnJh
ZyhzdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi5pY2VVZnJh
ZyA9IHN0cmluZ1ZhbHVlOwogCiAgICAgICAgICAgICBpZiAoaWNlT2JqZWN0LT5nZXRTdHJpbmco
cGFzc3dvcmRTdHJpbmcoKSwgc3RyaW5nVmFsdWUpKQotICAgICAgICAgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb24tPnNldEljZVBhc3N3b3JkKHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBt
ZWRpYURlc2NyaXB0aW9uLmljZVBhc3N3b3JkID0gc3RyaW5nVmFsdWU7CiAKICAgICAgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FuZGlkYXRlc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6
OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWNlT2JqZWN0LT5nZXRBcnJheShjYW5kaWRhdGVzU3Ry
aW5nKCksIGNhbmRpZGF0ZXNBcnJheSk7CkBAIC0zMTcsNyArMzE3LDcgQEAgc3RhdGljIFJlZlB0
cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNP
Tihjb25zdCBTdHIKICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYW5k
aWRhdGVPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAg
IGNhbmRpZGF0ZXNBcnJheS0+Z2V0KGopLT5hc09iamVjdChjYW5kaWRhdGVPYmplY3QpOwogCi0g
ICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+YWRkSWNlQ2FuZGlkYXRlKGNyZWF0ZUNh
bmRpZGF0ZSgqY2FuZGlkYXRlT2JqZWN0KSk7CisgICAgICAgICAgICAgICAgbWVkaWFEZXNjcmlw
dGlvbi5hZGRJY2VDYW5kaWRhdGUoY3JlYXRlQ2FuZGlkYXRlKCpjYW5kaWRhdGVPYmplY3QpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zNTEsMTggKzM1MSwxOCBAQCBzdGF0aWMg
U3RyaW5nIGNvbmZpZ3VyYXRpb25Ub0pTT04oY29uc3QgTWVkaWFFbmRwb2ludFNlc3Npb25Db25m
aWd1cmF0aW9uJiBjb25maQogCiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBtZWRpYURlc2Ny
aXB0aW9uc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgZm9yIChjb25z
dCBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+JiBtZWRpYURlc2NyaXB0aW9uIDogY29uZmln
dXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBtZWRp
YURlc2NyaXB0aW9uIDogY29uZmlndXJhdGlvbi5tZWRpYURlc2NyaXB0aW9ucygpKSB7CiAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lZGlhRGVzY3JpcHRpb25PYmplY3QgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogCi0gICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3Qt
PnNldFN0cmluZyh0eXBlU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnR5cGUoKSk7Ci0gICAg
ICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldEludGVnZXIocG9ydFN0cmluZygpLCBtZWRp
YURlc2NyaXB0aW9uLT5wb3J0KCkpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5z
ZXRTdHJpbmcoYWRkcmVzc1N0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLT5hZGRyZXNzKCkpOwot
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobW9kZVN0cmluZygpLCBt
ZWRpYURlc2NyaXB0aW9uLT5tb2RlKCkpOwotICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0
LT5zZXRTdHJpbmcobWlkU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPm1pZCgpKTsKKyAgICAg
ICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKHR5cGVTdHJpbmcoKSwgbWVkaWFE
ZXNjcmlwdGlvbi50eXBlKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0SW50
ZWdlcihwb3J0U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24ucG9ydCk7CisgICAgICAgIG1lZGlh
RGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhhZGRyZXNzU3RyaW5nKCksIG1lZGlhRGVzY3Jp
cHRpb24uYWRkcmVzcyk7CisgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmlu
Zyhtb2RlU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24ubW9kZSk7CisgICAgICAgIG1lZGlhRGVz
Y3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhtaWRTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5t
aWQpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gcGF5bG9hZHNBcnJheSA9IElu
c3BlY3RvckFycmF5OjpjcmVhdGUoKTsKIAotICAgICAgICBmb3IgKGF1dG8mIHBheWxvYWQgOiBt
ZWRpYURlc2NyaXB0aW9uLT5wYXlsb2FkcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcGF5bG9h
ZCA6IG1lZGlhRGVzY3JpcHRpb24ucGF5bG9hZHMpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHBheWxvYWRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
CiAgICAgICAgICAgICBwYXlsb2FkT2JqZWN0LT5zZXRJbnRlZ2VyKHR5cGVTdHJpbmcoKSwgcGF5
bG9hZC50eXBlKTsKQEAgLTM4NywzNSArMzg3LDM1IEBAIHN0YXRpYyBTdHJpbmcgY29uZmlndXJh
dGlvblRvSlNPTihjb25zdCBNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24mIGNvbmZp
CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldEFycmF5KHBheWxvYWRzU3RyaW5n
KCksIHBheWxvYWRzQXJyYXkpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJ0
Y3BPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBydGNwT2JqZWN0
LT5zZXRCb29sZWFuKG11eFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLT5ydGNwTXV4KCkpOwot
ICAgICAgICBydGNwT2JqZWN0LT5zZXRTdHJpbmcoYWRkcmVzc1N0cmluZygpLCBtZWRpYURlc2Ny
aXB0aW9uLT5ydGNwQWRkcmVzcygpKTsKLSAgICAgICAgcnRjcE9iamVjdC0+c2V0SW50ZWdlcihw
b3J0U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24tPnJ0Y3BQb3J0KCkpOworICAgICAgICBydGNw
T2JqZWN0LT5zZXRCb29sZWFuKG11eFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLnJ0Y3BNdXgp
OworICAgICAgICBydGNwT2JqZWN0LT5zZXRTdHJpbmcoYWRkcmVzc1N0cmluZygpLCBtZWRpYURl
c2NyaXB0aW9uLnJ0Y3BBZGRyZXNzKTsKKyAgICAgICAgcnRjcE9iamVjdC0+c2V0SW50ZWdlcihw
b3J0U3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24ucnRjcFBvcnQpOwogICAgICAgICBtZWRpYURl
c2NyaXB0aW9uT2JqZWN0LT5zZXRPYmplY3QocnRjcFN0cmluZygpLCBydGNwT2JqZWN0KTsKIAot
ICAgICAgICBtZWRpYURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJlYW1JZFN0
cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLT5tZWRpYVN0cmVhbUlkKCkpOwotICAgICAgICBtZWRp
YURlc2NyaXB0aW9uT2JqZWN0LT5zZXRTdHJpbmcobWVkaWFTdHJlYW1UcmFja0lkU3RyaW5nKCks
IG1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtVHJhY2tJZCgpKTsKKyAgICAgICAgbWVkaWFE
ZXNjcmlwdGlvbk9iamVjdC0+c2V0U3RyaW5nKG1lZGlhU3RyZWFtSWRTdHJpbmcoKSwgbWVkaWFE
ZXNjcmlwdGlvbi5tZWRpYVN0cmVhbUlkKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVj
dC0+c2V0U3RyaW5nKG1lZGlhU3RyZWFtVHJhY2tJZFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9u
Lm1lZGlhU3RyZWFtVHJhY2tJZCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZHRsc09iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGR0bHNPYmpl
Y3QtPnNldFN0cmluZyhzZXR1cFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLT5kdGxzU2V0dXAo
KSk7Ci0gICAgICAgIGR0bHNPYmplY3QtPnNldFN0cmluZyhmaW5nZXJwcmludEhhc2hGdW5jdGlv
blN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLT5kdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24o
KSk7Ci0gICAgICAgIGR0bHNPYmplY3QtPnNldFN0cmluZyhmaW5nZXJwcmludFN0cmluZygpLCBt
ZWRpYURlc2NyaXB0aW9uLT5kdGxzRmluZ2VycHJpbnQoKSk7CisgICAgICAgIGR0bHNPYmplY3Qt
PnNldFN0cmluZyhzZXR1cFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLmR0bHNTZXR1cCk7Cisg
ICAgICAgIGR0bHNPYmplY3QtPnNldFN0cmluZyhmaW5nZXJwcmludEhhc2hGdW5jdGlvblN0cmlu
ZygpLCBtZWRpYURlc2NyaXB0aW9uLmR0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbik7CisgICAg
ICAgIGR0bHNPYmplY3QtPnNldFN0cmluZyhmaW5nZXJwcmludFN0cmluZygpLCBtZWRpYURlc2Ny
aXB0aW9uLmR0bHNGaW5nZXJwcmludCk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25PYmplY3Qt
PnNldE9iamVjdChkdGxzU3RyaW5nKCksIGR0bHNPYmplY3QpOwogCiAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gc3NyY3NBcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKIAot
ICAgICAgICBmb3IgKGF1dG8gc3NyYyA6IG1lZGlhRGVzY3JpcHRpb24tPnNzcmNzKCkpCisgICAg
ICAgIGZvciAoYXV0byBzc3JjIDogbWVkaWFEZXNjcmlwdGlvbi5zc3JjcykKICAgICAgICAgICAg
IHNzcmNzQXJyYXktPnB1c2hEb3VibGUoc3NyYyk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb25P
YmplY3QtPnNldEFycmF5KHNzcmNzU3RyaW5nKCksIHNzcmNzQXJyYXkpOwogCi0gICAgICAgIG1l
ZGlhRGVzY3JpcHRpb25PYmplY3QtPnNldFN0cmluZyhjbmFtZVN0cmluZygpLCBtZWRpYURlc2Ny
aXB0aW9uLT5jbmFtZSgpKTsKKyAgICAgICAgbWVkaWFEZXNjcmlwdGlvbk9iamVjdC0+c2V0U3Ry
aW5nKGNuYW1lU3RyaW5nKCksIG1lZGlhRGVzY3JpcHRpb24uY25hbWUpOwogCiAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGljZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgIGljZU9iamVjdC0+c2V0U3RyaW5nKHVmcmFnU3RyaW5nKCksIG1lZGlhRGVz
Y3JpcHRpb24tPmljZVVmcmFnKCkpOwotICAgICAgICBpY2VPYmplY3QtPnNldFN0cmluZyhwYXNz
d29yZFN0cmluZygpLCBtZWRpYURlc2NyaXB0aW9uLT5pY2VQYXNzd29yZCgpKTsKKyAgICAgICAg
aWNlT2JqZWN0LT5zZXRTdHJpbmcodWZyYWdTdHJpbmcoKSwgbWVkaWFEZXNjcmlwdGlvbi5pY2VV
ZnJhZyk7CisgICAgICAgIGljZU9iamVjdC0+c2V0U3RyaW5nKHBhc3N3b3JkU3RyaW5nKCksIG1l
ZGlhRGVzY3JpcHRpb24uaWNlUGFzc3dvcmQpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gY2FuZGlkYXRlc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAg
ICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbWVkaWFEZXNjcmlwdGlvbi0+aWNlQ2FuZGlkYXRl
cygpKQorICAgICAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IG1lZGlhRGVzY3JpcHRpb24uaWNl
Q2FuZGlkYXRlcykKICAgICAgICAgICAgIGNhbmRpZGF0ZXNBcnJheS0+cHVzaE9iamVjdChjcmVh
dGVDYW5kaWRhdGVPYmplY3QoY2FuZGlkYXRlKSk7CiAKICAgICAgICAgaWNlT2JqZWN0LT5zZXRB
cnJheShjYW5kaWRhdGVzU3RyaW5nKCksIGNhbmRpZGF0ZXNBcnJheSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50U2Vzc2lvbkNv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oCmluZGV4IGJkMmIwODNlMDg5OTUwZTBhYWRm
ZGNjNjRjODYyNzEyYjdkNmE1ODkuLjI5M2NjODJlZWVlMzFmMDMyYzBlYzgwMjliNmVjY2M2NzU1
OGFhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oCkBA
IC01MiwxNyArNTIsMTYgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNlc3Npb25WZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uVmVyc2lvbjsgfQogICAgIHZvaWQgc2V0U2Vzc2lvblZl
cnNpb24odW5zaWduZWQgc2Vzc2lvblZlcnNpb24pIHsgbV9zZXNzaW9uVmVyc2lvbiA9IHNlc3Np
b25WZXJzaW9uOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBlZXJNZWRpYURlc2NyaXB0
aW9uPj4mIG1lZGlhRGVzY3JpcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYURlc2NyaXB0
aW9uczsgfQotICAgIHZvaWQgYWRkTWVkaWFEZXNjcmlwdGlvbihSZWZQdHI8UGVlck1lZGlhRGVz
Y3JpcHRpb24+JiYgZGVzY3JpcHRpb24pIHsgbV9tZWRpYURlc2NyaXB0aW9ucy5hcHBlbmQoV1RG
TW92ZShkZXNjcmlwdGlvbikpOyB9CisgICAgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiYg
bWVkaWFEZXNjcmlwdGlvbnMoKSB7IHJldHVybiBtX21lZGlhRGVzY3JpcHRpb25zOyB9CisgICAg
Y29uc3QgVmVjdG9yPFBlZXJNZWRpYURlc2NyaXB0aW9uPiYgbWVkaWFEZXNjcmlwdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhRGVzY3JpcHRpb25zOyB9CisgICAgdm9pZCBhZGRNZWRpYURl
c2NyaXB0aW9uKFBlZXJNZWRpYURlc2NyaXB0aW9uJiYgZGVzY3JpcHRpb24pIHsgbV9tZWRpYURl
c2NyaXB0aW9ucy5hcHBlbmQoV1RGTW92ZShkZXNjcmlwdGlvbikpOyB9CiAKICAgICBSZWZQdHI8
TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBjbG9uZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBjb3B5ID0g
Y3JlYXRlKCk7CiAgICAgICAgIGNvcHktPm1fc2Vzc2lvbklkID0gbV9zZXNzaW9uSWQ7CiAgICAg
ICAgIGNvcHktPm1fc2Vzc2lvblZlcnNpb24gPSBtX3Nlc3Npb25WZXJzaW9uOwotCi0gICAgICAg
IGZvciAoYXV0byYgbWRlc2MgOiBtX21lZGlhRGVzY3JpcHRpb25zKQotICAgICAgICAgICAgY29w
eS0+bV9tZWRpYURlc2NyaXB0aW9ucy5hcHBlbmQobWRlc2MtPmNsb25lKCkpOworICAgICAgICBj
b3B5LT5tX21lZGlhRGVzY3JpcHRpb25zID0gbV9tZWRpYURlc2NyaXB0aW9uczsKIAogICAgICAg
ICByZXR1cm4gY29weTsKICAgICB9CkBAIC03Nyw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdWlu
dDY0X3QgbV9zZXNzaW9uSWQ7CiAgICAgdW5zaWduZWQgbV9zZXNzaW9uVmVyc2lvbiB7IDAgfTsK
IAotICAgIFZlY3RvcjxSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+PiBtX21lZGlhRGVzY3Jp
cHRpb25zOworICAgIFZlY3RvcjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gbV9tZWRpYURlc2NyaXB0
aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJNZWRpYURlc2NyaXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyTWVkaWFEZXNjcmlwdGlvbi5oCmlu
ZGV4IGY0MTBhMWNkMDA5YWMzNDkwMWRhZmI0NjdjNTEzZTM3ZWVjZmE0MDUuLjE1N2RjOGEyOTFm
NGFmMTg4NTBmZWNlNWEzNjE5YjZhZDM1MzE0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJNZWRpYURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlck1lZGlhRGVzY3JpcHRpb24uaApAQCAt
MjgsMTU1ICsyOCw1MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBlZXJNZWRp
YURlc2NyaXB0aW9uX2gKLSNkZWZpbmUgUGVlck1lZGlhRGVzY3JpcHRpb25faAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIkljZUNhbmRpZGF0ZS5oIgog
I2luY2x1ZGUgIk1lZGlhUGF5bG9hZC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2Uu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbiA6IHB1
YmxpYyBSZWZDb3VudGVkPFBlZXJNZWRpYURlc2NyaXB0aW9uPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGVlck1lZGlhRGVzY3JpcHRpb24oKSk7Ci0gICAgfQotICAg
IHZpcnR1YWwgflBlZXJNZWRpYURlc2NyaXB0aW9uKCkgeyB9CitzdHJ1Y3QgUGVlck1lZGlhRGVz
Y3JpcHRpb24geworICAgIHZvaWQgYWRkUGF5bG9hZChNZWRpYVBheWxvYWQmJiBwYXlsb2FkKSB7
IHBheWxvYWRzLmFwcGVuZChXVEZNb3ZlKHBheWxvYWQpKTsgfQorICAgIHZvaWQgYWRkU3NyYyh1
bnNpZ25lZCBzc3JjKSB7IHNzcmNzLmFwcGVuZChzc3JjKTsgfQorICAgIHZvaWQgY2xlYXJTc3Jj
cygpIHsgc3NyY3MuY2xlYXIoKTsgfQorICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlKEljZUNhbmRp
ZGF0ZSYmIGNhbmRpZGF0ZSkgeyBpY2VDYW5kaWRhdGVzLmFwcGVuZChXVEZNb3ZlKGNhbmRpZGF0
ZSkpOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KLSAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7
IH0KKyAgICBTdHJpbmcgdHlwZTsKKyAgICB1bnNpZ25lZCBzaG9ydCBwb3J0IHsgOSB9OworICAg
IFN0cmluZyBhZGRyZXNzIHsgIjAuMC4wLjAiIH07CisgICAgU3RyaW5nIG1vZGUgeyBBU0NJSUxp
dGVyYWwgeyAic2VuZHJlY3YiIH0gfTsKKyAgICBTdHJpbmcgbWlkOwogCi0gICAgdW5zaWduZWQg
c2hvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQotICAgIHZvaWQgc2V0UG9ydCh1
bnNpZ25lZCBzaG9ydCBwb3J0KSB7IG1fcG9ydCA9IHBvcnQ7IH0KKyAgICBWZWN0b3I8TWVkaWFQ
YXlsb2FkPiBwYXlsb2FkczsKIAotICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fYWRkcmVzczsgfQotICAgIHZvaWQgc2V0QWRkcmVzcyhjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpIHsgbV9hZGRyZXNzID0gYWRkcmVzczsgfQorICAgIGJvb2wgcnRjcE11eCB7IHRydWUg
fTsKKyAgICBTdHJpbmcgcnRjcEFkZHJlc3M7CisgICAgdW5zaWduZWQgc2hvcnQgcnRjcFBvcnQg
eyAwIH07CiAKLSAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7
IH0KLSAgICB2b2lkIHNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7
IH0KKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1JZDsKKyAgICBTdHJpbmcgbWVkaWFTdHJlYW1UcmFj
a0lkOwogCi0gICAgY29uc3QgU3RyaW5nJiBtaWQoKSBjb25zdCB7IHJldHVybiBtX21pZDsgfQot
ICAgIHZvaWQgc2V0TWlkKGNvbnN0IFN0cmluZyYgbWlkKSB7IG1fbWlkID0gbWlkOyB9CisgICAg
U3RyaW5nIGR0bHNTZXR1cCB7ICJhY3RwYXNzIiB9OworICAgIFN0cmluZyBkdGxzRmluZ2VycHJp
bnRIYXNoRnVuY3Rpb247CisgICAgU3RyaW5nIGR0bHNGaW5nZXJwcmludDsKIAotICAgIGNvbnN0
IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBwYXlsb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9h
ZHM7IH0KLSAgICB2b2lkIGFkZFBheWxvYWQoTWVkaWFQYXlsb2FkJiYgcGF5bG9hZCkgeyBtX3Bh
eWxvYWRzLmFwcGVuZChXVEZNb3ZlKHBheWxvYWQpKTsgfQotICAgIHZvaWQgc2V0UGF5bG9hZHMo
VmVjdG9yPE1lZGlhUGF5bG9hZD4mJiBwYXlsb2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9hZHM7
IH0KLSAgICB2b2lkIHNldFBheWxvYWRzKGNvbnN0IFZlY3RvcjxNZWRpYVBheWxvYWQ+JiBwYXls
b2FkcykgeyBtX3BheWxvYWRzID0gcGF5bG9hZHM7IH0KKyAgICBWZWN0b3I8dW5zaWduZWQ+IHNz
cmNzOworICAgIFN0cmluZyBjbmFtZTsKIAotICAgIGJvb2wgcnRjcE11eCgpIGNvbnN0IHsgcmV0
dXJuIG1fcnRjcE11eDsgfQotICAgIHZvaWQgc2V0UnRjcE11eChib29sIHJ0Y3BNdXgpIHsgbV9y
dGNwTXV4ID0gcnRjcE11eDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBydGNwQWRkcmVzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcnRjcEFkZHJlc3M7IH0KLSAgICB2b2lkIHNldFJ0Y3BBZGRyZXNzKGNv
bnN0IFN0cmluZyYgcnRjcEFkZHJlc3MpIHsgbV9ydGNwQWRkcmVzcyA9IHJ0Y3BBZGRyZXNzOyB9
Ci0KLSAgICB1bnNpZ25lZCBzaG9ydCBydGNwUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRjcFBv
cnQ7IH0KLSAgICB2b2lkIHNldFJ0Y3BQb3J0KHVuc2lnbmVkIHNob3J0IHJ0Y3BQb3J0KSB7IG1f
cnRjcFBvcnQgPSBydGNwUG9ydDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbUlk
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUlkOyB9Ci0gICAgdm9pZCBzZXRNZWRpYVN0
cmVhbUlkKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1JZCkgeyBtX21lZGlhU3RyZWFtSWQgPSBt
ZWRpYVN0cmVhbUlkOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtVHJhY2tJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1UcmFja0lkOyB9Ci0gICAgdm9pZCBzZXRNZWRp
YVN0cmVhbVRyYWNrSWQoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbVRyYWNrSWQpIHsgbV9tZWRp
YVN0cmVhbVRyYWNrSWQgPSBtZWRpYVN0cmVhbVRyYWNrSWQ7IH0KLQotICAgIGNvbnN0IFN0cmlu
ZyYgZHRsc1NldHVwKCkgY29uc3QgeyByZXR1cm4gbV9kdGxzU2V0dXA7IH0KLSAgICB2b2lkIHNl
dER0bHNTZXR1cChjb25zdCBTdHJpbmcmIGR0bHNTZXR1cCkgeyBtX2R0bHNTZXR1cCA9IGR0bHNT
ZXR1cDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnRIYXNoRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsgfQotICAgIHZv
aWQgc2V0RHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZHRsc0Zpbmdl
cnByaW50SGFzaEZ1bmN0aW9uKSB7IG1fZHRsc0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uID0gZHRs
c0ZpbmdlcnByaW50SGFzaEZ1bmN0aW9uOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGR0bHNGaW5n
ZXJwcmludCgpIGNvbnN0IHsgcmV0dXJuIG1fZHRsc0ZpbmdlcnByaW50OyB9Ci0gICAgdm9pZCBz
ZXREdGxzRmluZ2VycHJpbnQoY29uc3QgU3RyaW5nJiBkdGxzRmluZ2VycHJpbnQpIHsgbV9kdGxz
RmluZ2VycHJpbnQgPSBkdGxzRmluZ2VycHJpbnQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgY25h
bWUoKSBjb25zdCB7IHJldHVybiBtX2NuYW1lOyB9Ci0gICAgdm9pZCBzZXRDbmFtZShjb25zdCBT
dHJpbmcmIGNuYW1lKSB7IG1fY25hbWUgPSBjbmFtZTsgfQotCi0gICAgY29uc3QgVmVjdG9yPHVu
c2lnbmVkPiYgc3NyY3MoKSBjb25zdCB7IHJldHVybiBtX3NzcmNzOyB9Ci0gICAgdm9pZCBhZGRT
c3JjKHVuc2lnbmVkIHNzcmMpIHsgbV9zc3Jjcy5hcHBlbmQoc3NyYyk7IH0KLSAgICB2b2lkIGNs
ZWFyU3NyY3MoKSB7IG1fc3NyY3MuY2xlYXIoKTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBpY2VV
ZnJhZygpIGNvbnN0IHsgcmV0dXJuIG1faWNlVWZyYWc7IH0KLSAgICB2b2lkIHNldEljZVVmcmFn
KGNvbnN0IFN0cmluZyYgaWNlVWZyYWcpIHsgbV9pY2VVZnJhZyA9IGljZVVmcmFnOyB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIGljZVBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV9pY2VQYXNzd29y
ZDsgfQotICAgIHZvaWQgc2V0SWNlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBpY2VQYXNzd29yZCkg
eyBtX2ljZVBhc3N3b3JkID0gaWNlUGFzc3dvcmQ7IH0KLQotICAgIGNvbnN0IFZlY3RvcjxJY2VD
YW5kaWRhdGU+JiBpY2VDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VDYW5kaWRhdGVz
OyB9Ci0gICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiYgY2FuZGlkYXRlKSB7
IG1faWNlQ2FuZGlkYXRlcy5hcHBlbmQoV1RGTW92ZShjYW5kaWRhdGUpKTsgfQotCi0gICAgUmVm
UHRyPFBlZXJNZWRpYURlc2NyaXB0aW9uPiBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBS
ZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+IGNvcHkgPSBjcmVhdGUoKTsKLQotICAgICAgICBj
b3B5LT5tX3R5cGUgPSBTdHJpbmcobV90eXBlKTsKLSAgICAgICAgY29weS0+bV9wb3J0ID0gbV9w
b3J0OwotICAgICAgICBjb3B5LT5tX2FkZHJlc3MgPSBTdHJpbmcobV9hZGRyZXNzKTsKLSAgICAg
ICAgY29weS0+bV9tb2RlID0gU3RyaW5nKG1fbW9kZSk7Ci0gICAgICAgIGNvcHktPm1fbWlkID0g
U3RyaW5nKG1fbWlkKTsKLQotICAgICAgICBjb3B5LT5tX3BheWxvYWRzID0gbV9wYXlsb2FkczsK
LQotICAgICAgICBjb3B5LT5tX3J0Y3BNdXggPSBtX3J0Y3BNdXg7Ci0gICAgICAgIGNvcHktPm1f
cnRjcEFkZHJlc3MgPSBTdHJpbmcobV9ydGNwQWRkcmVzcyk7Ci0gICAgICAgIGNvcHktPm1fcnRj
cFBvcnQgPSBtX3J0Y3BQb3J0OwotCi0gICAgICAgIGNvcHktPm1fbWVkaWFTdHJlYW1JZCA9IFN0
cmluZyhtX21lZGlhU3RyZWFtSWQpOwotICAgICAgICBjb3B5LT5tX21lZGlhU3RyZWFtVHJhY2tJ
ZCA9IFN0cmluZyhtX21lZGlhU3RyZWFtVHJhY2tJZCk7Ci0KLSAgICAgICAgY29weS0+bV9kdGxz
U2V0dXAgPSBTdHJpbmcobV9kdGxzU2V0dXApOwotICAgICAgICBjb3B5LT5tX2R0bHNGaW5nZXJw
cmludEhhc2hGdW5jdGlvbiA9IFN0cmluZyhtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbik7
Ci0gICAgICAgIGNvcHktPm1fZHRsc0ZpbmdlcnByaW50ID0gU3RyaW5nKG1fZHRsc0ZpbmdlcnBy
aW50KTsKLQotICAgICAgICBmb3IgKGF1dG8gc3NyYyA6IG1fc3NyY3MpCi0gICAgICAgICAgICBj
b3B5LT5tX3NzcmNzLmFwcGVuZChzc3JjKTsKLQotICAgICAgICBjb3B5LT5tX2NuYW1lID0gU3Ry
aW5nKG1fY25hbWUpOwotCi0gICAgICAgIGNvcHktPm1faWNlVWZyYWcgPSBTdHJpbmcobV9pY2VV
ZnJhZyk7Ci0gICAgICAgIGNvcHktPm1faWNlUGFzc3dvcmQgPSBTdHJpbmcobV9pY2VQYXNzd29y
ZCk7Ci0KLSAgICAgICAgY29weS0+bV9pY2VDYW5kaWRhdGVzID0gbV9pY2VDYW5kaWRhdGVzOwot
Ci0gICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBQZWVyTWVkaWFE
ZXNjcmlwdGlvbigpIHsgfQotCi0gICAgU3RyaW5nIG1fdHlwZTsKLSAgICB1bnNpZ25lZCBzaG9y
dCBtX3BvcnQgeyA5IH07Ci0gICAgU3RyaW5nIG1fYWRkcmVzcyB7ICIwLjAuMC4wIiB9OwotICAg
IFN0cmluZyBtX21vZGUgeyAic2VuZHJlY3YiIH07Ci0gICAgU3RyaW5nIG1fbWlkOwotCi0gICAg
VmVjdG9yPE1lZGlhUGF5bG9hZD4gbV9wYXlsb2FkczsKLQotICAgIGJvb2wgbV9ydGNwTXV4IHsg
dHJ1ZSB9OwotICAgIFN0cmluZyBtX3J0Y3BBZGRyZXNzOwotICAgIHVuc2lnbmVkIHNob3J0IG1f
cnRjcFBvcnQgeyAwIH07Ci0KLSAgICBTdHJpbmcgbV9tZWRpYVN0cmVhbUlkOwotICAgIFN0cmlu
ZyBtX21lZGlhU3RyZWFtVHJhY2tJZDsKLQotICAgIFN0cmluZyBtX2R0bHNTZXR1cCB7ICJhY3Rw
YXNzIiB9OwotICAgIFN0cmluZyBtX2R0bHNGaW5nZXJwcmludEhhc2hGdW5jdGlvbjsKLSAgICBT
dHJpbmcgbV9kdGxzRmluZ2VycHJpbnQ7Ci0KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fc3NyY3M7
Ci0gICAgU3RyaW5nIG1fY25hbWU7Ci0KLSAgICBTdHJpbmcgbV9pY2VVZnJhZzsKLSAgICBTdHJp
bmcgbV9pY2VQYXNzd29yZDsKLSAgICBWZWN0b3I8SWNlQ2FuZGlkYXRlPiBtX2ljZUNhbmRpZGF0
ZXM7CisgICAgU3RyaW5nIGljZVVmcmFnOworICAgIFN0cmluZyBpY2VQYXNzd29yZDsKKyAgICBW
ZWN0b3I8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCi0KLSNlbmRpZiAvLyBQZWVyTWVk
aWFEZXNjcmlwdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcAppbmRl
eCA2MTIwMWUxMGFkMTY3ZjEyYjAwNWJmMDJlMjg5ODYwYjMxYjExYTY1Li4zZGNkNDAwMTY5ODgz
YzJkZjFkYTY3ZDVlMGEwYzRlMGI5YjkyNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRw
b2ludE93ci5jcHAKQEAgLTIxNyw4ICsyMTcsOCBAQCBNZWRpYUVuZHBvaW50OjpVcGRhdGVSZXN1
bHQgTWVkaWFFbmRwb2ludE93cjo6dXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24oTWVkaWFFbgog
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsgaSA8IGNvbmZpZ3Vy
YXRpb24tPm1lZGlhRGVzY3JpcHRpb25zKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVHJhbnNj
ZWl2ZXJDb25maWcgY29uZmlnOwogICAgICAgICBjb25maWcudHlwZSA9IFNlc3Npb25UeXBlTWVk
aWE7Ci0gICAgICAgIGNvbmZpZy5pc0R0bHNDbGllbnQgPSBjb25maWd1cmF0aW9uLT5tZWRpYURl
c2NyaXB0aW9ucygpW2ldLT5kdGxzU2V0dXAoKSA9PSAiYWN0aXZlIjsKLSAgICAgICAgY29uZmln
Lm1pZCA9IGNvbmZpZ3VyYXRpb24tPm1lZGlhRGVzY3JpcHRpb25zKClbaV0tPm1pZCgpOworICAg
ICAgICBjb25maWcuaXNEdGxzQ2xpZW50ID0gY29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlv
bnMoKVtpXS5kdGxzU2V0dXAgPT0gImFjdGl2ZSI7CisgICAgICAgIGNvbmZpZy5taWQgPSBjb25m
aWd1cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLm1pZDsKICAgICAgICAgdHJhbnNjZWl2
ZXJDb25maWdzLmFwcGVuZChXVEZNb3ZlKGNvbmZpZykpOwogICAgIH0KIApAQCAtMjI3LDcgKzIy
Nyw3IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdCBNZWRpYUVuZHBvaW50T3dyOjp1cGRh
dGVSZWNlaXZlQ29uZmlndXJhdGlvbihNZWRpYUVuCiAgICAgLy8gUHJlcGFyZSB0aGUgbmV3IHNl
c3Npb25zLgogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbnVtYmVyT2ZSZWNlaXZlUHJlcGFyZWRT
ZXNzaW9uczsgaSA8IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE93clNl
c3Npb24qIHNlc3Npb24gPSBtX3RyYW5zY2VpdmVyc1tpXS0+c2Vzc2lvbigpOwotICAgICAgICBw
cmVwYXJlTWVkaWFTZXNzaW9uKE9XUl9NRURJQV9TRVNTSU9OKHNlc3Npb24pLCBjb25maWd1cmF0
aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLmdldCgpLCBpc0luaXRpYXRvcik7CisgICAgICAg
IHByZXBhcmVNZWRpYVNlc3Npb24oT1dSX01FRElBX1NFU1NJT04oc2Vzc2lvbiksICZjb25maWd1
cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLCBpc0luaXRpYXRvcik7CiAgICAgICAgIG93
cl90cmFuc3BvcnRfYWdlbnRfYWRkX3Nlc3Npb24obV90cmFuc3BvcnRBZ2VudCwgc2Vzc2lvbik7
CiAgICAgfQogCkBAIC0yNTIsMzMgKzI1MiwzMyBAQCBNZWRpYUVuZHBvaW50OjpVcGRhdGVSZXN1
bHQgTWVkaWFFbmRwb2ludE93cjo6dXBkYXRlU2VuZENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwbwog
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNjZWl2ZXJzLnNpemUoKTsgaSA8IGNvbmZpZ3Vy
YXRpb24tPm1lZGlhRGVzY3JpcHRpb25zKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVHJhbnNj
ZWl2ZXJDb25maWcgY29uZmlnOwogICAgICAgICBjb25maWcudHlwZSA9IFNlc3Npb25UeXBlTWVk
aWE7Ci0gICAgICAgIGNvbmZpZy5pc0R0bHNDbGllbnQgPSBjb25maWd1cmF0aW9uLT5tZWRpYURl
c2NyaXB0aW9ucygpW2ldLT5kdGxzU2V0dXAoKSAhPSAiYWN0aXZlIjsKLSAgICAgICAgY29uZmln
Lm1pZCA9IGNvbmZpZ3VyYXRpb24tPm1lZGlhRGVzY3JpcHRpb25zKClbaV0tPm1pZCgpOworICAg
ICAgICBjb25maWcuaXNEdGxzQ2xpZW50ID0gY29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlv
bnMoKVtpXS5kdGxzU2V0dXAgIT0gImFjdGl2ZSI7CisgICAgICAgIGNvbmZpZy5taWQgPSBjb25m
aWd1cmF0aW9uLT5tZWRpYURlc2NyaXB0aW9ucygpW2ldLm1pZDsKICAgICAgICAgdHJhbnNjZWl2
ZXJDb25maWdzLmFwcGVuZChXVEZNb3ZlKGNvbmZpZykpOwogICAgIH0KIAogICAgIGVuc3VyZVRy
YW5zcG9ydEFnZW50QW5kVHJhbnNjZWl2ZXJzKGlzSW5pdGlhdG9yLCB0cmFuc2NlaXZlckNvbmZp
Z3MpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdHJhbnNjZWl2ZXJzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIE93clNlc3Npb24qIHNlc3Npb24gPSBtX3RyYW5zY2VpdmVyc1tp
XS0+c2Vzc2lvbigpOwotICAgICAgICBQZWVyTWVkaWFEZXNjcmlwdGlvbiYgbWRlc2MgPSAqY29u
ZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsKKyAgICAgICAgYXV0byogc2Vzc2lv
biA9IG1fdHJhbnNjZWl2ZXJzW2ldLT5zZXNzaW9uKCk7CisgICAgICAgIGF1dG8mIG1kZXNjID0g
Y29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKVtpXTsKIAotICAgICAgICBpZiAobWRl
c2MudHlwZSgpID09ICJhdWRpbyIgfHwgbWRlc2MudHlwZSgpID09ICJ2aWRlbyIpCi0gICAgICAg
ICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgInJ0Y3AtbXV4IiwgbWRlc2MucnRjcE11eCgpLCBu
dWxscHRyKTsKKyAgICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1ZGlvIiB8fCBtZGVzYy50eXBl
ID09ICJ2aWRlbyIpCisgICAgICAgICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgInJ0Y3AtbXV4
IiwgbWRlc2MucnRjcE11eCwgbnVsbHB0cik7CiAKLSAgICAgICAgaWYgKG1kZXNjLmljZUNhbmRp
ZGF0ZXMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbWRl
c2MuaWNlQ2FuZGlkYXRlcygpKQotICAgICAgICAgICAgICAgIGludGVybmFsQWRkUmVtb3RlQ2Fu
ZGlkYXRlKHNlc3Npb24sIGNhbmRpZGF0ZSwgbWRlc2MuaWNlVWZyYWcoKSwgbWRlc2MuaWNlUGFz
c3dvcmQoKSk7CisgICAgICAgIGlmIChtZGVzYy5pY2VDYW5kaWRhdGVzLnNpemUoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtZGVzYy5pY2VDYW5kaWRhdGVzKQorICAg
ICAgICAgICAgICAgIGludGVybmFsQWRkUmVtb3RlQ2FuZGlkYXRlKHNlc3Npb24sIGNhbmRpZGF0
ZSwgbWRlc2MuaWNlVWZyYWcsIG1kZXNjLmljZVBhc3N3b3JkKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChpIDwgbV9udW1iZXJPZlNlbmRQcmVwYXJlZFNlc3Npb25zKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgaWYgKCFzZW5kU291cmNlTWFwLmNvbnRhaW5zKG1kZXNjLm1p
ZCgpKSkKKyAgICAgICAgaWYgKCFzZW5kU291cmNlTWFwLmNvbnRhaW5zKG1kZXNjLm1pZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBNZWRpYVBheWxvYWQqIHBheWxv
YWQgPSBudWxscHRyOwotICAgICAgICBmb3IgKGF1dG8mIHAgOiBtZGVzYy5wYXlsb2FkcygpKSB7
CisgICAgICAgIGZvciAoYXV0byYgcCA6IG1kZXNjLnBheWxvYWRzKSB7CiAgICAgICAgICAgICBp
ZiAocC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSAhPSAiUlRYIikgewog
ICAgICAgICAgICAgICAgIHBheWxvYWQgPSAmcDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTI4OCwxNCArMjg4LDE0IEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdCBNZWRpYUVuZHBv
aW50T3dyOjp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvCiAgICAgICAgIGlmICgh
cGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBVcGRhdGVSZXN1bHQ6OkZhaWxlZDsKIAotICAg
ICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQobWRlc2MucGF5bG9hZHMoKSwg
cGF5bG9hZC0+dHlwZSk7Ci0gICAgICAgIGF1dG8qIHNvdXJjZSA9IHN0YXRpY19jYXN0PFJlYWx0
aW1lTWVkaWFTb3VyY2VPd3IqPihzZW5kU291cmNlTWFwLmdldChtZGVzYy5taWQoKSkpOworICAg
ICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQobWRlc2MucGF5bG9hZHMsIHBh
eWxvYWQtPnR5cGUpOworICAgICAgICBhdXRvKiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGlt
ZU1lZGlhU291cmNlT3dyKj4oc2VuZFNvdXJjZU1hcC5nZXQobWRlc2MubWlkKSk7CiAKICAgICAg
ICAgQVNTRVJUKGNvZGVjVHlwZXMuZmluZChwYXlsb2FkLT5lbmNvZGluZ05hbWUuY29udmVydFRv
QVNDSUlVcHBlcmNhc2UoKSkgIT0gbm90Rm91bmQpOwogICAgICAgICBhdXRvIGNvZGVjVHlwZSA9
IHN0YXRpY19jYXN0PE93ckNvZGVjVHlwZT4oY29kZWNUeXBlcy5maW5kKHBheWxvYWQtPmVuY29k
aW5nTmFtZS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKSk7CiAKICAgICAgICAgT3dyUGF5bG9h
ZCogc2VuZFBheWxvYWQ7Ci0gICAgICAgIGlmIChtZGVzYy50eXBlKCkgPT0gImF1ZGlvIikKKyAg
ICAgICAgaWYgKG1kZXNjLnR5cGUgPT0gImF1ZGlvIikKICAgICAgICAgICAgIHNlbmRQYXlsb2Fk
ID0gb3dyX2F1ZGlvX3BheWxvYWRfbmV3KGNvZGVjVHlwZSwgcGF5bG9hZC0+dHlwZSwgcGF5bG9h
ZC0+Y2xvY2tSYXRlLCBwYXlsb2FkLT5jaGFubmVscyk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgc2VuZFBheWxvYWQgPSBvd3JfdmlkZW9fcGF5bG9hZF9uZXcoY29kZWNUeXBlLCBwYXls
b2FkLT50eXBlLCBwYXlsb2FkLT5jbG9ja1JhdGUsIHBheWxvYWQtPmNjbWZpciwgcGF5bG9hZC0+
bmFja3BsaSk7CkBAIC00NjYsOCArNDY2LDggQEAgdm9pZCBNZWRpYUVuZHBvaW50T3dyOjp1bm11
dGVSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiBtaWQsIE93ck1lZGlhU291cmNlKiByZWEKIAog
dm9pZCBNZWRpYUVuZHBvaW50T3dyOjpwcmVwYXJlU2Vzc2lvbihPd3JTZXNzaW9uKiBzZXNzaW9u
LCBQZWVyTWVkaWFEZXNjcmlwdGlvbiogbWVkaWFEZXNjcmlwdGlvbikKIHsKLSAgICBnX29iamVj
dF9zZXRfZGF0YV9mdWxsKEdfT0JKRUNUKHNlc3Npb24pLCAiaWNlLXVmcmFnIiwgZ19zdHJkdXAo
bWVkaWFEZXNjcmlwdGlvbi0+aWNlVWZyYWcoKS5hc2NpaSgpLmRhdGEoKSksIGdfZnJlZSk7Ci0g
ICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChzZXNzaW9uKSwgImljZS1wYXNzd29y
ZCIsIGdfc3RyZHVwKG1lZGlhRGVzY3JpcHRpb24tPmljZVBhc3N3b3JkKCkuYXNjaWkoKS5kYXRh
KCkpLCBnX2ZyZWUpOworICAgIGdfb2JqZWN0X3NldF9kYXRhX2Z1bGwoR19PQkpFQ1Qoc2Vzc2lv
biksICJpY2UtdWZyYWciLCBnX3N0cmR1cChtZWRpYURlc2NyaXB0aW9uLT5pY2VVZnJhZy5hc2Np
aSgpLmRhdGEoKSksIGdfZnJlZSk7CisgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVD
VChzZXNzaW9uKSwgImljZS1wYXNzd29yZCIsIGdfc3RyZHVwKG1lZGlhRGVzY3JpcHRpb24tPmlj
ZVBhc3N3b3JkLmFzY2lpKCkuZGF0YSgpKSwgZ19mcmVlKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qoc2Vzc2lvbiwgIm9uLW5ldy1jYW5kaWRhdGUiLCBHX0NBTExCQUNLKGdvdENhbmRpZGF0ZSks
IHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lvbiwgIm9uLWNhbmRpZGF0ZS1nYXRo
ZXJpbmctZG9uZSIsIEdfQ0FMTEJBQ0soY2FuZGlkYXRlR2F0aGVyaW5nRG9uZSksIHRoaXMpOwpA
QCAtNDc4LDI4ICs0NzgsMjggQEAgdm9pZCBNZWRpYUVuZHBvaW50T3dyOjpwcmVwYXJlTWVkaWFT
ZXNzaW9uKE93ck1lZGlhU2Vzc2lvbiogbWVkaWFTZXNzaW9uLCBQZWVyTWUKIHsKICAgICBwcmVw
YXJlU2Vzc2lvbihPV1JfU0VTU0lPTihtZWRpYVNlc3Npb24pLCBtZWRpYURlc2NyaXB0aW9uKTsK
IAotICAgIGJvb2wgdXNlUnRjcE11eCA9ICFpc0luaXRpYXRvciAmJiBtZWRpYURlc2NyaXB0aW9u
LT5ydGNwTXV4KCk7CisgICAgYm9vbCB1c2VSdGNwTXV4ID0gIWlzSW5pdGlhdG9yICYmIG1lZGlh
RGVzY3JpcHRpb24tPnJ0Y3BNdXg7CiAgICAgZ19vYmplY3Rfc2V0KG1lZGlhU2Vzc2lvbiwgInJ0
Y3AtbXV4IiwgdXNlUnRjcE11eCwgbnVsbHB0cik7CiAKLSAgICBpZiAoIW1lZGlhRGVzY3JpcHRp
b24tPmNuYW1lKCkuaXNFbXB0eSgpICYmIG1lZGlhRGVzY3JpcHRpb24tPnNzcmNzKCkuc2l6ZSgp
KSB7Ci0gICAgICAgIGdfb2JqZWN0X3NldChtZWRpYVNlc3Npb24sICJjbmFtZSIsIG1lZGlhRGVz
Y3JpcHRpb24tPmNuYW1lKCkuYXNjaWkoKS5kYXRhKCksCi0gICAgICAgICAgICAic2VuZC1zc3Jj
IiwgbWVkaWFEZXNjcmlwdGlvbi0+c3NyY3MoKVswXSwKKyAgICBpZiAoIW1lZGlhRGVzY3JpcHRp
b24tPmNuYW1lLmlzRW1wdHkoKSAmJiBtZWRpYURlc2NyaXB0aW9uLT5zc3Jjcy5zaXplKCkpIHsK
KyAgICAgICAgZ19vYmplY3Rfc2V0KG1lZGlhU2Vzc2lvbiwgImNuYW1lIiwgbWVkaWFEZXNjcmlw
dGlvbi0+Y25hbWUuYXNjaWkoKS5kYXRhKCksCisgICAgICAgICAgICAic2VuZC1zc3JjIiwgbWVk
aWFEZXNjcmlwdGlvbi0+c3NyY3NbMF0sCiAgICAgICAgICAgICBudWxscHRyKTsKICAgICB9CiAK
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1lZGlhU2Vzc2lvbiwgIm9uLWluY29taW5nLXNvdXJjZSIs
IEdfQ0FMTEJBQ0soZ290SW5jb21pbmdTb3VyY2UpLCB0aGlzKTsKIAotICAgIGZvciAoYXV0byYg
cGF5bG9hZCA6IG1lZGlhRGVzY3JpcHRpb24tPnBheWxvYWRzKCkpIHsKKyAgICBmb3IgKGF1dG8m
IHBheWxvYWQgOiBtZWRpYURlc2NyaXB0aW9uLT5wYXlsb2FkcykgewogICAgICAgICBpZiAocGF5
bG9hZC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSA9PSAiUlRYIikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8qIHJ0eFBheWxvYWQgPSBmaW5kUnR4
UGF5bG9hZChtZWRpYURlc2NyaXB0aW9uLT5wYXlsb2FkcygpLCBwYXlsb2FkLnR5cGUpOworICAg
ICAgICBhdXRvKiBydHhQYXlsb2FkID0gZmluZFJ0eFBheWxvYWQobWVkaWFEZXNjcmlwdGlvbi0+
cGF5bG9hZHMsIHBheWxvYWQudHlwZSk7CiAKICAgICAgICAgQVNTRVJUKGNvZGVjVHlwZXMuZmlu
ZChwYXlsb2FkLmVuY29kaW5nTmFtZSkgIT0gbm90Rm91bmQpOwogICAgICAgICBPd3JDb2RlY1R5
cGUgY29kZWNUeXBlID0gc3RhdGljX2Nhc3Q8T3dyQ29kZWNUeXBlPihjb2RlY1R5cGVzLmZpbmQo
cGF5bG9hZC5lbmNvZGluZ05hbWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSkpOwogCiAgICAg
ICAgIE93clBheWxvYWQqIHJlY2VpdmVQYXlsb2FkOwotICAgICAgICBpZiAobWVkaWFEZXNjcmlw
dGlvbi0+dHlwZSgpID09ICJhdWRpbyIpCisgICAgICAgIGlmIChtZWRpYURlc2NyaXB0aW9uLT50
eXBlID09ICJhdWRpbyIpCiAgICAgICAgICAgICByZWNlaXZlUGF5bG9hZCA9IG93cl9hdWRpb19w
YXlsb2FkX25ldyhjb2RlY1R5cGUsIHBheWxvYWQudHlwZSwgcGF5bG9hZC5jbG9ja1JhdGUsIHBh
eWxvYWQuY2hhbm5lbHMpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlY2VpdmVQYXls
b2FkID0gb3dyX3ZpZGVvX3BheWxvYWRfbmV3KGNvZGVjVHlwZSwgcGF5bG9hZC50eXBlLCBwYXls
b2FkLmNsb2NrUmF0ZSwgcGF5bG9hZC5jY21maXIsIHBheWxvYWQubmFja3BsaSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlh
RW5kcG9pbnRPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53
ZWJydGMvTWVkaWFFbmRwb2ludE93ci5oCmluZGV4IGFkMWYyY2EwMjgwNTFmMmFjYzNhY2Y3ZjZi
MzM0NGJiNmRiZDcwODEuLmM0ZDFlNTYzOTkyY2QwMTE2NzQ3OWNhODQ1MDJmZDg0MzM0Yzg3Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJy
dGMvTWVkaWFFbmRwb2ludE93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5oCkBAIC00MywxMCArNDMsMTEgQEAg
dHlwZWRlZiBzdHJ1Y3QgX093clRyYW5zcG9ydEFnZW50IE93clRyYW5zcG9ydEFnZW50OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBlZXJNZWRpYURlc2NyaXB0aW9uOwogY2xhc3Mg
UmVhbHRpbWVNZWRpYVNvdXJjZU93cjsKIGNsYXNzIFJUQ0NvbmZpZ3VyYXRpb25Qcml2YXRlOwog
CitzdHJ1Y3QgUGVlck1lZGlhRGVzY3JpcHRpb247CisKIGNsYXNzIE93clRyYW5zY2VpdmVyIDog
cHVibGljIFJlZkNvdW50ZWQ8T3dyVHJhbnNjZWl2ZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE93clRyYW5zY2VpdmVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBtaWQsIE93clNlc3Npb24q
IHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tN
ZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlh
RW5kcG9pbnQuY3BwCmluZGV4IGY5MTlhNDY5MWEwMmI0ZWVmMmMxNjVlYjljZWE0Mjk2MWYzMjZm
YjkuLjYxNDIzMTVkNThjNzAyNzEwNjU5YjNmN2Q1MTM4YTc3NGU4Zjg4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCkBAIC0y
MjUsOCArMjI1LDggQEAgdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6ZW11bGF0ZVBsYXRmb3JtRXZl
bnQoY29uc3QgU3RyaW5nJiBhY3Rpb24pCiB2b2lkIE1vY2tNZWRpYUVuZHBvaW50Ojp1cGRhdGVD
b25maWd1cmF0aW9uTWlkcyhjb25zdCBNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbWlkczsKLSAgICBmb3IgKGNv
bnN0IFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4mIG1lZGlhRGVzY3JpcHRpb24gOiBjb25m
aWd1cmF0aW9uLm1lZGlhRGVzY3JpcHRpb25zKCkpCi0gICAgICAgIG1pZHMuYXBwZW5kKG1lZGlh
RGVzY3JpcHRpb24tPm1pZCgpKTsKKyAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3JpcHRpb24gOiBj
b25maWd1cmF0aW9uLm1lZGlhRGVzY3JpcHRpb25zKCkpCisgICAgICAgIG1pZHMuYXBwZW5kKG1l
ZGlhRGVzY3JpcHRpb24ubWlkKTsKICAgICBtX21pZHMuc3dhcChtaWRzKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>