<?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>205655</bug_id>
          
          <creation_ts>2019-12-31 04:04:46 -0800</creation_ts>
          <short_desc>StyleRule accessor in RuleData should return a const reference</short_desc>
          <delta_ts>2019-12-31 08:16:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601967</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-31 04:04:46 -0800</bug_when>
    <thetext>Instead of a non-const pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601968</commentid>
    <comment_count>1</comment_count>
      <attachid>386554</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-31 04:14:57 -0800</bug_when>
    <thetext>Created attachment 386554
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601972</commentid>
    <comment_count>2</comment_count>
      <attachid>386556</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-31 04:49:16 -0800</bug_when>
    <thetext>Created attachment 386556
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601974</commentid>
    <comment_count>3</comment_count>
      <attachid>386558</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-31 05:33:23 -0800</bug_when>
    <thetext>Created attachment 386558
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601975</commentid>
    <comment_count>4</comment_count>
      <attachid>386559</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-31 05:57:07 -0800</bug_when>
    <thetext>Created attachment 386559
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601977</commentid>
    <comment_count>5</comment_count>
      <attachid>386560</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-31 06:12:23 -0800</bug_when>
    <thetext>Created attachment 386560
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601979</commentid>
    <comment_count>6</comment_count>
      <attachid>386560</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-31 07:15:03 -0800</bug_when>
    <thetext>Comment on attachment 386560
patch

nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601985</commentid>
    <comment_count>7</comment_count>
      <attachid>386560</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-31 08:15:17 -0800</bug_when>
    <thetext>Comment on attachment 386560
patch

Clearing flags on attachment: 386560

Committed r253959: &lt;https://trac.webkit.org/changeset/253959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601986</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-31 08:15:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601987</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-31 08:16:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58254381&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386554</attachid>
            <date>2019-12-31 04:14:57 -0800</date>
            <delta_ts>2019-12-31 04:49:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylerule-const.patch</filename>
            <type>text/plain</type>
            <size>25662</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZjkxNzk3YzBmMy4uMDQ4ZGNjMGFhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOS0xMi0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3R5bGVSdWxlIGFjY2Vzc29yIGluIFJ1bGVEYXRhIHNob3VsZCByZXR1cm4g
YSBjb25zdCByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEl0IGlzIGN1cnJlbnRseSBhIG5vbi1jb25zdCBwb2ludGVyLgorCisgICAgICAg
IFRoaXMgbGVhZHMgdG8gU3R5bGVSdWxlIGJlaW5nIGNvbnN0IGluIG1hbnkgb3RoZXIgcGxhY2Vz
IHRvby4KKworICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlcmVmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2U6OmRlcmVmKTogRGVsZXRlZC4KKworICAgICAgICBNYWtlIGRlcmVmIGNvbnN0LCBtYXRjaGlu
ZyBSZWZDb3VudGVkIGFuZCBhbGxvd2luZyBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPgorICAgICAg
ICAKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9y
Lmg6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1
bGVJblNoZWV0cyk6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oOgor
ICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnN0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0b3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpydWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNl
dDo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpldmFs
dXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVsZUlmTmVlZGVkKToKKyAgICAgICAgKiBz
dHlsZS9SdWxlU2V0Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VSdWxl
U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyk6CisKIDIwMTktMTItMzEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBSVEMgVlRCIGRlY29kZXJzIGluIEdQVVByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCA3ZmUwN2NjZTdlMy4uNTYyZDNlOGMzYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWY8U3R5bGVSdWxl
QmFzZT4gY29weSgpIGNvbnN0OwogCi0gICAgdm9pZCBkZXJlZigpCisgICAgdm9pZCBkZXJlZigp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAgICAgICAgICBkZXN0
cm95KCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcykuZGVz
dHJveSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxlUnVsZXNX
aXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0gICAgQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRT
ZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICBDb21waWxlZFNlbGVjdG9y
JiBjb21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQogICAgICAgICAgICAgbV9jb21w
aWxlZFNlbGVjdG9ycyA9IG1ha2VVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPihtX3NlbGVj
dG9yTGlzdC5saXN0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCAwODg4ZDEyMjU4Yi4uODgxNDc5YzQ3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHN0YXRpYyBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtCiAgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgp
OwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5z
dHlsZVJ1bGVzRm9yRWxlbWVudCgmZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpKSB7CiAgICAgICAg
IGlmIChtYXRjaGVkUnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5tZXJn
ZUFuZE92ZXJyaWRlT25Db25mbGljdChzdGF0aWNfcG9pbnRlcl9jYXN0PFN0eWxlUnVsZT4obWF0
Y2hlZFJ1bGUpLT5wcm9wZXJ0aWVzKCkpOworICAgICAgICAgICAgc3R5bGUtPm1lcmdlQW5kT3Zl
cnJpZGVPbkNvbmZsaWN0KHN0YXRpY19wb2ludGVyX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlPihtYXRj
aGVkUnVsZSktPnByb3BlcnRpZXMoKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBzdHlsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKaW5kZXggNGZkYTIyNDZkNzguLjI5MzBiNDVmOGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAt
OTQ2LDcgKzk0Niw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdp
biBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50KQorUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVs
ZShjb25zdCBTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTk3OCw3ICs5NzgsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxl
KAogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUsIG51bGxwdHIpIDogbnVsbHB0cjsKIH0KIAotUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Y29uc3QgU3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGU6OlJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAgICBh
dXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxl
TWF0Y2g+OjpjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDY3NDJkZGYyYzQ3Li5mYTFkNjcxZGQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtMTQ1LDkgKzE0NSw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVT
aGVldCogY3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvY3VtZW50Jik7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdp
bihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQp
OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRP
YmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZv
clJ1bGUoY29uc3QgU3R5bGVSdWxlKiwgU3R5bGU6OlJlc29sdmVyJiwgRWxlbWVudCYpOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9y
UnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3Qo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1l
bnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0
IFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4mLCBTdHlsZTo6UmVzb2x2ZXImLCBFbGVt
ZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4
IDkwN2I4NzgwYjY3Li4xYTFhZjFlMGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGNvbnN0IE1hdGNoUmVz
dWx0JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hSZXN1bHQoKSBjb25zdAogICAgIHJldHVy
biBtX3Jlc3VsdDsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVm
UHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hlZFJ1bGVM
aXN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9k
ZTo6Q29sbGVjdGluZ1J1bGVzKTsKICAgICByZXR1cm4gbV9tYXRjaGVkUnVsZUxpc3Q7CkBAIC0x
OTMsMTIgKzE5MywxMiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNo
ZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbiBkZWNsYXJhdGlvbk9yaQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxl
Y3RpbmdSdWxlcykgewotICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3QuYXBwZW5kKG1hdGNo
ZWRSdWxlLnJ1bGVEYXRhLT5ydWxlKCkpOworICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3Qu
YXBwZW5kKCZtYXRjaGVkUnVsZS5ydWxlRGF0YS0+c3R5bGVSdWxlKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyh7Ci0g
ICAgICAgICAgICAmbWF0Y2hlZFJ1bGUucnVsZURhdGEtPnJ1bGUoKS0+cHJvcGVydGllcygpLAor
ICAgICAgICAgICAgJm1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVz
KCksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURh
dGEtPmxpbmtNYXRjaFR5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
bWF0Y2hlZFJ1bGUucnVsZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0VHlwZSgpKSwKICAgICAgICAg
ICAgIG1hdGNoZWRSdWxlLnN0eWxlU2NvcGVPcmRpbmFsCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5s
aW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRh
JiBydWxlRGF0YSwgdW5zaWduZWQKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJ
VCkKLSAgICBhdXRvJiBjb21waWxlZFNlbGVjdG9yID0gcnVsZURhdGEucnVsZSgpLT5jb21waWxl
ZFNlbGVjdG9yRm9yTGlzdEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpOworICAg
IGF1dG8mIGNvbXBpbGVkU2VsZWN0b3IgPSBydWxlRGF0YS5jb21waWxlZFNlbGVjdG9yKCk7CiAg
ICAgdm9pZCogY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgPSBjb21waWxlZFNlbGVjdG9yLmNvZGVS
ZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgaWYgKCFjb21waWxlZFNlbGVjdG9y
Q2hlY2tlciAmJiBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzOjpOb3RDb21waWxlZCkgewogICAgICAgICBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9
IFNlbGVjdG9yQ29tcGlsZXI6OmNvbXBpbGVTZWxlY3RvcihydWxlRGF0YS5zZWxlY3RvcigpLCBT
ZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvbnRleHQ6OlJ1bGVDb2xsZWN0b3IsIGNvbXBpbGVk
U2VsZWN0b3IuY29kZVJlZik7CkBAIC01MzMsMTIgKzUzMywxMiBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVs
ZURhdGFWZQogICAgICAgICBpZiAobV9zZWxlY3RvckZpbHRlciAmJiBtX3NlbGVjdG9yRmlsdGVy
LT5mYXN0UmVqZWN0U2VsZWN0b3IocnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmll
ckhhc2hlcygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0eWxlUnVsZSog
cnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKKyAgICAgICAgYXV0byYgcnVsZSA9IHJ1bGVEYXRhLnN0
eWxlUnVsZSgpOwogCiAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRv
IGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgIC8v
IE5vdGUgdGhhdCBpZiB3ZSBnZXQgbnVsbCBiYWNrIGhlcmUsIGl0IG1lYW5zIHdlIGhhdmUgYSBy
dWxlIHdpdGggZGVmZXJyZWQgcHJvcGVydGllcywKICAgICAgICAgLy8gYW5kIHRoYXQgbWVhbnMg
d2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgaXQuCi0gICAgICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5n
KCk7CisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJvcGVydGllcyA9IHJ1bGUucHJv
cGVydGllc1dpdGhvdXREZWZlcnJlZFBhcnNpbmcoKTsKICAgICAgICAgaWYgKHByb3BlcnRpZXMg
JiYgcHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVzKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oCmluZGV4IDNiMjc1M2M3MTg5Li5iYjNhZGRiYjBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CiAK
ICAgICBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQoKSBjb25zdDsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBjb25zdDsKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBj
b25zdDsKIAogICAgIHZvaWQgY2xlYXJNYXRjaGVkUnVsZXMoKTsKIApAQCAtMTcwLDcgKzE3MCw3
IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4IHsgMCB9
OwogCiAgICAgLy8gT3V0cHV0LgotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gbV9tYXRj
aGVkUnVsZUxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBtX21hdGNo
ZWRSdWxlTGlzdDsKICAgICBib29sIG1fZGlkTWF0Y2hVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9y
IHsgZmFsc2UgfTsKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBSZWxhdGlvbnMgbV9z
dHlsZVJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3Rv
ckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5jcHAKaW5kZXggZjNkNTFjOGM4YzQuLmVhMGJiZjQ1MGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdFNjb3BlV3JhcHBlcnMo
U2NvcGUmIHN0eWxlU2NvcGUpCiAgICAgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxl
U2NvcGUuYWN0aXZlU3R5bGVTaGVldHMoKSk7CiB9CiAKLUNTU1N0eWxlUnVsZSogSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhTdHlsZVJ1bGUqIHJ1bGUp
CitDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmdldFdyYXBwZXJGb3JSdWxl
SW5TaGVldHMoY29uc3QgU3R5bGVSdWxlKiBydWxlKQogewogICAgIHJldHVybiBtX3N0eWxlUnVs
ZVRvQ1NTT01XcmFwcGVyTWFwLmdldChydWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0luc3BlY3RvckNTU09NV3JhcHBlcnMuaAppbmRleCAyMzBlNWUxMzlhNy4uZjJmZmViOWUxNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyB7CiBwdWJsaWM6CiAg
ICAgLy8gV0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3IgYWxs
IHN0eWxlIHJ1bGVzIGFuZCBjYWNoZSB0aGVtIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBtZW1v
cnkgY29zdC4KICAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24ndCB1
c2UgZm9yIGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxlKiBn
ZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSopOworICAgIENTU1N0eWxlUnVsZSog
Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhjb25zdCBTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGNv
bGxlY3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQqKTsKICAgICB2b2lkIGNv
bGxlY3REb2N1bWVudFdyYXBwZXJzKEV4dGVuc2lvblN0eWxlU2hlZXRzJik7CiAgICAgdm9pZCBj
b2xsZWN0U2NvcGVXcmFwcGVycyhTY29wZSYpOwpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYpOwogICAgIHZvaWQgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+Jik7CiAKLSAgICBIYXNoTWFwPFN0eWxlUnVs
ZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+PiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOwor
ICAgIEhhc2hNYXA8Y29uc3QgU3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4+IG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVE
YXRhLmNwcAppbmRleCA2YTMwMWRmOGYyNi4uN2I5YWRlZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRGF0YS5jcHAKQEAgLTE1OSw4ICsxNTksOCBAQCBzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hp
dGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZQog
ICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdE5vbmU7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0
YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKLSAgICA6IG1fcnVsZShydWxlKQorUnVs
ZURhdGE6OlJ1bGVEYXRhKGNvbnN0IFN0eWxlUnVsZSYgc3R5bGVSdWxlLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24p
CisgICAgOiBtX3N0eWxlUnVsZSgmc3R5bGVSdWxlKQogICAgICwgbV9zZWxlY3RvckluZGV4KHNl
bGVjdG9ySW5kZXgpCiAgICAgLCBtX3NlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9yTGlzdEluZGV4
KQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCmluZGV4
IGEzYTYwMTAyZWU1Li40MDBjNTVkYzIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCkBAIC00
NywxMSArNDcsMTUgQEAgY2xhc3MgUnVsZURhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhpbXVtU2VsZWN0b3JDb21wb25lbnRDb3VudCA9IDgxOTI7CiAKLSAgICBS
dWxlRGF0YShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxl
Y3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pOworICAgIFJ1bGVEYXRhKGNvbnN0IFN0
eWxlUnVsZSYsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdElu
ZGV4LCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3J1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3J1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3Rv
ckluZGV4KTsgfQorCisgICAgY29uc3QgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJl
dHVybiAqbV9zdHlsZVJ1bGU7IH0KKworICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvckF0KG1f
c2VsZWN0b3JJbmRleCk7IH0KKyAgICBDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNlbGVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1bGUtPmNvbXBpbGVkU2VsZWN0b3JGb3JMaXN0SW5k
ZXgobV9zZWxlY3Rvckxpc3RJbmRleCk7IH0KKwogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ySW5kZXg7IH0KICAgICB1bnNpZ25lZCBzZWxlY3Rv
ckxpc3RJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0SW5kZXg7IH0KIApAQCAt
NjgsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlU2VsZWN0b3JGaWx0ZXJpbmco
KSB7IG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlc1swXSA9IDA7IH0KIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8U3R5bGVSdWxlPiBtX3J1bGU7CisgICAgUmVmUHRyPGNvbnN0IFN0
eWxlUnVsZT4gbV9zdHlsZVJ1bGU7CiAgICAgdW5zaWduZWQgbV9zZWxlY3RvckluZGV4IDogMTY7
CiAgICAgdW5zaWduZWQgbV9zZWxlY3Rvckxpc3RJbmRleCA6IDE2OwogICAgIC8vIFRoaXMgbnVt
YmVyIHdhcyBwaWNrZWQgZmFpcmx5IGFyYml0cmFyaWx5LiBXZSBjYW4gcHJvYmFibHkgbG93ZXIg
aXQgaWYgd2UgbmVlZCB0by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVG
ZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCAx
MTUzOGI5YjJhMS4uOTM2ZTZiYjg4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5j
cHAKQEAgLTU1LDYgKzU1LDE1IEBAIHN0YXRpYyBib29sIGlzU2libGluZ09yU3ViamVjdChNYXRj
aEVsZW1lbnQgbWF0Y2hFbGVtZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUnVsZUZlYXR1
cmU6OlJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgT3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiBtYXRjaEVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxl
Y3RvcikKKyAgICA6IHN0eWxlUnVsZSgmcnVsZURhdGEuc3R5bGVSdWxlKCkpCisgICAgLCBzZWxl
Y3RvckluZGV4KHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkKKyAgICAsIHNlbGVjdG9yTGlzdElu
ZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpCisgICAgLCBtYXRjaEVsZW1lbnQobWF0
Y2hFbGVtZW50KQorICAgICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uU2VsZWN0
b3IpCit7Cit9CisKIE1hdGNoRWxlbWVudCBSdWxlRmVhdHVyZVNldDo6Y29tcHV0ZU5leHRNYXRj
aEVsZW1lbnQoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCwgQ1NTU2VsZWN0b3I6OlJlbGF0aW9u
VHlwZSByZWxhdGlvbikKIHsKICAgICBpZiAoaXNTaWJsaW5nT3JTdWJqZWN0KG1hdGNoRWxlbWVu
dCkpIHsKQEAgLTE2OSwxNCArMTc4LDE0IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RG
ZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgU2VsZWN0b3JGZWF0dXJlcyBz
ZWxlY3RvckZlYXR1cmVzOwogICAgIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVj
dG9yKHNlbGVjdG9yRmVhdHVyZXMsICpydWxlRGF0YS5zZWxlY3RvcigpKTsKICAgICBpZiAoc2Vs
ZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IpCi0gICAgICAgIHNpYmxpbmdSdWxlcy5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpKTsKKyAgICAgICAgc2libGluZ1J1bGVz
LmFwcGVuZCh7IHJ1bGVEYXRhIH0pOwogICAgIGlmIChydWxlRGF0YS5jb250YWluc1VuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3IoKSkKLSAgICAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBl
bmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCks
IHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpKTsKKyAgICAgICAgdW5jb21tb25BdHRyaWJ1
dGVSdWxlcy5hcHBlbmQoeyBydWxlRGF0YSB9KTsKIAogICAgIGZvciAoYXV0byYgbmFtZUFuZE1h
dGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5z
dXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsK
KyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbmFtZUFuZE1h
dGNoLnNlY29uZCB9KTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hF
bGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVB
bmRNYXRjaC5maXJzdCk7CiAgICAgfQpAQCAtMTg1LDcgKzE5NCw3IEBAIHZvaWQgUnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAg
IGF1dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0b3JBbmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0
dHJpYnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgW10gewogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3Ip
KTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbWF0Y2hF
bGVtZW50LCBzZWxlY3RvciB9KTsKICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVs
ZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2Vs
ZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCmluZGV4IDc2NDU5OTkxNDM5Li43
NTIxOTNlMjIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCkBAIC00MCwxOSArNDAs
MTMgQEAgZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQgeyBTdWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9y
LCBEaXJlY3RTaWJsaW5nLCBJbmRpcmVjdFNpYmwKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXRjaEVs
ZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNYXRjaEVsZW1lbnQ6Okhvc3QpICsg
MTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKLSAgICBSdWxlRmVhdHVyZShTdHlsZVJ1bGUqIHJ1
bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBP
cHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCA9IFdURjo6bnVsbG9wdCwgY29uc3Qg
Q1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yID0gbnVsbHB0cikKLSAgICAgICAgOiBy
dWxlKHJ1bGUpCi0gICAgICAgICwgc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQotICAgICAg
ICAsIHNlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9yTGlzdEluZGV4KQotICAgICAgICAsIG1hdGNo
RWxlbWVudChtYXRjaEVsZW1lbnQpCi0gICAgICAgICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52
YWxpZGF0aW9uU2VsZWN0b3IpCi0gICAgewotICAgIH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGU7Cisg
ICAgUnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBPcHRpb25hbDxNYXRjaEVs
ZW1lbnQ+IG1hdGNoRWxlbWVudCA9IFdURjo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3IqIGlu
dmFsaWRhdGlvblNlbGVjdG9yID0gbnVsbHB0cik7CisKKyAgICBSZWZQdHI8Y29uc3QgU3R5bGVS
dWxlPiBzdHlsZVJ1bGU7CiAgICAgdW5zaWduZWQgc2VsZWN0b3JJbmRleDsKICAgICB1bnNpZ25l
ZCBzZWxlY3Rvckxpc3RJbmRleDsKLSAgICBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxl
bWVudDsKLSAgICBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0b3I7CisgICAg
T3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgeyB9OworICAgIGNvbnN0IENTU1Nl
bGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciB7IG51bGxwdHIgfTsKIH07CiAKIHN0cnVjdCBS
dWxlRmVhdHVyZVNldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCmluZGV4IDVjNmQwYTFkYTdm
Li5mNDZjM2IyOGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKQEAgLTg4LDkgKzg4LDkg
QEAgc3RhdGljIGJvb2wgaXNIb3N0U2VsZWN0b3JNYXRjaGluZ0luU2hhZG93VHJlZShjb25zdCBD
U1NTZWxlY3RvciYgc3RhcnRTZWxlY3RvcikKICAgICByZXR1cm4gbGVmdG1vc3RTZWxlY3Rvci0+
bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgbGVmdG1vc3RTZWxlY3Rvci0+
cHNldWRvQ2xhc3NUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdDsKIH0KIAot
dm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSYgcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJ
bmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIE1lZGlhUXVlcnlDb2xsZWN0b3IqIG1l
ZGlhUXVlcnlDb2xsZWN0b3IpCit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5bGVSdWxl
JiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRl
eCwgTWVkaWFRdWVyeUNvbGxlY3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKIHsKLSAgICBSdWxl
RGF0YSBydWxlRGF0YSgmcnVsZSwgc2VsZWN0b3JJbmRleCwgc2VsZWN0b3JMaXN0SW5kZXgsIG1f
cnVsZUNvdW50KyspOworICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUsIHNlbGVjdG9ySW5kZXgs
IHNlbGVjdG9yTGlzdEluZGV4LCBtX3J1bGVDb3VudCsrKTsKIAogICAgIG1fZmVhdHVyZXMuY29s
bGVjdEZlYXR1cmVzKHJ1bGVEYXRhKTsKIApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgUnVsZVNl
dDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiBzaGVldCwgTWVkaWFRdWVy
eUNvbGxlY3RvciYKICAgICAgICAgc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBSdWxlU2V0Ojph
ZGRTdHlsZVJ1bGUoU3R5bGVSdWxlJiBydWxlLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJiBtZWRpYVF1
ZXJ5Q29sbGVjdG9yKQordm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxl
JiBydWxlLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQogewogICAg
IHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4ID0gMDsKICAgICBmb3IgKHNpemVfdCBzZWxlY3Rv
ckluZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHJ1
bGUuc2VsZWN0b3JMaXN0KCkuaW5kZXhPZk5leHRTZWxlY3RvckFmdGVyKHNlbGVjdG9ySW5kZXgp
KQpAQCAtNDI1LDcgKzQyNSw3IEBAIE9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlv
bkNoYW5nZXM+IFJ1bGVTZXQ6OmV2YWx1dGVEeW5hbWljTWVkaWFRdWVyeVJ1CiAgICAgICAgIGF1
dG8gcnVsZVNldCA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8qIGZlYXR1
cmVWZWN0b3IgOiBjb2xsZWN0ZWRDaGFuZ2VzLnJ1bGVGZWF0dXJlcykgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiBmZWF0dXJlIDogKmZlYXR1cmVWZWN0b3IpCi0gICAgICAgICAgICAgICAgcnVs
ZVNldC0+YWRkUnVsZSgqZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1
cmUuc2VsZWN0b3JMaXN0SW5kZXgpOworICAgICAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUo
KmZlYXR1cmUuc3R5bGVSdWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0
b3JMaXN0SW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBydWxlU2V0OwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFJ1bGVTZXQ6Ok1lZGlh
UXVlcnlDb2xsZWN0b3I6OmFkZFJ1bGVJZk5lZWRlZChjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEp
CiAKICAgICBhdXRvJiBjb250ZXh0ID0gZHluYW1pY0NvbnRleHRTdGFjay5sYXN0KCk7CiAgICAg
Y29udGV4dC5hZmZlY3RlZFJ1bGVQb3NpdGlvbnMuYXBwZW5kKHJ1bGVEYXRhLnBvc2l0aW9uKCkp
OwotICAgIGNvbnRleHQucnVsZUZlYXR1cmVzLmFwcGVuZCh7IHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpIH0pOwor
ICAgIGNvbnRleHQucnVsZUZlYXR1cmVzLmFwcGVuZCh7IHJ1bGVEYXRhIH0pOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVTZXQuaAppbmRleCBlNjkyYjY3MDM2YS4uZThhYjY2ZjY4MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlU2V0LmgKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRS
dWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMmLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yJik7CiAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMmLCBN
ZWRpYVF1ZXJ5U2V0KiBzaGVldFF1ZXJ5LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5
bGU6OlJlc29sdmVyJik7CiAKLSAgICB2b2lkIGFkZFN0eWxlUnVsZShTdHlsZVJ1bGUmLCBNZWRp
YVF1ZXJ5Q29sbGVjdG9yJik7Ci0gICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSYsIHVuc2lnbmVk
IHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBNZWRpYVF1ZXJ5Q29s
bGVjdG9yKiA9IG51bGxwdHIpOworICAgIHZvaWQgYWRkU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVs
ZSYsIE1lZGlhUXVlcnlDb2xsZWN0b3ImKTsKKyAgICB2b2lkIGFkZFJ1bGUoY29uc3QgU3R5bGVS
dWxlJiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgs
IE1lZGlhUXVlcnlDb2xsZWN0b3IqID0gbnVsbHB0cik7CiAgICAgdm9pZCBhZGRQYWdlUnVsZShT
dHlsZVJ1bGVQYWdlJik7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoY29uc3QgQXRvbVN0cmluZyYg
a2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1bGVEYXRhJik7CiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2NTU3MjRiZjlk
MS4uY2ViNDg1NzFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC00ODMsMTIgKzQ4MywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVy
OjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZQogICAgIHJldHVybiBz
dHlsZTsKIH0KIAotVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6c3R5bGVSdWxl
c0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVsZXNUb0luY2x1
ZGUpCitWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+IFJlc29sdmVyOjpzdHlsZVJ1bGVz
Rm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVk
ZSkKIHsKICAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgUHNl
dWRvSWQ6Ok5vbmUsIHJ1bGVzVG9JbmNsdWRlKTsKIH0KIAotVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGU+PiBSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCog
ZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQorVmVj
dG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0Zv
ckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2ln
bmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA2NjAzNTMzYWE0YS4u
Yzc3MDQzMTNmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKQEAgLTEyMSw4
ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFsbEJ1dEVtcHR5Q1NTUnVsZXMgPSBVQUFuZFVz
ZXJDU1NSdWxlcyB8IEF1dGhvckNTU1J1bGVzLAogICAgICAgICBBbGxDU1NSdWxlcyAgICAgICAg
ID0gQWxsQnV0RW1wdHlDU1NSdWxlcyB8IEVtcHR5Q1NTUnVsZXMsCiAgICAgfTsKLSAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQq
LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwotICAgIFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3Qg
RWxlbWVudCosIFBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5
Q1NTUnVsZXMpOworICAgIFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4gc3R5bGVSdWxl
c0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCosIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gQWxs
QnV0RW1wdHlDU1NSdWxlcyk7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiwgUHNldWRvSWQsIHVuc2ln
bmVkIHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CiAKICAgICBib29sIGhh
c1NlbGVjdG9yRm9ySWQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaGFzU2Vs
ZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCmluZGV4IDY2
NzA1NDdlNGRlLi5lOGJiMjljNGQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNj
b3BlUnVsZVNldHMuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIFJlZlB0cjxSdWxlU2V0
PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBydWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHJ1bGVTZXQtPmFk
ZFJ1bGUoKnJ1bGVzW2ldLnJ1bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ldLnNl
bGVjdG9yTGlzdEluZGV4KTsKKyAgICAgICAgcnVsZVNldC0+YWRkUnVsZSgqcnVsZXNbaV0uc3R5
bGVSdWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRl
eCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKICAgICByZXR1cm4gcnVsZVNldDsKIH0K
QEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBl
bnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAg
YXV0byYgcnVsZVNldCA9IG1hdGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwogICAgICAgICAg
ICAgaWYgKCFydWxlU2V0KQogICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVh
dGUoKTsKLSAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoKmZlYXR1cmUucnVsZSwgZmVhdHVy
ZS5zZWxlY3RvckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKKyAgICAgICAgICAg
IHJ1bGVTZXQtPmFkZFJ1bGUoKmZlYXR1cmUuc3R5bGVSdWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5k
ZXgsIGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGZlYXR1cmUu
aW52YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0
b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7
CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386556</attachid>
            <date>2019-12-31 04:49:16 -0800</date>
            <delta_ts>2019-12-31 05:33:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylerule-const-2.patch</filename>
            <type>text/plain</type>
            <size>25640</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZjkxNzk3YzBmMy4uMDQ4ZGNjMGFhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOS0xMi0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3R5bGVSdWxlIGFjY2Vzc29yIGluIFJ1bGVEYXRhIHNob3VsZCByZXR1cm4g
