<?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>154844</bug_id>
          
          <creation_ts>2016-02-29 20:04:27 -0800</creation_ts>
          <short_desc>[DFG] Drop comparison based on speculative types and constants</short_desc>
          <delta_ts>2016-04-14 21:59:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>153738</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169354</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-02-29 20:04:27 -0800</bug_when>
    <thetext>For example,

if (Int32Speculated &lt; 0x1FFFFFFFFFFFFF)
    return Int32Speculated;
return 0x1FFFFFFFFFFFFF;

Since 0x1FFFFFFFFFFFFF is out of range of Int32, if the Int32Speculated is ensured that is Int32 (by edge filtering), this condition should be dropped.
And it should be considered as follows in DFG.

return Int32Speculated;

This case actually happens in @toLength builtin function. We cap length values with 0x1FFFFFFFFFFFFF.
Currently, since 0x1FFFFFFFFFFFFF is double represented value, the result of @toLength is speculated as double.
It leads using double for iteration condition in Array.prototype.{forEach...}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176117</commentid>
    <comment_count>1</comment_count>
      <attachid>274395</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-18 01:46:24 -0700</bug_when>
    <thetext>Created attachment 274395
Patch

WIP: super super initial conceptual one. This fixes speculation of the returned value of @toLength (this was polluted due to  branch). The patch is not cleaned up / generalized yet. But octane TypeScript bench shows stable 1.2% ~ improvements. And array-prototype-xxx regress tests show slight improvements. But array-prototype-reduceRight shows 42% improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176122</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-18 01:53:00 -0700</bug_when>
    <thetext>Of course, this patch still lacks a lot of careful treatments for doubles. (NaN, Infinity etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176124</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-18 02:14:24 -0700</bug_when>
    <thetext>Ideally, we would like to perform this folding in constant folding phase. But it&apos;s too late because Double polluted results are already propagated at that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183998</commentid>
    <comment_count>4</comment_count>
      <attachid>276459</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-14 21:59:30 -0700</bug_when>
    <thetext>Created attachment 276459
Patch

WIP, it shows 5-7% (And 67% for array-prototype-reduceRight) perf win for array-prototype-xxx</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274395</attachid>
            <date>2016-03-18 01:46:24 -0700</date>
            <delta_ts>2016-04-14 21:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154844-20160318174623.patch</filename>
            <type>text/plain</type>
            <size>22424</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4Mzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YjUxMmI5NjI1YmM3OWNjYzQ2ZGZmOTY1MzM2ZWFmYjJlZWRlMzViLi4xNTJiYzQzZjRkMTFlYmVm
ZmVlN2Q2MTYwZDgzODc3OGYyZjk3NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNi0wMy0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBEcm9wIGNvbXBhcmlzb24gYmFzZWQgb24gc3BlY3VsYXRp
dmUgdHlwZXMgYW5kIGNvbnN0YW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0ODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAgICAgICh0b0lu
dGVnZXIpOgorICAgICAgICAodG9MZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9k
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBBcml0aE1pbk1heCk6Cisg
ICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6ZG9Eb3VibGVWb3Rpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5oOgorCiAyMDE2LTAzLTE3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2Ug
Q1NFJ3MgSW1wdXJlRGF0YSBmYXN0ZXIgd2hlbiBkZWFsaW5nIHdpdGggbGFyZ2UgYmxvY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwppbmRleCBk
YjUzYzM5N2JiZjU0YzBkNTBkNmQwNDE0ZWRjODIzZDMzODQ1ZDM2Li4xMmE5NWRkOGQ2MDM3M2Y1
OTAwNjA4N2RkMjU0MmUxNGVmNDc4YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HbG9iYWxPYmplY3QuanMKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdG9JbnRl
Z2VyKHRhcmdldCkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgbnVtYmVyVmFsdWUg
PSBATnVtYmVyKHRhcmdldCk7CisgICAgbGV0IG51bWJlclZhbHVlID0gQE51bWJlcih0YXJnZXQp
OwogCiAgICAgLy8gaXNOYU4obnVtYmVyVmFsdWUpCiAgICAgaWYgKG51bWJlclZhbHVlICE9PSBu
dW1iZXJWYWx1ZSkKQEAgLTM4LDE3ICszOCwyMiBAQCBmdW5jdGlvbiB0b0ludGVnZXIodGFyZ2V0
KQogICAgIGlmIChudW1iZXJWYWx1ZSA9PT0gMCB8fCAhQGlzRmluaXRlKG51bWJlclZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIG51bWJlclZhbHVlOwogCi0gICAgcmV0dXJuIChudW1iZXJWYWx1ZSA+
IDAgPyAxIDogLTEpICogQGZsb29yKEBhYnMobnVtYmVyVmFsdWUpKTsKKyAgICBsZXQgcmVzdWx0
ID0gQGZsb29yKEBhYnMobnVtYmVyVmFsdWUpKTsKKyAgICBpZiAobnVtYmVyVmFsdWUgPiAwKQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAtcmVzdWx0OwogfQogCiBmdW5jdGlv
biB0b0xlbmd0aCh0YXJnZXQpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIG1heFNh
ZmVJbnRlZ2VyID0gMHgxRkZGRkZGRkZGRkZGRjsKLSAgICB2YXIgbGVuZ3RoID0gQHRvSW50ZWdl
cih0YXJnZXQpOwotICAgIC8vIG9yaWdpbmFsbHkgTWF0aC5taW4oTWF0aC5tYXgobGVuZ3RoLCAw
KSwgbWF4U2FmZUludGVnZXIpKTsKLSAgICByZXR1cm4gbGVuZ3RoID4gMCA/IChsZW5ndGggPCBt
YXhTYWZlSW50ZWdlciA/IGxlbmd0aCA6IG1heFNhZmVJbnRlZ2VyKSA6IDA7CisgICAgbGV0IGxl
bmd0aCA9IEB0b0ludGVnZXIodGFyZ2V0KTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAg
ICBjb25zdCBtYXhTYWZlSW50ZWdlciA9IDB4MUZGRkZGRkZGRkZGRkY7CisgICAgICAgIHJldHVy
biBAbWluKGxlbmd0aCwgbWF4U2FmZUludGVnZXIpOworICAgIH0KKyAgICByZXR1cm4gMDsKIH0K
IAogZnVuY3Rpb24gaXNEaWN0aW9uYXJ5KG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA4
M2NlZDc2NDdmZjg5MTA5MDNlMmJlYmJlZTI2NjkwYTUxZTYyZDM1Li44ZDAwNGE4NTU3MDY0YTZl
Y2Y3YjNlMTJjZjViOWIwMjc3ZDk2MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xMjQyLDYg
KzEyNDIsNzcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorCisgICAgICAgIGlmIChsZWZ0Q29uc3QgfHwgcmlnaHRDb25zdCkgeworICAgICAgICAg
ICAgYXV0byBmb2xkQ29uc3RhbnQgPSBbJl0gKGRvdWJsZSBjb25zdGFudCwgQWJzdHJhY3RWYWx1
ZSYgbm9uQ29uc3RhbnQsIGJvb2wgbGVmdElzQ29uc3RhbnQpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgIGF1dG8gcGVyZm9ybUZvbGQgPSBbJl0gKGJvb2wgbGVmdElzQ29uc3RhbnQsIGJvb2wg
Y29uc3RhbnRJc0dyZWF0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSW52ZXJ0IHRoZSBy
ZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN0YW50SXNHcmVhdGVyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbGVmdElzQ29uc3RhbnQgPSAhbGVmdElzQ29uc3RhbnQ7CisK
KyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFy
ZUxlc3NFcToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNldENvbnN0YW50KG5vZGUs
IGpzQm9vbGVhbighbGVmdElzQ29uc3RhbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLT5zZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4obGVmdElzQ29uc3RhbnQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENv
bXBhcmVFcToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNldENvbnN0YW50KG5vZGUs
IGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAg
ICAgaWYgKGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbihub25Db25zdGFudC5tX3R5cGUpKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50
SXNHcmVhdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1Gb2xkKGxl
ZnRJc0NvbnN0YW50LCBjb25zdGFudElzR3JlYXRlcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb25zdGFudCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtRm9sZChsZWZ0SXNDb25zdGFudCwgY29u
c3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoZW5hYmxlSW50NTIoKSAmJiBpc0ludGVnZXJTcGVjdWxhdGlvbihub25Db25zdGFudC5t
X3R5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBpbnQ1Mk1heCA9IHN0
YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgPj4g
SlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSBpbnQ1Mk1pbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCkgPj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb25zdGFudCA+IGludDUyTWF4KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBlcmZvcm1Gb2xkKGxlZnRJc0NvbnN0YW50LCBjb25zdGFudElzR3JlYXRlcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IGludDUyTWluKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwZXJmb3JtRm9sZChsZWZ0SXNDb25zdGFudCwgY29uc3RhbnRJc0dy
ZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAobGVmdENvbnN0ICYmIGxl
ZnRDb25zdC5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBsZWZ0SXNDb25zdGFu
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGZvbGRDb25zdGFudChsZWZ0Q29uc3QuYXNO
dW1iZXIoKSwgZm9yTm9kZShub2RlLT5jaGlsZDIoKSksIGxlZnRJc0NvbnN0YW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChy
aWdodENvbnN0ICYmIHJpZ2h0Q29uc3QuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGJv
b2wgbGVmdElzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZm9sZENvbnN0
YW50KHJpZ2h0Q29uc3QuYXNOdW1iZXIoKSwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSksIGxlZnRJ
c0NvbnN0YW50KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkg
ewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdFR5cGUgPSBmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA0MTFiYTRkZWNlNzc2M2Q2OWE2M2YwZjZkMTgxNTZhOWI4MmE4ZWFiLi42NDU5
MTJjY2M2ZmJhYWM3ZThmY2VjMWUzMWUyZGYwOTM3Yjg4ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTMyMCwxNCArMzIwLDcgQEAgY2xhc3Mg
Rml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
cml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0aE1heDogewotICAgICAgICAgICAgaWYgKG1fZ3Jh
cGguYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBhc3MpKSB7Ci0g
ICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhEb3VibGVPckJv
b2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVh
bkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHREb3VibGUpOworICAgICAgICAgICAgZml4dXBBcml0aE1pbk1heChub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3NTEsNiArMTc0NCwx
MDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICB2b2lkIGZpeHVwQXJpdGhNaW5NYXgoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOworICAg
ICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7
CisKKyAgICAgICAgYXV0byBzcGVjdWxhdGVNaW5UeXBlV2l0aENvbnN0YW50ID0gWyZdIChkb3Vi
bGUgY29uc3RhbnQsIFNwZWN1bGF0ZWRUeXBlLCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlw
ZSwgTm9kZSosIE5vZGUqIHNwZWN1bGF0ZWROb2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgIGF1
dG8gcGVyZm9ybVByZWRpY3Rpb24gPSBbJl0gKGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIsIFNwZWN1
bGF0ZWRUeXBlIGludFR5cGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBB
cml0aE1pbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN0YW50SXNHcmVhdGVyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gc3BlY3VsYXRl
ZE5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRp
dHlPbihub2RlLT5jaGlsZDIoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBzcGVjdWxhdGVkTm9k
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9u
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHlPbihub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW50VHlw
ZSA9PSBTcGVjSW50MzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4SW50T3JCb29s
ZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29uc3RhbnRJc0dyZWF0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKSA9PSBzcGVjdWxhdGVkTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHlPbihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpID09IHNwZWN1bGF0ZWROb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpbnRUeXBlID09IFNwZWNJbnQzMikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaXhJbnRPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb24o
c3BlY3VsYXRlZFR5cGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50ID4gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9v
bCBjb25zdGFudElzR3JlYXRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1Q
cmVkaWN0aW9uKGNvbnN0YW50SXNHcmVhdGVyLCBTcGVjSW50MzIpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBp
ZiAoY29uc3RhbnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgeworICAg
ICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIHBlcmZvcm1QcmVkaWN0aW9uKGNvbnN0YW50SXNHcmVhdGVyLCBTcGVjSW50
MzIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGlzSW50
ZWdlclNwZWN1bGF0aW9uKHNwZWN1bGF0ZWRUeXBlKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IGRvdWJsZSBpbnQ1Mk1heCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWF4KCkgPj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCk7CisgICAgICAg
ICAgICAgICAgY29uc3QgZG91YmxlIGludDUyTWluID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1v
dW50KTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPiBpbnQ1Mk1heCkgeworICAgICAg
ICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIsIFNwZWNJbnQ1Mik7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IGludDUyTWluKSB7CisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIsIFNwZWNJbnQ1Mik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworCisgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CisgICAgICAgICAgICBp
ZiAoc3BlY3VsYXRlTWluVHlwZVdpdGhDb25zdGFudChub2RlLT5jaGlsZDEoKS0+YXNOdW1iZXIo
KSwgbGVmdCwgcmlnaHQsIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQyKCktPmlzTnVtYmVyQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgaWYgKHNw
ZWN1bGF0ZU1pblR5cGVXaXRoQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCktPmFzTnVtYmVyKCksIHJp
Z2h0LCBsZWZ0LCBub2RlLT5jaGlsZDIoKS5ub2RlKCksIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZ3Jh
cGguYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBhc3MpKSB7Cisg
ICAgICAgICAgICBmaXhJbnRPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEludE9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgIH0KKwogICAg
IGJvb2wgYXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAg
ICAgIGJvb2wgZ29vZFRvR28gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBkOTEw
MWI4YWQ1NmE1YmEwMTAxMjVjY2E2YjRhMmQyM2E2NDFlN2RmLi42NDI3YTA5OTdiZTcxOTk1NzIz
ODBmYjRmMmIwN2JlMjlhNmY1Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMzE2LDEy
ICszMTYsNzIgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBBcml0aE1pbjoKLSAgICAgICAgY2FzZSBBcml0aE1heDogeworICAgICAgICBj
YXNlIEFyaXRoTWF4OgorICAgICAgICBjYXNlIEFyaXRoTWluOiB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSBsZWZ0ID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgeworICAgICAg
ICAgICAgICAgIGlmICAobm9kZS0+Y2hpbGQxKCktPmlzTnVtYmVyQ29uc3RhbnQoKSB8fCBub2Rl
LT5jaGlsZDIoKS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gc3BlY3VsYXRlTWluVHlwZVdpdGhDb25zdGFudCA9IFsmXSAoZG91YmxlIGNvbnN0YW50LCBT
cGVjdWxhdGVkVHlwZSBjb25zdGFudFR5cGUsIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBl
KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcGVyZm9ybVByZWRpY3Rp
b24gPSBbJl0gKGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcml0aE1pbikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJc0dyZWF0ZXIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkVHlw
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNvbnN0YW50
VHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdGFudElzR3JlYXRlcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1
bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
Y29uc3RhbnRUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMk9y
Qm9vbGVhblNwZWN1bGF0aW9uKHNwZWN1bGF0ZWRUeXBlKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjb25zdGFudCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29uc3RhbnRJc0dy
ZWF0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtUHJl
ZGljdGlvbihjb25zdGFudElzR3JlYXRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Y29uc3RhbnRJc0dyZWF0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChlbmFibGVJbnQ1MigpICYmIGlzSW50ZWdlclNwZWN1bGF0aW9uKHNwZWN1bGF0ZWRUeXBl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBpbnQ1Mk1heCA9
IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkg
Pj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZG91YmxlIGludDUyTWluID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPiBpbnQ1Mk1heCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24o
Y29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPCBpbnQ1Mk1pbikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1QcmVkaWN0aW9uKGNvbnN0YW50SXNHcmVh
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5pc051bWJlckNv
bnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGVjdWxhdGVNaW5UeXBl
V2l0aENvbnN0YW50KG5vZGUtPmNoaWxkMSgpLT5hc051bWJlcigpLCBsZWZ0LCByaWdodCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPmlzTnVtYmVyQ29uc3Rh
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwZWN1bGF0ZU1pblR5cGVXaXRo
Q29uc3RhbnQobm9kZS0+Y2hpbGQyKCktPmFzTnVtYmVyKCksIHJpZ2h0LCBsZWZ0KSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVJbnQzMk9yQm9vbGVhbkZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmNhblNwZWN1
bGF0ZUludDMyKG1fcGFzcykpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQzMik7CkBAIC04NzgsOCArOTM4LDkzIEBAIGNsYXNzIFByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBBcml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0aE1h
eDoKKyAgICAgICAgY2FzZSBBcml0aE1pbjogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
bGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisKKyAgICAgICAg
ICAgIGF1dG8gc3BlY3VsYXRlTWluVHlwZVdpdGhDb25zdGFudCA9IFsmXSAoZG91YmxlIGNvbnN0
YW50LCBTcGVjdWxhdGVkVHlwZSBjb25zdGFudFR5cGUsIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0
ZWRUeXBlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRvIHBlcmZvcm1QcmVkaWN0aW9u
ID0gWyZdIChib29sIGNvbnN0YW50SXNHcmVhdGVyKSB7CisgICAgICAgICAgICAgICAgICAgIERv
dWJsZUJhbGxvdCBiYWxsb3Q7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJl
c3VsdFR5cGUgPSBjb25zdGFudFR5cGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5v
cCgpID09IEFyaXRoTWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJ
c0dyZWF0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0VHlwZSA9IHNwZWN1
bGF0ZWRUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBjb25zdGFudFR5cGU7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN0YW50SXNHcmVh
dGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBzcGVjdWxhdGVk
VHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRUeXBlID0gY29uc3RhbnRUeXBlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJlc3Vs
dFR5cGUpICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSwg
bV9wYXNzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhbGxvdCA9
IFZvdGVWYWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZvdGVOb2RlKG5vZGUt
PmNoaWxkMSgpLCBiYWxsb3QsIHdlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
dm90ZU5vZGUobm9kZS0+Y2hpbGQyKCksIGJhbGxvdCwgd2VpZ2h0KTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbihz
cGVjdWxhdGVkVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50ID4gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBpZiAoY29uc3RhbnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb25zdGFudElzR3JlYXRlciA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3Rh
bnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBp
ZiAoZW5hYmxlSW50NTIoKSAmJiBpc0ludGVnZXJTcGVjdWxhdGlvbihzcGVjdWxhdGVkVHlwZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIGludDUyTWF4ID0gc3RhdGljX2Nh
c3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSA+PiBKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIGlu
dDUyTWluID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvbnN0YW50ID4gaW50NTJNYXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgY29uc3RhbnRJc0dyZWF0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgcGVy
Zm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICBpZiAoY29uc3RhbnQgPCBpbnQ1Mk1pbikgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjb25zdGFudElzR3JlYXRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
cGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzTnVtYmVyQ29uc3RhbnQoKSkgeworICAg
ICAgICAgICAgICAgIGlmIChzcGVjdWxhdGVNaW5UeXBlV2l0aENvbnN0YW50KG5vZGUtPmNoaWxk
MSgpLT5hc051bWJlcigpLCBsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPmlzTnVt
YmVyQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChzcGVjdWxhdGVNaW5UeXBlV2l0
aENvbnN0YW50KG5vZGUtPmNoaWxkMigpLT5hc051bWJlcigpLCByaWdodCwgbGVmdCkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBEb3Vi
bGVCYWxsb3QgYmFsbG90OworCisgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRp
b24obGVmdCkKKyAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihyaWdo
dCkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0
ZUludDMyKG5vZGUsIG1fcGFzcykpCisgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJs
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7
CisKKyAgICAgICAgICAgIG1fZ3JhcGgudm90ZU5vZGUobm9kZS0+Y2hpbGQxKCksIGJhbGxvdCwg
d2VpZ2h0KTsKKyAgICAgICAgICAgIG1fZ3JhcGgudm90ZU5vZGUobm9kZS0+Y2hpbGQyKCksIGJh
bGxvdCwgd2VpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBBcml0aE1vZDoKICAgICAgICAgY2FzZSBBcml0aERpdjogewogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA4
NWY0NTQ1MGRhYTY4ODUzYjlkZTVlMGJjNDcxZjM0NGE1ZDY2MDIyLi4xMDIxM2RjMjViYzUyMjAz
NDUwYmY2ZTUxN2U0MTU1YWJkN2JiMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMxNyw2ICszMTcsNyBAQAogICAgIG1h
Y3JvKGZsb29yKSBcCiAgICAgbWFjcm8oaXNGaW5pdGUpIFwKICAgICBtYWNybyhpc05hTikgXAor
ICAgIG1hY3JvKG1pbikgXAogICAgIG1hY3JvKGdldFByb3RvdHlwZU9mKSBcCiAgICAgbWFjcm8o
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCiAgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1l
cykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDMxZWM5ZGYxNTQ3ZGZkZDNmZjIxNTYwM2ViNTNjNTQzNmI0Yjk5ZTMuLjQzNjlm
ZjRlZWMzMzRjOWMwYmVkN2U1YjI4MmU5YmFjMWEyZGNjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU2Niw2ICs1NjYsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmZsb29yUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jRmxv
b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzRmluaXRlUHJpdmF0ZU5hbWUsIHByaXZhdGVG
dW5jSXNGaW5pdGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzTmFOUHJpdmF0ZU5hbWUsIHBy
aXZhdGVGdW5jSXNOYU4sIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPm1pblByaXZhdGVOYW1lLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jTWlu
LCBNaW5JbnRyaW5zaWMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5h
bWUsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+UmVmbGVjdFBy
aXZhdGVOYW1lLCByZWZsZWN0T2JqZWN0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbnRlcm5h
bFByb21pc2VQcml2YXRlTmFtZSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuaAppbmRleCA5ZDFjMTgxYzBmMWVmYWEyMGIzNWY3ZTg1ZDhkZmFkYmZmNDYz
NzliLi5iYWU4Yzc3NDUyZmZiNTk2NjgxMjViZWI4NWQwMmE1YjljMWZjNTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC01Myw2ICs1Myw3IEBAIGNs
YXNzIE1hdGhPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEV4ZWNTdGF0ZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0ZSopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276459</attachid>
            <date>2016-04-14 21:59:30 -0700</date>
            <delta_ts>2016-04-14 21:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154844-20160415135942.patch</filename>
            <type>text/plain</type>
            <size>24066</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWIyNjAzZGUwZDA5MzUyODU5NmE4ODQwOTgzZWRjNzZkNjZiODBhLi5kYTU3NzRkZDE1MzgzNmM1
NzNiYjI1NGZlYzM4YmE5YWM5YTBhZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNi0wNC0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBEcm9wIGNvbXBhcmlzb24gYmFzZWQgb24gc3BlY3VsYXRp
dmUgdHlwZXMgYW5kIGNvbnN0YW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0ODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAgICAgICh0b0xl
bmd0aCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cEFyaXRoTWluTWF4KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlOjpkb0RvdWJsZVZvdGluZyk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKwogMjAx
Ni0wNC0xNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTk1NjcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwppbmRleCA1YmNiYzIyNmQyZjUyNmQ5MWMzZGU4OTlm
MWJiY2E5NTczOWU2NzllLi5jYThmMDRjMzEwM2NkOGZmYjRjZmYzNWQ1ZTExZTUyNDBlN2EwM2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMK
QEAgLTQxLDEwICs0MSw4IEBAIGZ1bmN0aW9uIHRvTGVuZ3RoKHRhcmdldCkKIHsKICAgICAidXNl
IHN0cmljdCI7CiAKLSAgICB2YXIgbWF4U2FmZUludGVnZXIgPSAweDFGRkZGRkZGRkZGRkZGOwog
ICAgIHZhciBsZW5ndGggPSBAdG9JbnRlZ2VyKHRhcmdldCk7Ci0gICAgLy8gb3JpZ2luYWxseSBN
YXRoLm1pbihNYXRoLm1heChsZW5ndGgsIDApLCBtYXhTYWZlSW50ZWdlcikpOwotICAgIHJldHVy
biBsZW5ndGggPiAwID8gKGxlbmd0aCA8IG1heFNhZmVJbnRlZ2VyID8gbGVuZ3RoIDogbWF4U2Fm
ZUludGVnZXIpIDogMDsKKyAgICByZXR1cm4gQG1pbihAbWF4KGxlbmd0aCwgMCksIEBNQVhfU0FG
RV9JTlRFR0VSKTsKIH0KIAogZnVuY3Rpb24gaXNEaWN0aW9uYXJ5KG9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCBmYjU0NGZjNTE0ZWY1ZGRjZTA3MDFiZDc5Y2FmY2Q2MDY5MDk0ODM1Li5k
NWU2YzQxZTM3YzZjZWYyZmQxNDcyOTdjMTdjNzdlZTM4ZTAxYzI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xMjk1LDYgKzEyOTUsNzcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmIChsZWZ0Q29uc3QgfHwgcmlnaHRDb25z
dCkgeworICAgICAgICAgICAgYXV0byBmb2xkQ29uc3RhbnQgPSBbJl0gKGRvdWJsZSBjb25zdGFu
dCwgQWJzdHJhY3RWYWx1ZSYgbm9uQ29uc3RhbnQsIGJvb2wgbGVmdElzQ29uc3RhbnQpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgIGF1dG8gcGVyZm9ybUZvbGQgPSBbJl0gKGJvb2wgbGVmdElz
Q29uc3RhbnQsIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSW52ZXJ0IHRoZSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN0YW50
SXNHcmVhdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgbGVmdElzQ29uc3RhbnQgPSAhbGVm
dElzQ29uc3RhbnQ7CisKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbighbGVmdElzQ29uc3RhbnQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVh
dGVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLT5zZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4obGVmdElz
Q29uc3RhbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIENvbXBhcmVFcToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbihub25Db25z
dGFudC5tX3R5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBlcmZvcm1Gb2xkKGxlZnRJc0NvbnN0YW50LCBjb25zdGFudElzR3JlYXRlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1pbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNH
cmVhdGVyID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtRm9sZChsZWZ0
SXNDb25zdGFudCwgY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBpc0ludGVnZXJTcGVjdWxhdGlv
bihub25Db25zdGFudC5tX3R5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJs
ZSBpbnQ1Mk1heCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWF4KCkgPj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRvdWJsZSBpbnQ1Mk1pbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgPj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA+IGludDUyTWF4KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBlcmZvcm1Gb2xkKGxlZnRJc0NvbnN0YW50LCBjb25zdGFudElz
R3JlYXRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IGludDUy
TWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtRm9sZChsZWZ0SXNDb25zdGFu
dCwgY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAo
bGVmdENvbnN0ICYmIGxlZnRDb25zdC5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgYm9v
bCBsZWZ0SXNDb25zdGFudCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGZvbGRDb25zdGFu
dChsZWZ0Q29uc3QuYXNOdW1iZXIoKSwgZm9yTm9kZShub2RlLT5jaGlsZDIoKSksIGxlZnRJc0Nv
bnN0YW50KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChyaWdodENvbnN0ICYmIHJpZ2h0Q29uc3QuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgICAgIGJvb2wgbGVmdElzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoZm9sZENvbnN0YW50KHJpZ2h0Q29uc3QuYXNOdW1iZXIoKSwgZm9yTm9kZShub2RlLT5j
aGlsZDEoKSksIGxlZnRJc0NvbnN0YW50KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IENvbXBhcmVFcSkgewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdFR5cGUgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAyMGRjZDBkNTFjNzBmM2ZhMGI2Nzg2YjFkYWE2ZjBm
NTQwMzBmMTU4Li45Y2UxMTQzODA5NmMxN2I1YThlMzMzZGJhOWNlOTE2NDQwYjI5MWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTMyMSwxNCAr
MzIxLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBBcml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0aE1heDogewotICAgICAg
ICAgICAgaWYgKG1fZ3JhcGguYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBG
aXh1cFBhc3MpKSB7Ci0gICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5jaGls
ZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZp
eERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgZml4dXBBcml0aE1pbk1h
eChub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTE3NjksNiArMTc2MiwxMDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGZpeHVwQXJpdGhNaW5NYXgoTm9kZSogbm9kZSkK
KyAgICB7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBub2RlLT5jaGlsZDEoKS0+cHJl
ZGljdGlvbigpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigp
LT5wcmVkaWN0aW9uKCk7CisKKyAgICAgICAgYXV0byBzcGVjdWxhdGVNaW5UeXBlV2l0aENvbnN0
YW50ID0gWyZdIChkb3VibGUgY29uc3RhbnQsIFNwZWN1bGF0ZWRUeXBlLCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGVkVHlwZSwgTm9kZSosIE5vZGUqIHNwZWN1bGF0ZWROb2RlKSAtPiBib29sIHsK
KyAgICAgICAgICAgIGF1dG8gcGVyZm9ybVByZWRpY3Rpb24gPSBbJl0gKGJvb2wgY29uc3RhbnRJ
c0dyZWF0ZXIsIFNwZWN1bGF0ZWRUeXBlIGludFR5cGUpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBBcml0aE1pbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN0
YW50SXNHcmVhdGVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkgPT0gc3BlY3VsYXRlZE5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvSWRlbnRpdHlPbihub2RlLT5jaGlsZDIoKS5ub2RlKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9
PSBzcGVjdWxhdGVkTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
SWRlbnRpdHlPbihub2RlLT5jaGlsZDIoKS5ub2RlKCkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaW50VHlwZSA9PSBTcGVjSW50MzIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJc0dyZWF0ZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBzcGVjdWxhdGVkTm9kZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHlPbihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IHNwZWN1bGF0ZWROb2RlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRUeXBlID09IFNwZWNJbnQzMikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhJbnRPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChpc0ludDMyT3JCb29s
ZWFuU3BlY3VsYXRpb24oc3BlY3VsYXRlZFR5cGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnN0YW50ID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYm9vbCBjb25zdGFudElzR3JlYXRlciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIHBlcmZvcm1QcmVkaWN0aW9uKGNvbnN0YW50SXNHcmVhdGVyLCBTcGVjSW50MzIpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptaW4oKSkgeworICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1QcmVkaWN0aW9uKGNvbnN0YW50SXNH
cmVhdGVyLCBTcGVjSW50MzIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlbmFibGVJ
bnQ1MigpICYmIGlzSW50ZWdlclNwZWN1bGF0aW9uKHNwZWN1bGF0ZWRUeXBlKSkgeworICAgICAg
ICAgICAgICAgIGNvbnN0IGRvdWJsZSBpbnQ1Mk1heCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgPj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFt
b3VudCk7CisgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIGludDUyTWluID0gc3RhdGljX2Nh
c3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSA+PiBKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPiBpbnQ1
Mk1heCkgeworICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0
ZXIsIFNwZWNJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IGludDUyTWluKSB7
CisgICAgICAgICAgICAgICAgICAgIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIsIFNw
ZWNJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9OworCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNOdW1iZXJDb25zdGFudCgpKSB7
CisgICAgICAgICAgICBpZiAoc3BlY3VsYXRlTWluVHlwZVdpdGhDb25zdGFudChub2RlLT5jaGls
ZDEoKS0+YXNOdW1iZXIoKSwgbGVmdCwgcmlnaHQsIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPmlzTnVtYmVyQ29uc3RhbnQoKSkgeworICAg
ICAgICAgICAgaWYgKHNwZWN1bGF0ZU1pblR5cGVXaXRoQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkt
PmFzTnVtYmVyKCksIHJpZ2h0LCBsZWZ0LCBub2RlLT5jaGlsZDIoKS5ub2RlKCksIG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1fZ3JhcGguYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBG
aXh1cFBhc3MpKSB7CisgICAgICAgICAgICBmaXhJbnRPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEludE9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZpeERvdWJsZU9yQm9vbGVh
bkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUp
OworICAgIH0KKwogICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQoTm9kZSogbm9k
ZSkKICAgICB7CiAgICAgICAgIGJvb2wgZ29vZFRvR28gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCA4NDRjNzQ5N2E2MzQ0Y2YyYTE5Mjc4NzE3YjNiYTViMTQ1ZjA5M2JmLi5kZGQz
YWIxNmY2MDE2YmQwNDlmMTEzZjRkYTk3NjY1MGVmN2I5YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtMzIwLDEyICszMjAsNzIgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aE1pbjoKLSAgICAgICAgY2FzZSBBcml0aE1h
eDogeworICAgICAgICBjYXNlIEFyaXRoTWF4OgorICAgICAgICBjYXNlIEFyaXRoTWluOiB7CiAg
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rp
b24oKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbm9kZS0+Y2hpbGQyKCkt
PnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCkgeworICAgICAgICAgICAgICAgIGlmICAobm9kZS0+Y2hpbGQxKCktPmlzTnVtYmVyQ29u
c3RhbnQoKSB8fCBub2RlLT5jaGlsZDIoKS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gc3BlY3VsYXRlTWluVHlwZVdpdGhDb25zdGFudCA9IFsmXSAoZG91
YmxlIGNvbnN0YW50LCBTcGVjdWxhdGVkVHlwZSBjb25zdGFudFR5cGUsIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0ZWRUeXBlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8g
cGVyZm9ybVByZWRpY3Rpb24gPSBbJl0gKGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcml0aE1pbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJc0dyZWF0ZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihzcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKGNvbnN0YW50VHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdGFudElzR3JlYXRl
cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKHNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oY29uc3RhbnRUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uKHNwZWN1bGF0ZWRUeXBlKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgY29uc3RhbnRJc0dyZWF0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwZXJmb3JtUHJlZGljdGlvbihjb25zdGFudElzR3JlYXRlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGlzSW50ZWdlclNwZWN1bGF0aW9u
KHNwZWN1bGF0ZWRUeXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSBpbnQ1Mk1heCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCkgPj4gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIGludDUyTWluID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSA+PiBKU1ZhbHVlOjppbnQ1
MlNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQg
PiBpbnQ1Mk1heCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0
YW50SXNHcmVhdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVy
Zm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPCBpbnQ1Mk1pbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0YW50SXNHcmVhdGVyID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1QcmVkaWN0aW9u
KGNvbnN0YW50SXNHcmVhdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5pc051bWJlckNvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
cGVjdWxhdGVNaW5UeXBlV2l0aENvbnN0YW50KG5vZGUtPmNoaWxkMSgpLT5hc051bWJlcigpLCBs
ZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkt
PmlzTnVtYmVyQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwZWN1
bGF0ZU1pblR5cGVXaXRoQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCktPmFzTnVtYmVyKCksIHJpZ2h0
LCBsZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVJbnQzMk9yQm9vbGVhbkZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICYm
IG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKG1fcGFzcykpCiAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CkBAIC04OTMsOCArOTUzLDkzIEBA
IGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBBcml0aE1pbjoKICAgICAg
ICAgY2FzZSBBcml0aE1heDoKKyAgICAgICAgY2FzZSBBcml0aE1pbjogeworICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CisgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9u
KCk7CisKKyAgICAgICAgICAgIGF1dG8gc3BlY3VsYXRlTWluVHlwZVdpdGhDb25zdGFudCA9IFsm
XSAoZG91YmxlIGNvbnN0YW50LCBTcGVjdWxhdGVkVHlwZSBjb25zdGFudFR5cGUsIFNwZWN1bGF0
ZWRUeXBlIHNwZWN1bGF0ZWRUeXBlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRvIHBl
cmZvcm1QcmVkaWN0aW9uID0gWyZdIChib29sIGNvbnN0YW50SXNHcmVhdGVyKSB7CisgICAgICAg
ICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CisgICAgICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHJlc3VsdFR5cGUgPSBjb25zdGFudFR5cGU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IEFyaXRoTWluKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY29uc3RhbnRJc0dyZWF0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0VHlwZSA9IHNwZWN1bGF0ZWRUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBjb25zdGFudFR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbnN0YW50SXNHcmVhdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFR5
cGUgPSBzcGVjdWxhdGVkVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRUeXBlID0gY29uc3RhbnRUeXBlOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uKHJlc3VsdFR5cGUpICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3Vs
YXRlSW50MzIobm9kZSwgbV9wYXNzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhbGxvdCA9
IFZvdGVEb3VibGU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJhbGxvdCA9IFZvdGVWYWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LnZvdGVOb2RlKG5vZGUtPmNoaWxkMSgpLCBiYWxsb3QsIHdlaWdodCk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgudm90ZU5vZGUobm9kZS0+Y2hpbGQyKCksIGJhbGxvdCwgd2VpZ2h0KTsK
KyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xl
YW5TcGVjdWxhdGlvbihzcGVjdWxhdGVkVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGNvbnN0YW50ID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptaW4oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb25z
dGFudElzR3JlYXRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVBy
ZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBpc0ludGVnZXJTcGVjdWxhdGlvbihz
cGVjdWxhdGVkVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIGludDUy
TWF4ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
YXgoKSA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZG91YmxlIGludDUyTWluID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptaW4oKSA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50ID4gaW50NTJNYXgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY29uc3RhbnRJc0dyZWF0ZXIgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQgPCBpbnQ1Mk1pbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjb25zdGFudElzR3JlYXRlciA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgcGVyZm9ybVByZWRpY3Rpb24oY29uc3RhbnRJc0dyZWF0ZXIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9OworCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzTnVtYmVyQ29u
c3RhbnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChzcGVjdWxhdGVNaW5UeXBlV2l0aENvbnN0
YW50KG5vZGUtPmNoaWxkMSgpLT5hc051bWJlcigpLCBsZWZ0LCByaWdodCkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQyKCktPmlzTnVtYmVyQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChzcGVj
dWxhdGVNaW5UeXBlV2l0aENvbnN0YW50KG5vZGUtPmNoaWxkMigpLT5hc051bWJlcigpLCByaWdo
dCwgbGVmdCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OworCisgICAgICAgICAgICBpZiAoaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb24obGVmdCkKKyAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5iaW5hcnlBcml0
aFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCisgICAgICAgICAgICAgICAgYmFs
bG90ID0gVm90ZURvdWJsZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiYWxs
b3QgPSBWb3RlVmFsdWU7CisKKyAgICAgICAgICAgIG1fZ3JhcGgudm90ZU5vZGUobm9kZS0+Y2hp
bGQxKCksIGJhbGxvdCwgd2VpZ2h0KTsKKyAgICAgICAgICAgIG1fZ3JhcGgudm90ZU5vZGUobm9k
ZS0+Y2hpbGQyKCksIGJhbGxvdCwgd2VpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBBcml0aE1vZDoKICAgICAgICAgY2FzZSBBcml0aERpdjogewog
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAppbmRleCA3MmZlMTY0NzQ5NGMxMTI3MWE1MjA5NzQ0MmMwZWU3NWM3MGUzZTAyLi4z
NGE1ZmJmOGQxNGU3YzExOGY0ZDRmMjNjZTkxNzFlOWZjNmZjYjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM1MCw2ICsz
NTAsOCBAQAogICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXAog
ICAgIG1hY3JvKGZsb29yKSBcCisgICAgbWFjcm8obWF4KSBcCisgICAgbWFjcm8obWluKSBcCiAg
ICAgbWFjcm8odHJ1bmMpIFwKICAgICBtYWNybyhpc0Zpbml0ZSkgXAogICAgIG1hY3JvKGlzTmFO
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggZGZhNWQ4NWE1ZDk4MDA0NDFiMzJlNTMyYjUyNzA4YjI0MGI3OGU3OS4uM2RmZDU4
NDEzZjEzZjBkMjFjOTk5NGI4ODhmZGY5MWY5MWE5ZDZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTI5LDYgKzUyOSw4IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIEpTRnVuY3Rpb24qIHByaXZh
dGVGdW5jSXNGaW5pdGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygp
LCBnbG9iYWxGdW5jSXNGaW5pdGUpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNOYU4g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSXNO
YU4pOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHJ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIFRydW5jSW50cmlu
c2ljKTsKKyAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01heCA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNNYXgsIE1heEludHJpbnNpYyk7
CisgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNaW4gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMpOwogCiAg
ICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNHZXRUZW1wbGF0ZU9iamVjdCA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdldFRlbXBsYXRlT2JqZWN0KTsKICAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RvTGVuZ3RoID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RUb0xlbmd0aENvZGVHZW5lcmF0b3Iodm0pLCB0aGlz
KTsKQEAgLTU2OCw5ICs1NzAsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5TdHJpbmdQcml2
YXRlTmFtZSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmFic1By
aXZhdGVOYW1lLCBwcml2YXRlRnVuY0FicywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+Zmxvb3JQ
cml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNGbG9vciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+bWF4
UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jTWF4LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5taW5Q
cml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNNaW4sIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnRydW5j
UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jVHJ1bmMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlz
RmluaXRlUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jSXNGaW5pdGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmlzTmFOUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jSXNOYU4sIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPm1pblByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIs
IFN0cmluZygpLCBtYXRoUHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+UmVmbGVjdFByaXZhdGVOYW1lLCByZWZsZWN0T2JqZWN0LCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5JbnRlcm5hbFByb21pc2VQcml2YXRlTmFtZSwgaW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggNjZkMzFi
NzRkOWE4NzY3MjRhOTdjYTUwYTlhNjNhMThjYzk2MzZlYy4uN2FhYjk5MGFlZTFjYTdmNWRkYmM4
ODFhMzQyNmVkZjUyNjdmZjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5jcHAKQEAgLTU2LDggKzU2LDYgQEAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0ZSopOwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUG93KEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUmFuZG9tKEV4ZWNTdGF0
ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91bmQoRXhl
Y1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKaW5k
ZXggMWExMzNkNTU0ZGE0NDBhNzVkZDQxNjY3NzZlZTc4ZThkMmIyZGZkZi4uZDA0YTE4MTQyZDll
ZjBiYmM5OTgwZjJlYzBiZmRmMTkwZjAwZWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuaApAQCAtNTMsNiArNTMsOCBAQCBjbGFzcyBNYXRoT2JqZWN0IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNBYnMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNGbG9vcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY01heChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01pbihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MK
</data>

          </attachment>
      

    </bug>

</bugzilla>