<?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>19719</bug_id>
          
          <creation_ts>2008-06-22 19:14:22 -0700</creation_ts>
          <short_desc>Add an option to compare two profiles</short_desc>
          <delta_ts>2014-01-26 16:24:15 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>kmccullough</cc>
    
    <cc>rik</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>84106</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-06-22 19:14:22 -0700</bug_when>
    <thetext>The Inspector should have a way to compare two profiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85486</commentid>
    <comment_count>1</comment_count>
      <attachid>22162</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-08 14:20:59 -0700</bug_when>
    <thetext>Created attachment 22162
WIP Patch with conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85487</commentid>
    <comment_count>2</comment_count>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2008-07-08 14:25:04 -0700</bug_when>
    <thetext>rdar://problem/6061363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972238</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-26 12:35:02 -0800</bug_when>
    <thetext>It would be fun to try and fix the bitrot, but the UI doesn&apos;t exist any more :P A new bug will be filed when it&apos;s time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972271</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-26 16:24:15 -0800</bug_when>
    <thetext>We don&apos;t use the backend objects anymore either… we would do this on the frontend today.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22162</attachid>
            <date>2008-07-08 14:20:59 -0700</date>
            <delta_ts>2010-06-10 16:15:31 -0700</delta_ts>
            <desc>WIP Patch with conflicts</desc>
            <filename>CompareProfiles.patch</filename>
            <type>text/plain</type>
            <size>29525</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBiMTVjNTA4Li40MzdhODhmIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yODQsNiArMjg0LDcgQEAgX19aTkszS0pTN0pTVmFs