YSBjb25zdCByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEl0IGlzIGN1cnJlbnRseSBhIG5vbi1jb25zdCBwb2ludGVyLgorCisgICAgICAg
IFRoaXMgbGVhZHMgdG8gU3R5bGVSdWxlIGJlaW5nIGNvbnN0IGluIG1hbnkgb3RoZXIgcGxhY2Vz
IHRvby4KKworICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlcmVmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2U6OmRlcmVmKTogRGVsZXRlZC4KKworICAgICAgICBNYWtlIGRlcmVmIGNvbnN0LCBtYXRjaGlu
ZyBSZWZDb3VudGVkIGFuZCBhbGxvd2luZyBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPgorICAgICAg
ICAKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9y
Lmg6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1
bGVJblNoZWV0cyk6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oOgor
ICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnN0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0b3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpydWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNl
dDo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpldmFs
dXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVsZUlmTmVlZGVkKToKKyAgICAgICAgKiBz
dHlsZS9SdWxlU2V0Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VSdWxl
U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyk6CisKIDIwMTktMTItMzEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBSVEMgVlRCIGRlY29kZXJzIGluIEdQVVByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCA3ZmUwN2NjZTdlMy4uNTYyZDNlOGMzYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWY8U3R5bGVSdWxl
QmFzZT4gY29weSgpIGNvbnN0OwogCi0gICAgdm9pZCBkZXJlZigpCisgICAgdm9pZCBkZXJlZigp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAgICAgICAgICBkZXN0
cm95KCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcykuZGVz
dHJveSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxlUnVsZXNX
aXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0gICAgQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRT
ZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICBDb21waWxlZFNlbGVjdG9y
JiBjb21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQogICAgICAgICAgICAgbV9jb21w
aWxlZFNlbGVjdG9ycyA9IG1ha2VVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPihtX3NlbGVj
dG9yTGlzdC5saXN0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCAwODg4ZDEyMjU4Yi4uODgxNDc5YzQ3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHN0YXRpYyBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtCiAgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgp
OwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5z
dHlsZVJ1bGVzRm9yRWxlbWVudCgmZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpKSB7CiAgICAgICAg
IGlmIChtYXRjaGVkUnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5tZXJn
ZUFuZE92ZXJyaWRlT25Db25mbGljdChzdGF0aWNfcG9pbnRlcl9jYXN0PFN0eWxlUnVsZT4obWF0
Y2hlZFJ1bGUpLT5wcm9wZXJ0aWVzKCkpOworICAgICAgICAgICAgc3R5bGUtPm1lcmdlQW5kT3Zl
cnJpZGVPbkNvbmZsaWN0KHN0YXRpY19wb2ludGVyX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlPihtYXRj
aGVkUnVsZSktPnByb3BlcnRpZXMoKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBzdHlsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKaW5kZXggNGZkYTIyNDZkNzguLjI5MzBiNDVmOGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAt
OTQ2LDcgKzk0Niw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdp
biBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50KQorUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVs
ZShjb25zdCBTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTk3OCw3ICs5NzgsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxl
KAogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUsIG51bGxwdHIpIDogbnVsbHB0cjsKIH0KIAotUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Y29uc3QgU3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGU6OlJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAgICBh
dXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxl
TWF0Y2g+OjpjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDY3NDJkZGYyYzQ3Li5mYTFkNjcxZGQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtMTQ1LDkgKzE0NSw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVT
aGVldCogY3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvY3VtZW50Jik7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdp
bihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQp
OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRP
YmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZv
clJ1bGUoY29uc3QgU3R5bGVSdWxlKiwgU3R5bGU6OlJlc29sdmVyJiwgRWxlbWVudCYpOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9y
UnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3Qo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1l
bnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0
IFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4mLCBTdHlsZTo6UmVzb2x2ZXImLCBFbGVt
ZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4
IDkwN2I4NzgwYjY3Li4xYTFhZjFlMGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGNvbnN0IE1hdGNoUmVz
dWx0JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hSZXN1bHQoKSBjb25zdAogICAgIHJldHVy
biBtX3Jlc3VsdDsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVm
UHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hlZFJ1bGVM
aXN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9k
ZTo6Q29sbGVjdGluZ1J1bGVzKTsKICAgICByZXR1cm4gbV9tYXRjaGVkUnVsZUxpc3Q7CkBAIC0x
OTMsMTIgKzE5MywxMiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNo
ZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbiBkZWNsYXJhdGlvbk9yaQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxl
Y3RpbmdSdWxlcykgewotICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3QuYXBwZW5kKG1hdGNo
ZWRSdWxlLnJ1bGVEYXRhLT5ydWxlKCkpOworICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3Qu
YXBwZW5kKCZtYXRjaGVkUnVsZS5ydWxlRGF0YS0+c3R5bGVSdWxlKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyh7Ci0g
ICAgICAgICAgICAmbWF0Y2hlZFJ1bGUucnVsZURhdGEtPnJ1bGUoKS0+cHJvcGVydGllcygpLAor
ICAgICAgICAgICAgJm1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVz
KCksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURh
dGEtPmxpbmtNYXRjaFR5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
bWF0Y2hlZFJ1bGUucnVsZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0VHlwZSgpKSwKICAgICAgICAg
ICAgIG1hdGNoZWRSdWxlLnN0eWxlU2NvcGVPcmRpbmFsCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5s
aW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRh
JiBydWxlRGF0YSwgdW5zaWduZWQKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJ
VCkKLSAgICBhdXRvJiBjb21waWxlZFNlbGVjdG9yID0gcnVsZURhdGEucnVsZSgpLT5jb21waWxl
ZFNlbGVjdG9yRm9yTGlzdEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpOworICAg
IGF1dG8mIGNvbXBpbGVkU2VsZWN0b3IgPSBydWxlRGF0YS5jb21waWxlZFNlbGVjdG9yKCk7CiAg
ICAgdm9pZCogY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgPSBjb21waWxlZFNlbGVjdG9yLmNvZGVS
ZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgaWYgKCFjb21waWxlZFNlbGVjdG9y
Q2hlY2tlciAmJiBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzOjpOb3RDb21waWxlZCkgewogICAgICAgICBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9
IFNlbGVjdG9yQ29tcGlsZXI6OmNvbXBpbGVTZWxlY3RvcihydWxlRGF0YS5zZWxlY3RvcigpLCBT
ZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvbnRleHQ6OlJ1bGVDb2xsZWN0b3IsIGNvbXBpbGVk
U2VsZWN0b3IuY29kZVJlZik7CkBAIC01MzMsMTIgKzUzMywxMiBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVs
ZURhdGFWZQogICAgICAgICBpZiAobV9zZWxlY3RvckZpbHRlciAmJiBtX3NlbGVjdG9yRmlsdGVy
LT5mYXN0UmVqZWN0U2VsZWN0b3IocnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmll
ckhhc2hlcygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0eWxlUnVsZSog
cnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKKyAgICAgICAgYXV0byYgcnVsZSA9IHJ1bGVEYXRhLnN0
eWxlUnVsZSgpOwogCiAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRv
IGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgIC8v
IE5vdGUgdGhhdCBpZiB3ZSBnZXQgbnVsbCBiYWNrIGhlcmUsIGl0IG1lYW5zIHdlIGhhdmUgYSBy
dWxlIHdpdGggZGVmZXJyZWQgcHJvcGVydGllcywKICAgICAgICAgLy8gYW5kIHRoYXQgbWVhbnMg
d2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgaXQuCi0gICAgICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5n
KCk7CisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJvcGVydGllcyA9IHJ1bGUucHJv
cGVydGllc1dpdGhvdXREZWZlcnJlZFBhcnNpbmcoKTsKICAgICAgICAgaWYgKHByb3BlcnRpZXMg
JiYgcHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVzKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oCmluZGV4IDNiMjc1M2M3MTg5Li5iYjNhZGRiYjBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CiAK
ICAgICBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQoKSBjb25zdDsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBjb25zdDsKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBj
b25zdDsKIAogICAgIHZvaWQgY2xlYXJNYXRjaGVkUnVsZXMoKTsKIApAQCAtMTcwLDcgKzE3MCw3
IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4IHsgMCB9
OwogCiAgICAgLy8gT3V0cHV0LgotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gbV9tYXRj
aGVkUnVsZUxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBtX21hdGNo
ZWRSdWxlTGlzdDsKICAgICBib29sIG1fZGlkTWF0Y2hVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9y
IHsgZmFsc2UgfTsKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBSZWxhdGlvbnMgbV9z
dHlsZVJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3Rv
ckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5jcHAKaW5kZXggZjNkNTFjOGM4YzQuLmVhMGJiZjQ1MGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdFNjb3BlV3JhcHBlcnMo
U2NvcGUmIHN0eWxlU2NvcGUpCiAgICAgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxl
U2NvcGUuYWN0aXZlU3R5bGVTaGVldHMoKSk7CiB9CiAKLUNTU1N0eWxlUnVsZSogSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhTdHlsZVJ1bGUqIHJ1bGUp
CitDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmdldFdyYXBwZXJGb3JSdWxl
SW5TaGVldHMoY29uc3QgU3R5bGVSdWxlKiBydWxlKQogewogICAgIHJldHVybiBtX3N0eWxlUnVs
ZVRvQ1NTT01XcmFwcGVyTWFwLmdldChydWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0luc3BlY3RvckNTU09NV3JhcHBlcnMuaAppbmRleCAyMzBlNWUxMzlhNy4uZjJmZmViOWUxNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyB7CiBwdWJsaWM6CiAg
ICAgLy8gV0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3IgYWxs
IHN0eWxlIHJ1bGVzIGFuZCBjYWNoZSB0aGVtIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBtZW1v
cnkgY29zdC4KICAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24ndCB1
c2UgZm9yIGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxlKiBn
ZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSopOworICAgIENTU1N0eWxlUnVsZSog
Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhjb25zdCBTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGNv
bGxlY3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQqKTsKICAgICB2b2lkIGNv
bGxlY3REb2N1bWVudFdyYXBwZXJzKEV4dGVuc2lvblN0eWxlU2hlZXRzJik7CiAgICAgdm9pZCBj
b2xsZWN0U2NvcGVXcmFwcGVycyhTY29wZSYpOwpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYpOwogICAgIHZvaWQgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+Jik7CiAKLSAgICBIYXNoTWFwPFN0eWxlUnVs
ZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+PiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOwor
ICAgIEhhc2hNYXA8Y29uc3QgU3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4+IG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVE
YXRhLmNwcAppbmRleCA2YTMwMWRmOGYyNi4uN2I5YWRlZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRGF0YS5jcHAKQEAgLTE1OSw4ICsxNTksOCBAQCBzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hp
dGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZQog
ICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdE5vbmU7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0
YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKLSAgICA6IG1fcnVsZShydWxlKQorUnVs
ZURhdGE6OlJ1bGVEYXRhKGNvbnN0IFN0eWxlUnVsZSYgc3R5bGVSdWxlLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24p
CisgICAgOiBtX3N0eWxlUnVsZSgmc3R5bGVSdWxlKQogICAgICwgbV9zZWxlY3RvckluZGV4KHNl
bGVjdG9ySW5kZXgpCiAgICAgLCBtX3NlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9yTGlzdEluZGV4
KQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCmluZGV4
IGEzYTYwMTAyZWU1Li40MDBjNTVkYzIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCkBAIC00
NywxMSArNDcsMTUgQEAgY2xhc3MgUnVsZURhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhpbXVtU2VsZWN0b3JDb21wb25lbnRDb3VudCA9IDgxOTI7CiAKLSAgICBS
dWxlRGF0YShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxl
Y3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pOworICAgIFJ1bGVEYXRhKGNvbnN0IFN0
eWxlUnVsZSYsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdElu
ZGV4LCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3J1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3J1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3Rv
ckluZGV4KTsgfQorCisgICAgY29uc3QgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJl
dHVybiAqbV9zdHlsZVJ1bGU7IH0KKworICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvckF0KG1f
c2VsZWN0b3JJbmRleCk7IH0KKyAgICBDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNlbGVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1bGUtPmNvbXBpbGVkU2VsZWN0b3JGb3JMaXN0SW5k
ZXgobV9zZWxlY3Rvckxpc3RJbmRleCk7IH0KKwogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ySW5kZXg7IH0KICAgICB1bnNpZ25lZCBzZWxlY3Rv
ckxpc3RJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0SW5kZXg7IH0KIApAQCAt
NjgsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlU2VsZWN0b3JGaWx0ZXJpbmco
KSB7IG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlc1swXSA9IDA7IH0KIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8U3R5bGVSdWxlPiBtX3J1bGU7CisgICAgUmVmUHRyPGNvbnN0IFN0
eWxlUnVsZT4gbV9zdHlsZVJ1bGU7CiAgICAgdW5zaWduZWQgbV9zZWxlY3RvckluZGV4IDogMTY7
CiAgICAgdW5zaWduZWQgbV9zZWxlY3Rvckxpc3RJbmRleCA6IDE2OwogICAgIC8vIFRoaXMgbnVt
YmVyIHdhcyBwaWNrZWQgZmFpcmx5IGFyYml0cmFyaWx5LiBXZSBjYW4gcHJvYmFibHkgbG93ZXIg
aXQgaWYgd2UgbmVlZCB0by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVG
ZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCAx
MTUzOGI5YjJhMS4uOTM2ZTZiYjg4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5j
cHAKQEAgLTU1LDYgKzU1LDE1IEBAIHN0YXRpYyBib29sIGlzU2libGluZ09yU3ViamVjdChNYXRj
aEVsZW1lbnQgbWF0Y2hFbGVtZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUnVsZUZlYXR1
cmU6OlJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgT3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiBtYXRjaEVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxl
Y3RvcikKKyAgICA6IHN0eWxlUnVsZSgmcnVsZURhdGEuc3R5bGVSdWxlKCkpCisgICAgLCBzZWxl
Y3RvckluZGV4KHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkKKyAgICAsIHNlbGVjdG9yTGlzdElu
ZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpCisgICAgLCBtYXRjaEVsZW1lbnQobWF0
Y2hFbGVtZW50KQorICAgICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uU2VsZWN0
b3IpCit7Cit9CisKIE1hdGNoRWxlbWVudCBSdWxlRmVhdHVyZVNldDo6Y29tcHV0ZU5leHRNYXRj
aEVsZW1lbnQoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCwgQ1NTU2VsZWN0b3I6OlJlbGF0aW9u
VHlwZSByZWxhdGlvbikKIHsKICAgICBpZiAoaXNTaWJsaW5nT3JTdWJqZWN0KG1hdGNoRWxlbWVu
dCkpIHsKQEAgLTE2OSwxNCArMTc4LDE0IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RG
ZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgU2VsZWN0b3JGZWF0dXJlcyBz
ZWxlY3RvckZlYXR1cmVzOwogICAgIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVj
dG9yKHNlbGVjdG9yRmVhdHVyZXMsICpydWxlRGF0YS5zZWxlY3RvcigpKTsKICAgICBpZiAoc2Vs
ZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IpCi0gICAgICAgIHNpYmxpbmdSdWxlcy5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpKTsKKyAgICAgICAgc2libGluZ1J1bGVz
LmFwcGVuZCh7IHJ1bGVEYXRhIH0pOwogICAgIGlmIChydWxlRGF0YS5jb250YWluc1VuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3IoKSkKLSAgICAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBl
bmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCks
IHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpKTsKKyAgICAgICAgdW5jb21tb25BdHRyaWJ1
dGVSdWxlcy5hcHBlbmQoeyBydWxlRGF0YSB9KTsKIAogICAgIGZvciAoYXV0byYgbmFtZUFuZE1h
dGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5z
dXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsK
KyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbmFtZUFuZE1h
dGNoLnNlY29uZCB9KTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hF
bGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVB
bmRNYXRjaC5maXJzdCk7CiAgICAgfQpAQCAtMTg1LDcgKzE5NCw3IEBAIHZvaWQgUnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAg
IGF1dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0b3JBbmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0
dHJpYnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgW10gewogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3Ip
KTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbWF0Y2hF
bGVtZW50LCBzZWxlY3RvciB9KTsKICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVs
ZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2Vs
ZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCmluZGV4IDc2NDU5OTkxNDM5Li4z
Nzc2Yjc4OWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCkBAIC00MCwxOSArNDAs
MTMgQEAgZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQgeyBTdWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9y
LCBEaXJlY3RTaWJsaW5nLCBJbmRpcmVjdFNpYmwKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXRjaEVs
ZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNYXRjaEVsZW1lbnQ6Okhvc3QpICsg
MTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKLSAgICBSdWxlRmVhdHVyZShTdHlsZVJ1bGUqIHJ1
bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBP
cHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCA9IFdURjo6bnVsbG9wdCwgY29uc3Qg
Q1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yID0gbnVsbHB0cikKLSAgICAgICAgOiBy
dWxlKHJ1bGUpCi0gICAgICAgICwgc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQotICAgICAg
ICAsIHNlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9yTGlzdEluZGV4KQotICAgICAgICAsIG1hdGNo
RWxlbWVudChtYXRjaEVsZW1lbnQpCi0gICAgICAgICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52
YWxpZGF0aW9uU2VsZWN0b3IpCi0gICAgewotICAgIH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGU7Cisg
ICAgUnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEmLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+ID0g
V1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0b3IgPSBu
dWxscHRyKTsKKworICAgIFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+IHN0eWxlUnVsZTsKICAgICB1
bnNpZ25lZCBzZWxlY3RvckluZGV4OwogICAgIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4Owot
ICAgIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50OwotICAgIGNvbnN0IENTU1Nl
bGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvcjsKKyAgICBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+
IG1hdGNoRWxlbWVudCB7IH07CisgICAgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNl
bGVjdG9yIHsgbnVsbHB0ciB9OwogfTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5jcHAKaW5kZXggNWM2ZDBhMWRhN2YuLmY0NmMzYjI4ZTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlU2V0LmNwcApAQCAtODgsOSArODgsOSBAQCBzdGF0aWMgYm9vbCBpc0hvc3RT
ZWxlY3Rvck1hdGNoaW5nSW5TaGFkb3dUcmVlKGNvbnN0IENTU1NlbGVjdG9yJiBzdGFydFNlbGVj
dG9yKQogICAgIHJldHVybiBsZWZ0bW9zdFNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyAmJiBsZWZ0bW9zdFNlbGVjdG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0OwogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUo
U3R5bGVSdWxlJiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rv
ckxpc3RJbmRleCwgTWVkaWFRdWVyeUNvbGxlY3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKK3Zv
aWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBTdHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVj
dG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBNZWRpYVF1ZXJ5Q29sbGVjdG9y
KiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQogewotICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKCZydWxlLCBz
ZWxlY3RvckluZGV4LCBzZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CisgICAgUnVs
ZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3JJbmRleCwgc2VsZWN0b3JMaXN0SW5kZXgsIG1f
cnVsZUNvdW50KyspOwogCiAgICAgbV9mZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXMocnVsZURhdGEp
OwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChT
dHlsZVNoZWV0Q29udGVudHMmIHNoZWV0LCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJgogICAgICAgICBz
aHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFN0eWxlUnVsZShTdHlsZVJ1bGUm
IHJ1bGUsIE1lZGlhUXVlcnlDb2xsZWN0b3ImIG1lZGlhUXVlcnlDb2xsZWN0b3IpCit2b2lkIFJ1
bGVTZXQ6OmFkZFN0eWxlUnVsZShjb25zdCBTdHlsZVJ1bGUmIHJ1bGUsIE1lZGlhUXVlcnlDb2xs
ZWN0b3ImIG1lZGlhUXVlcnlDb2xsZWN0b3IpCiB7CiAgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0
SW5kZXggPSAwOwogICAgIGZvciAoc2l6ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxlY3Rvcklu
ZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4ID0gcnVsZS5zZWxlY3Rvckxpc3QoKS5pbmRl
eE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpCkBAIC00MjUsNyArNDI1LDcgQEAg
T3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gUnVsZVNldDo6ZXZh
bHV0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnUKICAgICAgICAgYXV0byBydWxlU2V0ID0gUnVsZVNldDo6
Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byogZmVhdHVyZVZlY3RvciA6IGNvbGxlY3RlZENo
YW5nZXMucnVsZUZlYXR1cmVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiAq
ZmVhdHVyZVZlY3RvcikKLSAgICAgICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJl
LnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7
CisgICAgICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZSgqZmVhdHVyZS5zdHlsZVJ1bGUsIGZl
YXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHJ1bGVTZXQ7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpAQCAt
NTY5LDcgKzU2OSw3IEBAIHZvaWQgUnVsZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVs
ZUlmTmVlZGVkKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGF1dG8mIGNvbnRleHQg
PSBkeW5hbWljQ29udGV4dFN0YWNrLmxhc3QoKTsKICAgICBjb250ZXh0LmFmZmVjdGVkUnVsZVBv
c2l0aW9ucy5hcHBlbmQocnVsZURhdGEucG9zaXRpb24oKSk7Ci0gICAgY29udGV4dC5ydWxlRmVh
dHVyZXMuYXBwZW5kKHsgcnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCks
IHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkgfSk7CisgICAgY29udGV4dC5ydWxlRmVhdHVy
ZXMuYXBwZW5kKHsgcnVsZURhdGEgfSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4
IGU2OTJiNjcwMzZhLi5lOGFiNjZmNjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtMTA0
LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hl
ZXRDb250ZW50cyYsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImKTsKICAgICB2b2lkIGFkZFJ1
bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYsIE1lZGlhUXVlcnlTZXQqIHNoZWV0UXVl
cnksIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZTo6UmVzb2x2ZXImKTsKIAotICAg
IHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSYsIE1lZGlhUXVlcnlDb2xsZWN0b3ImKTsKLSAg
ICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlJiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWdu
ZWQgc2VsZWN0b3JMaXN0SW5kZXgsIE1lZGlhUXVlcnlDb2xsZWN0b3IqID0gbnVsbHB0cik7Cisg
ICAgdm9pZCBhZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxlJiwgTWVkaWFRdWVyeUNvbGxlY3Rv
ciYpOworICAgIHZvaWQgYWRkUnVsZShjb25zdCBTdHlsZVJ1bGUmLCB1bnNpZ25lZCBzZWxlY3Rv
ckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgTWVkaWFRdWVyeUNvbGxlY3Rvciog
PSBudWxscHRyKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UmKTsKICAgICB2
b2lkIGFkZFRvUnVsZVNldChjb25zdCBBdG9tU3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiwgY29u
c3QgUnVsZURhdGEmKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY1NTcyNGJmOWQxLi5jZWI0ODU3MWMxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQ4MywxMiArNDgzLDEyIEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudCogZWxlCiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1WZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZT4+IFJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKK1ZlY3RvcjxSZWZQdHI8Y29u
c3QgU3R5bGVSdWxlPj4gUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIHJldHVybiBwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSwgcnVsZXNUb0lu
Y2x1ZGUpOwogfQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFJlc29sdmVyOjpwc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1
ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCitWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxl
UnVsZT4+IFJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50
KiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCiB7
CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlci5oCmluZGV4IDY2MDM1MzNhYTRhLi5jNzcwNDMxM2ZkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTIxLDggKzEyMSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgQWxsQnV0RW1wdHlDU1NSdWxlcyA9IFVBQW5kVXNlckNTU1J1bGVzIHwgQXV0aG9yQ1NT
UnVsZXMsCiAgICAgICAgIEFsbENTU1J1bGVzICAgICAgICAgPSBBbGxCdXRFbXB0eUNTU1J1bGVz
IHwgRW1wdHlDU1NSdWxlcywKICAgICB9OwotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4g
c3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCosIHVuc2lnbmVkIHJ1bGVzVG9JbmNs
dWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+
PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiwgUHNldWRvSWQsIHVu
c2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CisgICAgVmVjdG9y
PFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKKyAg
ICBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQqLCBQc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBB
bGxCdXRFbXB0eUNTU1J1bGVzKTsKIAogICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JJZChjb25zdCBB
dG9tU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25z
dCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggNjY3MDU0N2U0ZGUuLmU4YmIyOWM0ZDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTEw
OCw3ICsxMDgsNyBAQCBzdGF0aWMgUmVmUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZl
Y3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBh
dXRvIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgcnVsZVNldC0+YWRkUnVsZSgqcnVsZXNbaV0ucnVsZSwg
cnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5kZXgpOworICAg
ICAgICBydWxlU2V0LT5hZGRSdWxlKCpydWxlc1tpXS5zdHlsZVJ1bGUsIHJ1bGVzW2ldLnNlbGVj
dG9ySW5kZXgsIHJ1bGVzW2ldLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICBydWxlU2V0LT5zaHJp
bmtUb0ZpdCgpOwogICAgIHJldHVybiBydWxlU2V0OwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0
YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hF
bGVtZW50QXJyYXlbYXJyYXlJbmRleF07CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCiAgICAg
ICAgICAgICAgICAgcnVsZVNldCA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwotICAgICAgICAgICAgcnVs
ZVNldC0+YWRkUnVsZSgqZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1
cmUuc2VsZWN0b3JMaXN0SW5kZXgpOworICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZSgqZmVh
dHVyZS5zdHlsZVJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxp
c3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikK
ICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFw
cGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386558</attachid>
            <date>2019-12-31 05:33:23 -0800</date>
            <delta_ts>2019-12-31 05:57:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylerule-const-3.patch</filename>
            <type>text/plain</type>
            <size>25786</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZjkxNzk3YzBmMy4uMDQ4ZGNjMGFhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOS0xMi0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3R5bGVSdWxlIGFjY2Vzc29yIGluIFJ1bGVEYXRhIHNob3VsZCByZXR1cm4g
