<?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>165523</bug_id>
          
          <creation_ts>2016-12-07 04:06:42 -0800</creation_ts>
          <short_desc>[JSC] Optimize in operation</short_desc>
          <delta_ts>2016-12-08 02:55:49 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1257220</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-07 04:06:42 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257667</commentid>
    <comment_count>1</comment_count>
      <attachid>296505</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-08 00:56:20 -0800</bug_when>
    <thetext>Created attachment 296505
Patch

WIP: Very early stage. But this patch already improves ES6SampleBench/Basic 9% in steady state: 10.53ms vs 9.65ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257678</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-08 02:55:49 -0800</bug_when>
    <thetext>I&apos;ll merge the current one to HasIndexedProperty.
In my plan, I&apos;ll convert In operation to HasIndexedProperty with flag in Fixup phase. (when we speculate the argument as SpecInt32Only).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296505</attachid>
            <date>2016-12-08 00:56:20 -0800</date>
            <delta_ts>2016-12-08 00:56:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165523-20161208175539.patch</filename>
            <type>text/plain</type>
            <size>30853</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YmJhNTViNTAwMDBjOTdjZjU4M2NkOWY3MzA5MmY4YjA1NjQyOWU5Li45NThlM2EzYjU2NTQ5ODFh
ZGI2ZmU5ZjRjYmQzYTM3Y2VhNDI4Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNi0xMi0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBpbiBvcGVyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEJpbmFyeU9wKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbik6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1Bh
dGhzOjpvcEluKToKKwogMjAxNi0xMi0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgR2V0QnlJRCBJQyBpcyB3cm9uZ2x5IHVud3JhcHBpbmcgdGhlIGdsb2JhbCBw
cm94eSB0aGlzIHZhbHVlIGZvciBnZXR0ZXIvc2V0dGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBmYWZkZWQ3ZWY2ZWMzMWE4
YjZkZDBmNTI4Zjg2OGNmMjNlZTE1YTM2Li5hZGE0NDI5Zjc5NmZmNTVjYTBjZTM4OWE3YzA1ZWVj
OGJmZjk5MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCkBAIC02Miw3ICs2Miw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9pc19vYmplY3Rfb3JfbnVsbCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfaXNfZnVuY3Rpb24iLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2lzX2NlbGxfd2l0aF90eXBlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0aCIgOiA5IH0sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDZiYjNlNzhkOGQ4ZjM5
MzhhNmUxNzgzM2ZhZTdhN2Q1MzQwZDczNmIuLmI3NDRjOWY1YjhhYTE4NGYxODM1MmY0NTQxYmQx
NWNhODRhYzQzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC0xMTA1LDYgKzExMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KAogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW46IHsKICAgICAgICAgICAgIHByaW50Qmlu
YXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOworICAgICAgICAgICAgZHVtcEFy
cmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CkBAIC0y
MTQ0LDYgKzIxNDUsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBv
cF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICAgICAgQ1JBU0goKTsKIAorICAgICAgICBjYXNl
IG9wX2luOiB7CisgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0
aCAtIDFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2Zp
bGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IG9wTGVuZ3RoIC0gMV0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Nj
b3BlOiB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIo
cGNbM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIFJlc29sdmVUeXBlIHR5cGUgPSBzdGF0aWNf
Y2FzdDxSZXNvbHZlVHlwZT4ocGNbNF0udS5vcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
NTU2ZWRjMTIzMTEzNzgzNGI1NWI4M2NjOGI4MjY4YjBlZDhhNWE2NC4uYWYyMDg4ZTU1ZDYwZjA2
YTlmOTYzMGMxODFkMDE4NzlhOWFkN2UzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE3MTUsNiAr
MTcxNSw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QmluYXJ5T3AoT3Bj
b2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwKICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
Yml0b3IgfHwgb3Bjb2RlSUQgPT0gb3BfYml0YW5kIHx8IG9wY29kZUlEID09IG9wX2JpdHhvciB8
fAogICAgICAgICBvcGNvZGVJRCA9PSBvcF9hZGQgfHwgb3Bjb2RlSUQgPT0gb3BfbXVsIHx8IG9w
Y29kZUlEID09IG9wX3N1YiB8fCBvcGNvZGVJRCA9PSBvcF9kaXYpCiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChBcml0aFByb2ZpbGUodHlwZXMuZmlyc3QoKSwgdHlwZXMuc2Vjb25kKCkp
LmJpdHMoKSk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfaW4pCisgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChuZXdBcnJheVByb2ZpbGUoKSk7CiAKICAgICByZXR1cm4gZHN0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCAyZGU2ZGIwZGI2ZTBmMjJlMjZkNWEyOTA1YTJhNjdmZDE2NDllNTczLi5kOTJiZWEwM2I3
MWI3N2EyZjY5ODNmYjRiOTQwYjllYTgyYzY1YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTM3OCw4ICs1Mzc4LDkgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2Ugb3BfaW46IHsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCi0gICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChJbiwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCkpKSk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAg
ICAgICAgTm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChJbiwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW4pOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDkyODMzZjAwYWRjYzcxN2IwYWYzZTc1MWVhOGQxNjkzNjE4ZWFhOGMuLjVjNWY1ZTFm
MDg1NDYzNmRhMjZlOGRjM2NiMjY1NDlkMTQ2NGI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTM1MCwxMCArMTM1MCw0OSBAQCBjbGFzcyBG
aXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgSW46IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXQgc29tZSBwb2lu
dCBoYXZlIGFycmF5IHByb2ZpbGluZyBvbiBvcF9pbiwgaW4gd2hpY2gKLSAgICAgICAgICAgIC8v
IGNhc2Ugd2Ugd291bGQgYmUgYWJsZSB0byB0dXJuIHRoaXMgaW50byBhIGtpbmQgb2YgR2V0QnlW
YWwuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAorICAgICAgICAgICAgICAg
IG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwg
bm9kZSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSwK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwKKyAgICAg
ICAgICAgICAgICAgICAgU3BlY05vbmUpKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRp
b24obm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDMoKSk7CisKKyAg
ICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVy
aWM6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
YXJyYXlNb2RlLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheSAmJiBhcnJheU1v
ZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxP
YmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cnJheTo6SW50MzI6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRk
TGF6aWx5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFy
cmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6
aWx5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5
cGVDaGFpbklzU2FuZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5z
ZXRBcnJheU1vZGUoYXJyYXlNb2RlLndpdGhTcGVjdWxhdGlvbihBcnJheTo6U2FuZUNoYWluKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYjI4MTU3ZjI1MDEx
NWU2Mjg3YjI0ZTdmM2E5NmI3MWMyZWZlNDk5NC4uNTFmYThjNzQzOTYwZTMyY2E3ZTkzYzEwNTRj
YjlmNmUxY2ZhOTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE3OTgs
NiArMTc5OCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAg
ICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgorICAg
ICAgICBjYXNlIEluOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCAxMDI2YTg0MTUyZTkzMjIyZTA0NWJhODNiMjdiZWU0ZGI1
MmE4MGMxLi43YzE2MWM5ZGI5YzgxOTZkNzY5NGRkYjVjMzQwMDgzZmEzODhiMGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIxNTksNiArMjE1
OSw0NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBtYXAsIEVuYwogICAgIHJldHVybiAqYnVja2V0OwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorewor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAg
ICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKKworICAgIHVpbnQz
Ml90IGk7CisgICAgaWYgKGtleS5nZXRVSW50MzIoaSkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihiYXNlLT5oYXNQ
cm9wZXJ0eShleGVjLCBpKSkpOworICAgIH0KKworICAgIGF1dG8gcHJvcGVydHkgPSBrZXkudG9Q
cm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KSkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbkludDMyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2UsIGludDMyX3Qga2V5KQoreworICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBpZiAoTElLRUxZKGtleSA+PSAw
KSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIGtleSkpKTsKKyAgICB9CisK
KyAgICBhdXRvIHByb3BlcnR5ID0ganNOdW1iZXIoa2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBzY29wZS5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVy
dHkoZXhlYywgcHJvcGVydHkpKSk7Cit9CisKIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9O
IHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgT1NSRXhpdEJh
c2UqIGV4aXQpCiB7CiAgICAgLy8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24n
dCBHQyB3aGlsZSBpbiBoZXJlLiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAxZDZkMWMxN2RhOTZkNmNiOTBm
N2I5ZTFkMTJkZjg1NjFmMzNlMGMxLi4wMjhkYmI1NmQ2Y2RmODFlMzQ0NDNiNjAzOWEwNTg2NjVh
OTNkMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
NjgsNiArNjgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZQogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNB
cnJheSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQz
Ml90KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdlbmVyaWNJbihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbklu
dDMyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub051bWJlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMmIxZWZhMWNiOTViNjdjMDI2NjA5MGI1YWE0NmNl
MTRhMzRhZDJhOS4uMDI3MjJkMDMwMzRmN2U5OTc1OGM0MDI3MGE5MGY0OTE5ZTM1NmQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTEwMzksNiArMTAzOSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBu
b2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZU9i
amVjdChub2RlLT5jaGlsZDIoKSwgYmFzZUdQUik7CiAgICAgCiAgICAgaWYgKEpTU3RyaW5nKiBz
dHJpbmcgPSBub2RlLT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KCkp
IHsKICAgICAgICAgaWYgKHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCkgJiYgc3RyaW5nLT50cnlH
ZXRWYWx1ZUltcGwoKS0+aXNBdG9taWMoKSkgewpAQCAtMTA3OSwxNSArMTA4MSwxNDQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBHUFJSZWcga2V5R1BSID0ga2V5LmdwcigpOworCisgICAgICAgIGF1dG8gY29t
cGlsZUluRm9yQ29udGlndW91c0FycmF5VHlwZSA9IFsmXSAoYXV0byBjb21waWxlTG9hZFZhbHVl
KSB7CisgICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUtPmNoaWxk
MygpKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKwor
ICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgeworICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGtl
eUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlB1YmxpY0xlbmd0aCgpKSkpOworCisgICAgICAgICAgICAgICAgYXV0byBtYXlCZUhvbGUg
PSBjb21waWxlTG9hZFZhbHVlKGJhc2VHUFIsIGtleUdQUiwgc3RvcmFnZUdQUik7CisgICAgICAg
ICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygp
LCBudWxscHRyLCBtYXlCZUhvbGUpOworCisgICAgICAgICAgICAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgICAgICAgICBtb3ZlVHJ1ZVRvKHJl
c3VsdEdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgbW92ZVRydWVUbyhyZXN1bHRHUFIpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgICAgIG1heUJlSG9sZS5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmVGYWxzZVRvKHJlc3VsdEdQUik7CisgICAgICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworCisgICAgICAgICAgICAgICAgICAgIGJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBrZXlH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZQdWJsaWNMZW5ndGgoKSkpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoY29tcGls
ZUxvYWRWYWx1ZShiYXNlR1BSLCBrZXlHUFIsIHN0b3JhZ2VHUFIpKTsKKworICAgICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgbW92ZVRydWVUbyhyZXN1bHRH
UFIpOworICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uR2VuZXJpY0luSW50MzIsIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlc3VsdEdQUikpLCBiYXNlR1BSLCBrZXlHUFIpKTsKKyAgICAgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworCisgICAgICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICB9OworCisgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5h
cnJheU1vZGUoKTsKKyAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAg
IGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOiB7Cisg
ICAgICAgICAgICBjb21waWxlSW5Gb3JDb250aWd1b3VzQXJyYXlUeXBlKFsmXSAoR1BSUmVnLCBH
UFJSZWcga2V5R1BSLCBHUFJSZWcgc3RvcmFnZUdQUikgeworICAgICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVt
cC5ncHIoKTsKKworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGtleUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOiB7CisgICAg
ICAgICAgICBjb21waWxlSW5Gb3JDb250aWd1b3VzQXJyYXlUeXBlKFsmXSAoR1BSUmVnLCBHUFJS
ZWcga2V5R1BSLCBHUFJSZWcgc3RvcmFnZUdQUikgeworICAgICAgICAgICAgICAgIEZQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICAgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5m
cHIoKTsKKworICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzdG9yYWdlR1BSLCBrZXlHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0
KSwgdGVtcEZQUik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdGVtcEZQUiwgdGVtcEZQ
Uik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKKyAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZTogeworICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlz
LCBub2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIo
KTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwga2V5R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOworCisgICAgICAgICAgICBtX2ppdC5s
b2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBrZXlHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3Zl
Y3RvclswXSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOworCisgICAg
ICAgICAgICBtb3ZlVHJ1ZVRvKHJlc3VsdEdQUik7CisgICAgICAgICAgICBhdXRvIGp1bXAgPSBt
X2ppdC5qdW1wKCk7CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZW5lcmljSW5JbnQzMiwgZXh0cmFjdFJlc3Vs
dChKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVzdWx0R1BSKSksIGJhc2VHUFIsIGtleUdQUikp
OworICAgICAgICAgICAganVtcC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIGJsZXNzZWRC
b29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworCisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBiYXNlLnVzZSgpOworICAgICAgICAgICAga2V5LnVzZSgp
OworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25HZW5lcmljSW5JbnQzMiwgZXh0cmFjdFJl
c3VsdChKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVzdWx0R1BSKSksCisgICAgICAgICAgICAg
ICAgYmFzZUdQUiwga2V5R1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisgICAgICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBKU1ZhbHVlT3BlcmFuZCBr
ZXkodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBrZXkuanNW
YWx1ZVJlZ3MoKTsKLSAgICAgICAgCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOworCisgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIAorCisgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQorICAgICAgICByZXR1cm47CisKICAgICBiYXNlLnVzZSgpOwogICAgIGtleS51
c2UoKTsKLSAgICAgICAgCisKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIGNhbGxPcGVyYXRp
b24oCiAgICAgICAgIG9wZXJhdGlvbkdlbmVyaWNJbiwgZXh0cmFjdFJlc3VsdChKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVzdWx0R1BSKSksCkBAIC03OTg0LDE1ICs4MTE1LDE4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxPck90aGVyKEVkZ2UgZWRnZSkKICAgICBvay5s
aW5rKCZtX2ppdCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChF
ZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQoreworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5v
dE9iamVjdChjZWxsKSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBlZGdlKTsKLSAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKLSAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwg
ZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QoZ3ByKSk7CisgICAgc3Bl
Y3VsYXRlT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTE5ZGY2NWYxNzJiMzQ5NGFhZTBiMmYy
MzkxYWQ5YmE5MzYyMTk0NS4uMWM0ZDQzMDEzYmJiYzNjMjZiNjM3YjIwOTY4ZWQyOTg4MzBjYTAy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMTM5OCw2ICsxMzk4LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaW1wbCks
IFRydXN0ZWRJbW0zMih2YWx1ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwpAQCAtMTcx
MCw2ICsxNzE1LDEyIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRU9KIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5ncHIoKSk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPWkQgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmcz
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOwpAQCAtMTg5Niw2ICsxOTA3LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklU
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50
YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9HIG9w
ZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0KSk7CkBAIC0yMjA2LDYgKzIyMjIsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQs
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BS
KCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FT0ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcy
LnRhZ0dQUigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KKwogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlv
biwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBA
IC0yODA2LDYgKzI4MjksNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBzcGVj
dWxhdGVCb29sZWFuKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICB2
b2lkIHNwZWN1bGF0ZUNlbGxPck90aGVyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0
KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZU9iamVjdChFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZUFycmF5KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1
bGF0ZUFycmF5KEVkZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDA5YzNhMzE4YzA2YjYwOWM4YWI0NjAyZDRhMDEwMWFmYmM0NDhiYTcu
LjRkMmUzYmZjMDJmNWZkMmI1YTg1MjA0MjFiNWE5MTZlYmYyNzMwZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTc5NTcsMTYgKzc5NTcs
MTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbigpCiAg
ICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwogCiAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIEVkZ2UgYmFzZSA9IG5vZGUtPmNoaWxkMigp
OwotICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwoYmFzZSk7CisgICAgICAgIExWYWx1ZSBv
YmplY3QgPSBsb3dPYmplY3QoYmFzZSk7CiAgICAgICAgIGlmIChKU1N0cmluZyogc3RyaW5nID0g
bm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNTdHJpbmcqPigpKSB7CiAgICAg
ICAgICAgICBpZiAoc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpLT5pc0F0b21pYygpKSB7CiAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHN0ciA9IGJpdHdpc2VfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+KHN0cmluZy0+dHJ5R2V0
VmFsdWVJbXBsKCkpOwogICAgICAgICAgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKLSAgICAgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51
bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtODAzMiw5ICs4MDMyLDE0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBvaW50KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gCisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpIHsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uR2VuZXJpY0luSW50MzIpLCBtX2NhbGxGcmFtZSwgb2JqZWN0LCBsb3dJbnQzMihtX25vZGUt
PmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAg
c2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZW5lcmlj
SW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkdlbmVyaWNJbiksIG1fY2FsbEZyYW1lLCBvYmplY3QsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA4MjFiMGJiNDcw
ZWRiMDJiY2RhOWU2YzU0YmJiODA3MjlhYzdmMzAwLi44OTdlZWEzMjYyNTBkZGJiNTBkYjU2ZmMx
YWMyZTgxMTIzODg1ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTMxNCwxNiArMzE0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHUKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJv
cGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSBrZXkpCi17Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOwotICAgIAotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShr
ZXkpLCBiYXNlKSkpOwotfQotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0
cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IDU5MGIzYzU2ZjliOGIzNmQ2M2I2ZTJhNTM3Mjk3NDYwOWZiMDZiYzUuLjQ2YzQzODc0NDI1
MDdjYjJmYTI5MjlkODA0NjI3M2U5N2I2OTI2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNzQsNiArMTc0LDggQEAgdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQz
Ml90LAogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRp
b25fRVpTeW10YWJKKShFeGVjU3RhdGUqLCBpbnQzMl90LCBTeW1ib2xUYWJsZSosIEVuY29kZWRK
U1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3Bl
cmF0aW9uX0VPSVVpKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwg
dWludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBVbmlxdWVkU3RyaW5nSW1wbCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRU9aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3Qp
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RU9KKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgSlND
ZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRVBVaSkoRXhlY1N0YXRlKiwgdm9p
ZCosIHVpbnQzMl90KTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVy
YXRpb25fRSkoRXhlY1N0YXRlKik7CiB0eXBlZGVmIEpTQ2VsbCogKEpJVF9PUEVSQVRJT04gKkNf
SklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAgLTMzNyw3ICszMzksNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjM3
OTc5ZjU3NDEwNDgwMDNlODIyMDk5NjRmMmY5N2M0ZGI5Yzc5Zi4uMmQxNGQ4MDgxNjJmMTMxNWY1
MzE4NmQwMGU3ZWI4MjlkYzI0NWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQxOSw3ICsxNDE5LDcgQEAgX2xs
aW50X29wX2lzX2Z1bmN0aW9uOgogX2xsaW50X29wX2luOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbikKLSAgICBkaXNwYXRjaCg0KQor
ICAgIGRpc3BhdGNoKDUpCiAKIAogX2xsaW50X29wX3RyeV9nZXRfYnlfaWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAyZGY3
N2QzOGU0NjQ4MzdhMDVmODA2YjM5MzY5M2MzNTc0NmIzM2YwLi41ODYzMGFlMDc3YzQ5MjIyZmEy
ZmVhMzY0OGRhOWZiYTg0ZmUwNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTYxOSw3ICs2MTksNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4p
CiB7CiAgICAgQkVHSU4oKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7CisgICAg
UkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgT1BfQygyKS5qc1Zh
bHVlKCksIE9QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51LmFycmF5UHJvZmlsZSkpKTsKIH0KIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGZjYzMwZDA1ZTI0ZTExNTMw
MjE4MzgzMTVkNjNlYWFmNGNjZjI5NDEuLjExNjMzODMzMDIwYzcwNzAwYmM0YzgzZTU1NmZjZGEx
MGNjMjFjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC03MSw3ICs3MSw3IEBAIEFMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tG
b3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQKICAgICBy
ZXR1cm4gcGFkZGVkU3RhY2tTcGFjZTsKIH0KIAotaW5saW5lIGJvb2wgb3BJbihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgcHJvcE5hbWUsIEpTVmFsdWUgYmFzZVZhbCkKK2lubGluZSBib29sIG9w
SW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODEsNiArODEsNyBA
QCBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwgSlNW
YWx1ZSBiYXNlVmFsKQogICAgIH0KIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3Qo
YmFzZVZhbCk7CisgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKGJhc2VPYmotPnN0
cnVjdHVyZSh2bSkpOwogCiAgICAgdWludDMyX3QgaTsKICAgICBpZiAocHJvcE5hbWUuZ2V0VUlu
dDMyKGkpKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDNlYWY3ODZhNjdkNjBhYTAxNjhkODM1MWEyMGU2OGY2ZDUyNzNiZDYuLjRiMjdh
ZTM3YmNiNWI0N2U4YmE5ZDViZjUzNWIzYzI3NTlkYWMzNGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYt
MTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gT3B0aW1pemUgaW4gb3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9vcGVyYXRpb24taW4uanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob3BJbik6CisKIDIwMTYtMTItMDYgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSB0aGUgY29uY2VwdCBv
ZiBJbW11dGFibGUgUHJvdG90eXBlIEV4b3RpYyBPYmplY3RzIHRvIGNvbXBseSB3aXRoIHRoZSBz
cGVjLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3BlcmF0aW9uLWluLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvb3BlcmF0aW9uLWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMmU3ZWNjMmZhYjFiOTdlNmU1
MThlMTA5YWFkMmNhZGNmMDU1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9v
cGVyYXRpb24taW4uanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIG9wSW4o
YmFzZSwga2V5KQoreworICAgIHJldHVybiBrZXkgaW4gYmFzZTsKK30KK25vSW5saW5lKG9wSW4p
OworCit2YXIgb2JqZWN0ID0gWyAwLCAxLCAyLCAzIF07Citmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgc2hvdWxkQmUob3BJbihvYmplY3QsIC0xKSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKG9wSW4ob2JqZWN0LCAwKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUob3BJbihvYmplY3Qs
IDEpLCB0cnVlKTsKKyAgICBzaG91bGRCZShvcEluKG9iamVjdCwgMiksIHRydWUpOworICAgIHNo
b3VsZEJlKG9wSW4ob2JqZWN0LCAzKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUob3BJbihvYmplY3Qs
IDQpLCBmYWxzZSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>