<?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>134427</bug_id>
          
          <creation_ts>2014-06-27 22:22:09 -0700</creation_ts>
          <short_desc>[ftlopt] Reduce the GC&apos;s influence on optimization decisions</short_desc>
          <delta_ts>2014-06-28 16:50:08 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>128072</blocked>
    
    <blocked>132357</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019182</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-27 22:22:09 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019187</commentid>
    <comment_count>1</comment_count>
      <attachid>234044</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-27 22:29:23 -0700</bug_when>
    <thetext>Created attachment 234044
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019229</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-28 16:50:08 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/170571</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234044</attachid>
            <date>2014-06-27 22:29:23 -0700</date>
            <delta_ts>2014-06-28 12:54:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>27267</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwNTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA2LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gUmVkdWNlIHRoZSBHQydzIGluZmx1ZW5jZSBvbiBvcHRpbWl6YXRpb24gZGVjaXNp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ0
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgaXMgYSBzbGlnaHQgc3BlZWQtdXAgb24gc29tZSBwbGF0Zm9ybXMsIHRoYXQgYXJp
c2VzIGZyb20gYSBidW5jaCBvZiBmaXhlcyB0aGF0IEkgbWFkZQorICAgICAgICB3aGlsZSB0cnlp
bmcgdG8gbWFrZSB0aGUgR0Mga2VlcCBtb3JlIHN0cnVjdHVyZXMgYWxpdmUKKyAgICAgICAgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgwNzIpLgorICAgICAgICAK
KyAgICAgICAgVGhlIGZpeGVzIGFyZSwgcm91Z2hseToKKyAgICAgICAgCisgICAgICAgIC0gSWYg
dGhlIEdDIGNsZWFycyBhbiBpbmxpbmUgY2FjaGUsIHRoZW4gdGhpcyBubyBsb25nZXIgY2F1c2Vz
IHRoZSBJQyB0byBiZSBmb3JldmVyCisgICAgICAgICAgcG9seW1vcnBoaWMuCisgICAgICAgIAor
ICAgICAgICAtIElmIHdlIGV4aXQgaW4gaW5saW5lZCBjb2RlIGludG8gYSBmdW5jdGlvbiB0aGF0
IHRyaWVzIHRvIE9TUiBlbnRlciwgdGhlbiB3ZSBqZXR0aXNvbgorICAgICAgICAgIHNvb25lci4K
KyAgICAgICAgCisgICAgICAgIC0gU29tZSB2YXJpYWJsZXMgYmVpbmcgdW5pbml0aWFsaXplZCBs
ZWQgdG8gcmFnZS1yZWNvbXBpbGF0aW9ucy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBw
cmV0dHkgc3Ryb25nIHN0ZXAgaW4gdGhlIGRpcmVjdGlvbiBvZiBrZWVwaW5nIG1vcmUgU3RydWN0
dXJlcyBhbGl2ZSBhbmQgbm90CisgICAgICAgIGJsb3dpbmcgYXdheSBjb2RlIGp1c3QgYmVjYXVz
ZSBhIFN0cnVjdHVyZSBkaWVkLiBCdXQsIGl0IHNlZW1zIGxpa2UgdGhlcmUgaXMgc3RpbGwgYSBz
bGlnaHQKKyAgICAgICAgc3BlZWQtdXAgdG8gYmUgaGFkIGZyb20gYmxvd2luZyBhd2F5IGNvZGUg
dGhhdCByZWZlcmVuY2VzIGRlYWQgU3RydWN0dXJlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlw
ZSk6CisgICAgICAgIChKU0M6OnNob3VsZE1hcmtUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZGV0ZXJtaW5lTGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmlzU3VwcG9ydGVkRm9ySW5saW5pbmcpOgor
ICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAqIGRm
Zy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uRGF0YS5oOgorICAg
ICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6aGFuZGxlRXhpdENvdW50cyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZnRsL0ZUTEZvck9TUkVu
dHJ5SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Rm9yT1NSRW50cnlKSVRDb2RlOjpG
b3JPU1JFbnRyeUpJVENvZGUpOiBUaGVzZSB2YXJpYWJsZXMgYmVpbmcgdW5pbml0aWFsaXplZCBp
cyBiZW5pZ24gaW4gdGVybXMgb2YgY29ycmVjdG5lc3MgYnV0IGNhbiBzb21ldGltZXMgY2F1c2Ug
cmFnZS1yZWNvbXBpbGF0aW9ucy4gRm9yIHNvbWUgcmVhc29uIGl0IHRvb2sgdGhpcyBwYXRjaCB0
byByZXZlYWwgdGhpcy4KKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAo
SlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhl
Y3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29k
ZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
OnNldERpZFRyeVRvRW50ZXJJbkxvb3ApOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxl
OjpkaWRUcnlUb0VudGVySW5Mb29wKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
YWRkcmVzc09mRGlkVHJ5VG9FbnRlckluTG9vcCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlw
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3RvcmVkUHJvdG90eXBlU3RydWN0
dXJlKToKKwogMjAxNC0wNi0yNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTY5Nzk1LgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3
MDQ5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTAsOSArMTUwLDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNz
dW1pbmdKSVRUeXBlKFByaW4KICAgICAgICAgb3V0LnByaW50KHNwZWNpYWxpemF0aW9uS2luZCgp
KTsKICAgICBvdXQucHJpbnQoIiwgIiwgaW5zdHJ1Y3Rpb25Db3VudCgpKTsKICAgICBpZiAodGhp
cy0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUICYmIG1fc2hvdWxkQWx3YXlzQmVJ
bmxpbmVkKQotICAgICAgICBvdXQucHJpbnQoIiAoU0FCSSkiKTsKKyAgICAgICAgb3V0LnByaW50
KCIgKFNob3VsZEFsd2F5c0JlSW5saW5lZCkiKTsKICAgICBpZiAob3duZXJFeGVjdXRhYmxlKCkt
Pm5ldmVySW5saW5lKCkpCiAgICAgICAgIG91dC5wcmludCgiIChOZXZlcklubGluZSkiKTsKKyAg
ICBpZiAob3duZXJFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkKKyAgICAgICAg
b3V0LnByaW50KCIgKERpZFRyeVRvRW50ZXJJbkxvb3ApIik7CiAgICAgaWYgKG93bmVyRXhlY3V0
YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUp
Iik7CiAgICAgaWYgKHRoaXMtPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCAmJiBt
X2RpZEZhaWxGVExDb21waWxhdGlvbikKQEAgLTIyMDQsNiArMjIwNiwxNyBAQCBib29sIENvZGVC
bG9jazo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoCiAjZW5kaWYKIH0KIAorc3RhdGljIGJvb2wg
c2hvdWxkTWFya1RyYW5zaXRpb24oREZHOjpXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiYgdHJhbnNp
dGlvbikKK3sKKyAgICBpZiAodHJhbnNpdGlvbi5tX2NvZGVPcmlnaW4gJiYgIUhlYXA6OmlzTWFy
a2VkKHRyYW5zaXRpb24ubV9jb2RlT3JpZ2luLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGlmICghSGVhcDo6aXNNYXJrZWQodHJhbnNpdGlvbi5tX2Zyb20uZ2V0KCkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CkBAIC0yMjgyLDIxICsyMjk1LDI4IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG8KICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwor
ICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1vbi0+dHJh
bnNpdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICgoIWRmZ0NvbW1vbi0+dHJh
bnNpdGlvbnNbaV0ubV9jb2RlT3JpZ2luCi0gICAgICAgICAgICAgICAgIHx8IEhlYXA6OmlzTWFy
a2VkKGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV9jb2RlT3JpZ2luLmdldCgpKSkKLSAgICAg
ICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1f
ZnJvbS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRNYXJrVHJhbnNpdGlvbihkZmdD
b21tb24tPnRyYW5zaXRpb25zW2ldKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb2xs
b3dpbmcgdGhyZWUgdGhpbmdzIGFyZSBsaXZlLCB0aGVuIHRoZSB0YXJnZXQgb2YgdGhlCiAgICAg
ICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBpcyBhbHNvIGxpdmU6CisgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICAvLyAtIFRoaXMgY29kZSBibG9jay4gV2Uga25vdyBpdCdzIGxp
dmUgYWxyZWFkeSBiZWNhdXNlIG90aGVyd2lzZQogICAgICAgICAgICAgICAgIC8vICAgd2Ugd291
bGRuJ3QgYmUgc2Nhbm5pbmcgb3Vyc2VsdmVzLgorICAgICAgICAgICAgICAgIC8vCiAgICAgICAg
ICAgICAgICAgLy8gLSBUaGUgY29kZSBvcmlnaW4gb2YgdGhlIHRyYW5zaXRpb24uIFRyYW5zaXRp
b25zIG1heSBhcmlzZSBmcm9tCiAgICAgICAgICAgICAgICAgLy8gICBjb2RlIHRoYXQgd2FzIGlu
bGluZWQuIFRoZXkgYXJlIG5vdCByZWxldmFudCBpZiB0aGUgdXNlcidzCiAgICAgICAgICAgICAg
ICAgLy8gICBvYmplY3QgdGhhdCBpcyByZXF1aXJlZCBmb3IgdGhlIGlubGluZWUgdG8gcnVuIGlz
IG5vIGxvbmdlcgogICAgICAgICAgICAgICAgIC8vICAgbGl2ZS4KKyAgICAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgICAgIC8vIC0gVGhlIHNvdXJjZSBvZiB0aGUgdHJhbnNpdGlvbi4gVGhl
IHRyYW5zaXRpb24gY2hlY2tzIGlmIHNvbWUKICAgICAgICAgICAgICAgICAvLyAgIGhlYXAgbG9j
YXRpb24gaG9sZHMgdGhlIHNvdXJjZSwgYW5kIGlmIHNvLCBzdG9yZXMgdGhlIHRhcmdldC4KICAg
ICAgICAgICAgICAgICAvLyAgIEhlbmNlIHRoZSBzb3VyY2UgbXVzdCBiZSBsaXZlIGZvciB0aGUg
dHJhbnNpdGlvbiB0byBiZSBsaXZlLgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAg
ICAgLy8gV2UgYWxzbyBzaG9ydC1jaXJjdWl0IHRoZSBsaXZlbmVzcyBpZiB0aGUgc3RydWN0dXJl
IGlzIGhhcm1sZXNzCisgICAgICAgICAgICAgICAgLy8gdG8gbWFyayAoaS5lLiBpdHMgZ2xvYmFs
IG9iamVjdCBhbmQgcHJvdG90eXBlIGFyZSBib3RoIGFscmVhZHkKKyAgICAgICAgICAgICAgICAv
LyBsaXZlKS4KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmZGZnQ29tbW9uLT50cmFuc2l0aW9uc1tpXS5tX3RvKTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIGFsbEFyZU1hcmtlZFNvRmFyID0gZmFsc2U7CkBAIC0yMzMxLDYgKzIz
NTEsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmRldGVybWluZUxpdmVuZXNzKFNsb3RWaQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKGFsbEFyZUxpdmVTb0Zhcikg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGZnQ29tbW9uLT53ZWFrU3RydWN0
dXJlUmVmZXJlbmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFIZWFwOjppc01h
cmtlZChkZmdDb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzW2ldLmdldCgpKSkgeworICAg
ICAgICAgICAgICAgIGFsbEFyZUxpdmVTb0ZhciA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIAogICAgIC8vIElmIHNv
bWUgd2VhayByZWZlcmVuY2VzIGFyZSBkZWFkLCB0aGVuIHRoaXMgZml4cG9pbnQgaXRlcmF0aW9u
IHdhcwogICAgIC8vIHVuc3VjY2Vzc2Z1bC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE3MDQ5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQyLDkgKzE0Miw2IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvclMKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoc3R1YkluZm8tPnJlc2V0
QnlHQykKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7
Ci0gICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNj
ZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwogICAgIHJlc3VsdC5tX3N0
YXRlID0gU2ltcGxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTcwNDkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYs
OSArMTM2LDYgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAg
IGlmICghc3R1YkluZm8gfHwgIXN0dWJJbmZvLT5zZWVuKQogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cygpOwogICAgIAotICAgIGlmIChzdHViSW5mby0+cmVzZXRCeUdDKQotICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLQogICAgIHN3aXRjaCAoc3R1Yklu
Zm8tPmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKICAgICAgICAgLy8gSWYg
dGhlIEpJVCBzYXcgaXQgYnV0IGRpZG4ndCBvcHRpbWl6ZSBpdCwgdGhlbiBhc3N1bWUgdGhhdCB0
aGlzIHRha2VzIHNsb3cgcGF0aC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3MDQ5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsMTIgQEAgYm9vbCBpc1N1cHBvcnRlZChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAg
JiYgRnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgpLmNvbnRhaW5zKGNv
ZGVCbG9jayk7CiB9CiAKK2Jvb2wgaXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKK3sKKyAgICByZXR1cm4gIWNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5l
ZWRzQWN0aXZhdGlvbigpCisgICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKK30KKwogYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVC
bG9jayogY29kZUJsb2NrKQogewogICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spCkBA
IC02OSwyMCArNzUsMTcgQEAgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChD
bwogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaykK
IHsKICAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQot
ICAgICAgICAmJiAhY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9u
KCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0Nh
bmRpZGF0ZSgpOworICAgICAgICAmJiBpc1N1cHBvcnRlZEZvcklubGluaW5nKGNvZGVCbG9jayk7
CiB9CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0g
T3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50KCkKLSAgICAgICAgJiYgIWNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
Pm5lZWRzQWN0aXZhdGlvbigpCi0gICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKKyAgICAgICAgJiYgaXNTdXBwb3J0ZWRGb3JJbmxp
bmluZyhjb2RlQmxvY2spOwogfQogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0
KENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVD
YW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKLSAgICAgICAgJiYgIWNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigpCi0gICAgICAgICYmIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKKyAgICAgICAgJiYgaXNTdXBw
b3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2spOwogfQogCiBpbmxpbmUgdm9pZCBkZWJ1Z0ZhaWwo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBDYXBhYmlsaXR5TGV2ZWwg
cmVzdWx0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCShyZXZpc2lvbiAxNzA0OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIEZhc3QgY2hlY2sgZnVuY3Rpb25zOyBpZiB0aGV5IHJl
dHVybiB0cnVlIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0bwogLy8gY2hlY2sgb3Bjb2Rlcy4KIGJv
b2wgaXNTdXBwb3J0ZWQoQ29kZUJsb2NrKik7Citib29sIGlzU3VwcG9ydGVkRm9ySW5saW5pbmco
Q29kZUJsb2NrKik7CiBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKik7CiBib29sIG1p
Z2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKik7CiBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9u
Rm9yQ2FsbChDb2RlQmxvY2sqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uRGF0YS5oCShyZXZpc2lvbiAxNzA0OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBwdWJs
aWM6CiAgICAgVmVjdG9yPElkZW50aWZpZXI+IGRmZ0lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxX
ZWFrUmVmZXJlbmNlVHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgVmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4+IHdlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgIFNl
Z21lbnRlZFZlY3RvcjxQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCwgMSwg
MD4gcHJvZmlsZWRXYXRjaHBvaW50czsKICAgICBWZWN0b3I8SnVtcFJlcGxhY2VtZW50PiBqdW1w
UmVwbGFjZW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVk
V2Vha1JlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMTcwNDkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw3ICs1NywxMyBAQCB2b2lkIERlc2lyZWRXZWFrUmVmZXJlbmNlczo6
cmVhbGx5QWRkKFZNCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVmZXJlbmNl
cy5zaXplKCk7IGkrKykgewogICAgICAgICBKU0NlbGwqIHRhcmdldCA9IG1fcmVmZXJlbmNlc1tp
XTsKLSAgICAgICAgY29tbW9uLT53ZWFrUmVmZXJlbmNlcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEpT
Q2VsbD4odm0sIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgdGFyZ2V0KSk7CisgICAg
ICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzRHluYW1pY0Nhc3Q8U3RydWN0dXJlKj4o
dGFyZ2V0KSkgeworICAgICAgICAgICAgY29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4odm0sIG1fY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBjb21tb24tPndlYWtSZWZlcmVuY2VzLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPih2bSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCB0YXJnZXQpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDE3MDQ5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw2ICs1OCw5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKIAog
ICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAgCisgICAgaWYgKGJ5dGVjb2RlSW5kZXgp
CisgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNldERpZFRyeVRvRW50ZXJJ
bkxvb3AodHJ1ZSk7CisgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENv
ZGU6OkRGR0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRDb2RlOjpGVExKSVQpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlz
aW9uIDE3MDQ5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMjAgKzU0LDU1IEBAIHZvaWQgaGFu
ZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwKICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpHcmVhdGVyVGhhbk9yRXF1YWwsCiAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1dGVDb3VudGVyKCkpLAog
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7CisgICAgCisgICAgLy8g
V2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwb3NzaWJpbGl0eSB0aGF0IHdlJ3Jl
IGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAgICAvLyBjb2RlIGJsb2NrIGluIHRoZSBp
bmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJvcHJpYXRlbHkgYnkgaGF2aW5nIHRoZSBs
b29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhlIGV4aXQgY291bnQgb2YgdGhlIHJlcGxh
Y2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3ZSBhcmUgT1NSaW5nLiBUaGUKKyAg
ICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucywgd2hpY2ggbWlnaHQgYWxzbyBo
YXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVyc2lvbnMKKyAgICAvLyBkb24ndCBrbm93
IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50LiBGaWd1cmUgb3V0IGlmIHRob3NlIGxv
b3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhhdCB3ZSBoYWQgdHJpZWQgdG8gT1NSIGVu
dGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBsb29wIHJlb3B0aW1pemF0aW9uIHRy
aWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgdXNlIHRoZSBub3JtYWwgcmVvcHRp
bWl6YXRpb24gdHJpZ2dlci4KKyAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IGxv
b3BUaHJlc2hvbGQ7CisgICAgCisgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1l
OyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJh
bWUpIHsKKyAgICAgICAgbG9vcFRocmVzaG9sZC5hcHBlbmQoCisgICAgICAgICAgICBqaXQuYnJh
bmNoVGVzdDgoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpOb25aZXJvLAorICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKAorICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUtPmFkZHJlc3NPZkRpZFRyeVRv
RW50ZXJJbkxvb3AoKSkpKTsKKyAgICB9CisgICAgCisgICAgaml0Lm1vdmUoCisgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGppdC5jb2RlQmxvY2soKS0+ZXhpdENvdW50VGhy
ZXNob2xkRm9yUmVvcHRpbWl6YXRpb24oKSksCisgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKKyAg
ICAKKyAgICBpZiAoIWxvb3BUaHJlc2hvbGQuZW1wdHkoKSkgeworICAgICAgICBBc3NlbWJseUhl
bHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgbG9vcFRocmVzaG9sZC5s
aW5rKCZqaXQpOworICAgICAgICBqaXQubW92ZSgKKyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTMyKAorICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+ZXhpdENv
dW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb25Gcm9tTG9vcCgpKSwKKyAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QxKTsKICAgICAgICAgCi0gICAgdG9vRmV3RmFpbHMgPSBqaXQuYnJhbmNoMzIo
QXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihqaXQuY29kZUJsb2NrKCktPmV4aXRDb3VudFRocmVzaG9sZEZv
clJlb3B0aW1pemF0aW9uKCkpKTsKKyAgICAgICAgZG9uZS5saW5rKCZqaXQpOworICAgIH0KKyAg
ICAKKyAgICB0b29GZXdGYWlscyA9IGppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93
T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAgICByZW9w
dGltaXplTm93LmxpbmsoJmppdCk7CiAgICAgCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29uIGFz
IHBvc3NpYmxlLgogI2lmICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCiAgICAgaml0LnBv
a2UoR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5wb2tlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cigmZXhpdCksIDEpOwogI2Vsc2UKICAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6YXJndW1lbnRHUFIw
ICE9IEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoJmV4aXQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogI2VuZGlmCi0gICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
dHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQuY2Fs
bChHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwog
ICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gaml0Lmp1bXAoKTsKICAg
ICAKICAgICB0b29GZXdGYWlscy5saW5rKCZqaXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNzA0OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDg2LDcgKzEwODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNw
CiAgICAgZGF0YUxvZygiXG4iKTsKIH0KIAotZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04g
dHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrKQorZXh0ZXJuICJD
IiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayog
Y29kZUJsb2NrLCBPU1JFeGl0QmFzZSogZXhpdCkKIHsKICAgICAvLyBJdCdzIHNvcnQgb2YgcHJl
ZmVyYWJsZSB0aGF0IHdlIGRvbid0IEdDIHdoaWxlIGluIGhlcmUuIEFueXdheXMsIGRvaW5nIHNv
IHdvdWxkbid0CiAgICAgLy8gcmVhbGx5IGJlIHByb2ZpdGFibGUuCkBAIC0xMTEwLDEzICsxMTEw
LDIxIEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW8KICAgICBBU1NF
UlQoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKTsKICAgICBDb2RlQmxvY2sq
IG9wdGltaXplZENvZGVCbG9jayA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKICAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKG9wdGltaXplZENvZGVCbG9jay0+aml0VHlwZSgp
KSk7CisgICAgCisgICAgYm9vbCBkaWRUcnlUb0VudGVySW50b0lubGluZWRMb29wcyA9IGZhbHNl
OworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBleGl0LT5tX2Nv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFt
ZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLT5kaWRUcnlUb0VudGVySW5Mb29wKCkpIHsK
KyAgICAgICAgICAgIGRpZFRyeVRvRW50ZXJJbnRvSW5saW5lZExvb3BzID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogCiAgICAgLy8gSW4gb3JkZXIgdG8gdHJp
Z2dlciByZW9wdGltaXphdGlvbiwgb25lIG9mIHR3byB0aGluZ3MgbXVzdCBoYXZlIGhhcHBlbmVk
OgogICAgIC8vIDEpIFdlIGV4aXRlZCBtb3JlIHRoYW4gc29tZSBudW1iZXIgb2YgdGltZXMuCiAg
ICAgLy8gMikgV2UgZXhpdGVkIGFuZCBnb3Qgc3R1Y2sgaW4gYSBsb29wLCBhbmQgbm93IHdlJ3Jl
IGV4aXRpbmcgYWdhaW4uCiAgICAgYm9vbCBkaWRFeGl0QUJ1bmNoID0gb3B0aW1pemVkQ29kZUJs
b2NrLT5zaG91bGRSZW9wdGltaXplTm93KCk7CiAgICAgYm9vbCBkaWRHZXRTdHVja0luTG9vcCA9
Ci0gICAgICAgIGNvZGVCbG9jay0+Y2hlY2tJZk9wdGltaXphdGlvblRocmVzaG9sZFJlYWNoZWQo
KQorICAgICAgICAoY29kZUJsb2NrLT5jaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xkUmVhY2hl
ZCgpIHx8IGRpZFRyeVRvRW50ZXJJbnRvSW5saW5lZExvb3BzKQogICAgICAgICAmJiBvcHRpbWl6
ZWRDb2RlQmxvY2stPnNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpOwogICAgIAogICAgIGlm
ICghZGlkRXhpdEFCdW5jaCAmJiAhZGlkR2V0U3R1Y2tJbkxvb3ApIHsKQEAgLTEyMDksNyArMTIx
Nyw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KAogICAgIAogICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgZGF0YUxvZygKLSAgICAgICAg
ICAgICpjb2RlQmxvY2ssICI6IEVudGVyZWQgdHJpZ2dlclRpZXJVcE5vdyB3aXRoIGV4ZWN1dGVD
b3VudGVyID0gIiwKKyAgICAgICAgICAgICpjb2RlQmxvY2ssICI6IEVudGVyZWQgdHJpZ2dlck9T
UkVudHJ5Tm93IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAogICAgICAgICAgICAgaml0Q29kZS0+
dGllclVwQ291bnRlciwgIlxuIik7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE3MDQ5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5
ICszMSw5IEBACiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEtpbmQu
aCIKIAotbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LW5hbWVzcGFjZSBERkcgeworc3RydWN0IE9TUkV4aXRCYXNlOwogCiBleHRlcm4gIkMiIHsKIApA
QCAtMTMyLDcgKzEzMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIGRmZ0NvbnZlcnRKU1ZhbHVl
VG8KIAogdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZh
aWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiAKLXZvaWQgSklU
X09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKikgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxv
Y2sqLCBPU1JFeGl0QmFzZSopIFdURl9JTlRFUk5BTDsKIAogI2lmIEVOQUJMRShGVExfSklUKQog
dm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3coRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmNwcAkocmV2aXNpb24gMTcwNDkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw4IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIEZvck9TUkVudHJ5
SklUQ29kZTo6Rm9yT1NSRW50cnlKSVRDb2RlKCkKKyAgICA6IG1fYnl0ZWNvZGVJbmRleChVSU5U
X01BWCkKKyAgICAsIG1fZW50cnlGYWlsdXJlQ291bnQoMCkKIHsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDE3MDQ5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw5ICs1NCwxMiBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgICAgICAgICBi
eXRlY29kZUluZGV4LCAiLlxuIik7CiAgICAgfQogICAgIAorICAgIGlmIChieXRlY29kZUluZGV4
KQorICAgICAgICBqc0Nhc3Q8U2NyaXB0RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5zZXREaWRU
cnlUb0VudGVySW5Mb29wKHRydWUpOworCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXggIT0gZW50cnlD
b2RlLT5ieXRlY29kZUluZGV4KCkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugd2UgZG9uJ3Qg
aGF2ZSBhbiBlbnRyeXBvaW50IGZvciBiYyMiLCBieXRlY29kZUluZGV4LCAiOyBvdXJzIGlzIGZv
ciBiYyMiLCBlbnRyeUNvZGUtPmJ5dGVjb2RlSW5kZXgoKSk7CisgICAgICAgICAgICBkYXRhTG9n
KCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW4gZW50cnlwb2ludCBmb3Ig
YmMjIiwgYnl0ZWNvZGVJbmRleCwgIjsgb3VycyBpcyBmb3IgYmMjIiwgZW50cnlDb2RlLT5ieXRl
Y29kZUluZGV4KCksICJcbiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMTcwNDkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVCYXNlOjpzX2luZm8gPSB7ICJFeGVjdXRhYmxlIiwg
MCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFeGVjdXRhYmxlQmFzZSkgfTsKIAotI2lmIEVO
QUJMRShKSVQpCiB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsK
ICAgICBzdGF0aWNfY2FzdDxFeGVjdXRhYmxlQmFzZSo+KGNlbGwpLT5FeGVjdXRhYmxlQmFzZTo6
fkV4ZWN1dGFibGVCYXNlKCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xl
YXJDb2RlKCkKIHsKQEAgLTgwLDEyICs3OCwxMCBAQCBJbnRyaW5zaWMgRXhlY3V0YWJsZUJhc2U6
OmludHJpbnNpYygpIGNvCiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpzX2lu
Zm8gPSB7ICJOYXRpdmVFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0YWJsZSkgfTsKIAotI2lmIEVOQUJMRShK
SVQpCiB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAg
IHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihjZWxsKS0+TmF0aXZlRXhlY3V0YWJsZTo6
fk5hdGl2ZUV4ZWN1dGFibGUoKTsKIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiBJ
bnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgY29uc3QKQEAgLTk2LDE4ICs5
MiwzMyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiAKIGNvbnN0
IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3JpcHRFeGVjdXRhYmxl
IiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU2Ny
aXB0RXhlY3V0YWJsZSkgfTsKIAotI2lmIEVOQUJMRShKSVQpCitTY3JpcHRFeGVjdXRhYmxlOjpT
Y3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkKKyAgICA6IEV4ZWN1dGFibGVC
YXNlKHZtLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKKyAgICAsIG1f
c291cmNlKHNvdXJjZSkKKyAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJp
Y3RNb2RlRmVhdHVyZSA6IDApCisgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQor
ICAgICwgbV9uZXZlcklubGluZShmYWxzZSkKKyAgICAsIG1fZGlkVHJ5VG9FbnRlckluTG9vcChm
YWxzZSkKKyAgICAsIG1fZmlyc3RMaW5lKC0xKQorICAgICwgbV9sYXN0TGluZSgtMSkKKyAgICAs
IG1fc3RhcnRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKK3sK
K30KKwogdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAg
ICBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4oY2VsbCktPlNjcmlwdEV4ZWN1dGFibGU6
On5TY3JpcHRFeGVjdXRhYmxlKCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBTY3JpcHRFeGVjdXRhYmxl
OjppbnN0YWxsQ29kZShDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2spCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoZ2VuZXJpY0NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkgPT0gdGhpcyk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNFeGVjdXRhYmxlU2NyaXB0KGdlbmVyaWNDb2Rl
QmxvY2stPmppdFR5cGUoKSkpOwogICAgIAorICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
CisgICAgICAgIGRhdGFMb2coIkluc3RhbGxpbmcgIiwgKmdlbmVyaWNDb2RlQmxvY2ssICJcbiIp
OworICAgIAogICAgIFZNJiB2bSA9ICpnZW5lcmljQ29kZUJsb2NrLT52bSgpOwogICAgIAogICAg
IGlmICh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCkBAIC0zNTQsNyArMzY1LDcgQEAgRXZhbEV4
ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRQogfQogCiBFdmFsRXhlY3V0YWJsZTo6
RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgp
LmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29u
dGV4dCkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0
cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQpCiB7CiB9
CiAKQEAgLTM2Niw3ICszNzcsNyBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2Vs
bCogY2VsCiBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlBy
b2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogUHJvZ3JhbUV4ZWN1dGFibGU6
OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBleGVjLCBzb3VyY2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0
YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52
bSgpLCBzb3VyY2UsIGZhbHNlKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNzA0OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTg2LDExICs4Niw5IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOwogCi0jaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
LSNlbmRpZgogICAgICAgICAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCkgY29uc3Q7CiAKQEAgLTI5OCw5ICsyOTYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBleGVjdXRhYmxlOwogICAgIH0KIAotI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSNlbmRpZgogCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNo
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwogCkBAIC0zNTYsMjkgKzM1Miw5IEBA
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWIKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAKLSAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCkKLSAgICAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJl
LCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCi0gICAgICAgICwgbV9zb3VyY2Uoc291cmNl
KQotICAgICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVh
dHVyZSA6IDApCi0gICAgICAgICwgbV9uZXZlcklubGluZShmYWxzZSkKLSAgICAgICAgLCBtX3N0
YXJ0Q29sdW1uKFVJTlRfTUFYKQotICAgICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQotICAg
IHsKLSAgICB9Ci0KLSAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCkKLSAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUs
IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKLSAgICAgICAgLCBtX3NvdXJjZShzb3VyY2Up
Ci0gICAgICAgICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0
dXJlIDogMCkKLSAgICAgICAgLCBtX25ldmVySW5saW5lKGZhbHNlKQotICAgICAgICAsIG1fc3Rh
cnRDb2x1bW4oVUlOVF9NQVgpCi0gICAgICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCi0gICAg
ewotICAgIH0KKyAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCk7CiAK
LSNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0jZW5k
aWYKICAgICAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQpIGNvbnN0OwogCkBAIC0zOTcsOCArMzczLDEyIEBAIHB1YmxpYzoKICAgICBFQ01BTW9k
ZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGU7IH0KICAgICAgICAgCiAgICAgdm9pZCBzZXROZXZlcklubGluZShib29s
IHZhbHVlKSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0RGlkVHJ5VG9F
bnRlckluTG9vcChib29sIHZhbHVlKSB7IG1fZGlkVHJ5VG9FbnRlckluTG9vcCA9IHZhbHVlOyB9
CiAgICAgYm9vbCBuZXZlcklubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV2ZXJJbmxpbmU7IH0K
KyAgICBib29sIGRpZFRyeVRvRW50ZXJJbkxvb3AoKSBjb25zdCB7IHJldHVybiBtX2RpZFRyeVRv
RW50ZXJJbkxvb3A7IH0KICAgICBib29sIGlzSW5saW5pbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJl
dHVybiAhbmV2ZXJJbmxpbmUoKTsgfQorICAgIAorICAgIGJvb2wqIGFkZHJlc3NPZkRpZFRyeVRv
RW50ZXJJbkxvb3AoKSB7IHJldHVybiAmbV9kaWRUcnlUb0VudGVySW5Mb29wOyB9CiAKICAgICB2
b2lkIHVubGlua0NhbGxzKCk7CiAgICAgICAgIApAQCAtNDUwLDYgKzQzMCw3IEBAIHByb3RlY3Rl
ZDoKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBib29sIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXM7CiAgICAgYm9vbCBtX25ldmVySW5saW5lOworICAgIGJvb2wgbV9kaWRUcnlUb0Vu
dGVySW5Mb29wOwogICAgIGludCBtX2ZpcnN0TGluZTsKICAgICBpbnQgbV9sYXN0TGluZTsKICAg
ICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTcwNDkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBAIGlubGluZSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZWRQ
cm90b3QKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gbV9wcm90b3R5cGUuZ2V0KCk7CiAgICAgaWYg
KHZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlKTsKIH0KIApAQCAtNjksNyArNjksNyBAQCBp
bmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvCiB7CiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IHN0b3JlZFByb3RvdHlwZU9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG9iamVj
dC0+c3RydWN0dXJlKCk7CiB9CiAK
</data>
<flag name="review"
          id="258574"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>