YSBjb25zdCByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEl0IGlzIGN1cnJlbnRseSBhIG5vbi1jb25zdCBwb2ludGVyLgorCisgICAgICAg
IFRoaXMgbGVhZHMgdG8gU3R5bGVSdWxlIGJlaW5nIGNvbnN0IGluIG1hbnkgb3RoZXIgcGxhY2Vz
IHRvby4KKworICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlcmVmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2U6OmRlcmVmKTogRGVsZXRlZC4KKworICAgICAgICBNYWtlIGRlcmVmIGNvbnN0LCBtYXRjaGlu
ZyBSZWZDb3VudGVkIGFuZCBhbGxvd2luZyBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPgorICAgICAg
ICAKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9y
Lmg6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1
bGVJblNoZWV0cyk6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oOgor
ICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnN0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0b3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpydWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNl
dDo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpldmFs
dXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVsZUlmTmVlZGVkKToKKyAgICAgICAgKiBz
dHlsZS9SdWxlU2V0Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VSdWxl
U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyk6CisKIDIwMTktMTItMzEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBSVEMgVlRCIGRlY29kZXJzIGluIEdQVVByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCA3ZmUwN2NjZTdlMy4uNTYyZDNlOGMzYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWY8U3R5bGVSdWxl
QmFzZT4gY29weSgpIGNvbnN0OwogCi0gICAgdm9pZCBkZXJlZigpCisgICAgdm9pZCBkZXJlZigp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAgICAgICAgICBkZXN0
cm95KCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcykuZGVz
dHJveSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxlUnVsZXNX
aXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0gICAgQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRT
ZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICBDb21waWxlZFNlbGVjdG9y
JiBjb21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQogICAgICAgICAgICAgbV9jb21w
aWxlZFNlbGVjdG9ycyA9IG1ha2VVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPihtX3NlbGVj
dG9yTGlzdC5saXN0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCAwODg4ZDEyMjU4Yi4uODgxNDc5YzQ3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHN0YXRpYyBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtCiAgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgp
OwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5z
dHlsZVJ1bGVzRm9yRWxlbWVudCgmZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpKSB7CiAgICAgICAg
IGlmIChtYXRjaGVkUnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5tZXJn
ZUFuZE92ZXJyaWRlT25Db25mbGljdChzdGF0aWNfcG9pbnRlcl9jYXN0PFN0eWxlUnVsZT4obWF0
Y2hlZFJ1bGUpLT5wcm9wZXJ0aWVzKCkpOworICAgICAgICAgICAgc3R5bGUtPm1lcmdlQW5kT3Zl
cnJpZGVPbkNvbmZsaWN0KHN0YXRpY19wb2ludGVyX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlPihtYXRj
aGVkUnVsZSktPnByb3BlcnRpZXMoKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBzdHlsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKaW5kZXggNGZkYTIyNDZkNzguLjI5MzBiNDVmOGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAt
OTQ2LDcgKzk0Niw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdp
biBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50KQorUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVs
ZShjb25zdCBTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTk3OCw3ICs5NzgsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxl
KAogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUsIG51bGxwdHIpIDogbnVsbHB0cjsKIH0KIAotUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Y29uc3QgU3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGU6OlJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAgICBh
dXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxl
TWF0Y2g+OjpjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDY3NDJkZGYyYzQ3Li5mYTFkNjcxZGQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtMTQ1LDkgKzE0NSw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVT
aGVldCogY3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvY3VtZW50Jik7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdp
bihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQp
OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRP
YmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZv
clJ1bGUoY29uc3QgU3R5bGVSdWxlKiwgU3R5bGU6OlJlc29sdmVyJiwgRWxlbWVudCYpOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9y
UnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3Qo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1l
bnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0
IFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4mLCBTdHlsZTo6UmVzb2x2ZXImLCBFbGVt
ZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4
IDkwN2I4NzgwYjY3Li4xYTFhZjFlMGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGNvbnN0IE1hdGNoUmVz
dWx0JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hSZXN1bHQoKSBjb25zdAogICAgIHJldHVy
biBtX3Jlc3VsdDsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVm
UHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hlZFJ1bGVM
aXN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9k
ZTo6Q29sbGVjdGluZ1J1bGVzKTsKICAgICByZXR1cm4gbV9tYXRjaGVkUnVsZUxpc3Q7CkBAIC0x
OTMsMTIgKzE5MywxMiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNo
ZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbiBkZWNsYXJhdGlvbk9yaQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxl
Y3RpbmdSdWxlcykgewotICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3QuYXBwZW5kKG1hdGNo
ZWRSdWxlLnJ1bGVEYXRhLT5ydWxlKCkpOworICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3Qu
YXBwZW5kKCZtYXRjaGVkUnVsZS5ydWxlRGF0YS0+c3R5bGVSdWxlKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyh7Ci0g
ICAgICAgICAgICAmbWF0Y2hlZFJ1bGUucnVsZURhdGEtPnJ1bGUoKS0+cHJvcGVydGllcygpLAor
ICAgICAgICAgICAgJm1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVz
KCksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURh
dGEtPmxpbmtNYXRjaFR5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
bWF0Y2hlZFJ1bGUucnVsZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0VHlwZSgpKSwKICAgICAgICAg
ICAgIG1hdGNoZWRSdWxlLnN0eWxlU2NvcGVPcmRpbmFsCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5s
aW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRh
JiBydWxlRGF0YSwgdW5zaWduZWQKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJ
VCkKLSAgICBhdXRvJiBjb21waWxlZFNlbGVjdG9yID0gcnVsZURhdGEucnVsZSgpLT5jb21waWxl
ZFNlbGVjdG9yRm9yTGlzdEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpOworICAg
IGF1dG8mIGNvbXBpbGVkU2VsZWN0b3IgPSBydWxlRGF0YS5jb21waWxlZFNlbGVjdG9yKCk7CiAg
ICAgdm9pZCogY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgPSBjb21waWxlZFNlbGVjdG9yLmNvZGVS
ZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgaWYgKCFjb21waWxlZFNlbGVjdG9y
Q2hlY2tlciAmJiBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzOjpOb3RDb21waWxlZCkgewogICAgICAgICBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9
IFNlbGVjdG9yQ29tcGlsZXI6OmNvbXBpbGVTZWxlY3RvcihydWxlRGF0YS5zZWxlY3RvcigpLCBT
ZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvbnRleHQ6OlJ1bGVDb2xsZWN0b3IsIGNvbXBpbGVk
U2VsZWN0b3IuY29kZVJlZik7CkBAIC01MzMsMTIgKzUzMywxMiBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVs
ZURhdGFWZQogICAgICAgICBpZiAobV9zZWxlY3RvckZpbHRlciAmJiBtX3NlbGVjdG9yRmlsdGVy
LT5mYXN0UmVqZWN0U2VsZWN0b3IocnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmll
ckhhc2hlcygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0eWxlUnVsZSog
cnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKKyAgICAgICAgYXV0byYgcnVsZSA9IHJ1bGVEYXRhLnN0
eWxlUnVsZSgpOwogCiAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRv
IGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgIC8v
IE5vdGUgdGhhdCBpZiB3ZSBnZXQgbnVsbCBiYWNrIGhlcmUsIGl0IG1lYW5zIHdlIGhhdmUgYSBy
dWxlIHdpdGggZGVmZXJyZWQgcHJvcGVydGllcywKICAgICAgICAgLy8gYW5kIHRoYXQgbWVhbnMg
d2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgaXQuCi0gICAgICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5n
KCk7CisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJvcGVydGllcyA9IHJ1bGUucHJv
cGVydGllc1dpdGhvdXREZWZlcnJlZFBhcnNpbmcoKTsKICAgICAgICAgaWYgKHByb3BlcnRpZXMg
JiYgcHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVzKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oCmluZGV4IDNiMjc1M2M3MTg5Li5iYjNhZGRiYjBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CiAK
ICAgICBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQoKSBjb25zdDsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBjb25zdDsKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBj
b25zdDsKIAogICAgIHZvaWQgY2xlYXJNYXRjaGVkUnVsZXMoKTsKIApAQCAtMTcwLDcgKzE3MCw3
IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4IHsgMCB9
OwogCiAgICAgLy8gT3V0cHV0LgotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gbV9tYXRj
aGVkUnVsZUxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBtX21hdGNo
ZWRSdWxlTGlzdDsKICAgICBib29sIG1fZGlkTWF0Y2hVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9y
IHsgZmFsc2UgfTsKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBSZWxhdGlvbnMgbV9z
dHlsZVJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3Rv
ckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5jcHAKaW5kZXggZjNkNTFjOGM4YzQuLmVhMGJiZjQ1MGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdFNjb3BlV3JhcHBlcnMo
U2NvcGUmIHN0eWxlU2NvcGUpCiAgICAgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxl
U2NvcGUuYWN0aXZlU3R5bGVTaGVldHMoKSk7CiB9CiAKLUNTU1N0eWxlUnVsZSogSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhTdHlsZVJ1bGUqIHJ1bGUp
CitDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmdldFdyYXBwZXJGb3JSdWxl
SW5TaGVldHMoY29uc3QgU3R5bGVSdWxlKiBydWxlKQogewogICAgIHJldHVybiBtX3N0eWxlUnVs
ZVRvQ1NTT01XcmFwcGVyTWFwLmdldChydWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0luc3BlY3RvckNTU09NV3JhcHBlcnMuaAppbmRleCAyMzBlNWUxMzlhNy4uZjJmZmViOWUxNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyB7CiBwdWJsaWM6CiAg
ICAgLy8gV0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3IgYWxs
IHN0eWxlIHJ1bGVzIGFuZCBjYWNoZSB0aGVtIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBtZW1v
cnkgY29zdC4KICAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24ndCB1
c2UgZm9yIGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxlKiBn
ZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSopOworICAgIENTU1N0eWxlUnVsZSog
Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhjb25zdCBTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGNv
bGxlY3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQqKTsKICAgICB2b2lkIGNv
bGxlY3REb2N1bWVudFdyYXBwZXJzKEV4dGVuc2lvblN0eWxlU2hlZXRzJik7CiAgICAgdm9pZCBj
b2xsZWN0U2NvcGVXcmFwcGVycyhTY29wZSYpOwpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYpOwogICAgIHZvaWQgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+Jik7CiAKLSAgICBIYXNoTWFwPFN0eWxlUnVs
ZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+PiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOwor
ICAgIEhhc2hNYXA8Y29uc3QgU3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4+IG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVE
YXRhLmNwcAppbmRleCA2YTMwMWRmOGYyNi4uN2I5YWRlZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRGF0YS5jcHAKQEAgLTE1OSw4ICsxNTksOCBAQCBzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hp
dGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZQog
ICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdE5vbmU7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0
YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKLSAgICA6IG1fcnVsZShydWxlKQorUnVs
ZURhdGE6OlJ1bGVEYXRhKGNvbnN0IFN0eWxlUnVsZSYgc3R5bGVSdWxlLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24p
CisgICAgOiBtX3N0eWxlUnVsZSgmc3R5bGVSdWxlKQogICAgICwgbV9zZWxlY3RvckluZGV4KHNl
bGVjdG9ySW5kZXgpCiAgICAgLCBtX3NlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9yTGlzdEluZGV4
KQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCmluZGV4
IGEzYTYwMTAyZWU1Li5iYWUzMzViN2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCkBAIC0y
NSw2ICsyNSw5IEBACiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IENvbXBpbGVkU2VsZWN0b3I7CisKIG5hbWVzcGFjZSBTdHlsZSB7CiAKIGVu
dW0gUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHsKQEAgLTQ3LDExICs1MCwxNSBAQCBjbGFzcyBSdWxl
RGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1TZWxlY3Rv
ckNvbXBvbmVudENvdW50ID0gODE5MjsKIAotICAgIFJ1bGVEYXRhKFN0eWxlUnVsZSosIHVuc2ln
bmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNpZ25lZCBw
b3NpdGlvbik7CisgICAgUnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiwgdW5zaWduZWQgc2VsZWN0
b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIHVuc2lnbmVkIHBvc2l0aW9uKTsK
IAogICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQot
ICAgIFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZS5nZXQoKTsgfQotICAg
IGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZS0+c2Vs
ZWN0b3JMaXN0KCkuc2VsZWN0b3JBdChtX3NlbGVjdG9ySW5kZXgpOyB9CisKKyAgICBjb25zdCBT
dHlsZVJ1bGUmIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N0eWxlUnVsZTsgfQorCisg
ICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1
bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3RvckluZGV4KTsgfQorICAgIENv
bXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3N0eWxl
UnVsZS0+Y29tcGlsZWRTZWxlY3RvckZvckxpc3RJbmRleChtX3NlbGVjdG9yTGlzdEluZGV4KTsg
fQorCiAgICAgdW5zaWduZWQgc2VsZWN0b3JJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
b3JJbmRleDsgfQogICAgIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rvckxpc3RJbmRleDsgfQogCkBAIC02OCw3ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpc2FibGVTZWxlY3RvckZpbHRlcmluZygpIHsgbV9kZXNjZW5kYW50U2VsZWN0b3JJ
ZGVudGlmaWVySGFzaGVzWzBdID0gMDsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTdHlsZVJ1
bGU+IG1fcnVsZTsKKyAgICBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPiBtX3N0eWxlUnVsZTsKICAg
ICB1bnNpZ25lZCBtX3NlbGVjdG9ySW5kZXggOiAxNjsKICAgICB1bnNpZ25lZCBtX3NlbGVjdG9y
TGlzdEluZGV4IDogMTY7CiAgICAgLy8gVGhpcyBudW1iZXIgd2FzIHBpY2tlZCBmYWlybHkgYXJi
aXRyYXJpbHkuIFdlIGNhbiBwcm9iYWJseSBsb3dlciBpdCBpZiB3ZSBuZWVkIHRvLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCmluZGV4IDExNTM4YjliMmExLi45MzZlNmJiODgyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtNTUsNiArNTUsMTUgQEAgc3Rh
dGljIGJvb2wgaXNTaWJsaW5nT3JTdWJqZWN0KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitSdWxlRmVhdHVyZTo6UnVsZUZlYXR1cmUoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCwgY29u
c3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yKQorICAgIDogc3R5bGVSdWxlKCZy
dWxlRGF0YS5zdHlsZVJ1bGUoKSkKKyAgICAsIHNlbGVjdG9ySW5kZXgocnVsZURhdGEuc2VsZWN0
b3JJbmRleCgpKQorICAgICwgc2VsZWN0b3JMaXN0SW5kZXgocnVsZURhdGEuc2VsZWN0b3JMaXN0
SW5kZXgoKSkKKyAgICAsIG1hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpCisgICAgLCBpbnZhbGlk
YXRpb25TZWxlY3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKK3sKK30KKwogTWF0Y2hFbGVtZW50
IFJ1bGVGZWF0dXJlU2V0Ojpjb21wdXRlTmV4dE1hdGNoRWxlbWVudChNYXRjaEVsZW1lbnQgbWF0
Y2hFbGVtZW50LCBDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHJlbGF0aW9uKQogewogICAgIGlm
IChpc1NpYmxpbmdPclN1YmplY3QobWF0Y2hFbGVtZW50KSkgewpAQCAtMTY5LDE0ICsxNzgsMTQg
QEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBy
dWxlRGF0YSkKICAgICBTZWxlY3RvckZlYXR1cmVzIHNlbGVjdG9yRmVhdHVyZXM7CiAgICAgcmVj
dXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3Ioc2VsZWN0b3JGZWF0dXJlcywgKnJ1
bGVEYXRhLnNlbGVjdG9yKCkpOwogICAgIGlmIChzZWxlY3RvckZlYXR1cmVzLmhhc1NpYmxpbmdT
ZWxlY3RvcikKLSAgICAgICAgc2libGluZ1J1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0
YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0
SW5kZXgoKSkpOworICAgICAgICBzaWJsaW5nUnVsZXMuYXBwZW5kKHsgcnVsZURhdGEgfSk7CiAg
ICAgaWYgKHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAg
ICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5y
dWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5k
ZXgoKSkpOworICAgICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZCh7IHJ1bGVEYXRh
IH0pOwogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVzLmNs
YXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1hdGNoLmZpcnN0LCBb
XSB7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+Pigp
OwotICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0
YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0
SW5kZXgoKSwgbmFtZUFuZE1hdGNoLnNlY29uZCkpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWUtPmFwcGVuZCh7IHJ1bGVEYXRhLCBuYW1lQW5kTWF0Y2guc2Vjb25kIH0pOwogICAgICAgICBp
ZiAobmFtZUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAg
ICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0KTsKICAgICB9CkBA
IC0xODUsNyArMTk0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNv
bnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBzZWxl
Y3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKHNlbGVj
dG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBb
XSB7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+Pigp
OwotICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0
YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0
SW5kZXgoKSwgbWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOworICAgICAgICB9KS5pdGVyYXRvci0+
dmFsdWUtPmFwcGVuZCh7IHJ1bGVEYXRhLCBtYXRjaEVsZW1lbnQsIHNlbGVjdG9yIH0pOwogICAg
ICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAg
IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxO
YW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVGZWF0dXJlLmgKaW5kZXggNzY0NTk5OTE0MzkuLjM3NzZiNzg5YjdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTQwLDE5ICs0MCwxMyBAQCBlbnVtIGNsYXNzIE1hdGNoRWxl
bWVudCB7IFN1YmplY3QsIFBhcmVudCwgQW5jZXN0b3IsIERpcmVjdFNpYmxpbmcsIEluZGlyZWN0
U2libAogY29uc3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwogCiBzdHJ1Y3QgUnVsZUZlYXR1cmUg
ewotICAgIFJ1bGVGZWF0dXJlKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRl
eCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0
Y2hFbGVtZW50ID0gV1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9u
U2VsZWN0b3IgPSBudWxscHRyKQotICAgICAgICA6IHJ1bGUocnVsZSkKLSAgICAgICAgLCBzZWxl
Y3RvckluZGV4KHNlbGVjdG9ySW5kZXgpCi0gICAgICAgICwgc2VsZWN0b3JMaXN0SW5kZXgoc2Vs
ZWN0b3JMaXN0SW5kZXgpCi0gICAgICAgICwgbWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCkKLSAg
ICAgICAgLCBpbnZhbGlkYXRpb25TZWxlY3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKLSAgICB7
Ci0gICAgfQotICAgIFN0eWxlUnVsZSogcnVsZTsKKyAgICBSdWxlRmVhdHVyZShjb25zdCBSdWxl
RGF0YSYsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBXVEY6Om51bGxvcHQsIGNvbnN0IENTU1Nl
bGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpOworCisgICAgUmVmUHRyPGNv
bnN0IFN0eWxlUnVsZT4gc3R5bGVSdWxlOwogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXg7CiAg
ICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXg7Ci0gICAgT3B0aW9uYWw8TWF0Y2hFbGVtZW50
PiBtYXRjaEVsZW1lbnQ7Ci0gICAgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVj
dG9yOworICAgIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50IHsgfTsKKyAgICBj
b25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0b3IgeyBudWxscHRyIH07CiB9Owog
CiBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA1
YzZkMGExZGE3Zi4uZjQ2YzNiMjhlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCkBAIC04
OCw5ICs4OCw5IEBAIHN0YXRpYyBib29sIGlzSG9zdFNlbGVjdG9yTWF0Y2hpbmdJblNoYWRvd1Ry
ZWUoY29uc3QgQ1NTU2VsZWN0b3ImIHN0YXJ0U2VsZWN0b3IpCiAgICAgcmV0dXJuIGxlZnRtb3N0
U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYmIGxlZnRtb3N0
U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hv
c3Q7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVk
IHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBNZWRpYVF1ZXJ5Q29s
bGVjdG9yKiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQordm9pZCBSdWxlU2V0OjphZGRSdWxlKGNvbnN0
IFN0eWxlUnVsZSYgcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0
b3JMaXN0SW5kZXgsIE1lZGlhUXVlcnlDb2xsZWN0b3IqIG1lZGlhUXVlcnlDb2xsZWN0b3IpCiB7
Ci0gICAgUnVsZURhdGEgcnVsZURhdGEoJnJ1bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlz
dEluZGV4LCBtX3J1bGVDb3VudCsrKTsKKyAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxl
Y3RvckluZGV4LCBzZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CiAKICAgICBtX2Zl
YXR1cmVzLmNvbGxlY3RGZWF0dXJlcyhydWxlRGF0YSk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2
b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQs
IE1lZGlhUXVlcnlDb2xsZWN0b3ImCiAgICAgICAgIHNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQg
UnVsZVNldDo6YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSYgcnVsZSwgTWVkaWFRdWVyeUNvbGxlY3Rv
ciYgbWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkU3R5bGVSdWxlKGNvbnN0
IFN0eWxlUnVsZSYgcnVsZSwgTWVkaWFRdWVyeUNvbGxlY3RvciYgbWVkaWFRdWVyeUNvbGxlY3Rv
cikKIHsKICAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCA9IDA7CiAgICAgZm9yIChzaXpl
X3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9y
SW5kZXggPSBydWxlLnNlbGVjdG9yTGlzdCgpLmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxl
Y3RvckluZGV4KSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBPcHRpb25hbDxEeW5hbWljTWVkaWFRdWVy
eUV2YWx1YXRpb25DaGFuZ2VzPiBSdWxlU2V0OjpldmFsdXRlRHluYW1pY01lZGlhUXVlcnlSdQog
ICAgICAgICBhdXRvIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChh
dXRvKiBmZWF0dXJlVmVjdG9yIDogY29sbGVjdGVkQ2hhbmdlcy5ydWxlRmVhdHVyZXMpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgZmVhdHVyZSA6ICpmZWF0dXJlVmVjdG9yKQotICAgICAgICAg
ICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoKmZlYXR1cmUucnVsZSwgZmVhdHVyZS5zZWxlY3Rvcklu
ZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKKyAgICAgICAgICAgICAgICBydWxlU2V0
LT5hZGRSdWxlKCpmZWF0dXJlLnN0eWxlUnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4LCBmZWF0
dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcnVsZVNl
dDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBSdWxl
U2V0OjpNZWRpYVF1ZXJ5Q29sbGVjdG9yOjphZGRSdWxlSWZOZWVkZWQoY29uc3QgUnVsZURhdGEm
IHJ1bGVEYXRhKQogCiAgICAgYXV0byYgY29udGV4dCA9IGR5bmFtaWNDb250ZXh0U3RhY2subGFz
dCgpOwogICAgIGNvbnRleHQuYWZmZWN0ZWRSdWxlUG9zaXRpb25zLmFwcGVuZChydWxlRGF0YS5w
b3NpdGlvbigpKTsKLSAgICBjb250ZXh0LnJ1bGVGZWF0dXJlcy5hcHBlbmQoeyBydWxlRGF0YS5y
dWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5k
ZXgoKSB9KTsKKyAgICBjb250ZXh0LnJ1bGVGZWF0dXJlcy5hcHBlbmQoeyBydWxlRGF0YSB9KTsK
IH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKaW5kZXggZTY5MmI2NzAzNmEuLmU4YWI2NmY2ODBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAg
IHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVkaWFR
dWVyeUV2YWx1YXRvciYpOwogICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENv
bnRlbnRzJiwgTWVkaWFRdWVyeVNldCogc2hlZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1
YXRvciYsIFN0eWxlOjpSZXNvbHZlciYpOwogCi0gICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVS
dWxlJiwgTWVkaWFRdWVyeUNvbGxlY3RvciYpOwotICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUm
LCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgTWVk
aWFRdWVyeUNvbGxlY3RvciogPSBudWxscHRyKTsKKyAgICB2b2lkIGFkZFN0eWxlUnVsZShjb25z
dCBTdHlsZVJ1bGUmLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJik7CisgICAgdm9pZCBhZGRSdWxlKGNv
bnN0IFN0eWxlUnVsZSYsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9y
TGlzdEluZGV4LCBNZWRpYVF1ZXJ5Q29sbGVjdG9yKiA9IG51bGxwdHIpOwogICAgIHZvaWQgYWRk
UGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSYpOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KGNvbnN0IEF0
b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwogICAgIHZvaWQg
c2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
NjU1NzI0YmY5ZDEuLmNlYjQ4NTcxYzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmNwcApAQCAtNDgzLDEyICs0ODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGUKICAg
ICByZXR1cm4gc3R5bGU7CiB9CiAKLVZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gUmVzb2x2ZXI6
OnN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1
bGVzVG9JbmNsdWRlKQorVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6
c3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVs
ZXNUb0luY2x1ZGUpCiB7CiAgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVs
ZW1lbnQsIFBzZXVkb0lkOjpOb25lLCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKLVZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlPj4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5j
bHVkZSkKK1ZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4gUmVzb2x2ZXI6OnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVk
b0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggNjYw
MzUzM2FhNGEuLmM3NzA0MzEzZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5o
CkBAIC0xMjEsOCArMTIxLDggQEAgcHVibGljOgogICAgICAgICBBbGxCdXRFbXB0eUNTU1J1bGVz
ID0gVUFBbmRVc2VyQ1NTUnVsZXMgfCBBdXRob3JDU1NSdWxlcywKICAgICAgICAgQWxsQ1NTUnVs
ZXMgICAgICAgICA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMgfCBFbXB0eUNTU1J1bGVzLAogICAgIH07
Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChjb25z
dCBFbGVtZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVz
KTsKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQqLCBQc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBB
bGxCdXRFbXB0eUNTU1J1bGVzKTsKKyAgICBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+
IHN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCB1bnNpZ25lZCBydWxlc1RvSW5j
bHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOworICAgIFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5
bGVSdWxlPj4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCosIFBzZXVk
b0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwogCiAg
ICAgYm9vbCBoYXNTZWxlY3RvckZvcklkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAgICBi
b29sIGhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNw
cAppbmRleCA2NjcwNTQ3ZTRkZS4uZThiYjI5YzRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBSZWZQ
dHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gcnVsZVNldCA9IFJ1bGVTZXQ6OmNy
ZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBy
dWxlU2V0LT5hZGRSdWxlKCpydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBy
dWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CisgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoKnJ1
bGVzW2ldLnN0eWxlUnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0
b3JMaXN0SW5kZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJ1
bGVTZXQ7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25S
dWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYKICAg
ICAgICAgICAgIGF1dG8mIHJ1bGVTZXQgPSBtYXRjaEVsZW1lbnRBcnJheVthcnJheUluZGV4XTsK
ICAgICAgICAgICAgIGlmICghcnVsZVNldCkKICAgICAgICAgICAgICAgICBydWxlU2V0ID0gUnVs
ZVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJlLnJ1
bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7Cisg
ICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJlLnN0eWxlUnVsZSwgZmVhdHVyZS5z
ZWxlY3RvckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgICAgIGlm
IChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAgIGludmFsaWRh
dGlvblNlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uYXBwZW5kKGZlYXR1cmUuaW52YWxpZGF0aW9u
U2VsZWN0b3IpOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386559</attachid>
            <date>2019-12-31 05:57:07 -0800</date>
            <delta_ts>2019-12-31 06:12:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylerule-const-4.patch</filename>
            <type>text/plain</type>
            <size>27718</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZjkxNzk3YzBmMy4uMDQ4ZGNjMGFhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOS0xMi0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3R5bGVSdWxlIGFjY2Vzc29yIGluIFJ1bGVEYXRhIHNob3VsZCByZXR1cm4g
