<?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>180468</bug_id>
          
          <creation_ts>2017-12-06 05:05:00 -0800</creation_ts>
          <short_desc>Move security origin filtering for getMatchedCSSRules out of StyleResolver</short_desc>
          <delta_ts>2017-12-07 15:59:22 -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>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378584</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-12-06 05:05:00 -0800</bug_when>
    <thetext>The code is overly invasive and blocks optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378585</commentid>
    <comment_count>1</comment_count>
      <attachid>328563</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-12-06 05:16:05 -0800</bug_when>
    <thetext>Created attachment 328563
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379182</commentid>
    <comment_count>2</comment_count>
      <attachid>328563</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-07 11:25:40 -0800</bug_when>
    <thetext>Comment on attachment 328563
patch

Rejecting attachment 328563 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 328563, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ing rebase:
:040000 040000 4246628642abddd6ef6e3d219a204e62cf169ca2 a5732ba6c92a2d2df6765b81c8c1e1bc798e207c M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/5531894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379333</commentid>
    <comment_count>3</comment_count>
      <attachid>328563</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-07 15:58:43 -0800</bug_when>
    <thetext>Comment on attachment 328563
patch

Clearing flags on attachment: 328563

Committed r225650: &lt;https://trac.webkit.org/changeset/225650&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379334</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-07 15:58:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379335</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-07 15:59:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/35922094&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328563</attachid>
            <date>2017-12-06 05:16:05 -0800</date>
            <delta_ts>2017-12-07 15:58:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylerule-document-security-origin.patch</filename>
            <type>text/plain</type>
            <size>29329</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTU3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTEyLTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNlY3VyaXR5IG9yaWdp