dWUxNXRvSW50MzJTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUVSYgogX19aTkszS0pTN0pTVmFsdWUx
NnRvVUludDMyU2xvd0Nhc2VFUE5TXzlFeGVjU3RhdGVFUmIKIF9fWk5LM0tKUzdKU1ZhbHVlN3Rv
RmxvYXRFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNLSlM3SlNWYWx1ZTl0b0ludGVnZXJFUE5TXzlF
eGVjU3RhdGVFCitfX1pOSzNLSlM3UHJvZmlsZTljb21wYXJlVG9FUEtTMF8KIF9fWk5LM0tKUzdV
U3RyaW5nMTBVVEY4U3RyaW5nRWIKIF9fWk5LM0tKUzdVU3RyaW5nMTR0b1N0cmljdFVJbnQzMkVQ
YgogX19aTkszS0pTN1VTdHJpbmc1YXNjaWlFdgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNw
cAppbmRleCA3N2FkYjdhLi44YjdmNmJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNw
cApAQCAtNDYsNiArNDYsMTMwIEBAIFByb2ZpbGU6OlByb2ZpbGUoY29uc3QgVVN0cmluZyYgdGl0
bGUpCiAgICAgLy8gRklYTUU6IFdoZW4gbXVsdGktdGhyZWFkaW5nIGlzIHN1cHBvcnRlZCB0aGlz
IHdpbGwgYmUgYSB2ZWN0b3IgYW5kIGNhbGxzCiAgICAgLy8gaW50byB0aGUgcHJvZmlsZXIgd2ls
bCBuZWVkIHRvIGtub3cgd2hpY2ggdGhyZWFkIGl0IGlzIGV4ZWN1dGluZyBvbi4KICAgICBtX2hl
YWQgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKENhbGxJZGVudGlmaWVyKCJUaHJlYWRfMSIsIDAsIDAp
LCAwLCAwKTsKKzw8PDw8PDwgVXBkYXRlZCB1cHN0cmVhbTpKYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlLmNwcAorPT09PT09PQorICAgIG1fY3VycmVudE5vZGUgPSBtX2hlYWQ7Cit9CisK
K3R5cGVkZWYgSGFzaE1hcDxDYWxsSWRlbnRpZmllciwgUmVmUHRyPFByb2ZpbGVOb2RlPiA+IFBy
b2ZpbGVOb2RlTWFwOworCitQcm9maWxlOjpQcm9maWxlKGNvbnN0IFByb2ZpbGUqIGZpcnN0LCBj
b25zdCBQcm9maWxlKiBzZWNvbmQpCisgICAgOiBtX3RpdGxlKGZpcnN0LT50aXRsZSgpKQorICAg
ICwgbV9vcmlnaW5hdGluZ0dsb2JhbEV4ZWMoMCkKKyAgICAsIG1fcGFnZUdyb3VwSWRlbnRpZmll
cigwKQorICAgICwgbV9zdG9wcGVkQ2FsbERlcHRoKDApCisgICAgLCBtX2N1cnJlbnROb2RlKDAp
CisgICAgLCBtX2NsaWVudCgwKQorICAgICwgbV9zdG9wcGVkUHJvZmlsaW5nKHRydWUpCit7Cisg
ICAgbV9oZWFkID0gQ29tcGFyZVByb2ZpbGVOb2RlOjpjcmVhdGUoZmlyc3QtPmNhbGxUcmVlKCks
IHNlY29uZC0+Y2FsbFRyZWUoKSwgMCwgMCk7CisKKyAgICBDb21wYXJlUHJvZmlsZU5vZGUqIGN1
cnJlbnROb2RlID0gc3RhdGljX2Nhc3Q8Q29tcGFyZVByb2ZpbGVOb2RlKj4obV9oZWFkLmdldCgp
KTsKKyAgICBQcm9maWxlTm9kZSogY3VycmVudEZpcnN0Tm9kZSA9IGZpcnN0LT5jYWxsVHJlZSgp
OworICAgIFByb2ZpbGVOb2RlKiBjdXJyZW50U2Vjb25kTm9kZSA9IHNlY29uZC0+Y2FsbFRyZWUo
KTsKKworICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgeworICAgICAgICBpZiAoY3VycmVudEZpcnN0
Tm9kZSAmJiAhY3VycmVudFNlY29uZE5vZGUpIHsKKyAgICAgICAgICAgIHNpemVfdCBjaGlsZHJl
bkxlbmd0aCA9IGN1cnJlbnRGaXJzdE5vZGUtPmNoaWxkcmVuKCkuc2l6ZSgpOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgUHJvZmlsZU5vZGUqIGZpcnN0Q2hpbGROb2RlID0gY3VycmVudEZpcnN0Tm9kZS0+
Y2hpbGRyZW4oKVtpXS5nZXQoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS0+YWRkQ2hp
bGQoQ29tcGFyZVByb2ZpbGVOb2RlOjpjcmVhdGUoZmlyc3RDaGlsZE5vZGUsIDAsIG1faGVhZC5n
ZXQoKSwgY3VycmVudE5vZGUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgh
Y3VycmVudEZpcnN0Tm9kZSAmJiBjdXJyZW50U2Vjb25kTm9kZSkgeworICAgICAgICAgICAgc2l6
ZV90IGNoaWxkcmVuTGVuZ3RoID0gY3VycmVudFNlY29uZE5vZGUtPmNoaWxkcmVuKCkuc2l6ZSgp
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICAgICAgUHJvZmlsZU5vZGUqIHNlY29uZENoaWxkTm9kZSA9IGN1cnJl
bnRTZWNvbmROb2RlLT5jaGlsZHJlbigpW2ldLmdldCgpOworICAgICAgICAgICAgICAgIGN1cnJl
bnROb2RlLT5hZGRDaGlsZChDb21wYXJlUHJvZmlsZU5vZGU6OmNyZWF0ZSgwLCBzZWNvbmRDaGls
ZE5vZGUsIG1faGVhZC5nZXQoKSwgY3VycmVudE5vZGUpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChjdXJyZW50Rmlyc3ROb2RlICYmIGN1cnJlbnRTZWNvbmROb2RlKSB7Cisg
ICAgICAgICAgICBQcm9maWxlTm9kZU1hcCBrbm93blNlY29uZE5vZGVzOworICAgICAgICAgICAg
c2l6ZV90IGNoaWxkcmVuTGVuZ3RoID0gY3VycmVudFNlY29uZE5vZGUtPmNoaWxkcmVuKCkuc2l6
ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgICAgUHJvZmlsZU5vZGUqIGNoaWxkTm9kZSA9IGN1cnJlbnRT
ZWNvbmROb2RlLT5jaGlsZHJlbigpW2ldLmdldCgpOworICAgICAgICAgICAgICAgIGtub3duU2Vj
b25kTm9kZXMuc2V0KGNoaWxkTm9kZS0+Y2FsbElkZW50aWZpZXIoKSwgY2hpbGROb2RlKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY2hpbGRyZW5MZW5ndGggPSBjdXJyZW50Rmlyc3RO
b2RlLT5jaGlsZHJlbigpLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2hpbGRyZW5MZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIFByb2ZpbGVOb2RlKiBm
aXJzdENoaWxkTm9kZSA9IGN1cnJlbnRGaXJzdE5vZGUtPmNoaWxkcmVuKClbaV0uZ2V0KCk7Cisg
ICAgICAgICAgICAgICAgUHJvZmlsZU5vZGUqIHNlY29uZENoaWxkTm9kZSA9IGtub3duU2Vjb25k
Tm9kZXMuZ2V0KGZpcnN0Q2hpbGROb2RlLT5jYWxsSWRlbnRpZmllcigpKS5nZXQoKTsKKyAgICAg
ICAgICAgICAgICBjdXJyZW50Tm9kZS0+YWRkQ2hpbGQoQ29tcGFyZVByb2ZpbGVOb2RlOjpjcmVh
dGUoZmlyc3RDaGlsZE5vZGUsIHNlY29uZENoaWxkTm9kZSwgbV9oZWFkLmdldCgpLCBjdXJyZW50
Tm9kZSkpOworICAgICAgICAgICAgICAgIGtub3duU2Vjb25kTm9kZXMucmVtb3ZlKGZpcnN0Q2hp
bGROb2RlLT5jYWxsSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
UHJvZmlsZU5vZGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGtub3duU2Vjb25kTm9kZXMuZW5k
KCk7CisgICAgICAgICAgICBmb3IgKFByb2ZpbGVOb2RlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGtub3duU2Vjb25kTm9kZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAg
ICAgIGN1cnJlbnROb2RlLT5hZGRDaGlsZChDb21wYXJlUHJvZmlsZU5vZGU6OmNyZWF0ZSgwLCBp
dC0+c2Vjb25kLmdldCgpLCBtX2hlYWQuZ2V0KCksIGN1cnJlbnROb2RlKSk7CisgICAgICAgIH0K
KworICAgICAgICBjdXJyZW50Tm9kZSA9IHN0YXRpY19jYXN0PENvbXBhcmVQcm9maWxlTm9kZSo+
KGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHROb2RlUHJlT3JkZXIoKSk7CisgICAgICAgIGN1cnJl
bnRGaXJzdE5vZGUgPSBjdXJyZW50Tm9kZSA/IGN1cnJlbnROb2RlLT5maXJzdE5vZGUoKSA6IDA7
CisgICAgICAgIGN1cnJlbnRTZWNvbmROb2RlID0gY3VycmVudE5vZGUgPyBjdXJyZW50Tm9kZS0+
c2Vjb25kTm9kZSgpIDogMDsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmls
ZTo6Y29tcGFyZVRvKGNvbnN0IFByb2ZpbGUqIHNlY29uZCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
c2Vjb25kKTsKKyAgICBpZiAoIXNlY29uZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IFByb2ZpbGU6OmNyZWF0ZSh0aGlzLCBzZWNvbmQpOworfQorCit2b2lkIFByb2ZpbGU6OnN0b3BQ
cm9maWxpbmcoKQoreworICAgIGZvckVhY2goJlByb2ZpbGVOb2RlOjpzdG9wUHJvZmlsaW5nKTsK
KyAgICByZW1vdmVQcm9maWxlU3RhcnQoKTsKKyAgICByZW1vdmVQcm9maWxlRW5kKCk7CisKKyAg
ICBBU1NFUlQobV9jdXJyZW50Tm9kZSk7CisKKyAgICAvLyBTZXQgdGhlIGN1cnJlbnQgbm9kZSB0
byB0aGUgcGFyZW50LCBiZWNhdXNlIHdlIGFyZSBpbiBhIGNhbGwgdGhhdAorICAgIC8vIHdpbGwg
bm90IGdldCBkaWRFeGVjdXRlIGNhbGwuCisgICAgbV9jdXJyZW50Tm9kZSA9IG1fY3VycmVudE5v
ZGUtPnBhcmVudCgpOworCisgICAgbV9zdG9wcGVkUHJvZmlsaW5nID0gdHJ1ZTsKK30KKworYm9v
bCBQcm9maWxlOjpkaWRGaW5pc2hBbGxFeGVjdXRpb24oKQoreworICAgIGlmICghbV9zdG9wcGVk
UHJvZmlsaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZG91YmxlIGhlYWRT
ZWxmVGltZSA9IG1faGVhZC0+c2VsZlRpbWUoKSkgeworICAgICAgICBSZWZQdHI8UHJvZmlsZU5v
ZGU+IGlkbGVOb2RlID0gUHJvZmlsZU5vZGU6OmNyZWF0ZShDYWxsSWRlbnRpZmllcihOb25KU0V4
ZWN1dGlvbiwgMCwgMCksIG1faGVhZC5nZXQoKSwgbV9oZWFkLmdldCgpKTsKKworICAgICAgICBp
ZGxlTm9kZS0+c2V0VG90YWxUaW1lKGhlYWRTZWxmVGltZSk7CisgICAgICAgIGlkbGVOb2RlLT5z
ZXRTZWxmVGltZShoZWFkU2VsZlRpbWUpOworICAgICAgICBpZGxlTm9kZS0+c2V0VmlzaWJsZSh0
cnVlKTsKKworICAgICAgICBtX2hlYWQtPnNldFNlbGZUaW1lKDAuMCk7CisgICAgICAgIG1faGVh
ZC0+YWRkQ2hpbGQoaWRsZU5vZGUucmVsZWFzZSgpKTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRO
b2RlID0gMDsKKyAgICBtX29yaWdpbmF0aW5nR2xvYmFsRXhlYyA9IDA7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKKy8vIFRoZSBjb25zb2xlLnByb2ZpbGUgdGhhdCBzdGFydGVkIHRoaXMgcHJvZmls
ZSB3aWxsIGJlIHRoZSBmaXJzdCBjaGlsZC4KK3ZvaWQgUHJvZmlsZTo6cmVtb3ZlUHJvZmlsZVN0
YXJ0KCkgeworICAgIFByb2ZpbGVOb2RlKiBjdXJyZW50Tm9kZSA9IDA7CisgICAgZm9yIChQcm9m
aWxlTm9kZSogbmV4dCA9IG1faGVhZC5nZXQoKTsgbmV4dDsgbmV4dCA9IG5leHQtPmZpcnN0Q2hp
bGQoKSkKKyAgICAgICAgY3VycmVudE5vZGUgPSBuZXh0OworCisgICAgaWYgKGN1cnJlbnROb2Rl
LT5jYWxsSWRlbnRpZmllcigpLm5hbWUgIT0gInByb2ZpbGUiKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBJbmNyZW1lbnQgbV9zdG9wcGVkQ2FsbERlcHRoIHRvIGFjY291bnQgZm9yIGRpZEV4
ZWN1dGUgbm90IGJlaW5nIGNhbGxlZCBmb3IgY29uc29sZS5wcm9maWxlLgorICAgICsrbV9zdG9w
cGVkQ2FsbERlcHRoOworCisgICAgLy8gQXR0cmlidXRlIHRoZSB0aW1lIG9mIHRoZSBub2RlIGFv
YnV0IHRvIGJlIHJlbW92ZWQgdG8gdGhlIHNlbGYgdGltZSBvZiBpdHMgcGFyZW50CisgICAgY3Vy
cmVudE5vZGUtPnBhcmVudCgpLT5zZXRTZWxmVGltZShjdXJyZW50Tm9kZS0+cGFyZW50KCktPnNl
bGZUaW1lKCkgKyBjdXJyZW50Tm9kZS0+dG90YWxUaW1lKCkpOworCisgICAgQVNTRVJUKGN1cnJl
bnROb2RlLT5jYWxsSWRlbnRpZmllcigpID09IChjdXJyZW50Tm9kZS0+cGFyZW50KCktPmNoaWxk
cmVuKClbMF0pLT5jYWxsSWRlbnRpZmllcigpKTsKKyAgICBjdXJyZW50Tm9kZS0+cGFyZW50KCkt
PnJlbW92ZUNoaWxkKDApOworPj4+Pj4+PiBTdGFzaGVkIGNoYW5nZXM6SmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5jcHAKIH0KIAogUHJvZmlsZTo6flByb2ZpbGUoKQpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oIGIvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZS5oCmluZGV4IGFiYzgyNTkuLmVjOWFlZGMgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlLmgKQEAgLTM3LDggKzM3LDIzIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xh
c3MgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFByb2ZpbGU+IHsKICAgICBwdWJsaWM6Cis8
PDw8PDw8IFVwZGF0ZWQgdXBzdHJlYW06SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5o
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGU+IGNyZWF0ZShjb25zdCBVU3RyaW5n
JiB0aXRsZSk7CiAgICAgICAgIHZpcnR1YWwgflByb2ZpbGUoKTsKKz09PT09PT0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZT4gY3JlYXRlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCBF
eGVjU3RhdGUqIG9yaWdpbmF0aW5nR2xvYmFsRXhlYywgdW5zaWduZWQgcGFnZUdyb3VwSWRlbnRp
ZmllciwgUHJvZmlsZXJDbGllbnQqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmls
ZT4gY3JlYXRlKGNvbnN0IFByb2ZpbGUqIGZpcnN0LCBjb25zdCBQcm9maWxlKiBzZWNvbmQpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9maWxlKGZpcnN0LCBzZWNvbmQpKTsgfTsKKworICAgICAg
ICBQYXNzUmVmUHRyPFByb2ZpbGU+IGNvbXBhcmVUbyhjb25zdCBQcm9maWxlKikgY29uc3Q7CisK
KyAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShjb25zdCBDYWxsSWRlbnRpZmllciYpOworICAgICAg
ICB2b2lkIGRpZEV4ZWN1dGUoY29uc3QgQ2FsbElkZW50aWZpZXImKTsKKyAgICAgICAgdm9pZCBz
dG9wUHJvZmlsaW5nKCk7CisgICAgICAgIGJvb2wgZGlkRmluaXNoQWxsRXhlY3V0aW9uKCk7CisK
KyAgICAgICAgY29uc3QgVVN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9
OworICAgICAgICBQcm9maWxlTm9kZSogY2FsbFRyZWUoKSBjb25zdCB7IHJldHVybiBtX2hlYWQu
Z2V0KCk7IH07Cis+Pj4+Pj4+IFN0YXNoZWQgY2hhbmdlczpKYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlLmgKIAogICAgICAgICBjb25zdCBVU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGl0bGU7IH0KICAgICAgICAgUHJvZmlsZU5vZGUqIGNhbGxUcmVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWFkLmdldCgpOyB9CkBAIC02Nyw4ICs4MiwxNCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgdm9pZCBkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKCkgY29uc3Q7CiAjZW5kaWYK
IAorPDw8PDw8PCBVcGRhdGVkIHVwc3RyZWFtOkphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGUuaAogICAgIHByb3RlY3RlZDoKICAgICAgICAgUHJvZmlsZShjb25zdCBVU3RyaW5nJiB0aXRs
ZSk7Cis9PT09PT09CisgICAgcHJpdmF0ZToKKyAgICAgICAgUHJvZmlsZShjb25zdCBVU3RyaW5n
JiB0aXRsZSwgRXhlY1N0YXRlKiBvcmlnaW5hdGluZ0dsb2JhbEV4ZWMsIHVuc2lnbmVkIHBhZ2VH
cm91cElkZW50aWZpZXIsIFByb2ZpbGVyQ2xpZW50Kik7CisgICAgICAgIFByb2ZpbGUoY29uc3Qg
UHJvZmlsZSogZmlyc3QsIGNvbnN0IFByb2ZpbGUqIHNlY29uZCk7Cis+Pj4+Pj4+IFN0YXNoZWQg
Y2hhbmdlczpKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZVN0YXJ0KCk7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlTm9kZS5jcHAKaW5kZXggOGFiMjdlYy4uZDYxNjY5ZSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcApAQCAtNjksNiArNjksNTIgQEAgUHJvZmlsZU5vZGU6
OlByb2ZpbGVOb2RlKGNvbnN0IENhbGxJZGVudGlmaWVyJiBjYWxsSWRlbnRpZmllciwgUHJvZmls
ZU5vZGUqIGhlYWQKICAgICBzdGFydFRpbWVyKCk7CiB9CiAKK0NvbXBhcmVQcm9maWxlTm9kZTo6
Q29tcGFyZVByb2ZpbGVOb2RlKFByb2ZpbGVOb2RlKiBmaXJzdCwgUHJvZmlsZU5vZGUqIHNlY29u
ZCwgUHJvZmlsZU5vZGUqIGhlYWROb2RlLCBQcm9maWxlTm9kZSogcGFyZW50Tm9kZSkKKyAgICA6
IFByb2ZpbGVOb2RlKGZpcnN0ID8gZmlyc3QtPmNhbGxJZGVudGlmaWVyKCkgOiBzZWNvbmQtPmNh
bGxJZGVudGlmaWVyKCksIGhlYWROb2RlLCBwYXJlbnROb2RlKQorICAgICwgbV9maXJzdE5vZGUo
Zmlyc3QpCisgICAgLCBtX3NlY29uZE5vZGUoc2Vjb25kKQoreworICAgIEFTU0VSVChmaXJzdCB8
fCBzZWNvbmQpOworCisgICAgbV9zdGFydFRpbWUgPSAwLjA7CisKKyAgICBpZiAoZmlyc3QgJiYg
c2Vjb25kKSB7CisgICAgICAgIHNldFRvdGFsVGltZShmaXJzdC0+YWN0dWFsVG90YWxUaW1lKCkg
LSBzZWNvbmQtPmFjdHVhbFRvdGFsVGltZSgpKTsKKyAgICAgICAgc2V0U2VsZlRpbWUoZmlyc3Qt
PmFjdHVhbFNlbGZUaW1lKCkgLSBzZWNvbmQtPmFjdHVhbFNlbGZUaW1lKCkpOworICAgICAgICBz
ZXROdW1iZXJPZkNhbGxzKGZpcnN0LT5udW1iZXJPZkNhbGxzKCkgLSBzZWNvbmQtPm51bWJlck9m
Q2FsbHMoKSk7CisgICAgfSBlbHNlIGlmIChmaXJzdCkgeworICAgICAgICBzZXRUb3RhbFRpbWUo
Zmlyc3QtPmFjdHVhbFRvdGFsVGltZSgpKTsKKyAgICAgICAgc2V0U2VsZlRpbWUoZmlyc3QtPmFj
dHVhbFNlbGZUaW1lKCkpOworICAgICAgICBzZXROdW1iZXJPZkNhbGxzKGZpcnN0LT5udW1iZXJP
ZkNhbGxzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNldFRvdGFsVGltZSgtc2Vjb25kLT5h
Y3R1YWxUb3RhbFRpbWUoKSk7CisgICAgICAgIHNldFNlbGZUaW1lKC1zZWNvbmQtPmFjdHVhbFNl
bGZUaW1lKCkpOworICAgICAgICBzZXROdW1iZXJPZkNhbGxzKC1zZWNvbmQtPm51bWJlck9mQ2Fs
bHMoKSk7CisgICAgfQorfQorCitkb3VibGUgQ29tcGFyZVByb2ZpbGVOb2RlOjp0b3RhbFBlcmNl
bnQoKSBjb25zdAoreworCWRvdWJsZSBmaXJzdFRpbWUgPSAwLjA7CisJZG91YmxlIHNlY29uZFRp
bWUgPSAwLjA7CisgICAgaWYgKG1fZmlyc3ROb2RlKQorCQlmaXJzdFRpbWUgPSBtX2ZpcnN0Tm9k
ZS0+dG90YWxUaW1lKCk7CisgICAgaWYgKG1fc2Vjb25kTm9kZSkKKwkJc2Vjb25kVGltZSA9IG1f
c2Vjb25kTm9kZS0+dG90YWxUaW1lKCk7CisJcmV0dXJuICgoZmlyc3RUaW1lIC8gc2Vjb25kVGlt
ZSkgKiAxMDAuMCkgLSAxMDAuMDsKK30KKworZG91YmxlIENvbXBhcmVQcm9maWxlTm9kZTo6c2Vs
ZlBlcmNlbnQoKSBjb25zdAoreworCWRvdWJsZSBmaXJzdFRpbWUgPSAwLjA7CisJZG91YmxlIHNl
Y29uZFRpbWUgPSAwLjA7CisgICAgaWYgKG1fZmlyc3ROb2RlKQorCQlmaXJzdFRpbWUgPSBtX2Zp
cnN0Tm9kZS0+c2VsZlRpbWUoKTsKKyAgICBpZiAobV9zZWNvbmROb2RlKQorCQlzZWNvbmRUaW1l
ID0gbV9zZWNvbmROb2RlLT5zZWxmVGltZSgpOworCXJldHVybiAoKGZpcnN0VGltZSAvIHNlY29u
ZFRpbWUpICogMTAwLjApIC0gMTAwLjA7Cit9CisKIFByb2ZpbGVOb2RlKiBQcm9maWxlTm9kZTo6
d2lsbEV4ZWN1dGUoY29uc3QgQ2FsbElkZW50aWZpZXImIGNhbGxJZGVudGlmaWVyKQogewogICAg
IGZvciAoU3RhY2tJdGVyYXRvciBjdXJyZW50Q2hpbGQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1
cnJlbnRDaGlsZCAhPSBtX2NoaWxkcmVuLmVuZCgpOyArK2N1cnJlbnRDaGlsZCkgewpAQCAtMTUx
LDI0ICsxOTcsMTYgQEAgUHJvZmlsZU5vZGUqIFByb2ZpbGVOb2RlOjp0cmF2ZXJzZU5leHROb2Rl
UG9zdE9yZGVyKCkgY29uc3QKIAogUHJvZmlsZU5vZGUqIFByb2ZpbGVOb2RlOjp0cmF2ZXJzZU5l
eHROb2RlUHJlT3JkZXIoYm9vbCBwcm9jZXNzQ2hpbGRyZW4pIGNvbnN0CiB7Ci0gICAgaWYgKHBy
b2Nlc3NDaGlsZHJlbiAmJiBtX2NoaWxkcmVuLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG1fY2hp
bGRyZW5bMF0uZ2V0KCk7Ci0KLSAgICBpZiAobV9uZXh0U2libGluZykKLSAgICAgICAgcmV0dXJu
IG1fbmV4dFNpYmxpbmc7Ci0KLSAgICBQcm9maWxlTm9kZSogbmV4dFBhcmVudCA9IG1fcGFyZW50
OwotICAgIGlmICghbmV4dFBhcmVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBQcm9maWxl
Tm9kZSogbmV4dDsKLSAgICBmb3IgKG5leHQgPSBtX3BhcmVudC0+bmV4dFNpYmxpbmcoKTsgIW5l
eHQ7IG5leHQgPSBuZXh0UGFyZW50LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIG5leHRQYXJl
bnQgPSBuZXh0UGFyZW50LT5wYXJlbnQoKTsKLSAgICAgICAgaWYgKCFuZXh0UGFyZW50KQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5leHQ7CisgICAgUHJvZmls
ZU5vZGUqIGZpcnN0ID0gZmlyc3RDaGlsZCgpOworICAgIGlmIChwcm9jZXNzQ2hpbGRyZW4gJiYg
Zmlyc3QpCisgICAgICAgIHJldHVybiBmaXJzdDsKKworICAgIGNvbnN0IFByb2ZpbGVOb2RlKiBu
b2RlID0gdGhpczsKKyAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAg
ICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOworICAgIGlmIChub2RlKQorICAgICAgICByZXR1
cm4gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBQcm9maWxl
Tm9kZTo6c29ydChib29sIGNvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgLCBj
b25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiApKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZU5vZGUuaCBiL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVO
b2RlLmgKaW5kZXggNWZjYWEwNC4uNjdmOGIyNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZU5vZGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlTm9kZS5oCkBAIC00MSw5ICs0MSwyOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIFN0YWNrSXRlcmF0
b3I7CiAgICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxVU3RyaW5nOjpSZXAqPiBGdW5jdGlvbkNh
bGxIYXNoQ291bnQ7CiAKKzw8PDw8PDwgVXBkYXRlZCB1cHN0cmVhbTpKYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlTm9kZS5oCiAgICAgY2xhc3MgUHJvZmlsZU5vZGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxQcm9maWxlTm9kZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UHJvZmlsZU5vZGU+IGNyZWF0ZShjb25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50
aWZpZXIsIFByb2ZpbGVOb2RlKiBoZWFkTm9kZSwgUHJvZmlsZU5vZGUqIHBhcmVudE5vZGUpCis9
PT09PT09CisgICAgc3RydWN0IENhbGxJZGVudGlmaWVyIHsKKyAgICAgICAgVVN0cmluZyBuYW1l
OworICAgICAgICBVU3RyaW5nIHVybDsKKyAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKKyAg
ICAgICAgCisgICAgICAgIENhbGxJZGVudGlmaWVyKFVTdHJpbmcgbmFtZSwgVVN0cmluZyB1cmws
IHVuc2lnbmVkIGxpbmVOdW1iZXIpCisgICAgICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAg
ICAgICwgdXJsKHVybCkKKyAgICAgICAgICAgICwgbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsSWRlbnRpZmllcihjb25zdCBDYWxsSWRl
bnRpZmllciYgY2kpCisgICAgICAgICAgICA6IG5hbWUoY2kubmFtZSkKKyAgICAgICAgICAgICwg
dXJsKGNpLnVybCkKKyAgICAgICAgICAgICwgbGluZU51bWJlcihjaS5saW5lTnVtYmVyKQorPj4+
Pj4+PiBTdGFzaGVkIGNoYW5nZXM6SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUu
aAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGVOb2Rl
KGNhbGxJZGVudGlmaWVyLCBoZWFkTm9kZSwgcGFyZW50Tm9kZSkpOwogICAgICAgICB9CkBAIC02
OCwxNyArODcsMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIC8vIFRpbWUgbWVtYmVycwog
ICAgICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3N0YXJ0VGlt
ZSA9IHN0YXJ0VGltZTsgfQorICAgICAgICBkb3VibGUgYWN0dWFsVG90YWxUaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3R1YWxUb3RhbFRpbWU7IH0KICAgICAgICAgZG91YmxlIHRvdGFsVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVRvdGFsVGltZTsgfQogICAgICAgICB2b2lkIHNldFRv
dGFsVGltZShkb3VibGUgdGltZSkgeyBtX2FjdHVhbFRvdGFsVGltZSA9IHRpbWU7IG1fdmlzaWJs
ZVRvdGFsVGltZSA9IHRpbWU7IH0KICAgICAgICAgdm9pZCBzZXRBY3R1YWxUb3RhbFRpbWUoZG91
YmxlIHRpbWUpIHsgbV9hY3R1YWxUb3RhbFRpbWUgPSB0aW1lOyB9CiAgICAgICAgIHZvaWQgc2V0
VmlzaWJsZVRvdGFsVGltZShkb3VibGUgdGltZSkgeyBtX3Zpc2libGVUb3RhbFRpbWUgPSB0aW1l
OyB9CisgICAgICAgIGRvdWJsZSBhY3R1YWxTZWxmVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0
dWFsU2VsZlRpbWU7IH0KICAgICAgICAgZG91YmxlIHNlbGZUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV92aXNpYmxlU2VsZlRpbWU7IH0KICAgICAgICAgdm9pZCBzZXRTZWxmVGltZShkb3VibGUgdGlt
ZSkge21fYWN0dWFsU2VsZlRpbWUgPSB0aW1lOyBtX3Zpc2libGVTZWxmVGltZSA9IHRpbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRBY3R1YWxTZWxmVGltZShkb3VibGUgdGltZSkgeyBtX2FjdHVhbFNl
bGZUaW1lID0gdGltZTsgfQogICAgICAgICB2b2lkIHNldFZpc2libGVTZWxmVGltZShkb3VibGUg
dGltZSkgeyBtX3Zpc2libGVTZWxmVGltZSA9IHRpbWU7IH0KIAotICAgICAgICBkb3VibGUgdG90
YWxQZXJjZW50KCkgY29uc3QgeyByZXR1cm4gKG1fdmlzaWJsZVRvdGFsVGltZSAvIChtX2hlYWQg
PyBtX2hlYWQtPnRvdGFsVGltZSgpIDogdG90YWxUaW1lKCkpKSAqIDEwMC4wOyB9Ci0gICAgICAg
IGRvdWJsZSBzZWxmUGVyY2VudCgpIGNvbnN0IHsgcmV0dXJuIChtX3Zpc2libGVTZWxmVGltZSAv
IChtX2hlYWQgPyBtX2hlYWQtPnRvdGFsVGltZSgpIDogdG90YWxUaW1lKCkpKSAqIDEwMC4wOyB9
CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvdGFsUGVyY2VudCgpIGNvbnN0IHsgcmV0dXJuICht
X3Zpc2libGVUb3RhbFRpbWUgLyAobV9oZWFkID8gbV9oZWFkLT50b3RhbFRpbWUoKSA6IHRvdGFs
VGltZSgpKSkgKiAxMDAuMDsgfQorICAgICAgICB2aXJ0dWFsIGRvdWJsZSBzZWxmUGVyY2VudCgp
IGNvbnN0IHsgcmV0dXJuIChtX3Zpc2libGVTZWxmVGltZSAvIChtX2hlYWQgPyBtX2hlYWQtPnRv
dGFsVGltZSgpIDogdG90YWxUaW1lKCkpKSAqIDEwMC4wOyB9CiAKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZDYWxscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZDYWxsczsgfQogICAgICAg
ICB2b2lkIHNldE51bWJlck9mQ2FsbHModW5zaWduZWQgbnVtYmVyKSB7IG1fbnVtYmVyT2ZDYWxs
cyA9IG51bWJlcjsgfQpAQCAtMTI2LDcgKzE0NywxMyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgZG91YmxlIGRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoaW50IGluZGVudExldmVsLCBGdW5j
dGlvbkNhbGxIYXNoQ291bnQmKSBjb25zdDsKICNlbmRpZgogCis8PDw8PDw8IFVwZGF0ZWQgdXBz
dHJlYW06SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaAogICAgIHByaXZhdGU6
Cis9PT09PT09CisgICAgICAgIHZpcnR1YWwgflByb2ZpbGVOb2RlKCkgeyB9CisKKyAgICBwcm90
ZWN0ZWQ6Cis+Pj4+Pj4+IFN0YXNoZWQgY2hhbmdlczpKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlTm9kZS5oCiAgICAgICAgIFByb2ZpbGVOb2RlKGNvbnN0IENhbGxJZGVudGlmaWVyJiwg
UHJvZmlsZU5vZGUqIGhlYWROb2RlLCBQcm9maWxlTm9kZSogcGFyZW50Tm9kZSk7CiAKICAgICAg
ICAgdm9pZCBzdGFydFRpbWVyKCk7CkBAIC0xNjIsNiArMTg5LDUwIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+IG1fY2hpbGRyZW47CiAgICAg
fTsKIAorICAgIGNsYXNzIENvbXBhcmVQcm9maWxlTm9kZSA6IHB1YmxpYyBQcm9maWxlTm9kZSB7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlTm9kZT4gY3Jl
YXRlKFByb2ZpbGVOb2RlKiBmaXJzdCwgUHJvZmlsZU5vZGUqIHNlY29uZCwgUHJvZmlsZU5vZGUq
IGhlYWROb2RlLCBQcm9maWxlTm9kZSogcGFyZW50Tm9kZSkgeworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb21wYXJlUHJvZmlsZU5vZGUoZmlyc3QsIHNlY29uZCwgaGVhZE5vZGUs
IHBhcmVudE5vZGUpKTsgfQorCisgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvdGFsUGVyY2VudCgp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIGRvdWJsZSBzZWxmUGVyY2VudCgpIGNvbnN0OworCisg
ICAgICAgIFByb2ZpbGVOb2RlKiBmaXJzdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Tm9k
ZS5nZXQoKTsgfQorICAgICAgICBQcm9maWxlTm9kZSogc2Vjb25kTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vjb25kTm9kZS5nZXQoKTsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBDb21w
YXJlUHJvZmlsZU5vZGUoUHJvZmlsZU5vZGUqIGZpcnN0LCBQcm9maWxlTm9kZSogc2Vjb25kLCBQ
cm9maWxlTm9kZSogaGVhZE5vZGUsIFByb2ZpbGVOb2RlKiBwYXJlbnROb2RlKTsKKworICAgICAg
ICBSZWZQdHI8UHJvZmlsZU5vZGU+IG1fZmlyc3ROb2RlOworICAgICAgICBSZWZQdHI8UHJvZmls
ZU5vZGU+IG1fc2Vjb25kTm9kZTsKKyAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBLSlMKIAorbmFt
ZXNwYWNlIFdURiB7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50SGFzaDxLSlM6OkNhbGxJZGVu
dGlmaWVyPiB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtKUzo6Q2FsbElk
ZW50aWZpZXImIGtleSkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVz
WzNdID0geworICAgICAgICAgICAgICAgIGtleS5uYW1lLnJlcCgpLT5oYXNoKCksCisgICAgICAg
ICAgICAgICAga2V5LnVybC5yZXAoKS0+aGFzaCgpLAorICAgICAgICAgICAgICAgIGtleS5saW5l
TnVtYmVyCisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmV0dXJuIEtKUzo6VVN0cmluZzo6
UmVwOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4oaGFzaENvZGVzKSwgc2l6
ZW9mKGhhc2hDb2RlcykgLyBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IEtKUzo6Q2FsbElkZW50aWZpZXImIGEsIGNvbnN0IEtKUzo6
Q2FsbElkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxLSlM6OkNhbGxJZGVudGlmaWVyPiB7IHR5
cGVkZWYgSW50SGFzaDxLSlM6OkNhbGxJZGVudGlmaWVyPiBIYXNoOyB9OworCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxLSlM6OkNhbGxJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNo
VHJhaXRzPEtKUzo6Q2FsbElkZW50aWZpZXI+IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
ZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgICAgICBzdGF0aWMgS0pTOjpDYWxsSWRlbnRp
ZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gS0pTOjpDYWxsSWRlbnRpZmllcihLSlM6OlVTdHJp
bmcoKSwgS0pTOjpVU3RyaW5nKCksIDApOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKEtKUzo6Q2FsbElkZW50aWZpZXImIHNsb3QpIHsgbmV3ICgmc2xvdCkgS0pTOjpD
YWxsSWRlbnRpZmllcihLSlM6OlVTdHJpbmcoKSwgS0pTOjpVU3RyaW5nKCksIDApOyB9CisgICAg
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEtKUzo6Q2FsbElkZW50aWZpZXIm
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5uYW1lLmlzTnVsbCgpICYmIHZhbHVlLnVybC5pc051bGwo
KSAmJiB2YWx1ZS5saW5lTnVtYmVyID09IDA7IH0KKyAgICB9OworfSAvLyBuYW1lc3BhY2UgV1RG
CisKICNlbmRpZiAvLyBQcm9maWxlTm9kZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXItdGVzdC1jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0
bWwgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXItdGVzdC1jb21wYXJl
LW11bHRpcGxlLXByb2ZpbGVzLmh0bWwKaW5kZXggNjhmYzNlMi4uYWM0ODJiNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9tYW51YWwtdGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyLXRlc3QtY29tcGFyZS1t
dWx0aXBsZS1wcm9maWxlcy5odG1sCisrKyBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci10ZXN0LWNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbApAQCAtMTksNyAr
MTksNyBAQCB0ZXN0KDEwMCk7CiBjb25zb2xlLnByb2ZpbGVFbmQoIlRlc3QiKTsKIAogY29uc29s
ZS5wcm9maWxlKCJUZXN0Iik7Ci10ZXN0KDEwMDApOwordGVzdCgxMDAwMDAwMCk7CiBjb25zb2xl
LnByb2ZpbGVFbmQoIlRlc3QiKTsKIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0phdmFTY3JpcHRQcm9maWxlLmNwcCBiL1dlYkNvcmUvcGFnZS9KYXZhU2NyaXB0
UHJvZmlsZS5jcHAKaW5kZXggNGFlYTFjMi4uM2UyNjdlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0phdmFTY3JpcHRQcm9maWxlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdFBy
b2ZpbGUuY3BwCkBAIC03MCw2ICs3MCwyMyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRIZWFkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdAogICAg
IHJldHVybiB0b1JlZih0b0pTKHRvSlMoY3R4KSwgcHJvZmlsZS0+Y2FsbFRyZWUoKSkpOwogfQog
CitzdGF0aWMgSlNWYWx1ZVJlZiBjb21wYXJlVG8oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRp
b24qLykKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0
LCBQcm9maWxlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
dHgpOworCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhj
dHgsIGFyZ3VtZW50c1swXSwgUHJvZmlsZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBQYXNzUmVm
UHRyPFByb2ZpbGU+IHJlc3VsdCA9IHByb2ZpbGUtPmNvbXBhcmVUbyhzdGF0aWNfY2FzdDxQcm9m
aWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGFyZ3VtZW50
c1swXSkpKSk7CisKKyAgICByZXR1cm4gdG9SZWYodG9KUyh0b0pTKGN0eCksIHJlc3VsdC5nZXQo
KSkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBmb2N1cyhKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAvKmV4
Y2VwdGlvbiovKQogewogICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNP
YmplY3QsIFByb2ZpbGVDbGFzcygpKSkKQEAgLTIxOSw2ICsyMzYsNyBAQCBKU0NsYXNzUmVmIFBy
b2ZpbGVDbGFzcygpCiAgICAgfTsKIAogICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRp
Y0Z1bmN0aW9uc1tdID0geworICAgICAgICB7ICJjb21wYXJlVG8iLCBjb21wYXJlVG8sIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJmb2N1cyIsIGZvY3VzLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAiZXhjbHVkZSIsIGV4Y2x1ZGUsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJyZXN0b3JlQWxsIiwgcmVzdG9yZUFs
bCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL0RhdGFHcmlkLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9EYXRhR3JpZC5q
cwppbmRleCA2ZjEwM2VkLi4wYjY5ZWNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVj
dG9yL0RhdGFHcmlkLmpzCisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRGF0YUdyaWQuanMK
QEAgLTQ2LDc3ICs0NiwxMDQgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29s
dW1ucykKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyVGFibGUpOwog
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzY3JvbGxDb250YWluZXIpOwogCi0gICAgdmFy
IGhlYWRlclJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVt
bkdyb3VwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29sZ3JvdXAiKTsKLSAgICB2YXIgY29s
dW1uQ291bnQgPSAwOworICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICB0aGlzLnNlbGVjdGVk
Tm9kZSA9IG51bGw7CisgICAgdGhpcy5leHBhbmROb2Rlc1doZW5BcnJvd2luZyA9IGZhbHNlOwor
ICAgIHRoaXMucm9vdCA9IHRydWU7CisgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOworICAg
IHRoaXMuZXhwYW5kZWQgPSB0cnVlOworICAgIHRoaXMucmV2ZWFsZWQgPSB0cnVlOworICAgIHRo
aXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICB0aGlzLmRhdGFHcmlkID0gdGhpczsKKyAgICB0aGlz
LmluZGVudFdpZHRoID0gMTU7CisgICAgdGhpcy5jb2x1bW5zID0gY29sdW1uczsKK30KIAotICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewotICAgICAgICB2YXIgY29s
dW1uID0gY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKGNvbHVtbi5kaXNj
bG9zdXJlKQotICAgICAgICAgICAgdGhpcy5kaXNjbG9zdXJlQ29sdW1uSWRlbnRpZmllciA9IGNv
bHVtbklkZW50aWZpZXI7CitXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0geworICAg
IGdldCBjb2x1bW5zKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5zIHx8IHt9
OworICAgIH0sCiAKLSAgICAgICAgdmFyIGNvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNv
bCIpOwotICAgICAgICBpZiAoY29sdW1uLndpZHRoKQotICAgICAgICAgICAgY29sLnN0eWxlLndp
ZHRoID0gY29sdW1uLndpZHRoOwotICAgICAgICBjb2x1bW5Hcm91cC5hcHBlbmRDaGlsZChjb2wp
OworICAgIHNldCBjb2x1bW5zKHgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY29sdW1ucyA9
PT0geCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRoIik7Ci0gICAgICAgIGNlbGwuY2xhc3NOYW1lID0gY29sdW1uSWRl
bnRpZmllciArICItY29sdW1uIjsKLSAgICAgICAgY2VsbC5jb2x1bW5JZGVudGlmaWVyID0gY29s
dW1uSWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fY29sdW1ucyA9IHg7CiAKLSAgICAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBkaXYudGV4dENv
bnRlbnQgPSBjb2x1bW4udGl0bGU7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoZGl2KTsKKyAg
ICAgICAgdGhpcy5faGVhZGVyVGFibGUucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5f
ZGF0YVRhYmxlLnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICAgICAgaWYgKGNvbHVtbi5zb3J0KSB7
Ci0gICAgICAgICAgICBjZWxsLmFkZFN0eWxlQ2xhc3MoInNvcnQtIiArIGNvbHVtbi5zb3J0KTsK
LSAgICAgICAgICAgIHRoaXMuX3NvcnRDb2x1bW5DZWxsID0gY2VsbDsKLSAgICAgICAgfQorICAg
ICAgICBkZWxldGUgdGhpcy5faGVhZGVyVGFibGVCb2R5OworICAgICAgICBkZWxldGUgdGhpcy5f
ZGF0YVRhYmxlQm9keTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NvcnRDb2x1bW5DZWxsOworICAg
ICAgICBkZWxldGUgdGhpcy5kaXNjbG9zdXJlQ29sdW1uSWRlbnRpZmllcjsKIAotICAgICAgICBp
ZiAoY29sdW1uLnNvcnRhYmxlKSB7Ci0gICAgICAgICAgICBjZWxsLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fY2xpY2tJbkhlYWRlckNlbGwuYmluZCh0aGlzKSwgZmFsc2UpOwotICAg
ICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJzb3J0YWJsZSIpOwotICAgICAgICB9CisgICAg
ICAgIHZhciBoZWFkZXJSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAg
ICB2YXIgY29sdW1uR3JvdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjb2xncm91cCIpOwor
ICAgICAgICB2YXIgY29sdW1uQ291bnQgPSAwOwogCi0gICAgICAgIGhlYWRlclJvdy5hcHBlbmRD
aGlsZChjZWxsKTsKKyAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiB0aGlzLl9j
b2x1bW5zKSB7CisgICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5fY29sdW1uc1tjb2x1bW5J
ZGVudGlmaWVyXTsKKyAgICAgICAgICAgIGlmIChjb2x1bW4uZGlzY2xvc3VyZSkKKyAgICAgICAg
ICAgICAgICB0aGlzLmRpc2Nsb3N1cmVDb2x1bW5JZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmll
cjsKIAotICAgICAgICArK2NvbHVtbkNvdW50OwotICAgIH0KKyAgICAgICAgICAgIHZhciBjb2wg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjb2wiKTsKKyAgICAgICAgICAgIGlmIChjb2x1bW4u
d2lkdGgpCisgICAgICAgICAgICAgICAgY29sLnN0eWxlLndpZHRoID0gY29sdW1uLndpZHRoOwor
ICAgICAgICAgICAgY29sdW1uR3JvdXAuYXBwZW5kQ2hpbGQoY29sKTsKIAotICAgIGNvbHVtbkdy
b3VwLnNwYW4gPSBjb2x1bW5Db3VudDsKKyAgICAgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGgiKTsKKyAgICAgICAgICAgIGNlbGwuY2xhc3NOYW1lID0gY29sdW1u
SWRlbnRpZmllciArICItY29sdW1uIjsKKyAgICAgICAgICAgIGNlbGwuY29sdW1uSWRlbnRpZmll
ciA9IGNvbHVtbklkZW50aWZpZXI7CiAKLSAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRoIik7Ci0gICAgY2VsbC5jbGFzc05hbWUgPSAiY29ybmVyIjsKLSAgICBoZWFkZXJS
b3cuYXBwZW5kQ2hpbGQoY2VsbCk7CisgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBkaXYudGV4dENvbnRlbnQgPSBjb2x1bW4u
dGl0bGU7CisgICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGRpdik7CiAKLSAgICB0aGlzLl9o
ZWFkZXJUYWJsZS5hcHBlbmRDaGlsZChjb2x1bW5Hcm91cCk7Ci0gICAgdGhpcy5oZWFkZXJUYWJs
ZUJvZHkuYXBwZW5kQ2hpbGQoaGVhZGVyUm93KTsKKyAgICAgICAgICAgIGlmIChjb2x1bW4uc29y
dCkgeworICAgICAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygic29ydC0iICsgY29sdW1u
LnNvcnQpOworICAgICAgICAgICAgICAgIHRoaXMuX3NvcnRDb2x1bW5DZWxsID0gY2VsbDsKKyAg
ICAgICAgICAgIH0KIAotICAgIHZhciBmaWxsZXJSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0ciIpOwotICAgIGZpbGxlclJvdy5jbGFzc05hbWUgPSAiZmlsbGVyIjsKKyAgICAgICAgICAg
IGlmIChjb2x1bW4uc29ydGFibGUpIHsKKyAgICAgICAgICAgICAgICBjZWxsLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkhlYWRlckNlbGwuYmluZCh0aGlzKSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygic29ydGFibGUiKTsKKyAgICAg
ICAgICAgIH0KIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7ICsraSkgewot
ICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAg
IGZpbGxlclJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAgICB9CisgICAgICAgICAgICBoZWFkZXJS
b3cuYXBwZW5kQ2hpbGQoY2VsbCk7CiAKLSAgICB0aGlzLl9kYXRhVGFibGUuYXBwZW5kQ2hpbGQo
Y29sdW1uR3JvdXAuY2xvbmVOb2RlKHRydWUpKTsKLSAgICB0aGlzLmRhdGFUYWJsZUJvZHkuYXBw
ZW5kQ2hpbGQoZmlsbGVyUm93KTsKKyAgICAgICAgICAgICsrY29sdW1uQ291bnQ7CisgICAgICAg
IH0KIAotICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnMgfHwge307Ci0gICAgdGhpcy5jaGlsZHJl
biA9IFtdOwotICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbnVsbDsKLSAgICB0aGlzLmV4cGFuZE5v
ZGVzV2hlbkFycm93aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5yb290ID0gdHJ1ZTsKLSAgICB0aGlz
Lmhhc0NoaWxkcmVuID0gZmFsc2U7Ci0gICAgdGhpcy5leHBhbmRlZCA9IHRydWU7Ci0gICAgdGhp
cy5yZXZlYWxlZCA9IHRydWU7Ci0gICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwotICAgIHRoaXMu
ZGF0YUdyaWQgPSB0aGlzOwotICAgIHRoaXMuaW5kZW50V2lkdGggPSAxNTsKLX0KKyAgICAgICAg
Y29sdW1uR3JvdXAuc3BhbiA9IGNvbHVtbkNvdW50OworCisgICAgICAgIHZhciBjZWxsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKKyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAiY29y
bmVyIjsKKyAgICAgICAgaGVhZGVyUm93LmFwcGVuZENoaWxkKGNlbGwpOworCisgICAgICAgIHRo
aXMuX2hlYWRlclRhYmxlLmFwcGVuZENoaWxkKGNvbHVtbkdyb3VwKTsKKyAgICAgICAgdGhpcy5o
ZWFkZXJUYWJsZUJvZHkuYXBwZW5kQ2hpbGQoaGVhZGVyUm93KTsKKworICAgICAgICB2YXIgZmls
bGVyUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgZmlsbGVyUm93
LmNsYXNzTmFtZSA9ICJmaWxsZXIiOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29s
dW1uQ291bnQ7ICsraSkgeworICAgICAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ZCIpOworICAgICAgICAgICAgZmlsbGVyUm93LmFwcGVuZENoaWxkKGNlbGwpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlLmFwcGVuZENoaWxkKGNvbHVtbkdy
b3VwLmNsb25lTm9kZSh0cnVlKSk7CisgICAgICAgIHRoaXMuZGF0YVRhYmxlQm9keS5hcHBlbmRD
aGlsZChmaWxsZXJSb3cpOworCisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5bMF07
CisgICAgICAgIHdoaWxlIChjaGlsZCkgeworICAgICAgICAgICAgY2hpbGQucmVmcmVzaCgpOwor
ICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCB0aGlzLCB0
cnVlKTsKKyAgICAgICAgfQorICAgIH0sCiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgZ2V0IHNvcnRDb2x1bW5JZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fc29ydENvbHVtbkNlbGwpCkBAIC0yMjEsNiArMjQ4LDcgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRocm93KCJOb2RlIGlzIG5vdCBh
IGNoaWxkIG9mIHRoaXMgbm9kZS4iKTsKIAogICAgICAgICBjaGlsZC5kZXNlbGVjdCgpOworICAg
ICAgICBjaGlsZC5fZGV0YWNoKCk7CiAKICAgICAgICAgdGhpcy5jaGlsZHJlbi5yZW1vdmUoY2hp
bGQsIHRydWUpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1Byb2ZpbGVW
aWV3LmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlVmlldy5qcwppbmRleCBjNTZl
YzA1Li5kNzdmNTg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1Byb2ZpbGVW
aWV3LmpzCisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvUHJvZmlsZVZpZXcuanMKQEAgLTM0
LDEyICszNCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUp
CiAgICAgdGhpcy5zaG93U2VsZlRpbWVBc1BlcmNlbnQgPSB0cnVlOwogICAgIHRoaXMuc2hvd1Rv
dGFsVGltZUFzUGVyY2VudCA9IHRydWU7CiAKLSAgICB2YXIgY29sdW1ucyA9IHsgInNlbGYiOiB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYiKSwgd2lkdGg6ICI3MnB4Iiwgc29y
dGFibGU6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgInRvdGFsIjogeyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCIpLCB3aWR0aDogIjcycHgiLCBzb3J0OiAiZGVzY2Vu
ZGluZyIsIHNvcnRhYmxlOiB0cnVlIH0sCi0gICAgICAgICAgICAgICAgICAgICJjYWxscyI6IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbHMiKSwgd2lkdGg6ICI1NHB4Iiwgc29y
dGFibGU6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIjogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiIpLCBkaXNjbG9zdXJlOiB0cnVlLCBzb3J0
YWJsZTogdHJ1ZSB9IH07Ci0KLSAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhR3JpZChjb2x1bW5zKTsKKyAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhR3JpZCh0aGlzLm5vcm1hbENvbHVtbnMpOwogICAgIHRoaXMuZGF0YUdyaWQuYWRkRXZlbnRM
aXN0ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5fc29ydERhdGEsIHRoaXMpOwogICAgIHRo
aXMuZGF0YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9t
b3VzZURvd25JbkRhdGFHcmlkLmJpbmQodGhpcyksIHRydWUpOwogICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLmRhdGFHcmlkLmVsZW1lbnQpOwpAQCAtNzUsNiArNzAsMjIgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKIH0KIAogV2ViSW5zcGVj
dG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgbm9ybWFsQ29sdW1ucygpCisg
ICAgeworICAgICAgICByZXR1cm4geyAic2VsZiI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2VsZiIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAgICAgICAg
ICAgICAgICAidG90YWwiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIiks
IHdpZHRoOiAiNzJweCIsIHNvcnQ6ICJkZXNjZW5kaW5nIiwgc29ydGFibGU6IHRydWUgfSwKKyAg
ICAgICAgICAgICAgICAgImNhbGxzIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
YWxscyIpLCB3aWR0aDogIjU0cHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAg
ICAiZnVuY3Rpb24iOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIiks
IGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0gfTsKKyAgICB9LAorCisgICAgZ2V0
IGRlbHRhQ29sdW1ucygpCisgICAgeworICAgICAgICByZXR1cm4geyAic2VsZiI6IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZiDOlCIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJs
ZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAidG90YWwiOiB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlRvdGFsIM6UIiksIHdpZHRoOiAiNzJweCIsIHNvcnQ6ICJkZXNjZW5kaW5n
Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAgICAgICAgICAgICAgImNhbGxzIjogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxscyDOlCIpLCB3aWR0aDogIjU0cHgiLCBzb3J0YWJs
ZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iOiB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIiksIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0
cnVlIH0gfTsKKyAgICB9LAorCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBbdGhpcy5wZXJjZW50QnV0dG9uLCB0aGlzLmZvY3VzQnV0dG9uLCB0aGlzLmV4
Y2x1ZGVCdXR0b24sIHRoaXMucmVzZXRCdXR0b25dOwpAQCAtMjUwLDE5ICsyNjEsMjkgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGltZSAvIDEwMDAsIFdlYkluc3BlY3Rvci5V
SVN0cmluZy5iaW5kKFdlYkluc3BlY3RvciksIHRydWUpOwogICAgICAgICB9CiAKKyAgICAgICAg
dmFyIGNvbXBhcmluZyA9IHRoaXMucHJvZmlsZVZpZXcuY29tcGFyaW5nUHJvZmlsZSA/IHRydWUg
OiBmYWxzZTsKKwogICAgICAgICB2YXIgZGF0YSA9IHt9OwogICAgICAgICBkYXRhWyJmdW5jdGlv
biJdID0gdGhpcy5wcm9maWxlTm9kZS5mdW5jdGlvbk5hbWU7Ci0gICAgICAgIGRhdGFbImNhbGxz
Il0gPSB0aGlzLnByb2ZpbGVOb2RlLm51bWJlck9mQ2FsbHM7CiAKLSAgICAgICAgaWYgKHRoaXMu
cHJvZmlsZVZpZXcuc2hvd1NlbGZUaW1lQXNQZXJjZW50KQotICAgICAgICAgICAgZGF0YVsic2Vs
ZiJdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUiLCB0aGlzLnByb2ZpbGVOb2RlLnNl
bGZQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YVsic2VsZiJdID0gZm9y
bWF0TWlsbGlzZWNvbmRzKHRoaXMucHJvZmlsZU5vZGUuc2VsZlRpbWUpOworICAgICAgICBkYXRh
WyJjYWxscyJdID0gKGNvbXBhcmluZyAmJiB0aGlzLnByb2ZpbGVOb2RlLm51bWJlck9mQ2FsbHMg
PiAwID8gIisiIDogIiIpOworICAgICAgICBkYXRhWyJjYWxscyJdICs9IHRoaXMucHJvZmlsZU5v
ZGUubnVtYmVyT2ZDYWxsczsKIAotICAgICAgICBpZiAodGhpcy5wcm9maWxlVmlldy5zaG93VG90
YWxUaW1lQXNQZXJjZW50KQotICAgICAgICAgICAgZGF0YVsidG90YWwiXSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiJS4yZiUlIiwgdGhpcy5wcm9maWxlTm9kZS50b3RhbFBlcmNlbnQpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkYXRhWyJ0b3RhbCJdID0gZm9ybWF0TWlsbGlzZWNvbmRz
KHRoaXMucHJvZmlsZU5vZGUudG90YWxUaW1lKTsKKyAgICAgICAgaWYgKHRoaXMucHJvZmlsZVZp
ZXcuc2hvd1NlbGZUaW1lQXNQZXJjZW50KSB7CisgICAgICAgICAgICBkYXRhWyJzZWxmIl0gPSAo
Y29tcGFyaW5nICYmIHRoaXMucHJvZmlsZU5vZGUuc2VsZlBlcmNlbnQgPiAwID8gIisiIDogIiIp
OworICAgICAgICAgICAgZGF0YVsic2VsZiJdICs9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4y
ZiUlIiwgdGhpcy5wcm9maWxlTm9kZS5zZWxmUGVyY2VudCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBkYXRhWyJzZWxmIl0gPSAoY29tcGFyaW5nICYmIHRoaXMucHJvZmlsZU5vZGUu
c2VsZlRpbWUgPiAwID8gIisiIDogIiIpOworICAgICAgICAgICAgZGF0YVsic2VsZiJdICs9IGZv
cm1hdE1pbGxpc2Vjb25kcyh0aGlzLnByb2ZpbGVOb2RlLnNlbGZUaW1lKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNob3dUb3RhbFRpbWVBc1BlcmNlbnQpIHsK
KyAgICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSAoY29tcGFyaW5nICYmIHRoaXMucHJvZmlsZU5v
ZGUudG90YWxQZXJjZW50ID4gMCA/ICIrIiA6ICIiKTsKKyAgICAgICAgICAgIGRhdGFbInRvdGFs
Il0gKz0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUiLCB0aGlzLnByb2ZpbGVOb2RlLnRv
dGFsUGVyY2VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRhWyJ0b3RhbCJd
ID0gKGNvbXBhcmluZyAmJiB0aGlzLnByb2ZpbGVOb2RlLnRvdGFsVGltZSA+IDAgPyAiKyIgOiAi
Iik7CisgICAgICAgICAgICBkYXRhWyJ0b3RhbCJdICs9IGZvcm1hdE1pbGxpc2Vjb25kcyh0aGlz
LnByb2ZpbGVOb2RlLnRvdGFsVGltZSk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZGF0
YTsKICAgICB9LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlc1Bh
bmVsLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGQw
NjU0ZTAuLjVlNGFjYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvUHJvZmls
ZXNQYW5lbC5qcworKysgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1Byb2ZpbGVzUGFuZWwuanMK
QEAgLTMzNiw3ICszMzYsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZUdyb3VwU2lkZWJhclRyZWVF
bGVtZW50ID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQogV2ViSW5zcGVjdG9yLlByb2ZpbGVH
cm91cFNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgb25zZWxlY3Q6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuc2hvd1By
b2ZpbGUodGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdLnByb2ZpbGUpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnNob3dQcm9maWxlKHRoaXMuY2hp
bGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXS5wcm9maWxlLmNvbXBhcmVUbyh0aGlzLmNo
aWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMl0ucHJvZmlsZSkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>