YSBjb25zdCByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEl0IGlzIGN1cnJlbnRseSBhIG5vbi1jb25zdCBwb2ludGVyLgorCisgICAgICAg
IFRoaXMgbGVhZHMgdG8gU3R5bGVSdWxlIGJlaW5nIGNvbnN0IGluIG1hbnkgb3RoZXIgcGxhY2Vz
IHRvby4KKworICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlcmVmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2U6OmRlcmVmKTogRGVsZXRlZC4KKworICAgICAgICBNYWtlIGRlcmVmIGNvbnN0LCBtYXRjaGlu
ZyBSZWZDb3VudGVkIGFuZCBhbGxvd2luZyBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPgorICAgICAg
ICAKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9y
Lmg6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1
bGVJblNoZWV0cyk6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oOgor
ICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnN0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0b3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpydWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNl
dDo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpldmFs
dXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVsZUlmTmVlZGVkKToKKyAgICAgICAgKiBz
dHlsZS9SdWxlU2V0Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VSdWxl
U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyk6CisKIDIwMTktMTItMzEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBSVEMgVlRCIGRlY29kZXJzIGluIEdQVVByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCA3ZmUwN2NjZTdlMy4uNTYyZDNlOGMzYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWY8U3R5bGVSdWxl
QmFzZT4gY29weSgpIGNvbnN0OwogCi0gICAgdm9pZCBkZXJlZigpCisgICAgdm9pZCBkZXJlZigp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAgICAgICAgICBkZXN0
cm95KCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcykuZGVz
dHJveSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxlUnVsZXNX
aXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0gICAgQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRT
ZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICBDb21waWxlZFNlbGVjdG9y
JiBjb21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQogICAgICAgICAgICAgbV9jb21w
aWxlZFNlbGVjdG9ycyA9IG1ha2VVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPihtX3NlbGVj
dG9yTGlzdC5saXN0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9D
b21waWxlZFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rv
ci5oCmluZGV4IDdlYTQ4NTBiNmU5Li5iYjllYmM5NGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvQ29tcGlsZWRTZWxlY3Rvci5oCkBAIC0zMiwyNyArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHsKLXB1YmxpYzoKLSAg
ICBlbnVtIFN0YXR1cyB7Ci0gICAgICAgIE5vdENvbXBpbGVkLAotICAgICAgICBDYW5ub3RDb21w
aWxlLAotICAgICAgICBTaW1wbGVTZWxlY3RvckNoZWNrZXIsCi0gICAgICAgIFNlbGVjdG9yQ2hl
Y2tlcldpdGhDaGVja2luZ0NvbnRleHQKLSAgICB9OwotCi0gICAgU2VsZWN0b3JDb21waWxhdGlv
blN0YXR1cygpCi0gICAgICAgIDogbV9zdGF0dXMoTm90Q29tcGlsZWQpCi0gICAgeyB9Ci0KLSAg
ICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzKFN0YXR1cyBzdGF0dXMpCi0gICAgICAgIDogbV9z
dGF0dXMoc3RhdHVzKQotICAgIHsgfQotCi0gICAgb3BlcmF0b3IgU3RhdHVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXM7IH0KLQotcHJpdmF0ZToKLSAgICBTdGF0dXMgbV9zdGF0dXM7CitlbnVt
IGNsYXNzIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgeworICAgIE5vdENvbXBpbGVkLAorICAg
IENhbm5vdENvbXBpbGUsCisgICAgU2ltcGxlU2VsZWN0b3JDaGVja2VyLAorICAgIFNlbGVjdG9y
Q2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQKIH07CiAKIHN0cnVjdCBDb21waWxlZFNlbGVjdG9y
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IDBkYmY4MjY2NDgwLi5jYmU1YTI1
YjEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCkBAIC01Miw5ICs1Miw2IEBAIHBy
aXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CiAgICAgICAgIFNlbGVjdG9yRGF0YShj
b25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiAgICAgICAgICAgICA6IHNlbGVjdG9yKHNlbGVj
dG9yKQotI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKSAmJiBDU1NfU0VMRUNUT1JfSklUX1BS
T0ZJTElORwotICAgICAgICAgICAgLCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCgwKQotI2Vu
ZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC02OCw3ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpZiAoY29tcGlsZWRTZWxlY3RvckNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlNlbGVjdG9yRGF0YSBjb21waWxl
ZCBzZWxlY3RvciAlZCBcIiVzXCJcbiIsIG1fY29tcGlsZWRTZWxlY3RvclVzZUNvdW50LCBzZWxl
Y3Rvci0+c2VsZWN0b3JUZXh0KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIH0KLSAgICAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudDsKKyAgICAgICAgbXV0
YWJsZSB1bnNpZ25lZCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCB7IDAgfTsKICAgICAgICAg
dm9pZCBjb21waWxlZFNlbGVjdG9yVXNlZCgpIGNvbnN0IHsgbV9jb21waWxlZFNlbGVjdG9yVXNl
Q291bnQrKzsgfQogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggMDg4OGQxMjI1OGIuLjk5
OTA5MTI3MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0x
MjYxLDEwICsxMjYxLDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGUoY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBzdHlsZSwgQ1NTUHJvcGVydHlPdmVycmlkZU0KIHN0YXRpYyBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKICAgICBhdXRvIHN0eWxl
ID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7Ci0gICAgZm9yIChhdXRvJiBtYXRj
aGVkUnVsZSA6IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnN0eWxlUnVsZXNGb3JFbGVtZW50KCZl
bGVtZW50LCBydWxlc1RvSW5jbHVkZSkpIHsKLSAgICAgICAgaWYgKG1hdGNoZWRSdWxlLT5pc1N0
eWxlUnVsZSgpKQotICAgICAgICAgICAgc3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0
KHN0YXRpY19wb2ludGVyX2Nhc3Q8U3R5bGVSdWxlPihtYXRjaGVkUnVsZSktPnByb3BlcnRpZXMo
KSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBlbGVtZW50LnN0eWxlUmVz
b2x2ZXIoKS5zdHlsZVJ1bGVzRm9yRWxlbWVudCgmZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpKQor
ICAgICAgICBzdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QobWF0Y2hlZFJ1bGUtPnBy
b3BlcnRpZXMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHN0eWxlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0
ZmRhMjI0NmQ3OC4uMjkzMGI0NWY4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC05NDYsNyArOTQ2LDcgQEAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIEluc3BlY3RvckNTU0Fn
ZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3QKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JS
dWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHlsZTo6UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IEVsZW1lbnQmIGVsZW1lbnQpCitSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKGNvbnN0IFN0eWxlUnVs
ZSogc3R5bGVSdWxlLCBTdHlsZTo6UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgaWYgKCFzdHlsZVJ1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtOTc4LDcgKzk3OCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1
bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoCiAgICAgcmV0dXJuIGlu
c3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1
bGUocnVsZSwgbnVsbHB0cikgOiBudWxscHRyOwogfQogCi1SZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50Ojpi
dWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
Pj4mIG1hdGNoZWRSdWxlcywgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50
JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK1JlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1
bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZTo6UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1l
bnQmIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQogewogICAgIGF1dG8gcmVzdWx0ID0gSlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNT
U0FnZW50LmgKaW5kZXggNjc0MmRkZjJjNDcuLmZhMWQ2NzFkZDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xNDUs
OSArMTQ1LDkgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBjcmVhdGVJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQq
IHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoU3R5
bGVSdWxlKiwgU3R5bGU6OlJlc29sdmVyJiwgRWxlbWVudCYpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShjb25zdCBTdHls
ZVJ1bGUqLCBTdHlsZTo6UmVzb2x2ZXImLCBFbGVtZW50Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVs
ZSopOwotICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZT4+JiwgU3R5bGU6OlJlc29sdmVyJiwgRWxlbWVudCYsIFBzZXVkb0lkKTsK
KyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVN
YXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxj
b25zdCBTdHlsZVJ1bGU+PiYsIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmLCBQc2V1ZG9JZCk7
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2Jq
ZWN0Rm9yQXR0cmlidXRlc1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggOTA3Yjg3ODBiNjcuLjFh
MWFmMWUwZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgY29uc3QgTWF0Y2hSZXN1bHQmIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjptYXRjaFJlc3VsdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVzdWx0OwogfQog
Ci1jb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
bWF0Y2hlZFJ1bGVMaXN0KCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVS
dWxlPj4mIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUnVsZUxpc3QoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX21vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVs
ZXMpOwogICAgIHJldHVybiBtX21hdGNoZWRSdWxlTGlzdDsKQEAgLTE5MywxMiArMTkzLDEyIEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0
aW9uT3JpZ2luIGRlY2xhcmF0aW9uT3JpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBp
ZiAobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzKSB7Ci0g
ICAgICAgICAgICBtX21hdGNoZWRSdWxlTGlzdC5hcHBlbmQobWF0Y2hlZFJ1bGUucnVsZURhdGEt
PnJ1bGUoKSk7CisgICAgICAgICAgICBtX21hdGNoZWRSdWxlTGlzdC5hcHBlbmQoJm1hdGNoZWRS
dWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogCiAgICAgICAgIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKHsKLSAgICAgICAgICAgICZtYXRj
aGVkUnVsZS5ydWxlRGF0YS0+cnVsZSgpLT5wcm9wZXJ0aWVzKCksCisgICAgICAgICAgICAmbWF0
Y2hlZFJ1bGUucnVsZURhdGEtPnN0eWxlUnVsZSgpLnByb3BlcnRpZXMoKSwKICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5ydWxlRGF0YS0+bGlua01hdGNoVHlw
ZSgpKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5ydWxl
RGF0YS0+cHJvcGVydHlXaGl0ZWxpc3RUeXBlKCkpLAogICAgICAgICAgICAgbWF0Y2hlZFJ1bGUu
c3R5bGVTY29wZU9yZGluYWwKQEAgLTQ0OCw3ICs0NDgsNyBAQCBpbmxpbmUgYm9vbCBFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNp
Z25lZAogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQotICAgIGF1dG8mIGNv
bXBpbGVkU2VsZWN0b3IgPSBydWxlRGF0YS5ydWxlKCktPmNvbXBpbGVkU2VsZWN0b3JGb3JMaXN0
SW5kZXgocnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSk7CisgICAgYXV0byYgY29tcGlsZWRT
ZWxlY3RvciA9IHJ1bGVEYXRhLmNvbXBpbGVkU2VsZWN0b3IoKTsKICAgICB2b2lkKiBjb21waWxl
ZFNlbGVjdG9yQ2hlY2tlciA9IGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKICAgICBpZiAoIWNvbXBpbGVkU2VsZWN0b3JDaGVja2VyICYmIGNvbXBp
bGVkU2VsZWN0b3Iuc3RhdHVzID09IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBp
bGVkKSB7CiAgICAgICAgIGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzID0gU2VsZWN0b3JDb21waWxl
cjo6Y29tcGlsZVNlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCksIFNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29udGV4dDo6UnVsZUNvbGxlY3RvciwgY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVm
KTsKQEAgLTUzMywxMiArNTMzLDEyIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlCiAgICAgICAg
IGlmIChtX3NlbGVjdG9yRmlsdGVyICYmIG1fc2VsZWN0b3JGaWx0ZXItPmZhc3RSZWplY3RTZWxl
Y3RvcihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCkpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEu
cnVsZSgpOworICAgICAgICBhdXRvJiBydWxlID0gcnVsZURhdGEuc3R5bGVSdWxlKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdu
b3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4KICAgICAgICAgLy8gTm90ZSB0aGF0IGlmIHdl
IGdldCBudWxsIGJhY2sgaGVyZSwgaXQgbWVhbnMgd2UgaGF2ZSBhIHJ1bGUgd2l0aCBkZWZlcnJl
ZCBwcm9wZXJ0aWVzLAogICAgICAgICAvLyBhbmQgdGhhdCBtZWFucyB3ZSBhbHdheXMgaGF2ZSB0
byBjb25zaWRlciBpdC4KLSAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcm9wZXJ0aWVz
ID0gcnVsZS0+cHJvcGVydGllc1dpdGhvdXREZWZlcnJlZFBhcnNpbmcoKTsKKyAgICAgICAgY29u
c3QgU3R5bGVQcm9wZXJ0aWVzKiBwcm9wZXJ0aWVzID0gcnVsZS5wcm9wZXJ0aWVzV2l0aG91dERl
ZmVycmVkUGFyc2luZygpOwogICAgICAgICBpZiAocHJvcGVydGllcyAmJiBwcm9wZXJ0aWVzLT5p
c0VtcHR5KCkgJiYgIW1fc2hvdWxkSW5jbHVkZUVtcHR5UnVsZXMpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKaW5k
ZXggM2IyNzUzYzcxODkuLmJiM2FkZGJiMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFJ1bGVTZXQqKTsKIAogICAgIGNvbnN0IE1hdGNo
UmVzdWx0JiBtYXRjaFJlc3VsdCgpIGNvbnN0OwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlPj4mIG1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Y29uc3QgU3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0OwogCiAgICAgdm9p
ZCBjbGVhck1hdGNoZWRSdWxlcygpOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgcHJpdmF0ZToKICAg
ICBzaXplX3QgbV9tYXRjaGVkUnVsZVRyYW5zZmVySW5kZXggeyAwIH07CiAKICAgICAvLyBPdXRw
dXQuCi0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBtX21hdGNoZWRSdWxlTGlzdDsKKyAg
ICBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+IG1fbWF0Y2hlZFJ1bGVMaXN0OwogICAg
IGJvb2wgbV9kaWRNYXRjaFVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IgeyBmYWxzZSB9OwogICAg
IE1hdGNoUmVzdWx0IG1fcmVzdWx0OwogICAgIFJlbGF0aW9ucyBtX3N0eWxlUmVsYXRpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRl
eCBmM2Q1MWM4YzhjNC4uZWEwYmJmNDUwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0U2NvcGVXcmFwcGVycyhTY29wZSYgc3R5bGVTY29w
ZSkKICAgICBtYXliZUNvbGxlY3RGcm9tU3R5bGVTaGVldHMoc3R5bGVTY29wZS5hY3RpdmVTdHls
ZVNoZWV0cygpKTsKIH0KIAotQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpn
ZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSogcnVsZSkKK0NTU1N0eWxlUnVsZSog
SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhjb25zdCBT
dHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgcmV0dXJuIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJN
YXAuZ2V0KHJ1bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVj
dG9yQ1NTT01XcmFwcGVycy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5oCmluZGV4IDIzMGU1ZTEzOWE3Li5mMmZmZWI5ZTE2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMuaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzIHsKIHB1YmxpYzoKICAgICAvLyBXQVJOSU5HLiBU
aGlzIHdpbGwgY29uc3RydWN0IENTU09NIHdyYXBwZXJzIGZvciBhbGwgc3R5bGUgcnVsZXMgYW5k
IGNhY2hlIHRoZW0gaW4gYSBtYXAgZm9yIHNpZ25pZmljYW50IG1lbW9yeSBjb3N0LgogICAgIC8v
IEl0IGlzIGhlcmUgdG8gc3VwcG9ydCBpbnNwZWN0b3IuIERvbid0IHVzZSBmb3IgYW55IHJlZ3Vs
YXIgZW5naW5lIGZ1bmN0aW9ucy4KLSAgICBDU1NTdHlsZVJ1bGUqIGdldFdyYXBwZXJGb3JSdWxl
SW5TaGVldHMoU3R5bGVSdWxlKik7CisgICAgQ1NTU3R5bGVSdWxlKiBnZXRXcmFwcGVyRm9yUnVs
ZUluU2hlZXRzKGNvbnN0IFN0eWxlUnVsZSopOwogICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNo
ZWV0SWZOZWVkZWQoQ1NTU3R5bGVTaGVldCopOwogICAgIHZvaWQgY29sbGVjdERvY3VtZW50V3Jh
cHBlcnMoRXh0ZW5zaW9uU3R5bGVTaGVldHMmKTsKICAgICB2b2lkIGNvbGxlY3RTY29wZVdyYXBw
ZXJzKFNjb3BlJik7CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0
RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+Jik7CiAg
ICAgdm9pZCBtYXliZUNvbGxlY3RGcm9tU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0Pj4mKTsKIAotICAgIEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0
eWxlUnVsZT4+IG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CisgICAgSGFzaE1hcDxjb25z
dCBTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPj4gbV9zdHlsZVJ1bGVUb0NTU09NV3Jh
cHBlck1hcDsKICAgICBIYXNoU2V0PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9zdHlsZVNoZWV0
Q1NTT01XcmFwcGVyU2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuY3BwCmluZGV4IDZh
MzAxZGY4ZjI2Li43YjlhZGVlYTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcApAQCAt
MTU5LDggKzE1OSw4IEBAIHN0YXRpYyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIGRldGVy
bWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBDU1NTZWxlCiAgICAgcmV0dXJuIFByb3Bl
cnR5V2hpdGVsaXN0Tm9uZTsKIH0KIAotUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVsZSogcnVs
ZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIHVu
c2lnbmVkIHBvc2l0aW9uKQotICAgIDogbV9ydWxlKHJ1bGUpCitSdWxlRGF0YTo6UnVsZURhdGEo
Y29uc3QgU3R5bGVSdWxlJiBzdHlsZVJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2ln
bmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKKyAgICA6IG1fc3R5bGVS
dWxlKCZzdHlsZVJ1bGUpCiAgICAgLCBtX3NlbGVjdG9ySW5kZXgoc2VsZWN0b3JJbmRleCkKICAg
ICAsIG1fc2VsZWN0b3JMaXN0SW5kZXgoc2VsZWN0b3JMaXN0SW5kZXgpCiAgICAgLCBtX3Bvc2l0
aW9uKHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmgKaW5kZXggYTNhNjAxMDJlZTUuLmJl
ZjA3ZjFjYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmgKQEAgLTQ3LDExICs0NywxNyBAQCBj
bGFzcyBSdWxlRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGlt
dW1TZWxlY3RvckNvbXBvbmVudENvdW50ID0gODE5MjsKIAotICAgIFJ1bGVEYXRhKFN0eWxlUnVs
ZSosIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1
bnNpZ25lZCBwb3NpdGlvbik7CisgICAgUnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiwgdW5zaWdu
ZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIHVuc2lnbmVkIHBv
c2l0aW9uKTsKIAogICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQotICAgIFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZS5nZXQo
KTsgfQotICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cnVsZS0+c2VsZWN0b3JMaXN0KCkuc2VsZWN0b3JBdChtX3NlbGVjdG9ySW5kZXgpOyB9CisKKyAg
ICBjb25zdCBTdHlsZVJ1bGUmIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N0eWxlUnVs
ZTsgfQorCisgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9zdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3RvckluZGV4KTsg
fQorI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgIENvbXBpbGVkU2VsZWN0b3ImIGNv
bXBpbGVkU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUnVsZS0+Y29tcGlsZWRTZWxl
Y3RvckZvckxpc3RJbmRleChtX3NlbGVjdG9yTGlzdEluZGV4KTsgfQorI2VuZGlmCisgICAgCiAg
ICAgdW5zaWduZWQgc2VsZWN0b3JJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JJbmRl
eDsgfQogICAgIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rvckxpc3RJbmRleDsgfQogCkBAIC02OCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2FibGVTZWxlY3RvckZpbHRlcmluZygpIHsgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlm
aWVySGFzaGVzWzBdID0gMDsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTdHlsZVJ1bGU+IG1f
cnVsZTsKKyAgICBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPiBtX3N0eWxlUnVsZTsKICAgICB1bnNp
Z25lZCBtX3NlbGVjdG9ySW5kZXggOiAxNjsKICAgICB1bnNpZ25lZCBtX3NlbGVjdG9yTGlzdElu
ZGV4IDogMTY7CiAgICAgLy8gVGhpcyBudW1iZXIgd2FzIHBpY2tlZCBmYWlybHkgYXJiaXRyYXJp
bHkuIFdlIGNhbiBwcm9iYWJseSBsb3dlciBpdCBpZiB3ZSBuZWVkIHRvLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZUZlYXR1cmUuY3BwCmluZGV4IDExNTM4YjliMmExLi45MzZlNmJiODgyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtNTUsNiArNTUsMTUgQEAgc3RhdGljIGJv
b2wgaXNTaWJsaW5nT3JTdWJqZWN0KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitSdWxlRmVhdHVyZTo6UnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEm
IHJ1bGVEYXRhLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCwgY29uc3QgQ1NT
U2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yKQorICAgIDogc3R5bGVSdWxlKCZydWxlRGF0
YS5zdHlsZVJ1bGUoKSkKKyAgICAsIHNlbGVjdG9ySW5kZXgocnVsZURhdGEuc2VsZWN0b3JJbmRl
eCgpKQorICAgICwgc2VsZWN0b3JMaXN0SW5kZXgocnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgo
KSkKKyAgICAsIG1hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpCisgICAgLCBpbnZhbGlkYXRpb25T
ZWxlY3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKK3sKK30KKwogTWF0Y2hFbGVtZW50IFJ1bGVG
ZWF0dXJlU2V0Ojpjb21wdXRlTmV4dE1hdGNoRWxlbWVudChNYXRjaEVsZW1lbnQgbWF0Y2hFbGVt
ZW50LCBDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHJlbGF0aW9uKQogewogICAgIGlmIChpc1Np
YmxpbmdPclN1YmplY3QobWF0Y2hFbGVtZW50KSkgewpAQCAtMTY5LDE0ICsxNzgsMTQgQEAgdm9p
ZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0
YSkKICAgICBTZWxlY3RvckZlYXR1cmVzIHNlbGVjdG9yRmVhdHVyZXM7CiAgICAgcmVjdXJzaXZl
bHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3Ioc2VsZWN0b3JGZWF0dXJlcywgKnJ1bGVEYXRh
LnNlbGVjdG9yKCkpOwogICAgIGlmIChzZWxlY3RvckZlYXR1cmVzLmhhc1NpYmxpbmdTZWxlY3Rv
cikKLSAgICAgICAgc2libGluZ1J1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxl
KCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgo
KSkpOworICAgICAgICBzaWJsaW5nUnVsZXMuYXBwZW5kKHsgcnVsZURhdGEgfSk7CiAgICAgaWYg
KHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAgICAgICB1
bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSkp
OworICAgICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZCh7IHJ1bGVEYXRhIH0pOwog
CiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMp
IHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1hdGNoLmZpcnN0LCBbXSB7CiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwotICAg
ICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxl
KCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgo
KSwgbmFtZUFuZE1hdGNoLnNlY29uZCkpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFw
cGVuZCh7IHJ1bGVEYXRhLCBuYW1lQW5kTWF0Y2guc2Vjb25kIH0pOwogICAgICAgICBpZiAobmFt
ZUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBjbGFz
c2VzQWZmZWN0aW5nSG9zdC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0KTsKICAgICB9CkBAIC0xODUs
NyArMTk0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBzZWxlY3RvckFu
ZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKHNlbGVjdG9yLT5h
dHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBbXSB7CiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwotICAg
ICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxl
KCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgo
KSwgbWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUt
PmFwcGVuZCh7IHJ1bGVEYXRhLCBtYXRjaEVsZW1lbnQsIHNlbGVjdG9yIH0pOwogICAgICAgICBp
ZiAobWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJp
YnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCku
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0
dXJlLmgKaW5kZXggNzY0NTk5OTE0MzkuLjM3NzZiNzg5YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVGZWF0dXJlLmgKQEAgLTQwLDE5ICs0MCwxMyBAQCBlbnVtIGNsYXNzIE1hdGNoRWxlbWVudCB7
IFN1YmplY3QsIFBhcmVudCwgQW5jZXN0b3IsIERpcmVjdFNpYmxpbmcsIEluZGlyZWN0U2libAog
Y29uc3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwogCiBzdHJ1Y3QgUnVsZUZlYXR1cmUgewotICAg
IFJ1bGVGZWF0dXJlKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5z
aWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVt
ZW50ID0gV1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0
b3IgPSBudWxscHRyKQotICAgICAgICA6IHJ1bGUocnVsZSkKLSAgICAgICAgLCBzZWxlY3Rvcklu
ZGV4KHNlbGVjdG9ySW5kZXgpCi0gICAgICAgICwgc2VsZWN0b3JMaXN0SW5kZXgoc2VsZWN0b3JM
aXN0SW5kZXgpCi0gICAgICAgICwgbWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCkKLSAgICAgICAg
LCBpbnZhbGlkYXRpb25TZWxlY3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKLSAgICB7Ci0gICAg
fQotICAgIFN0eWxlUnVsZSogcnVsZTsKKyAgICBSdWxlRmVhdHVyZShjb25zdCBSdWxlRGF0YSYs
IE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBXVEY6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9y
KiBpbnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpOworCisgICAgUmVmUHRyPGNvbnN0IFN0
eWxlUnVsZT4gc3R5bGVSdWxlOwogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXg7CiAgICAgdW5z
aWduZWQgc2VsZWN0b3JMaXN0SW5kZXg7Ci0gICAgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRj
aEVsZW1lbnQ7Ci0gICAgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yOwor
ICAgIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50IHsgfTsKKyAgICBjb25zdCBD
U1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0b3IgeyBudWxscHRyIH07CiB9OwogCiBzdHJ1
Y3QgUnVsZUZlYXR1cmVTZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVs
ZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA1YzZkMGEx
ZGE3Zi4uZjQ2YzNiMjhlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVT
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCkBAIC04OCw5ICs4
OCw5IEBAIHN0YXRpYyBib29sIGlzSG9zdFNlbGVjdG9yTWF0Y2hpbmdJblNoYWRvd1RyZWUoY29u
c3QgQ1NTU2VsZWN0b3ImIHN0YXJ0U2VsZWN0b3IpCiAgICAgcmV0dXJuIGxlZnRtb3N0U2VsZWN0
b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYmIGxlZnRtb3N0U2VsZWN0
b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvc3Q7CiB9
CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVj
dG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBNZWRpYVF1ZXJ5Q29sbGVjdG9y
KiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQordm9pZCBSdWxlU2V0OjphZGRSdWxlKGNvbnN0IFN0eWxl
UnVsZSYgcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0
SW5kZXgsIE1lZGlhUXVlcnlDb2xsZWN0b3IqIG1lZGlhUXVlcnlDb2xsZWN0b3IpCiB7Ci0gICAg
UnVsZURhdGEgcnVsZURhdGEoJnJ1bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdEluZGV4
LCBtX3J1bGVDb3VudCsrKTsKKyAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3Rvcklu
ZGV4LCBzZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CiAKICAgICBtX2ZlYXR1cmVz
LmNvbGxlY3RGZWF0dXJlcyhydWxlRGF0YSk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIFJ1
bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIE1lZGlh
UXVlcnlDb2xsZWN0b3ImCiAgICAgICAgIHNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgUnVsZVNl
dDo6YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSYgcnVsZSwgTWVkaWFRdWVyeUNvbGxlY3RvciYgbWVk
aWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkU3R5bGVSdWxlKGNvbnN0IFN0eWxl
UnVsZSYgcnVsZSwgTWVkaWFRdWVyeUNvbGxlY3RvciYgbWVkaWFRdWVyeUNvbGxlY3RvcikKIHsK
ICAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCA9IDA7CiAgICAgZm9yIChzaXplX3Qgc2Vs
ZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXgg
PSBydWxlLnNlbGVjdG9yTGlzdCgpLmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3Rvcklu
ZGV4KSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBPcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1
YXRpb25DaGFuZ2VzPiBSdWxlU2V0OjpldmFsdXRlRHluYW1pY01lZGlhUXVlcnlSdQogICAgICAg
ICBhdXRvIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvKiBm
ZWF0dXJlVmVjdG9yIDogY29sbGVjdGVkQ2hhbmdlcy5ydWxlRmVhdHVyZXMpIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgZmVhdHVyZSA6ICpmZWF0dXJlVmVjdG9yKQotICAgICAgICAgICAgICAg
IHJ1bGVTZXQtPmFkZFJ1bGUoKmZlYXR1cmUucnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4LCBm
ZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKKyAgICAgICAgICAgICAgICBydWxlU2V0LT5hZGRS
dWxlKCpmZWF0dXJlLnN0eWxlUnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4LCBmZWF0dXJlLnNl
bGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcnVsZVNldDsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBSdWxlU2V0OjpN
ZWRpYVF1ZXJ5Q29sbGVjdG9yOjphZGRSdWxlSWZOZWVkZWQoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhKQogCiAgICAgYXV0byYgY29udGV4dCA9IGR5bmFtaWNDb250ZXh0U3RhY2subGFzdCgpOwog
ICAgIGNvbnRleHQuYWZmZWN0ZWRSdWxlUG9zaXRpb25zLmFwcGVuZChydWxlRGF0YS5wb3NpdGlv
bigpKTsKLSAgICBjb250ZXh0LnJ1bGVGZWF0dXJlcy5hcHBlbmQoeyBydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSB9
KTsKKyAgICBjb250ZXh0LnJ1bGVGZWF0dXJlcy5hcHBlbmQoeyBydWxlRGF0YSB9KTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlU2V0LmgKaW5kZXggZTY5MmI2NzAzNmEuLmU4YWI2NmY2ODBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZVNldC5oCkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIHZvaWQg
YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVkaWFRdWVyeUV2
YWx1YXRvciYpOwogICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRz
JiwgTWVkaWFRdWVyeVNldCogc2hlZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYs
IFN0eWxlOjpSZXNvbHZlciYpOwogCi0gICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxlJiwg
TWVkaWFRdWVyeUNvbGxlY3RvciYpOwotICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUmLCB1bnNp
Z25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgTWVkaWFRdWVy
eUNvbGxlY3RvciogPSBudWxscHRyKTsKKyAgICB2b2lkIGFkZFN0eWxlUnVsZShjb25zdCBTdHls
ZVJ1bGUmLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJik7CisgICAgdm9pZCBhZGRSdWxlKGNvbnN0IFN0
eWxlUnVsZSYsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdElu
ZGV4LCBNZWRpYVF1ZXJ5Q29sbGVjdG9yKiA9IG51bGxwdHIpOwogICAgIHZvaWQgYWRkUGFnZVJ1
bGUoU3R5bGVSdWxlUGFnZSYpOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KGNvbnN0IEF0b21TdHJp
bmcmIGtleSwgQXRvbVJ1bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwogICAgIHZvaWQgc2hyaW5r
VG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjU1NzI0
YmY5ZDEuLmNlYjQ4NTcxYzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNw
cApAQCAtNDgzLDEyICs0ODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNv
bHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGUKICAgICByZXR1
cm4gc3R5bGU7CiB9CiAKLVZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gUmVzb2x2ZXI6OnN0eWxl
UnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9J
bmNsdWRlKQorVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6c3R5bGVS
dWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVsZXNUb0lu
Y2x1ZGUpCiB7CiAgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQs
IFBzZXVkb0lkOjpOb25lLCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlPj4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkK
K1ZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVs
ZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkLCB1
bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggNjYwMzUzM2Fh
NGEuLmM3NzA0MzEzZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCkBAIC0x
MjEsOCArMTIxLDggQEAgcHVibGljOgogICAgICAgICBBbGxCdXRFbXB0eUNTU1J1bGVzID0gVUFB
bmRVc2VyQ1NTUnVsZXMgfCBBdXRob3JDU1NSdWxlcywKICAgICAgICAgQWxsQ1NTUnVsZXMgICAg
ICAgICA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMgfCBFbXB0eUNTU1J1bGVzLAogICAgIH07Ci0gICAg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKLSAg
ICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNv
bnN0IEVsZW1lbnQqLCBQc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRF
bXB0eUNTU1J1bGVzKTsKKyAgICBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+IHN0eWxl
UnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9
IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOworICAgIFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxl
Pj4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCosIFBzZXVkb0lkLCB1
bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwogCiAgICAgYm9v
bCBoYXNTZWxlY3RvckZvcklkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAgICBib29sIGhh
c1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNl
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAppbmRl
eCA2NjcwNTQ3ZTRkZS4uZThiYjI5YzRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBSZWZQdHI8UnVs
ZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gcnVsZVNldCA9IFJ1bGVTZXQ6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBydWxlU2V0
LT5hZGRSdWxlKCpydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tp
XS5zZWxlY3Rvckxpc3RJbmRleCk7CisgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoKnJ1bGVzW2ld
LnN0eWxlUnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0
SW5kZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJ1bGVTZXQ7
CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0
PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAg
ICAgIGF1dG8mIHJ1bGVTZXQgPSBtYXRjaEVsZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAg
ICAgICAgIGlmICghcnVsZVNldCkKICAgICAgICAgICAgICAgICBydWxlU2V0ID0gUnVsZVNldDo6
Y3JlYXRlKCk7Ci0gICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJlLnJ1bGUsIGZl
YXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CisgICAgICAg
ICAgICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJlLnN0eWxlUnVsZSwgZmVhdHVyZS5zZWxlY3Rv
ckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgICAgIGlmIChmZWF0
dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblNl
bGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uYXBwZW5kKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0
b3IpOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386560</attachid>
            <date>2019-12-31 06:12:23 -0800</date>
            <delta_ts>2019-12-31 08:15:17 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylerule-const-5.patch</filename>
            <type>text/plain</type>
            <size>28403</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZjkxNzk3YzBmMy4uMDQ4ZGNjMGFhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOS0xMi0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3R5bGVSdWxlIGFjY2Vzc29yIGluIFJ1bGVEYXRhIHNob3VsZCByZXR1cm4g