biBmaWx0ZXJpbmcgZm9yIGdldE1hdGNoZWRDU1NSdWxlcyBvdXQgb2YgU3R5bGVSZXNvbHZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5vbi1z
dGFuZGFyZCBnZXRNYXRjaGVkQ1NTUnVsZXMgQVBJIHNob3VsZCBub3QgcmV0dXJuIHJ1bGVzIGZy
b20gc3R5bGVzaGVldHMgaW4gZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbnMuCisgICAgICAgIFRv
IGltcGxlbWVudCB0aGlzIHdlIGN1cnJlbnRseSBoYXZlIGxvdHMgb2YgaW52YXNpdmUgY29kZSBp
biBTdHlsZVJlc29sdmVyLCBSdWxlU2V0cyBhbmQgRWxlbWVudFJ1bGVDb2xsZWN0b3IKKyAgICAg
ICAgYmFzaWNhbGx5IHBhc3NpbmcgYXJvdW5kIGEgYml0LiBUaGlzIGFsc28gbWFrZXMgUnVsZVNl
dHMgZG9jdW1lbnQgc3BlY2lmaWMgYmxvY2tpbmcgb3B0aW1pemF0aW9ucy4KKworICAgICAgICBU
aGlzIHBhdGNoZXMgcmVwbGFjZXMgdGhlIG1lY2hhbmlzbSB3aXRoIGEgYml0IGluIFN0eWxlUnVs
ZSB3aGljaCBpcyBtdWNoIHNpbXBsZXIuCisKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlUnVsZVNldCk6CisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0
b3I6OnNldFBzZXVkb1N0eWxlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6c2V0U2FtZU9yaWdpbk9ubHkpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9S
dWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVj
dEZlYXR1cmVzKToKKyAgICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZSk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UnVsZURhdGE6OlJ1bGVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVTZXQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkQ2hp
bGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRTdHlsZVJ1bGUpOgorICAgICAgICAqIGNz
cy9SdWxlU2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0YTo6bGlua01hdGNoVHlwZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0YTo6aGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgICogY3NzL1N0eWxl
UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OlN0eWxlUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZUZvclNwbGl0dGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVj
dG9yQ29tcG9uZW50Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlQmFzZTo6aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiBjb25zdCk6CisKKyAgICAg
ICAgICAgIEFkZCBhIGJpdC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQpOgor
CisgICAgICAgICAgICBJbmNsdWRlIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gYml0IHRvIHBh
cnNlciBjb250ZXh0LiBUaGlzIG1lYW5zIHRoYXQgYSBzdHlsZXNoZWV0IGRhdGEgc3RydWN0dXJl
cworICAgICAgICAgICAgY2FuJ3QgYmUgc2hhcmVkIGJldHdlZW4gYSBjb250ZXh0cyB3aGVyZSB0
aGlzIGRpZmZlcnMuIFRoaXMgbGlrZWx5IHZlcnkgcmFyZSBpbiBwcmFjdGljZS4KKworICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVTdHlsZVJ1
bGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHls
ZUZyb21SdWxlcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMgY29uc3QpOgorCisgICAgICAgICAg
ICBGaWx0ZXIgb3V0IHJ1bGVzIGZyb20gZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbiBhZnRlciBn
ZXR0aW5nIHRoZW0gZnJvbSBzdHlsZSByZXNvbHZlci4KKwogMjAxNy0xMi0wNiAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3NdIElu
dHJvZHVjZSBOaWNvc2lhOjpQYWludGluZ0NvbnRleHQsIGFkZCBDYWlybyBpbXBsZW1lbnRhdGlv
bgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAkocmV2aXNpb24g
MjI1NTIxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U2V0PiBtYWtlUnVsZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHJ1bGVTZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0ucnVsZSwgcnVs
ZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA/
IFJ1bGVIYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIDogUnVsZUhhc05vU3BlY2lhbFN0YXRlKTsK
KyAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3Rv
ckluZGV4KTsKICAgICBydWxlU2V0LT5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiBydWxlU2V0
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CShyZXZpc2lvbiAyMjU1MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsMTAgKzQ3Niw2IEBAIHZvaWQgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGkKICAgICAgICAgaWYgKHByb3BlcnRpZXMgJiYg
cHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBGSVhNRTogRXhwb3NpbmcgdGhl
IG5vbi1zdGFuZGFyZCBnZXRNYXRjaGVkQ1NTUnVsZXMgQVBJIHRvIHdlYiBpcyB0aGUgb25seSBy
ZWFzb24gdGhpcyBpcyBuZWVkZWQuCi0gICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYmICFy
dWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQogICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eTsKICAgICAgICAgaWYgKHJ1bGVNYXRj
aGVzKHJ1bGVEYXRhLCBzcGVjaWZpY2l0eSkpCiAgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZShy
dWxlRGF0YSwgc3BlY2lmaWNpdHksIG1hdGNoUmVxdWVzdC5zdHlsZVNjb3BlT3JkaW5hbCwgcnVs
ZVJhbmdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5o
CShyZXZpc2lvbiAyMjU1MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsg
fQogICAgIHZvaWQgc2V0UHNldWRvU3R5bGVSZXF1ZXN0KGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVz
dCYgcmVxdWVzdCkgeyBtX3BzZXVkb1N0eWxlUmVxdWVzdCA9IHJlcXVlc3Q7IH0KLSAgICB2b2lk
IHNldFNhbWVPcmlnaW5Pbmx5KGJvb2wgZikgeyBtX3NhbWVPcmlnaW5Pbmx5ID0gZjsgfSAKICAg
ICB2b2lkIHNldE1lZGl1bShjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0pIHsgbV9p
c1ByaW50U3R5bGUgPSBtZWRpdW0tPm1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoInByaW50Iik7IH0K
IAogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CkBAIC05Nyw3
ICs5Niw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNQcmludFN0eWxlIHsgZmFsc2UgfTsK
ICAgICBQc2V1ZG9TdHlsZVJlcXVlc3QgbV9wc2V1ZG9TdHlsZVJlcXVlc3QgeyBOT1BTRVVETyB9
OwotICAgIGJvb2wgbV9zYW1lT3JpZ2luT25seSB7IGZhbHNlIH07CiAgICAgU2VsZWN0b3JDaGVj
a2VyOjpNb2RlIG1fbW9kZSB7IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUg
fTsKICAgICBib29sIG1faXNNYXRjaGluZ1Nsb3R0ZWRQc2V1ZG9FbGVtZW50cyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3MgeyBmYWxzZSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCShyZXZpc2lvbiAyMjU1MjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNCArOTYs
MTQgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbgogICAgIFNlbGVj
dG9yRmVhdHVyZXMgc2VsZWN0b3JGZWF0dXJlczsKICAgICByZWN1cnNpdmVseUNvbGxlY3RGZWF0
dXJlc0Zyb21TZWxlY3RvcihzZWxlY3RvckZlYXR1cmVzLCAqcnVsZURhdGEuc2VsZWN0b3IoKSk7
CiAgICAgaWYgKHNlbGVjdG9yRmVhdHVyZXMuaGFzU2libGluZ1NlbGVjdG9yKQotICAgICAgICBz
aWJsaW5nUnVsZXMuYXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEu
c2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsK
KyAgICAgICAgc2libGluZ1J1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkpOwogICAgIGlmIChydWxlRGF0YS5jb250YWluc1Vu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkKLSAgICAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxl
cy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3Rvcklu
ZGV4KCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICB1
bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkpOwogICAgIGZvciAoYXV0byYgY2xhc3NOYW1lIDog
c2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzTWF0Y2hpbmdBbmNlc3RvcnMpIHsKICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBhbmNlc3RvckNsYXNzUnVsZXMuZW5zdXJlKGNsYXNzTmFtZSwgW10gewog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFwcGVu
ZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwg
cnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1
bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkpOwogICAgIH0KICAgICBmb3IgKGF1dG8qIHNlbGVjdG9y
IDogc2VsZWN0b3JGZWF0dXJlcy5hdHRyaWJ1dGVTZWxlY3RvcnNNYXRjaGluZ0FuY2VzdG9ycykg
ewogICAgICAgICAvLyBIYXNoaW5nIGJ5IGF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSBtYWtl
cyB0aGlzIEhUTUwgc3BlY2lmaWMuCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QXR0cmlidXRlUnVsZXM+KCk7CiAgICAgICAgIH0pOwogICAgICAgICBhdXRvJiBydWxl
cyA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBydWxlcy5mZWF0dXJlcy5h
cHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4
KCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBydWxl
cy5mZWF0dXJlcy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5z
ZWxlY3RvckluZGV4KCkpKTsKICAgICAgICAgLy8gRGVkdXBsaWNhdGUgc2VsZWN0b3JzLgogICAg
ICAgICBydWxlcy5zZWxlY3RvcnMuYWRkKG1ha2VBdHRyaWJ1dGVTZWxlY3RvcktleSgqc2VsZWN0
b3IpLCBzZWxlY3Rvcik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmgJKHJl
dmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTMgQEAgY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBTdHls
ZVJ1bGU7CiAKIHN0cnVjdCBSdWxlRmVhdHVyZSB7Ci0gICAgUnVsZUZlYXR1cmUoU3R5bGVSdWxl
KiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlP
cmlnaW4pCisgICAgUnVsZUZlYXR1cmUoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3Rv
ckluZGV4KQogICAgICAgICA6IHJ1bGUocnVsZSkKICAgICAgICAgLCBzZWxlY3RvckluZGV4KHNl
bGVjdG9ySW5kZXgpCi0gICAgICAgICwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbihoYXNEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKSAKLSAgICB7IAorICAgIHsKICAgICB9CiAgICAgU3R5bGVSdWxl
KiBydWxlOwogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXg7Ci0gICAgYm9vbCBoYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luOwogfTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDEwICsxNDgsOSBAQCBzdGF0aWMg
aW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlCiAgICAgcmV0dXJuIFByb3BlcnR5V2hp
dGVsaXN0Tm9uZTsKIH0KIAotUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVsZSogcnVsZSwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24sIEFkZFJ1bGVGbGFncyBhZGRS
dWxlRmxhZ3MpCitSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBz
ZWxlY3RvckluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKICAgICA6IG1fcnVsZShydWxlKQogICAg
ICwgbV9zZWxlY3RvckluZGV4KHNlbGVjdG9ySW5kZXgpCi0gICAgLCBtX2hhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4oYWRkUnVsZUZsYWdzICYgUnVsZUhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4p
CiAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICwgbV9tYXRjaEJhc2VkT25SdWxlSGFz
aChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29tcHV0ZU1hdGNoQmFzZWRPblJ1bGVIYXNoKCpzZWxl
Y3RvcigpKSkpCiAgICAgLCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudChzZWxlY3RvckNhbk1hdGNo
UHNldWRvRWxlbWVudCgqc2VsZWN0b3IoKSkpCkBAIC0yMDIsOSArMjAxLDkgQEAgc3RhdGljIGJv
b2wgaXNIb3N0U2VsZWN0b3JNYXRjaGluZ0luU2hhZAogICAgIHJldHVybiBsZWZ0bW9zdFNlbGVj
dG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBsZWZ0bW9zdFNlbGVj
dG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0Owog
fQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQordm9pZCBSdWxlU2V0OjphZGRS
dWxlKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCkKIHsKLSAgICBSdWxl
RGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBtX3J1bGVDb3VudCsrLCBhZGRSdWxl
RmxhZ3MpOworICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIG1fcnVs
ZUNvdW50KyspOwogICAgIG1fZmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzKHJ1bGVEYXRhKTsKIAog
ICAgIHVuc2lnbmVkIGNsYXNzQnVja2V0U2l6ZSA9IDA7CkBAIC0zNjAsMTcgKzM1OSwxNyBAQCB2
b2lkIFJ1bGVTZXQ6OmFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UqCiAgICAgbV9wYWdlUnVsZXMu
YXBwZW5kKHJ1bGUpOwogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyLCBib29sIGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4sIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJl
ZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykKK3ZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxl
cyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNvbnN0IE1lZGlh
UXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGJvb2wgaXNJ
bml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsKICAgICBmb3IgKGF1dG8m
IHJ1bGUgOiBydWxlcykgewogICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigqcnVsZSkpCi0gICAg
ICAgICAgICBhZGRTdHlsZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKSwgYWRk
UnVsZUZsYWdzKTsKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShkb3duY2FzdDxTdHlsZVJ1bGU+
KHJ1bGUuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlUGFnZT4oKnJ1bGUp
KQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4ocnVsZS5n
ZXQoKSkpOwogICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBtZWRpYVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVNZWRpYT4oKnJ1
bGUpOwogICAgICAgICAgICAgaWYgKCghbWVkaWFSdWxlLm1lZGlhUXVlcmllcygpIHx8IG1lZGl1
bS5ldmFsdWF0ZSgqbWVkaWFSdWxlLm1lZGlhUXVlcmllcygpLCByZXNvbHZlcikpKQotICAgICAg
ICAgICAgICAgIGFkZENoaWxkUnVsZXMobWVkaWFSdWxlLmNoaWxkUnVsZXMoKSwgbWVkaXVtLCBy
ZXNvbHZlciwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICBhZGRD
aGlsZFJ1bGVzKG1lZGlhUnVsZS5jaGlsZFJ1bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGlzSW5p
dGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzPFN0eWxlUnVsZUZvbnRGYWNlPigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKICAgICAgICAgICAg
IC8vIEFkZCB0aGlzIGZvbnQgZmFjZSB0byBvdXIgc2V0LgogICAgICAgICAgICAgcmVzb2x2ZXIt
PmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkuYWRkRm9udEZhY2VSdWxlKGRvd25jYXN0PFN0eWxl
UnVsZUZvbnRGYWNlPigqcnVsZS5nZXQoKSksIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUpOwpAQCAtMzc4LDcgKzM3Nyw3IEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRS
dWxlcyhjb25zdCBWZWN0b3IKICAgICAgICAgfSBlbHNlIGlmIChpczxTdHlsZVJ1bGVLZXlmcmFt
ZXM+KCpydWxlKSAmJiByZXNvbHZlcikKICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlmcmFt
ZVN0eWxlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpKTsKICAgICAgICAgZWxz
ZSBpZiAoaXM8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKSAmJiBkb3duY2FzdDxTdHlsZVJ1bGVT
dXBwb3J0cz4oKnJ1bGUpLmNvbmRpdGlvbklzU3VwcG9ydGVkKCkpCi0gICAgICAgICAgICBhZGRD
aGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY2hpbGRSdWxlcygp
LCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBpc0luaXRpYXRp
bmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAg
ICAgYWRkQ2hpbGRSdWxlcyhkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1bGUpLmNoaWxk
UnVsZXMoKSwgbWVkaXVtLCByZXNvbHZlciwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50
U2hhZG93VHJlZSk7CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKICAgICAgICAg
ZWxzZSBpZiAoaXM8U3R5bGVSdWxlVmlld3BvcnQ+KCpydWxlKSAmJiByZXNvbHZlcikgewogICAg
ICAgICAgICAgcmVzb2x2ZXItPnZpZXdwb3J0U3R5bGVSZXNvbHZlcigpLT5hZGRWaWV3cG9ydFJ1
bGUoZG93bmNhc3Q8U3R5bGVSdWxlVmlld3BvcnQ+KHJ1bGUuZ2V0KCkpKTsKQEAgLTM5NCwyMiAr
MzkzLDE5IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGUKICAgICAg
ICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KCpydWxlLT5zdHlsZVNoZWV0KCksIG1lZGl1bSwgcmVz
b2x2ZXIpOwogICAgIH0KIAotICAgIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJl
c29sdmVyICYmIHJlc29sdmVyLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dChzaGVldC5iYXNlVVJMKCkpOwotICAgIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MgPSBzdGF0
aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KChoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID8gUnVsZUhh
c0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gOiAwKSk7Ci0KICAgICAvLyBGSVhNRTogU2tpcCBDb250
ZW50IFNlY3VyaXR5IFBvbGljeSBjaGVjayB3aGVuIHN0eWxlc2hlZXQgaXMgaW4gYSB1c2VyIGFn
ZW50IHNoYWRvdyB0cmVlLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjY2Mz4uCiAgICAgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlID0gZmFsc2U7Ci0gICAgYWRkQ2hpbGRSdWxlcyhzaGVldC5jaGlsZFJ1
bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGlzSW5p
dGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUsIGFkZFJ1bGVGbGFncyk7CisgICAg
YWRkQ2hpbGRSdWxlcyhzaGVldC5jaGlsZFJ1bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGlzSW5p
dGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgaWYgKG1fYXV0b1No
cmlua1RvRml0RW5hYmxlZCkKICAgICAgICAgc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBSdWxl
U2V0OjphZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZs
YWdzKQordm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlKQogewogICAg
IGZvciAoc2l6ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5k
OyBzZWxlY3RvckluZGV4ID0gcnVsZS0+c2VsZWN0b3JMaXN0KCkuaW5kZXhPZk5leHRTZWxlY3Rv
ckFmdGVyKHNlbGVjdG9ySW5kZXgpKQotICAgICAgICBhZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5k
ZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIGFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCk7
CiB9CiAKIGJvb2wgUnVsZVNldDo6aGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkocmV2aXNpb24gMjI1NTIxKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIEFkZFJ1bGVGbGFncyB7Ci0gICAgUnVsZUhhc05vU3Bl
Y2lhbFN0YXRlICAgICAgICAgPSAwLAotICAgIFJ1bGVIYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID0gMSwKLX07Ci0gICAgCiBlbnVtIFByb3BlcnR5V2hpdGVsaXN0VHlwZSB7CiAgICAgUHJvcGVy
dHlXaGl0ZWxpc3ROb25lICAgPSAwLAogICAgIFByb3BlcnR5V2hpdGVsaXN0TWFya2VyLApAQCAt
NjQsNyArNTksNyBAQCBjbGFzcyBSdWxlRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50ID0gODE5MjsKIAotICAgIFJ1
bGVEYXRhKFN0eWxlUnVsZSosIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHBvc2l0
aW9uLCBBZGRSdWxlRmxhZ3MpOworICAgIFJ1bGVEYXRhKFN0eWxlUnVsZSosIHVuc2lnbmVkIHNl
bGVjdG9ySW5kZXgsIHVuc2lnbmVkIHBvc2l0aW9uKTsKIAogICAgIHVuc2lnbmVkIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogICAgIFN0eWxlUnVsZSogcnVsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcnVsZS5nZXQoKTsgfQpAQCAtNzUsNyArNzAsNiBAQCBwdWJsaWM6CiAg
ICAgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggbWF0Y2hCYXNlZE9uUnVsZUhhc2goKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxNYXRjaEJhc2VkT25SdWxlSGFzaD4obV9tYXRjaEJhc2VkT25SdWxl
SGFzaCk7IH0KICAgICBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yOyB9CiAgICAg
dW5zaWduZWQgbGlua01hdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua01hdGNoVHlwZTsg
fQotICAgIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbjsgfQogICAgIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBw
cm9wZXJ0eVdoaXRlbGlzdFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcm9wZXJ0
eVdoaXRlbGlzdFR5cGU+KG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBlKTsgfQogICAgIGNvbnN0IFNl
bGVjdG9yRmlsdGVyOjpIYXNoZXMmIGRlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMo
KSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXM7IH0K
IApAQCAtMTAyLDcgKzk2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWZQdHI8U3R5bGVS
dWxlPiBtX3J1bGU7CiAgICAgdW5zaWduZWQgbV9zZWxlY3RvckluZGV4IDogMTM7Ci0gICAgdW5z
aWduZWQgbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIDogMTsKICAgICAvLyBUaGlzIG51bWJl
ciB3YXMgcGlja2VkIGZhaXJseSBhcmJpdHJhcmlseS4gV2UgY2FuIHByb2JhYmx5IGxvd2VyIGl0
IGlmIHdlIG5lZWQgdG8uCiAgICAgLy8gU29tZSBzaW1wbGUgdGVzdGluZyBzaG93ZWQgPDEwMCww
MDAgUnVsZURhdGEncyBvbiBsYXJnZSBzaXRlcy4KICAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uIDog
MTg7CkBAIC0xNTgsOCArMTUxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRSdWxlc0Zyb21T
aGVldChTdHlsZVNoZWV0Q29udGVudHMmLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5
bGVSZXNvbHZlciogPSAwKTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSosIEFk
ZFJ1bGVGbGFncyk7Ci0gICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSosIHVuc2lnbmVkIHNlbGVj
dG9ySW5kZXgsIEFkZFJ1bGVGbGFncyk7CisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxl
Kik7CisgICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSosIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgp
OwogICAgIHZvaWQgYWRkUGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSopOwogICAgIHZvaWQgYWRkVG9S
dWxlU2V0KGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1bGVE
YXRhJik7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwpAQCAtMTg4LDcgKzE4MSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUo
KSBjb25zdCB7IHJldHVybiBtX2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRv
d1RyZWU7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRp
dW0sIFN0eWxlUmVzb2x2ZXIqLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wg
aXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgQWRkUnVsZUZsYWdzKTsK
KyAgICB2b2lkIGFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2ZXIqLCBi
b29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgQXRv
bVJ1bGVNYXAgbV9pZFJ1bGVzOwogICAgIEF0b21SdWxlTWFwIG1fY2xhc3NSdWxlczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
MiwxMiArMTEzMiw4IEBAIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gU3R5bGVSZXNvbHZlcjoK
ICAgICAgICAgICAgIGNvbGxlY3Rvci5tYXRjaFVzZXJSdWxlcyhydWxlc1RvSW5jbHVkZSAmIEVt
cHR5Q1NTUnVsZXMpOwogICAgIH0KIAotICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxl
cyAmJiAocnVsZXNUb0luY2x1ZGUgJiBBdXRob3JDU1NSdWxlcykpIHsKLSAgICAgICAgY29sbGVj
dG9yLnNldFNhbWVPcmlnaW5Pbmx5KCEocnVsZXNUb0luY2x1ZGUgJiBDcm9zc09yaWdpbkNTU1J1
bGVzKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMuCisg
ICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzICYmIChydWxlc1RvSW5jbHVkZSAmIEF1
dGhvckNTU1J1bGVzKSkKICAgICAgICAgY29sbGVjdG9yLm1hdGNoQXV0aG9yUnVsZXMocnVsZXNU
b0luY2x1ZGUgJiBFbXB0eUNTU1J1bGVzKTsKLSAgICB9CiAKICAgICByZXR1cm4gY29sbGVjdG9y
Lm1hdGNoZWRSdWxlTGlzdCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CShyZXZpc2lvbiAyMjU1MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsOCArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBVQUFu
ZFVzZXJDU1NSdWxlcyAgID0gMSA8PCAxLAogICAgICAgICBBdXRob3JDU1NSdWxlcyAgICAgID0g
MSA8PCAyLAogICAgICAgICBFbXB0eUNTU1J1bGVzICAgICAgID0gMSA8PCAzLAotICAgICAgICBD
cm9zc09yaWdpbkNTU1J1bGVzID0gMSA8PCA0LAotICAgICAgICBBbGxCdXRFbXB0eUNTU1J1bGVz
ID0gVUFBbmRVc2VyQ1NTUnVsZXMgfCBBdXRob3JDU1NSdWxlcyB8IENyb3NzT3JpZ2luQ1NTUnVs
ZXMsCisgICAgICAgIEFsbEJ1dEVtcHR5Q1NTUnVsZXMgPSBVQUFuZFVzZXJDU1NSdWxlcyB8IEF1
dGhvckNTU1J1bGVzLAogICAgICAgICBBbGxDU1NSdWxlcyAgICAgICAgID0gQWxsQnV0RW1wdHlD
U1NSdWxlcyB8IEVtcHR5Q1NTUnVsZXMsCiAgICAgfTsKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxl
UnVsZT4+IHN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCB1bnNpZ25lZCBydWxl
c1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsOCArMTgxLDggQEAgdW5zaWduZWQgU3R5bGVS
dWxlOjphdmVyYWdlU2l6ZUluQnl0ZXMoKQogICAgIHJldHVybiBzaXplb2YoU3R5bGVSdWxlKSAr
IHNpemVvZihDU1NTZWxlY3RvcikgKyBTdHlsZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRl
cygpOwogfQogCi1TdHlsZVJ1bGU6OlN0eWxlUnVsZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4m
JiBwcm9wZXJ0aWVzKQotICAgIDogU3R5bGVSdWxlQmFzZShTdHlsZSkKK1N0eWxlUnVsZTo6U3R5
bGVSdWxlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYmIHByb3BlcnRpZXMsIGJvb2wgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbikKKyAgICA6IFN0eWxlUnVsZUJhc2UoU3R5bGUsIGhhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4pCiAgICAgLCBtX3Byb3BlcnRpZXMoV1RGTW92ZShwcm9wZXJ0aWVz
KSkKIHsKIH0KQEAgLTIxMCwxNCArMjEwLDE0IEBAIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIFN0
eWxlUnVsZTo6bXV0YWIKICAgICByZXR1cm4gZG93bmNhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4obV9wcm9wZXJ0aWVzLmdldCgpKTsKIH0KIAotUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpj
cmVhdGUoY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mIHNlbGVjdG9ycywgUmVmPFN0
eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQorUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpj
cmVhdGVGb3JTcGxpdHRpbmcoY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mIHNlbGVj
dG9ycywgUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzLCBib29sIGhhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
IXNlbGVjdG9ycy5pc0VtcHR5KCkpOwogICAgIENTU1NlbGVjdG9yKiBzZWxlY3Rvckxpc3RBcnJh
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NT
ZWxlY3RvcikgKiBzZWxlY3RvcnMuc2l6ZSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNlbGVjdG9ycy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3IChOb3ROdWxsLCAmc2VsZWN0
b3JMaXN0QXJyYXlbaV0pIENTU1NlbGVjdG9yKCpzZWxlY3RvcnMuYXQoaSkpOwogICAgIHNlbGVj
dG9yTGlzdEFycmF5W3NlbGVjdG9ycy5zaXplKCkgLSAxXS5zZXRMYXN0SW5TZWxlY3Rvckxpc3Qo
KTsKLSAgICBhdXRvIHJ1bGUgPSBTdHlsZVJ1bGU6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnRpZXMp
KTsKKyAgICBhdXRvIHJ1bGUgPSBTdHlsZVJ1bGU6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnRpZXMp
LCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKTsKICAgICBydWxlLmdldCgpLnBhcnNlckFkb3B0
U2VsZWN0b3JBcnJheShzZWxlY3Rvckxpc3RBcnJheSk7CiAgICAgcmV0dXJuIHJ1bGU7CiB9CkBA
IC0yMzUsNyArMjM1LDcgQEAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNw
bAogICAgICAgICAgICAgY29tcG9uZW50c0luVGhpc1NlbGVjdG9yLmFwcGVuZChjb21wb25lbnQp
OwogCiAgICAgICAgIGlmIChjb21wb25lbnRzSW5UaGlzU2VsZWN0b3Iuc2l6ZSgpICsgY29tcG9u
ZW50c1NpbmNlTGFzdFNwbGl0LnNpemUoKSA+IG1heENvdW50ICYmICFjb21wb25lbnRzU2luY2VM
YXN0U3BsaXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBydWxlcy5hcHBlbmQoY3JlYXRlKGNv
bXBvbmVudHNTaW5jZUxhc3RTcGxpdCwgY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMmPihwcm9w
ZXJ0aWVzKCkpKSk7CisgICAgICAgICAgICBydWxlcy5hcHBlbmQoY3JlYXRlRm9yU3BsaXR0aW5n
KGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdCwgY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMmPihw
cm9wZXJ0aWVzKCkpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICAgICAgICAg
IGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdC5jbGVhcigpOwogICAgICAgICB9CiAKQEAgLTI0Myw3
ICsyNDMsNyBAQCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUnVsZTo6c3BsCiAgICAg
fQogCiAgICAgaWYgKCFjb21wb25lbnRzU2luY2VMYXN0U3BsaXQuaXNFbXB0eSgpKQotICAgICAg
ICBydWxlcy5hcHBlbmQoY3JlYXRlKGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdCwgY29uc3RfY2Fz
dDxTdHlsZVByb3BlcnRpZXMmPihwcm9wZXJ0aWVzKCkpKSk7CisgICAgICAgIHJ1bGVzLmFwcGVu
ZChjcmVhdGVGb3JTcGxpdHRpbmcoY29tcG9uZW50c1NpbmNlTGFzdFNwbGl0LCBjb25zdF9jYXN0
PFN0eWxlUHJvcGVydGllcyY+KHByb3BlcnRpZXMoKSksIGhhc0RvY3VtZW50U2VjdXJpdHlPcmln
aW4oKSkpOwogCiAgICAgcmV0dXJuIHJ1bGVzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUu
aAkocmV2aXNpb24gMjI1NTIxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NiwzMSArODYsMzkgQEAgcHVibGljOgogICAgIFJlZlB0cjxDU1NS
dWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSkKKyAgICBTdHlsZVJ1bGVCYXNl
KFR5cGUgdHlwZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZmFsc2UpCiAgICAg
ICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgIHsgfQorICAgICAgICAsIG1faGFzRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbihoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICB9CiAK
ICAgICBTdHlsZVJ1bGVCYXNlKGNvbnN0IFN0eWxlUnVsZUJhc2UmIG8pCiAgICAgICAgIDogV1RG
OjpSZWZDb3VudGVkQmFzZSgpCiAgICAgICAgICwgbV90eXBlKG8ubV90eXBlKQotICAgICAgICB7
IH0KKyAgICAgICAgLCBtX2hhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oby5tX2hhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4pCisgICAgeworICAgIH0KIAogICAgIH5TdHlsZVJ1bGVCYXNlKCkgPSBk
ZWZhdWx0OwogCisgICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luOyB9CisKIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCiAgICAgUmVmUHRyPENTU1J1bGU+IGNy
ZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFy
ZW50UnVsZSkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OworICAgIC8vIFRoaXMg
aXMgb25seSBuZWVkZWQgdG8gc3VwcG9ydCBnZXRNYXRjaGVkQ1NTUnVsZXMuCisgICAgdW5zaWdu
ZWQgbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIDogMTsKIH07CiAKIGNsYXNzIFN0eWxlUnVs
ZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlKFJlZjxTdHls
ZVByb3BlcnRpZXNCYXNlPiYmIHByb3BlcnRpZXMpCisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGU+
IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiBwcm9wZXJ0aWVzLCBib29sIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGUoV1RGTW92ZShwcm9wZXJ0aWVzKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGUoV1RGTW92ZShwcm9wZXJ0aWVzKSwgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbikpOwogICAgIH0KICAgICAKICAgICB+U3R5bGVSdWxlKCk7CkBAIC0xMjEsNiArMTI5
LDggQEAgcHVibGljOgogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0
aWVzKCk7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcm9wZXJ0aWVzV2l0aG91dERlZmVy
cmVkUGFyc2luZygpIGNvbnN0OwogCisgICAgdXNpbmcgU3R5bGVSdWxlQmFzZTo6aGFzRG9jdW1l
bnRTZWN1cml0eU9yaWdpbjsKKwogICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9ycykgeyBt
X3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7IH0KICAgICB2b2lk
IHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBt
X3NlbGVjdG9yTGlzdCA9IFdURk1vdmUoc2VsZWN0b3JzKTsgfQogICAgIHZvaWQgcGFyc2VyQWRv
cHRTZWxlY3RvckFycmF5KENTU1NlbGVjdG9yKiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3Qu
YWRvcHRTZWxlY3RvckFycmF5KHNlbGVjdG9ycyk7IH0KQEAgLTEzMiwxMCArMTQyLDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgYXZlcmFnZVNpemVJbkJ5dGVzKCk7CiAKIHByaXZh
dGU6Ci0gICAgU3R5bGVSdWxlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYmKTsKKyAgICBTdHls
ZVJ1bGUoUmVmPFN0eWxlUHJvcGVydGllc0Jhc2U+JiYsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbik7CiAgICAgU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZSYpOwogCi0gICAgc3RhdGlj
IFJlZjxTdHlsZVJ1bGU+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiYs
IFJlZjxTdHlsZVByb3BlcnRpZXM+JiYpOworICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlPiBjcmVh
dGVGb3JTcGxpdHRpbmcoY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mLCBSZWY8U3R5
bGVQcm9wZXJ0aWVzPiYmLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOwogCiAgICAg
bXV0YWJsZSBSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4gbV9wcm9wZXJ0aWVzOwogICAgIENTU1Nl
bGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTIgKzcyLDEzIEBAIENT
U1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGEKICNlbmRpZgogfQogCi1DU1NQ
YXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCi0gICAgOiBiYXNlVVJMKGJhc2VV
UkwuaXNOdWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBiYXNlVVJMKQorQ1NTUGFyc2VyQ29u
dGV4dDo6Q1NTUGFyc2VyQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc2hl
ZXRCYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisgICAgOiBiYXNlVVJMKHNoZWV0QmFz
ZVVSTC5pc051bGwoKSA/IGRvY3VtZW50LmJhc2VVUkwoKSA6IHNoZWV0QmFzZVVSTCkKICAgICAs
IGNoYXJzZXQoY2hhcnNldCkKICAgICAsIG1vZGUoZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkgPyBI
VE1MUXVpcmtzTW9kZSA6IEhUTUxTdGFuZGFyZE1vZGUpCiAgICAgLCBpc0hUTUxEb2N1bWVudChk
b2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICwgY3NzR3JpZExheW91dEVuYWJsZWQoZG9j
dW1lbnQuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpKQorICAgICwgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QoYmFzZVVSTCkpCiB7
CiAgICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBkb2N1bWVudC5zZXR0aW5ncygpLm5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCk7CiAgICAgZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NN
b2RlID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZSgpOwpAQCAtMTExLDcgKzExMiw4IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiAKICAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgPT0gYi5z
cHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQKICAgICAgICAgJiYgYS5jb25zdGFudFByb3BlcnRp
ZXNFbmFibGVkID09IGIuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZAogICAgICAgICAmJiBhLmNv
bmljR3JhZGllbnRzRW5hYmxlZCA9PSBiLmNvbmljR3JhZGllbnRzRW5hYmxlZAotICAgICAgICAm
JiBhLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9PSBiLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxl
ZDsKKyAgICAgICAgJiYgYS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPT0gYi5kZWZlcnJlZENT
U1BhcnNlckVuYWJsZWQKKyAgICAgICAgJiYgYS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID09
IGIuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKIH0KIAogQ1NTUGFyc2VyOjpDU1NQYXJzZXIo
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAkocmV2aXNpb24gMjI1NTIxKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzM4LDE0ICs3MzgsMTQgQEAgUmVmUHRyPFN0eWxlUnVsZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZQogICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrQ29weSA9IGJsb2NrOwogICAgICAg
ICBibG9ja0NvcHkuY29uc3VtZVdoaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKCFibG9ja0NvcHku
YXRFbmQoKSkgewotICAgICAgICAgICAgcnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKGNyZWF0ZURl
ZmVycmVkU3R5bGVQcm9wZXJ0aWVzKGJsb2NrKSk7CisgICAgICAgICAgICBydWxlID0gU3R5bGVS
dWxlOjpjcmVhdGUoY3JlYXRlRGVmZXJyZWRTdHlsZVByb3BlcnRpZXMoYmxvY2spLCBtX2NvbnRl
eHQuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbik7CiAgICAgICAgICAgICBydWxlLT53cmFwcGVy
QWRvcHRTZWxlY3Rvckxpc3Qoc2VsZWN0b3JMaXN0KTsKICAgICAgICAgICAgIHJldHVybiBydWxl
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3VtZURlY2xhcmF0aW9uTGlzdChibG9jaywg
U3R5bGVSdWxlOjpTdHlsZSk7Ci0gICAgcnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKGNyZWF0ZVN0
eWxlUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fY29udGV4dC5tb2RlKSk7CisgICAg
cnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKGNyZWF0ZVN0eWxlUHJvcGVydGllcyhtX3BhcnNlZFBy
b3BlcnRpZXMsIG1fY29udGV4dC5tb2RlKSwgbV9jb250ZXh0Lmhhc0RvY3VtZW50U2VjdXJpdHlP
cmlnaW4pOwogICAgIHJ1bGUtPndyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChzZWxlY3Rvckxpc3Qp
OwogICAgIHJldHVybiBydWxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJNb2RlLmgJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDggQEAg
cHVibGljOgogICAgIGJvb2wgY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBjb25pY0dyYWRpZW50c0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgZGVmZXJy
ZWRDU1NQYXJzZXJFbmFibGVkIHsgZmFsc2UgfTsKKyAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVk
IHRvIHN1cHBvcnQgZ2V0TWF0Y2hlZENTU1J1bGVzLgorICAgIGJvb2wgaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiB7IGZhbHNlIH07CiAKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5n
JiB1cmwpIGNvbnN0CiAgICAgewpAQCAtMTQxLDcgKzE0Myw4IEBAIHN0cnVjdCBDU1NQYXJzZXJD
b250ZXh0SGFzaCB7CiAgICAgICAgICAgICAmIGtleS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJs
ZWQgICAgICAgICAgICAgICA8PCA3CiAgICAgICAgICAgICAmIGtleS5jb25pY0dyYWRpZW50c0Vu
YWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCA4CiAgICAgICAgICAgICAmIGtleS5kZWZlcnJl
ZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA5Ci0gICAgICAgICAgICAmIGtl
eS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMDsKKyAgICAg
ICAgICAgICYga2V5Lmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gICAgICAgICAgICAgICAgIDw8
IDEwCisgICAgICAgICAgICAmIGtleS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAxMTsKICAgICAgICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7CiAgICAg
ICAgIHJldHVybiBoYXNoOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2OSw3ICsxMjY5LDcgQEAgc3Rh
dGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZQogdm9pZCBFZGl0aW5nU3R5bGU6
Om1lcmdlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBSZWZQ
dHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVG
cm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAotICAgICAgICBTdHlsZVJlc29sdmVy
OjpBdXRob3JDU1NSdWxlcyB8IFN0eWxlUmVzb2x2ZXI6OkNyb3NzT3JpZ2luQ1NTUnVsZXMpOwor
ICAgICAgICBTdHlsZVJlc29sdmVyOjpBdXRob3JDU1NSdWxlcyk7CiAgICAgLy8gU3R5bGVzIGZy
b20gdGhlIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbiwgaGVsZCBpbiB0aGUgdmFyaWFibGUgInN0
eWxlIiwgdGFrZSBwcmVjZWRlbmNlIAogICAgIC8vIG92ZXIgdGhvc2UgZnJvbSBtYXRjaGVkIHJ1
bGVzLgogICAgIGlmIChtX211dGFibGVTdHlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHJldmlzaW9uIDIyNTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4Miw4ICsxNDgyLDYgQEAgUmVmUHRyPENTU1J1bGVM
aXN0PiBET01XaW5kb3c6OmdldE1hdGNoZQogICAgIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0g
U3R5bGVSZXNvbHZlcjo6QXV0aG9yQ1NTUnVsZXM7CiAgICAgaWYgKCFhdXRob3JPbmx5KQogICAg
ICAgICBydWxlc1RvSW5jbHVkZSB8PSBTdHlsZVJlc29sdmVyOjpVQUFuZFVzZXJDU1NSdWxlczsK
LSAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVk
Q1NTUnVsZXNEaXNhYmxlZCgpKQotICAgICAgICBydWxlc1RvSW5jbHVkZSB8PSBTdHlsZVJlc29s
dmVyOjpDcm9zc09yaWdpbkNTU1J1bGVzOwogCiAgICAgUHNldWRvSWQgcHNldWRvSWQgPSBDU1NT
ZWxlY3Rvcjo6cHNldWRvSWQocHNldWRvVHlwZSk7CiAKQEAgLTE0OTEsOSArMTQ4OSwxNyBAQCBS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlCiAgICAgaWYgKG1hdGNoZWRS
dWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgYm9vbCBhbGxv
d0Nyb3NzT3JpZ2luID0gbV9mcmFtZS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbkNoZWNrSW5HZXRN
YXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCgpOworCiAgICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0
PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKGF1dG8m
IHJ1bGUgOiBtYXRjaGVkUnVsZXMpCisgICAgZm9yIChhdXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVz
KSB7CisgICAgICAgIGlmICghYWxsb3dDcm9zc09yaWdpbiAmJiAhcnVsZS0+aGFzRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbigpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHJ1bGVMaXN0
LT5ydWxlcygpLmFwcGVuZChydWxlLT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7CisgICAgfQorCisg
ICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gcnVsZUxpc3Q7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>