YSBjb25zdCByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEl0IGlzIGN1cnJlbnRseSBhIG5vbi1jb25zdCBwb2ludGVyLgorCisgICAgICAg
IFRoaXMgbGVhZHMgdG8gU3R5bGVSdWxlIGJlaW5nIGNvbnN0IGluIG1hbnkgb3RoZXIgcGxhY2Vz
IHRvby4KKworICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlcmVmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2U6OmRlcmVmKTogRGVsZXRlZC4KKworICAgICAgICBNYWtlIGRlcmVmIGNvbnN0LCBtYXRjaGlu
ZyBSZWZDb3VudGVkIGFuZCBhbGxvd2luZyBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPgorICAgICAg
ICAKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9y
Lmg6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1
bGVJblNoZWV0cyk6CisgICAgICAgICogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oOgor
ICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnN0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0b3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpydWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNl
dDo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpldmFs
dXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVs
ZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVsZUlmTmVlZGVkKToKKyAgICAgICAgKiBz
dHlsZS9SdWxlU2V0Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VSdWxl
U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyk6CisKIDIwMTktMTItMzEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBSVEMgVlRCIGRlY29kZXJzIGluIEdQVVByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCA3ZmUwN2NjZTdlMy4uNTYyZDNlOGMzYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWY8U3R5bGVSdWxl
QmFzZT4gY29weSgpIGNvbnN0OwogCi0gICAgdm9pZCBkZXJlZigpCisgICAgdm9pZCBkZXJlZigp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAgICAgICAgICBkZXN0
cm95KCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcykuZGVz
dHJveSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxlUnVsZXNX
aXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0gICAgQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRT
ZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICBDb21waWxlZFNlbGVjdG9y
JiBjb21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQogICAgICAgICAgICAgbV9jb21w
aWxlZFNlbGVjdG9ycyA9IG1ha2VVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPihtX3NlbGVj
dG9yTGlzdC5saXN0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9D
b21waWxlZFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rv
ci5oCmluZGV4IDdlYTQ4NTBiNmU5Li5jNjE0OTUwNTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvQ29tcGlsZWRTZWxlY3Rvci5oCkBAIC0zMiwzMiArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHsKLXB1YmxpYzoKLSAg
ICBlbnVtIFN0YXR1cyB7Ci0gICAgICAgIE5vdENvbXBpbGVkLAotICAgICAgICBDYW5ub3RDb21w
aWxlLAotICAgICAgICBTaW1wbGVTZWxlY3RvckNoZWNrZXIsCi0gICAgICAgIFNlbGVjdG9yQ2hl
Y2tlcldpdGhDaGVja2luZ0NvbnRleHQKLSAgICB9OwotCi0gICAgU2VsZWN0b3JDb21waWxhdGlv
blN0YXR1cygpCi0gICAgICAgIDogbV9zdGF0dXMoTm90Q29tcGlsZWQpCi0gICAgeyB9Ci0KLSAg
ICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzKFN0YXR1cyBzdGF0dXMpCi0gICAgICAgIDogbV9z
dGF0dXMoc3RhdHVzKQotICAgIHsgfQotCi0gICAgb3BlcmF0b3IgU3RhdHVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXM7IH0KLQotcHJpdmF0ZToKLSAgICBTdGF0dXMgbV9zdGF0dXM7CitlbnVt
IGNsYXNzIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgeworICAgIE5vdENvbXBpbGVkLAorICAg
IENhbm5vdENvbXBpbGUsCisgICAgU2ltcGxlU2VsZWN0b3JDaGVja2VyLAorICAgIFNlbGVjdG9y
Q2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQKIH07CiAKIHN0cnVjdCBDb21waWxlZFNlbGVjdG9y
IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgU2VsZWN0b3JDb21w
aWxhdGlvblN0YXR1cyBzdGF0dXM7CisgICAgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBzdGF0
dXMgeyBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpOb3RDb21waWxlZCB9OwogICAgIEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPENTU1NlbGVjdG9yUHRyVGFnPiBjb2RlUmVmOwogI2lmIGRl
ZmluZWQoQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcpICYmIENTU19TRUxFQ1RPUl9KSVRfUFJP
RklMSU5HCiAgICAgdW5zaWduZWQgdXNlQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuaAppbmRleCAwZGJmODI2NjQ4MC4uODQ2OGVkNjE3NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuaApAQCAtNTIsMjMgKzUyLDIwIEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFNl
bGVjdG9yRGF0YSB7CiAgICAgICAgIFNlbGVjdG9yRGF0YShjb25zdCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IpCiAgICAgICAgICAgICA6IHNlbGVjdG9yKHNlbGVjdG9yKQotI2lmIEVOQUJMRShDU1Nf
U0VMRUNUT1JfSklUKSAmJiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORwotICAgICAgICAgICAg
LCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCgwKQotI2VuZGlmCiAgICAgICAgIHsKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKICNpZiBFTkFCTEUo
Q1NTX1NFTEVDVE9SX0pJVCkKICAgICAgICAgbXV0YWJsZSBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxDU1NTZWxlY3RvclB0clRhZz4gY29tcGlsZWRTZWxlY3RvckNvZGVSZWY7Ci0gICAgICAg
IG11dGFibGUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBjb21waWxhdGlvblN0YXR1czsKKyAg
ICAgICAgbXV0YWJsZSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIGNvbXBpbGF0aW9uU3RhdHVz
IHsgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQgfTsKICNpZiBDU1NfU0VM
RUNUT1JfSklUX1BST0ZJTElORwogICAgICAgICB+U2VsZWN0b3JEYXRhKCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKGNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKQogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJTZWxlY3RvckRhdGEgY29tcGls
ZWQgc2VsZWN0b3IgJWQgXCIlc1wiXG4iLCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCwgc2Vs
ZWN0b3ItPnNlbGVjdG9yVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9Ci0gICAgICAg
IG11dGFibGUgdW5zaWduZWQgbV9jb21waWxlZFNlbGVjdG9yVXNlQ291bnQ7CisgICAgICAgIG11
dGFibGUgdW5zaWduZWQgbV9jb21waWxlZFNlbGVjdG9yVXNlQ291bnQgeyAwIH07CiAgICAgICAg
IHZvaWQgY29tcGlsZWRTZWxlY3RvclVzZWQoKSBjb25zdCB7IG1fY29tcGlsZWRTZWxlY3RvclVz
ZUNvdW50Kys7IH0KICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDA4ODhkMTIyNThiLi45
OTkwOTEyNzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAt
MTI2MSwxMCArMTI2MSw4IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0
eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1Byb3BlcnR5T3ZlcnJpZGVNCiBzdGF0aWMgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCiB7CiAgICAgYXV0byBzdHls
ZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwotICAgIGZvciAoYXV0byYgbWF0
Y2hlZFJ1bGUgOiBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5zdHlsZVJ1bGVzRm9yRWxlbWVudCgm
ZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpKSB7Ci0gICAgICAgIGlmIChtYXRjaGVkUnVsZS0+aXNT
dHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGlj
dChzdGF0aWNfcG9pbnRlcl9jYXN0PFN0eWxlUnVsZT4obWF0Y2hlZFJ1bGUpLT5wcm9wZXJ0aWVz
KCkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogZWxlbWVudC5zdHlsZVJl
c29sdmVyKCkuc3R5bGVSdWxlc0ZvckVsZW1lbnQoJmVsZW1lbnQsIHJ1bGVzVG9JbmNsdWRlKSkK
KyAgICAgICAgc3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KG1hdGNoZWRSdWxlLT5w
cm9wZXJ0aWVzKCkpOwogICAgIAogICAgIHJldHVybiBzdHlsZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
NGZkYTIyNDZkNzguLjI5MzBiNDVmOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtOTQ2LDcgKzk0Niw3IEBA
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
UnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBFbGVtZW50JiBlbGVtZW50KQorUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShjb25zdCBTdHlsZVJ1
bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTk3OCw3ICs5NzgsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKAogICAgIHJldHVybiBp
bnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JS
dWxlKHJ1bGUsIG51bGxwdHIpIDogbnVsbHB0cjsKIH0KIAotUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVu
dCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpidWls
ZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVS
dWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVt
ZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5oCmluZGV4IDY3NDJkZGYyYzQ3Li5mYTFkNjcxZGQ4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMTQ1
LDkgKzE0NSw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogY3JlYXRlSW5z
cGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvY3VtZW50Jik7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0
KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwogCi0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0
eWxlUnVsZSosIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoY29uc3QgU3R5
bGVSdWxlKiwgU3R5bGU6OlJlc29sdmVyJiwgRWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1
bGUqKTsKLSAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmLCBQc2V1ZG9JZCk7
CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxl
TWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8
Y29uc3QgU3R5bGVSdWxlPj4mLCBTdHlsZTo6UmVzb2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9i
amVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDkwN2I4NzgwYjY3Li4x
YTFhZjFlMGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGNvbnN0IE1hdGNoUmVzdWx0JiBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6bWF0Y2hSZXN1bHQoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3VsdDsKIH0K
IAotY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgRWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxl
UnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hlZFJ1bGVMaXN0KCkgY29uc3QKIHsK
ICAgICBBU1NFUlQobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1
bGVzKTsKICAgICByZXR1cm4gbV9tYXRjaGVkUnVsZUxpc3Q7CkBAIC0xOTMsMTIgKzE5MywxMiBA
QCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJh
dGlvbk9yaWdpbiBkZWNsYXJhdGlvbk9yaQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
aWYgKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcykgewot
ICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3QuYXBwZW5kKG1hdGNoZWRSdWxlLnJ1bGVEYXRh
LT5ydWxlKCkpOworICAgICAgICAgICAgbV9tYXRjaGVkUnVsZUxpc3QuYXBwZW5kKCZtYXRjaGVk
UnVsZS5ydWxlRGF0YS0+c3R5bGVSdWxlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyh7Ci0gICAgICAgICAgICAmbWF0
Y2hlZFJ1bGUucnVsZURhdGEtPnJ1bGUoKS0+cHJvcGVydGllcygpLAorICAgICAgICAgICAgJm1h
dGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVzKCksCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURhdGEtPmxpbmtNYXRjaFR5
cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVs
ZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0VHlwZSgpKSwKICAgICAgICAgICAgIG1hdGNoZWRSdWxl
LnN0eWxlU2NvcGVPcmRpbmFsCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5saW5lIGJvb2wgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgdW5z
aWduZWQKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAgICBhdXRvJiBj
b21waWxlZFNlbGVjdG9yID0gcnVsZURhdGEucnVsZSgpLT5jb21waWxlZFNlbGVjdG9yRm9yTGlz
dEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpOworICAgIGF1dG8mIGNvbXBpbGVk
U2VsZWN0b3IgPSBydWxlRGF0YS5jb21waWxlZFNlbGVjdG9yKCk7CiAgICAgdm9pZCogY29tcGls
ZWRTZWxlY3RvckNoZWNrZXIgPSBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CiAgICAgaWYgKCFjb21waWxlZFNlbGVjdG9yQ2hlY2tlciAmJiBjb21w
aWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpOb3RDb21w
aWxlZCkgewogICAgICAgICBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9IFNlbGVjdG9yQ29tcGls
ZXI6OmNvbXBpbGVTZWxlY3RvcihydWxlRGF0YS5zZWxlY3RvcigpLCBTZWxlY3RvckNvbXBpbGVy
OjpTZWxlY3RvckNvbnRleHQ6OlJ1bGVDb2xsZWN0b3IsIGNvbXBpbGVkU2VsZWN0b3IuY29kZVJl
Zik7CkBAIC01MzMsMTIgKzUzMywxMiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZQogICAgICAg
ICBpZiAobV9zZWxlY3RvckZpbHRlciAmJiBtX3NlbGVjdG9yRmlsdGVyLT5mYXN0UmVqZWN0U2Vs
ZWN0b3IocnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcygpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRh
LnJ1bGUoKTsKKyAgICAgICAgYXV0byYgcnVsZSA9IHJ1bGVEYXRhLnN0eWxlUnVsZSgpOwogCiAg
ICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGln
bm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgIC8vIE5vdGUgdGhhdCBpZiB3
ZSBnZXQgbnVsbCBiYWNrIGhlcmUsIGl0IG1lYW5zIHdlIGhhdmUgYSBydWxlIHdpdGggZGVmZXJy
ZWQgcHJvcGVydGllcywKICAgICAgICAgLy8gYW5kIHRoYXQgbWVhbnMgd2UgYWx3YXlzIGhhdmUg
dG8gY29uc2lkZXIgaXQuCi0gICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJvcGVydGll
cyA9IHJ1bGUtPnByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCk7CisgICAgICAgIGNv
bnN0IFN0eWxlUHJvcGVydGllcyogcHJvcGVydGllcyA9IHJ1bGUucHJvcGVydGllc1dpdGhvdXRE
ZWZlcnJlZFBhcnNpbmcoKTsKICAgICAgICAgaWYgKHByb3BlcnRpZXMgJiYgcHJvcGVydGllcy0+
aXNFbXB0eSgpICYmICFtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVzKQogICAgICAgICAgICAgY29u
dGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCmlu
ZGV4IDNiMjc1M2M3MTg5Li5iYjNhZGRiYjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CiAKICAgICBjb25zdCBNYXRj
aFJlc3VsdCYgbWF0Y2hSZXN1bHQoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBjb25zdDsKIAogICAgIHZv
aWQgY2xlYXJNYXRjaGVkUnVsZXMoKTsKIApAQCAtMTcwLDcgKzE3MCw3IEBAIHByaXZhdGU6CiAg
ICAgc2l6ZV90IG1fbWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4IHsgMCB9OwogCiAgICAgLy8gT3V0
cHV0LgotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gbV9tYXRjaGVkUnVsZUxpc3Q7Cisg
ICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBtX21hdGNoZWRSdWxlTGlzdDsKICAg
ICBib29sIG1fZGlkTWF0Y2hVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIHsgZmFsc2UgfTsKICAg
ICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBSZWxhdGlvbnMgbV9zdHlsZVJlbGF0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKaW5k
ZXggZjNkNTFjOGM4YzQuLmVhMGJiZjQ1MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdFNjb3BlV3JhcHBlcnMoU2NvcGUmIHN0eWxlU2Nv
cGUpCiAgICAgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxlU2NvcGUuYWN0aXZlU3R5
bGVTaGVldHMoKSk7CiB9CiAKLUNTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6
Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhTdHlsZVJ1bGUqIHJ1bGUpCitDU1NTdHlsZVJ1bGUq
IEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMoY29uc3Qg
U3R5bGVSdWxlKiBydWxlKQogewogICAgIHJldHVybiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVy
TWFwLmdldChydWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3Bl
Y3RvckNTU09NV3JhcHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09N
V3JhcHBlcnMuaAppbmRleCAyMzBlNWUxMzlhNy4uZjJmZmViOWUxNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0luc3BlY3RvckNTU09NV3JhcHBlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyB7CiBwdWJsaWM6CiAgICAgLy8gV0FSTklORy4g
VGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3IgYWxsIHN0eWxlIHJ1bGVzIGFu
ZCBjYWNoZSB0aGVtIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBtZW1vcnkgY29zdC4KICAgICAv
LyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24ndCB1c2UgZm9yIGFueSByZWd1
bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxlKiBnZXRXcmFwcGVyRm9yUnVs
ZUluU2hlZXRzKFN0eWxlUnVsZSopOworICAgIENTU1N0eWxlUnVsZSogZ2V0V3JhcHBlckZvclJ1
bGVJblNoZWV0cyhjb25zdCBTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGNvbGxlY3RGcm9tU3R5bGVT
aGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQqKTsKICAgICB2b2lkIGNvbGxlY3REb2N1bWVudFdy
YXBwZXJzKEV4dGVuc2lvblN0eWxlU2hlZXRzJik7CiAgICAgdm9pZCBjb2xsZWN0U2NvcGVXcmFw
cGVycyhTY29wZSYpOwpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVj
dEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYpOwog
ICAgIHZvaWQgbWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4+Jik7CiAKLSAgICBIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+PiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOworICAgIEhhc2hNYXA8Y29u
c3QgU3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4+IG1fc3R5bGVSdWxlVG9DU1NPTVdy
YXBwZXJNYXA7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fc3R5bGVTaGVl
dENTU09NV3JhcHBlclNldDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcAppbmRleCA2
YTMwMWRmOGYyNi4uN2I5YWRlZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5jcHAKQEAg
LTE1OSw4ICsxNTksOCBAQCBzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRl
cm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZQogICAgIHJldHVybiBQcm9w
ZXJ0eVdoaXRlbGlzdE5vbmU7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1
bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1
bnNpZ25lZCBwb3NpdGlvbikKLSAgICA6IG1fcnVsZShydWxlKQorUnVsZURhdGE6OlJ1bGVEYXRh
KGNvbnN0IFN0eWxlUnVsZSYgc3R5bGVSdWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNp
Z25lZCBzZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCisgICAgOiBtX3N0eWxl
UnVsZSgmc3R5bGVSdWxlKQogICAgICwgbV9zZWxlY3RvckluZGV4KHNlbGVjdG9ySW5kZXgpCiAg
ICAgLCBtX3NlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9yTGlzdEluZGV4KQogICAgICwgbV9wb3Np
dGlvbihwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCmluZGV4IGEzYTYwMTAyZWU1Li5i
ZWYwN2YxY2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCkBAIC00NywxMSArNDcsMTcgQEAg
Y2xhc3MgUnVsZURhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhp
bXVtU2VsZWN0b3JDb21wb25lbnRDb3VudCA9IDgxOTI7CiAKLSAgICBSdWxlRGF0YShTdHlsZVJ1
bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwg
dW5zaWduZWQgcG9zaXRpb24pOworICAgIFJ1bGVEYXRhKGNvbnN0IFN0eWxlUnVsZSYsIHVuc2ln
bmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNpZ25lZCBw
b3NpdGlvbik7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3J1bGUuZ2V0
KCk7IH0KLSAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3J1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3RvckluZGV4KTsgfQorCisg
ICAgY29uc3QgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiAqbV9zdHlsZVJ1
bGU7IH0KKworICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvckF0KG1fc2VsZWN0b3JJbmRleCk7
IH0KKyNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKKyAgICBDb21waWxlZFNlbGVjdG9yJiBj
b21waWxlZFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1bGUtPmNvbXBpbGVkU2Vs
ZWN0b3JGb3JMaXN0SW5kZXgobV9zZWxlY3Rvckxpc3RJbmRleCk7IH0KKyNlbmRpZgorICAgIAog
ICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ySW5k
ZXg7IH0KICAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZWN0b3JMaXN0SW5kZXg7IH0KIApAQCAtNjgsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaXNhYmxlU2VsZWN0b3JGaWx0ZXJpbmcoKSB7IG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRp
Zmllckhhc2hlc1swXSA9IDA7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U3R5bGVSdWxlPiBt
X3J1bGU7CisgICAgUmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4gbV9zdHlsZVJ1bGU7CiAgICAgdW5z
aWduZWQgbV9zZWxlY3RvckluZGV4IDogMTY7CiAgICAgdW5zaWduZWQgbV9zZWxlY3Rvckxpc3RJ
bmRleCA6IDE2OwogICAgIC8vIFRoaXMgbnVtYmVyIHdhcyBwaWNrZWQgZmFpcmx5IGFyYml0cmFy
aWx5LiBXZSBjYW4gcHJvYmFibHkgbG93ZXIgaXQgaWYgd2UgbmVlZCB0by4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCAxMTUzOGI5YjJhMS4uOTM2ZTZiYjg4MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKQEAgLTU1LDYgKzU1LDE1IEBAIHN0YXRpYyBi
b29sIGlzU2libGluZ09yU3ViamVjdChNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50KQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorUnVsZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRh
JiBydWxlRGF0YSwgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQsIGNvbnN0IENT
U1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvcikKKyAgICA6IHN0eWxlUnVsZSgmcnVsZURh
dGEuc3R5bGVSdWxlKCkpCisgICAgLCBzZWxlY3RvckluZGV4KHJ1bGVEYXRhLnNlbGVjdG9ySW5k
ZXgoKSkKKyAgICAsIHNlbGVjdG9yTGlzdEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCkpCisgICAgLCBtYXRjaEVsZW1lbnQobWF0Y2hFbGVtZW50KQorICAgICwgaW52YWxpZGF0aW9u
U2VsZWN0b3IoaW52YWxpZGF0aW9uU2VsZWN0b3IpCit7Cit9CisKIE1hdGNoRWxlbWVudCBSdWxl
RmVhdHVyZVNldDo6Y29tcHV0ZU5leHRNYXRjaEVsZW1lbnQoTWF0Y2hFbGVtZW50IG1hdGNoRWxl
bWVudCwgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uVHlwZSByZWxhdGlvbikKIHsKICAgICBpZiAoaXNT
aWJsaW5nT3JTdWJqZWN0KG1hdGNoRWxlbWVudCkpIHsKQEAgLTE2OSwxNCArMTc4LDE0IEBAIHZv
aWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEpCiAgICAgU2VsZWN0b3JGZWF0dXJlcyBzZWxlY3RvckZlYXR1cmVzOwogICAgIHJlY3Vyc2l2
ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKHNlbGVjdG9yRmVhdHVyZXMsICpydWxlRGF0
YS5zZWxlY3RvcigpKTsKICAgICBpZiAoc2VsZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0
b3IpCi0gICAgICAgIHNpYmxpbmdSdWxlcy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVs
ZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCkpKTsKKyAgICAgICAgc2libGluZ1J1bGVzLmFwcGVuZCh7IHJ1bGVEYXRhIH0pOwogICAgIGlm
IChydWxlRGF0YS5jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkKLSAgICAgICAg
dW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgp
LCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkp
KTsKKyAgICAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQoeyBydWxlRGF0YSB9KTsK
IAogICAgIGZvciAoYXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2Vz
KSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVs
ZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmQoeyBydWxlRGF0YSwgbmFtZUFuZE1hdGNoLnNlY29uZCB9KTsKICAgICAgICAgaWYgKG5h
bWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xh
c3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CiAgICAgfQpAQCAtMTg1
LDcgKzE5NCw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBS
dWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0b3JB
bmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rvci0+
YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgW10gewog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVs
ZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmQoeyBydWxlRGF0YSwgbWF0Y2hFbGVtZW50LCBzZWxlY3RvciB9KTsKICAgICAgICAg
aWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRy
aWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVh
dHVyZS5oCmluZGV4IDc2NDU5OTkxNDM5Li4zNzc2Yjc4OWI3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRmVhdHVyZS5oCkBAIC00MCwxOSArNDAsMTMgQEAgZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQg
eyBTdWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9yLCBEaXJlY3RTaWJsaW5nLCBJbmRpcmVjdFNpYmwK
IGNvbnN0ZXhwciB1bnNpZ25lZCBtYXRjaEVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihNYXRjaEVsZW1lbnQ6Okhvc3QpICsgMTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKLSAg
ICBSdWxlRmVhdHVyZShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVu
c2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxl
bWVudCA9IFdURjo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVj
dG9yID0gbnVsbHB0cikKLSAgICAgICAgOiBydWxlKHJ1bGUpCi0gICAgICAgICwgc2VsZWN0b3JJ
bmRleChzZWxlY3RvckluZGV4KQotICAgICAgICAsIHNlbGVjdG9yTGlzdEluZGV4KHNlbGVjdG9y
TGlzdEluZGV4KQotICAgICAgICAsIG1hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpCi0gICAgICAg
ICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uU2VsZWN0b3IpCi0gICAgewotICAg
IH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGU7CisgICAgUnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEm
LCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+ID0gV1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3Rv
ciogaW52YWxpZGF0aW9uU2VsZWN0b3IgPSBudWxscHRyKTsKKworICAgIFJlZlB0cjxjb25zdCBT
dHlsZVJ1bGU+IHN0eWxlUnVsZTsKICAgICB1bnNpZ25lZCBzZWxlY3RvckluZGV4OwogICAgIHVu
c2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4OwotICAgIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0
Y2hFbGVtZW50OwotICAgIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvcjsK
KyAgICBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCB7IH07CisgICAgY29uc3Qg
Q1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yIHsgbnVsbHB0ciB9OwogfTsKIAogc3Ry
dWN0IFJ1bGVGZWF0dXJlU2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKaW5kZXggNWM2ZDBh
MWRhN2YuLmY0NmMzYjI4ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcApAQCAtODgsOSAr
ODgsOSBAQCBzdGF0aWMgYm9vbCBpc0hvc3RTZWxlY3Rvck1hdGNoaW5nSW5TaGFkb3dUcmVlKGNv
bnN0IENTU1NlbGVjdG9yJiBzdGFydFNlbGVjdG9yKQogICAgIHJldHVybiBsZWZ0bW9zdFNlbGVj
dG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBsZWZ0bW9zdFNlbGVj
dG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0Owog
fQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlJiBydWxlLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgTWVkaWFRdWVyeUNvbGxlY3Rv
ciogbWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBTdHls
ZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlz
dEluZGV4LCBNZWRpYVF1ZXJ5Q29sbGVjdG9yKiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQogewotICAg
IFJ1bGVEYXRhIHJ1bGVEYXRhKCZydWxlLCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxpc3RJbmRl
eCwgbV9ydWxlQ291bnQrKyk7CisgICAgUnVsZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3JJ
bmRleCwgc2VsZWN0b3JMaXN0SW5kZXgsIG1fcnVsZUNvdW50KyspOwogCiAgICAgbV9mZWF0dXJl
cy5jb2xsZWN0RmVhdHVyZXMocnVsZURhdGEpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBS
dWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0LCBNZWRp
YVF1ZXJ5Q29sbGVjdG9yJgogICAgICAgICBzaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIFJ1bGVT
ZXQ6OmFkZFN0eWxlUnVsZShTdHlsZVJ1bGUmIHJ1bGUsIE1lZGlhUXVlcnlDb2xsZWN0b3ImIG1l
ZGlhUXVlcnlDb2xsZWN0b3IpCit2b2lkIFJ1bGVTZXQ6OmFkZFN0eWxlUnVsZShjb25zdCBTdHls
ZVJ1bGUmIHJ1bGUsIE1lZGlhUXVlcnlDb2xsZWN0b3ImIG1lZGlhUXVlcnlDb2xsZWN0b3IpCiB7
CiAgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXggPSAwOwogICAgIGZvciAoc2l6ZV90IHNl
bGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4
ID0gcnVsZS5zZWxlY3Rvckxpc3QoKS5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJ
bmRleCkpCkBAIC00MjUsNyArNDI1LDcgQEAgT3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFs
dWF0aW9uQ2hhbmdlcz4gUnVsZVNldDo6ZXZhbHV0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnUKICAgICAg
ICAgYXV0byBydWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byog
ZmVhdHVyZVZlY3RvciA6IGNvbGxlY3RlZENoYW5nZXMucnVsZUZlYXR1cmVzKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiAqZmVhdHVyZVZlY3RvcikKLSAgICAgICAgICAgICAg
ICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJlLnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwg
ZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CisgICAgICAgICAgICAgICAgcnVsZVNldC0+YWRk
UnVsZSgqZmVhdHVyZS5zdHlsZVJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5z
ZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJ1bGVTZXQ7CiAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgUnVsZVNldDo6
TWVkaWFRdWVyeUNvbGxlY3Rvcjo6YWRkUnVsZUlmTmVlZGVkKGNvbnN0IFJ1bGVEYXRhJiBydWxl
RGF0YSkKIAogICAgIGF1dG8mIGNvbnRleHQgPSBkeW5hbWljQ29udGV4dFN0YWNrLmxhc3QoKTsK
ICAgICBjb250ZXh0LmFmZmVjdGVkUnVsZVBvc2l0aW9ucy5hcHBlbmQocnVsZURhdGEucG9zaXRp
b24oKSk7Ci0gICAgY29udGV4dC5ydWxlRmVhdHVyZXMuYXBwZW5kKHsgcnVsZURhdGEucnVsZSgp
LCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkg
fSk7CisgICAgY29udGV4dC5ydWxlRmVhdHVyZXMuYXBwZW5kKHsgcnVsZURhdGEgfSk7CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4IGU2OTJiNjcwMzZhLi5lOGFiNjZmNjgwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImKTsKICAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50
cyYsIE1lZGlhUXVlcnlTZXQqIHNoZWV0UXVlcnksIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Im
LCBTdHlsZTo6UmVzb2x2ZXImKTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSYs
IE1lZGlhUXVlcnlDb2xsZWN0b3ImKTsKLSAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlJiwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIE1lZGlhUXVl
cnlDb2xsZWN0b3IqID0gbnVsbHB0cik7CisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoY29uc3QgU3R5
bGVSdWxlJiwgTWVkaWFRdWVyeUNvbGxlY3RvciYpOworICAgIHZvaWQgYWRkUnVsZShjb25zdCBT
dHlsZVJ1bGUmLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJ
bmRleCwgTWVkaWFRdWVyeUNvbGxlY3RvciogPSBudWxscHRyKTsKICAgICB2b2lkIGFkZFBhZ2VS
dWxlKFN0eWxlUnVsZVBhZ2UmKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChjb25zdCBBdG9tU3Ry
aW5nJiBrZXksIEF0b21SdWxlTWFwJiwgY29uc3QgUnVsZURhdGEmKTsKICAgICB2b2lkIHNocmlu
a1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY1NTcy
NGJmOWQxLi5jZWI0ODU3MWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTQ4MywxMiArNDgzLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVz
b2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlCiAgICAgcmV0
dXJuIHN0eWxlOwogfQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFJlc29sdmVyOjpzdHls
ZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1Rv
SW5jbHVkZSkKK1ZlY3RvcjxSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPj4gUmVzb2x2ZXI6OnN0eWxl
UnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9J
bmNsdWRlKQogewogICAgIHJldHVybiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50
LCBQc2V1ZG9JZDo6Tm9uZSwgcnVsZXNUb0luY2x1ZGUpOwogfQogCi1WZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZT4+IFJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUp
CitWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+IFJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1
bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCwg
dW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCiB7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICBy
ZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCmluZGV4IDY2MDM1MzNh
YTRhLi5jNzcwNDMxM2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApAQCAt
MTIxLDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgQWxsQnV0RW1wdHlDU1NSdWxlcyA9IFVB
QW5kVXNlckNTU1J1bGVzIHwgQXV0aG9yQ1NTUnVsZXMsCiAgICAgICAgIEFsbENTU1J1bGVzICAg
ICAgICAgPSBBbGxCdXRFbXB0eUNTU1J1bGVzIHwgRW1wdHlDU1NSdWxlcywKICAgICB9OwotICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gc3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCosIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChj
b25zdCBFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0
RW1wdHlDU1NSdWxlcyk7CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiBzdHls
ZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUg
PSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKKyAgICBWZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVs
ZT4+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCBQc2V1ZG9JZCwg
dW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKIAogICAgIGJv
b2wgaGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBo
YXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5k
ZXggNjY3MDU0N2U0ZGUuLmU4YmIyOWM0ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgUmVmUHRyPFJ1
bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcnVsZVNl
dC0+YWRkUnVsZSgqcnVsZXNbaV0ucnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNb
aV0uc2VsZWN0b3JMaXN0SW5kZXgpOworICAgICAgICBydWxlU2V0LT5hZGRSdWxlKCpydWxlc1tp
XS5zdHlsZVJ1bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ldLnNlbGVjdG9yTGlz
dEluZGV4KTsKICAgICBydWxlU2V0LT5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiBydWxlU2V0
OwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNl
dD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgICAg
ICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07CiAgICAg
ICAgICAgICBpZiAoIXJ1bGVTZXQpCiAgICAgICAgICAgICAgICAgcnVsZVNldCA9IFJ1bGVTZXQ6
OmNyZWF0ZSgpOwotICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZSgqZmVhdHVyZS5ydWxlLCBm
ZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOworICAgICAg
ICAgICAgcnVsZVNldC0+YWRkUnVsZSgqZmVhdHVyZS5zdHlsZVJ1bGUsIGZlYXR1cmUuc2VsZWN0
b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25T
ZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVj
dG9yKTsKICAgICAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>