<?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>141624</bug_id>
          
          <creation_ts>2015-02-15 14:41:02 -0800</creation_ts>
          <short_desc>DFG::PutStackSinkingPhase should eliminate GetStacks that have an obviously known source, and emit GetStacks when the stack&apos;s value is needed and none is deferred</short_desc>
          <delta_ts>2015-03-16 10:39:54 -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>
          <dependson>142695</dependson>
    
    <dependson>142697</dependson>
          <blocked>141174</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069324</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-15 14:41:02 -0800</bug_when>
    <thetext>Currently if we have a PutLocal/GetLocal pair, then we will sink the PutLocal to the GetLocal.  Instead, we should eliminate the GetLocal entirely.

Probably this doesn&apos;t arise too much because we would have done some CSE, but it would be best if we just did the right thing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076998</commentid>
    <comment_count>1</comment_count>
      <attachid>248599</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-13 13:01:51 -0700</bug_when>
    <thetext>Created attachment 248599
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077007</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-13 13:18:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/181487</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077153</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-14 09:01:22 -0700</bug_when>
    <thetext>This is causing a jsc test failure:

https://build.webkit.org/builders/Apple%20Mavericks%20Release%20WK2%20%28Perf%29

Running Speedometer/Full.html (144 of 144)
error: Speedometer/Full.html
1   0x108f858a3 JSC::DFG::(anonymous namespace)::PutStackSinkingPhase::run()
2   0x108f7c5f4 JSC::DFG::performPutStackSinking(JSC::DFG::Graph&amp;)
3   0x108fd5cf9 JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&amp;)
4   0x108fd5601 JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&amp;, JSC::DFG::ThreadData*)
5   0x1090601d3 JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*)
6   0x1093c5bd3 WTF::threadEntryPoint(void*)
7   0x1093c608f WTF::wtfThreadEntryPoint(void*)
8   0x7fff85ad7899 _pthread_body
9   0x7fff85ad772a _pthread_struct_init
10  0x7fff85adbfc9 thread_start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077161</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-14 10:43:13 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 142695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077303</commentid>
    <comment_count>5</comment_count>
      <attachid>248599</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-15 18:59:00 -0700</bug_when>
    <thetext>Comment on attachment 248599
the patch

This patch was broken, and it revealed some other issues in this phase.  I&apos;ll have a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077311</commentid>
    <comment_count>6</comment_count>
      <attachid>248700</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-15 20:54:19 -0700</bug_when>
    <thetext>Created attachment 248700
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077447</commentid>
    <comment_count>7</comment_count>
      <attachid>248700</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-16 10:30:02 -0700</bug_when>
    <thetext>Comment on attachment 248700
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077455</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-16 10:39:54 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/181563</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248599</attachid>
            <date>2015-03-13 13:01:51 -0700</date>
            <delta_ts>2015-03-15 18:59:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>4684</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNDg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE1LTAzLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHOjpQdXRTdGFja1NpbmtpbmdQaGFzZSBzaG91bGQgZWxpbWluYXRlIEdldFN0YWNrcyB0aGF0
IGhhdmUgYW4gb2J2aW91c2x5IGtub3duIHNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHdhcyBhbiBvYnZpb3VzIG9taXNz
aW9uIGZyb20gdGhlIG9yaWdpbmFsIFB1dFN0YWNrU2lua2luZ1BoYXNlLiBQcmV2aW91c2x5LCB3
ZSB3b3VsZCB0cmVhdAorICAgICAgICBHZXRTdGFja3MgY29uc2VydmF0aXZlbHkgYW5kIGFzc3Vt
ZSB0aGF0IHRoZSBzdGFjayBzbG90IGVzY2FwZWQuIFRoYXQncyBwcmV0dHkgZHVtYiwgc2luY2Ug
YQorICAgICAgICBHZXRTdGFjayBpcyBhIGxvY2FsIGxvYWQgb2YgdGhlIHN0YWNrLiBUaGlzIGNo
YW5nZSBtYWtlcyBHZXRTdGFjayBhIG5vLW9wIGZyb20gdGhlIHN0YW5kcG9pbnQgb2YKKyAgICAg
ICAgdGhpcyBwaGFzZSdzIGRlZmVycmFsIGFuYWx5c2lzLiBBdCB0aGUgZW5kIHdlIGVpdGhlciBr
ZWVwIHRoZSBHZXRTdGFjayAoaWYgdGhlcmUgd2FzIG5vIGNvbmNyZXRlCisgICAgICAgIGRlZmVy
cmFsKSBvciB3ZSByZXBsYWNlIGl0IHdpdGggYW4gaWRlbnRpdHkgb3ZlciB0aGUgdmFsdWUgdGhh
dCB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGJ5IHRoZQorICAgICAgICBkZWZlcnJlZCBQdXRTdGFj
ay4gTm90ZSB0aGF0IHRoaXMgbWlnaHQgYmUgYSBQaGkgdGhhdCB0aGUgcGhhc2UgY3JlYXRlcywg
c28gdGhpcyBpcyBzdHJpY3RseQorICAgICAgICBzdHJvbmdlciB0aGFuIHdoYXQgR0NTRSBjb3Vs
ZCBkby4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgbm90IGEgc3BlZWQtdXAg
bm93LCBidXQgaXQgd2lsbCBiZSB2ZXJ5IHVzZWZ1bCBmb3IgdGhlIHZhcmFyZ3Mgc2ltcGxpZmlj
YXRpb24KKyAgICAgICAgZG9uZSBpbiBidWcgMTQxMTc0LgorCisgICAgICAgICogZGZnL0RGR1B1
dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKwogMjAxNS0wMy0xMyAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvciBuZWVkcyB0byBiZSBy
ZS1lbnRyYW50IHRvIHN1cHBvcnQgbWlyYW5kYSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAxODE0ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDYgKzIyMSwxMiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gR2V0U3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgR2V0U3Rh
Y2sgZG9lc24ndCBhZmZlY3QgYW55dGhpbmcsIHNpbmNlIHdlIGtub3cgd2hpY2ggbG9jYWwgd2Ug
YXJlIHJlYWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20uCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVIYW5kbGVyID0gWyZd
IChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG9wZXJhbmQuaXNIZWFkZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0zOTAsNiArMzk2LDI4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgZGVmZXJy
ZWQub3BlcmFuZChub2RlLT51bmxpbmtlZExvY2FsKCkpID0gQ29uZmxpY3RpbmdGbHVzaDsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOiB7CisgICAgICAgICAgICAg
ICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpOwor
ICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBkZWZlcnJlZC5vcGVyYW5k
KGRhdGEtPmxvY2FsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NvbmNyZXRlKGZvcm1h
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlcmUgaXMgbm8g
ZGVmZXJyYWwuIE5vIGRlZmVycmFsIG1lYW5zIHRoYXQgdGhlIG1vc3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGF1dGhvcml0YXRpdmUgdmFsdWUgZm9yIHRoaXMgc3RhY2sgc2xvdCBpcyB3
aGF0IGlzIHN0b3JlZCBpbiB0aGUgc3RhY2suIFNvLAorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8ga2VlcCB0aGUgR2V0U3RhY2suCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgaGF2ZSBhIGNvbmNyZXRlIGRlZmVycmFsLCB3aGljaCBtZWFucyBhIFB1dFN0
YWNrIHRoYXQgaGFzbid0IGV4ZWN1dGVkIHlldC4gSXQKKyAgICAgICAgICAgICAgICAgICAgLy8g
d291bGQgaGF2ZSBzdG9yZWQgYSB2YWx1ZSB3aXRoIGEgY2VydGFpbiBmb3JtYXQuIFRoYXQgZm9y
bWF0IG11c3QgbWF0Y2ggb3VyCisgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdC4gQnV0IG1v
cmUgaW1wb3J0YW50bHksIHdlIGNhbiBzaW1wbHkgdXNlIHRoZSB2YWx1ZSB0aGF0IHRoZSBQdXRT
dGFjayB3b3VsZAorICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIHN0b3JlZCBhbmQgZ2V0IHJp
ZCBvZiB0aGUgR2V0U3RhY2suCisgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbm9kZSwgZm9ybWF0ID09IGRhdGEtPmZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChkYXRh
LT5sb2NhbCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpID0gaW5jb21pbmctPmRlZmF1bHRF
ZGdlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQp
IHsKQEAgLTQxOCwxNiArNDQ2LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBwcmVj
aXNlTG9jYWxDbG9iYmVyaXplKAogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9k
ZSwgZXNjYXBlSGFuZGxlciwgZXNjYXBlSGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAg
IFsmXSAoVmlydHVhbFJlZ2lzdGVyLCBOb2RlKikgeyB9KTsKLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGEgR2V0U3RhY2ssIHRoZW4gd2UgYWxz
byBjcmVhdGUgYSBtYXBwaW5nLgotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8ganVzdCBlbGltaW5hdGUgc3VjaCBHZXRMb2NhbHMsIHdoZW4gd2Uga25v
dwotICAgICAgICAgICAgICAgICAgICAvLyB3aGF0IHRoZWlyIGluY29taW5nIHZhbHVlIHdpbGwg
YmUuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDE2MjQKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
R2V0U3RhY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0
YSA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRhLT5sb2NhbDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfSB9CiAgICAg
ICAgICAgICB9Cg==
</data>
<flag name="review"
          id="273480"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248700</attachid>
            <date>2015-03-15 20:54:19 -0700</date>
            <delta_ts>2015-03-16 10:30:02 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12952</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE1LTAzLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHOjpQdXRTdGFja1NpbmtpbmdQaGFzZSBzaG91bGQgZWxpbWluYXRlIEdldFN0YWNrcyB0aGF0
IGhhdmUgYW4gb2J2aW91c2x5IGtub3duIHNvdXJjZSwgYW5kIGVtaXQgR2V0U3RhY2tzIHdoZW4g
dGhlIHN0YWNrJ3MgdmFsdWUgaXMgbmVlZGVkIGFuZCBub25lIGlzIGRlZmVycmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2MjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3QgZWxpbWluYXRpbmcg
R2V0U3RhY2tzIHdhcyBhbiBvYnZpb3VzIG9taXNzaW9uIGZyb20gdGhlIG9yaWdpbmFsIFB1dFN0
YWNrU2lua2luZ1BoYXNlLgorICAgICAgICBQcmV2aW91c2x5LCB3ZSB3b3VsZCB0cmVhdCBHZXRT
dGFja3MgY29uc2VydmF0aXZlbHkgYW5kIGFzc3VtZSB0aGF0IHRoZSBzdGFjayBzbG90CisgICAg
ICAgIGVzY2FwZWQuIFRoYXQncyBwcmV0dHkgZHVtYiwgc2luY2UgYSBHZXRTdGFjayBpcyBhIGxv
Y2FsIGxvYWQgb2YgdGhlIHN0YWNrLiBUaGlzIGNoYW5nZQorICAgICAgICBtYWtlcyBHZXRTdGFj
ayBhIG5vLW9wIGZyb20gdGhlIHN0YW5kcG9pbnQgb2YgdGhpcyBwaGFzZSdzIGRlZmVycmFsIGFu
YWx5c2lzLiBBdCB0aGUgZW5kCisgICAgICAgIHdlIGVpdGhlciBrZWVwIHRoZSBHZXRTdGFjayAo
aWYgdGhlcmUgd2FzIG5vIGNvbmNyZXRlIGRlZmVycmFsKSBvciB3ZSByZXBsYWNlIGl0IHdpdGgg
YW4KKyAgICAgICAgaWRlbnRpdHkgb3ZlciB0aGUgdmFsdWUgdGhhdCB3b3VsZCBoYXZlIGJlZW4g
c3RvcmVkIGJ5IHRoZSBkZWZlcnJlZCBQdXRTdGFjay4gTm90ZSB0aGF0CisgICAgICAgIHRoaXMg
bWlnaHQgYmUgYSBQaGkgdGhhdCB0aGUgcGhhc2UgY3JlYXRlcywgc28gdGhpcyBpcyBzdHJpY3Rs
eSBzdHJvbmdlciB0aGFuIHdoYXQgR0NTRQorICAgICAgICBjb3VsZCBkby4KKyAgICAgICAgCisg
ICAgICAgIEJ1dCB0aGlzIGNoYW5nZSByZXZlYWxlZCB0aGUgZmFjdCB0aGF0IHRoaXMgcGhhc2Ug
bmV2ZXIgY29ycmVjdGx5IGhhbmRsZWQgc2lkZSBlZmZlY3RzIGluCisgICAgICAgIGNhc2UgdGhh
dCB3ZSBoYWQgZG9uZSBhIEdldFN0YWNrLCB0aGVuIGEgc2lkZS1lZmZlY3QsIGFuZCB0aGVuIGZv
dW5kIG91cnNlbHZlcyB3YW50aW5nIHRoZQorICAgICAgICB2YWx1ZSBvbiB0aGUgc3RhY2sgZHVl
IHRvIChmb3IgZXhhbXBsZSkgYSBQaGkgb24gYSBkZWZlcnJlZCBQdXRTdGFjayBhbmQgdGhhdCBH
ZXRTdGFjay4KKyAgICAgICAgQmFzaWNhbGx5LCBpdCdzIG9ubHkgY29ycmVjdCB0byB1c2UgdGhl
IFNTQSBjb252ZXJ0ZXIncyBpbmNvbWluZyB2YWx1ZSBtYXBwaW5nIGlmIHdlIGhhdmUKKyAgICAg
ICAgYSBjb25jcmV0ZSBkZWZlcnJhbCAtIHNpbmNlIGFueXRoaW5nIGJ1dCBhIGNvbmNyZXRlIGRl
ZmVycmFsIG1heSBpbXBseSB0aGF0IHRoZSB2YWx1ZSBoYXMKKyAgICAgICAgYmVlbiBjbG9iYmVy
ZWQuCisgICAgICAgIAorICAgICAgICBUaGlzIGhhcyBubyBwZXJmb3JtYW5jZSBjaGFuZ2UuIEkg
YmVsaWV2ZSB0aGF0IHRoZSBidWcgd2FzIHByZXZpb3VzbHkgYmVuaWduIGJlY2F1c2Ugd2UKKyAg
ICAgICAgaGF2ZSBzbyBmZXcgb3BlcmF0aW9ucyB0aGF0IGNsb2JiZXIgdGhlIHN0YWNrIGFueW1v
cmUsIGFuZCBtb3N0IG9mIHRob3NlIGdldCB1c2VkIGluIGEKKyAgICAgICAgdmVyeSBpZGlvbWF0
aWMgd2F5LiBUaGUgR2V0U3RhY2sgZWxpbWluYXRpb24gd2lsbCBiZSB2ZXJ5IHVzZWZ1bCBmb3Ig
dGhlIHZhcmFyZ3MKKyAgICAgICAgc2ltcGxpZmljYXRpb24gdGhhdCBpcyBwYXJ0IG9mIGJ1ZyAx
NDExNzQuCisgICAgICAgIAorICAgICAgICBUaGlzIGluY2x1ZGVzIGEgdGVzdCBmb3IgdGhlIGNh
c2UgdGhhdCBTcGVlZG9tZXRlciBoaXQsIHBsdXMgdGVzdHMgZm9yIHRoZSBvdGhlciBjYXNlcyBJ
CisgICAgICAgIHRob3VnaHQgb2Ygb25jZSBJIHJlYWxpemVkIHRoZSBkZWVwZXIgaXNzdWUuCisK
KyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZXQtc3RhY2staWRlbnRpdHktZHVlLXRvLXNpbmtpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
dC1zdGFjay1tYXBwaW5nLXdpdGgtZGVhZC1nZXQtc3RhY2suanM6IEFkZGVkLgorICAgICAgICAo
YmFyKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dldC1zdGFjay1t
YXBwaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGJhcik6CisgICAgICAgIChmb28pOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy93ZWlyZC1wdXQtc3RhY2stdmFyYXJncy5qczogQWRkZWQuCisgICAg
ICAgIChiYXopOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGZ1enopOgorICAgICAgICAoYmFy
KToKKwogMjAxNS0wMy0xNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJldHRlciBoYW5kbGUgZGlzcGxheWluZyAtMApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MTQ5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNiAr
MjIxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRTdGFjaykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQSBHZXRTdGFjayBkb2Vzbid0IGFmZmVjdCBhbnl0aGluZywgc2luY2Ugd2Uga25vdyB3
aGljaCBsb2NhbCB3ZSBhcmUgcmVhZGluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJv
bS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2Fw
ZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM5MCw2ICszOTYsMjkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSkgPSBDb25mbGlj
dGluZ0ZsdXNoOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsK
KyAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbm9kZS0+c3RhY2tB
Y2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IGRl
ZmVycmVkLm9wZXJhbmQoZGF0YS0+bG9jYWwpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
Q29uY3JldGUoZm9ybWF0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGVyZSBpcyBubyBkZWZlcnJhbC4gTm8gZGVmZXJyYWwgbWVhbnMgdGhhdCB0aGUgbW9zdAor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXV0aG9yaXRhdGl2ZSB2YWx1ZSBmb3IgdGhpcyBz
dGFjayBzbG90IGlzIHdoYXQgaXMgc3RvcmVkIGluIHRoZSBzdGFjay4gU28sCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBrZWVwIHRoZSBHZXRTdGFjay4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcHBpbmcub3BlcmFuZChkYXRhLT5sb2NhbCkgPSBub2RlOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBjb25jcmV0ZSBkZWZlcnJhbCwg
d2hpY2ggbWVhbnMgYSBQdXRTdGFjayB0aGF0IGhhc24ndCBleGVjdXRlZCB5ZXQuIEl0CisgICAg
ICAgICAgICAgICAgICAgIC8vIHdvdWxkIGhhdmUgc3RvcmVkIGEgdmFsdWUgd2l0aCBhIGNlcnRh
aW4gZm9ybWF0LiBUaGF0IGZvcm1hdCBtdXN0IG1hdGNoIG91cgorICAgICAgICAgICAgICAgICAg
ICAvLyBmb3JtYXQuIEJ1dCBtb3JlIGltcG9ydGFudGx5LCB3ZSBjYW4gc2ltcGx5IHVzZSB0aGUg
dmFsdWUgdGhhdCB0aGUgUHV0U3RhY2sgd291bGQKKyAgICAgICAgICAgICAgICAgICAgLy8gaGF2
ZSBzdG9yZWQgYW5kIGdldCByaWQgb2YgdGhlIEdldFN0YWNrLgorICAgICAgICAgICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIGZvcm1hdCA9PSBkYXRhLT5mb3JtYXQpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBt
YXBwaW5nLm9wZXJhbmQoZGF0YS0+bG9jYWwpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZDEoKSA9IGluY29taW5nLT5kZWZhdWx0RWRnZSgpOworICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVs
dDogewogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKSB7CkBAIC00MTgsMTYgKzQ0Nyw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgcHJlY2lzZUxvY2FsQ2xvYmJlcml6ZSgKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIG5vZGUsIGVzY2FwZUhhbmRsZXIsIGVzY2FwZUhhbmRsZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciwgTm9kZSopIHsgfSk7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBhIEdl
dFN0YWNrLCB0aGVuIHdlIGFsc28gY3JlYXRlIGEgbWFwcGluZy4KLSAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgZWxpbWluYXRlIHN1Y2ggR2V0
TG9jYWxzLCB3aGVuIHdlIGtub3cKLSAgICAgICAgICAgICAgICAgICAgLy8gd2hhdCB0aGVpciBp
bmNvbWluZyB2YWx1ZSB3aWxsIGJlLgotICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjI0Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IEdldFN0YWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBT
dGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gZGF0YS0+bG9jYWw7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlOwot
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0gfQogICAgICAgICAgICAgfQpAQCAtNDQ0LDM0ICs0NjMsMjQgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBkZWZlcnJlZEF0SGVh
ZFtzdWNjZXNzb3JCbG9ja10ub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBpc0NvbmNyZXRlKGZvcm1hdCkpOwogICAgICAg
ICAgICAgICAgICAgICBVc2VLaW5kIHVzZUtpbmQgPSB1c2VLaW5kRm9yKGZvcm1hdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIWluY29taW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGNhbiB0b3RhbGx5IGhhcHBlbiwgc2VlIHRlc3RzL3N0cmVzcy9wdXQt
bG9jYWwtY29uc2VydmF0aXZlLmpzLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBh
cmlzZXMgYmVjYXVzZSBkZWZlcnJhbCBhbmQgbGl2ZW5lc3MgYXJlIGJvdGggY29uc2VydmF0aXZl
LgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29uc2VydmF0aXZlIGxpdmVuZXNzIG1lYW5z
IHRoYXQgYSBsb2FkIGZyb20gYSAqZGlmZmVyZW50KiBjbG9zdXJlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyB2YXJpYWJsZSBtYXkgbGVhZCB1cyB0byBiZWxpZXZlIHRoYXQgb3VyIGxvY2Fs
IGlzIGxpdmUuIENvbnNlcnZhdGl2ZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJy
YWwgbWF5IGxlYWQgdXMgdG8gYmVsaWV2ZSB0aGF0IHRoZSBsb2NhbCBkb2Vzbid0IGhhdmUgYSB0
b3AgZGVmZXJyYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugc29tZW9uZSBo
YXMgZG9uZSBzb21ldGhpbmcgdGhhdCB3b3VsZCBoYXZlIGZvcmNlZCBpdCB0byBiZQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gbWF0ZXJpYWxpemVkLiBUaGUgYmFzaWMgcGF0dGVybiBpczoK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBH
ZXRDbG9zdXJlVmFyKGxvYzQyKSAvLyBsb2M0MidzIGRlZmVycmFsIGlzIG5vdyBib3R0b20KLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChwcmVkaWNhdGUxKQotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICAgIFB1dENsb3N1cmVWYXIobG9jNDIpIC8vIHByZXZlbnQgR0NTRSBvZiBv
dXIgR2V0Q2xvc3VyZVZhcidzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAocHJlZGlj
YXRlMikKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBQdXRTdGFjayhsb2M0MikgLy8g
d2Ugbm93IGhhdmUgYSBjb25jcmV0ZSBkZWZlcnJhbAotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gLy8gd2Ugc3RpbGwgaGF2ZSB0aGUgY29uY3JldGUgZGVmZXJyYWwgYmVjYXVzZSB3ZSBtZXJn
ZWQgd2l0aCBib3R0b20KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldENsb3N1cmVWYXIo
bG9jNDIpIC8vIGZvcmNlIG1hdGVyaWFsaXphdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgaGF2ZSBhIFBoaSB3aXRoIG5v
IGluY29taW5nIHZhbHVlIGZvcm0gdGhlIGJhc2ljIGJsb2NrIHRoYXQKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGJ5cGFzc2VkIHRoZSBQdXRTdGFjay4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogd2Ugc29ydCBvZiBjb3VsZCBo
YXZlIHVzZWQgdGhlIGVxdWl2YWxlbnQgb2YgTExWTSdzIHVuZGVmIGhlcmUuIFRoZQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgaXMgdGhhdCBpdCdzIE9LIHRvIGp1c3QgbGVhdmUg
cmFuZG9tIGJpdHMgaW4gdGhlIGxvY2FsIGlmIHdlJ3JlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjb21pbmcgZG93biB0aGlzIHBhdGguIEJ1dCwgd2UgZG9uJ3QgaGF2ZSBhIHdheSBvZiBz
YXlpbmcgdGhhdCBpbiBvdXIgSVIKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0IG5v
dyBhbmQgYW55d2F5IGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIHRoYXQgbXVjaC4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgPSBp
bnNlcnRpb25TZXQuaW5zZXJ0Qm90dG9tQ29uc3RhbnRGb3JVc2UoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXBzaWxvbkluc2VydGlvblBvaW50LCB1cHNpbG9uT3JpZ2luLCB1c2VLaW5k
KS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBuZWVkIHRvIGdldCBhIHZhbHVlIGZvciB0aGUgc3RhY2sgc2xvdC4gVGhpcyBwaGFzZSBkb2Vz
bid0IHJlYWxseSBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICAgLy8gZ29vZCB3YXkgb2YgZGV0
ZXJtaW5pbmcgaWYgYSBzdGFjayBsb2NhdGlvbiBnb3QgY2xvYmJlcmVkLiBJdCBqdXN0IGtub3dz
IGlmCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIGEgZGVmZXJyYWwuIFRoZSBsYWNr
IG9mIGEgZGVmZXJyYWwgbWlnaHQgbWVhbiB0aGF0IGEgUHV0U3RhY2sgb3IKKyAgICAgICAgICAg
ICAgICAgICAgLy8gR2V0U3RhY2sgaGFkIG5ldmVyIGhhcHBlbmVkLCBvciBpdCBtaWdodCBtZWFu
IHRoYXQgdGhlIHZhbHVlIHdhcyByZWFkLCBvcgorICAgICAgICAgICAgICAgICAgICAvLyB0aGF0
IGl0IHdhcyB3cml0dGVuLiBJdCdzIE9LIGZvciB1cyB0byBtYWtlIHNvbWUgYmFkIGRlY2lzaW9u
cyBoZXJlLCBzaW5jZQorICAgICAgICAgICAgICAgICAgICAvLyBHQ1NFIHdpbGwgY2xlYW4gaXQg
dXAgYW55d2F5LgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZzsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzQ29uY3JldGUoZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBwaGlOb2Rl
LCBpbmNvbWluZyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBJc3N1ZSBhIEdldFN0YWNrIHRvIGdldCB0aGUgdmFsdWUuIFRoaXMgbWln
aHQgaW50cm9kdWNlIHNvbWUgcmVkdW5kYW5jeQorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aW50byB0aGUgY29kZSwgYnV0IGlmIGl0J3MgYmFkIGVub3VnaCwgR0NTRSB3aWxsIGNsZWFuIGl0
IHVwLgorICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHNpbG9uSW5zZXJ0aW9uUG9p
bnQsIFNwZWNOb25lLCBHZXRTdGFjaywgdXBzaWxvbk9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQob3BlcmFuZCwg
Zm9ybWF0KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmctPnNldFJlc3VsdChy
ZXN1bHRGb3IoZm9ybWF0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtc3RhY2staWRlbnRpdHkt
ZHVlLXRvLXNpbmtpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZXQtc3RhY2staWRlbnRpdHktZHVlLXRvLXNpbmtpbmcuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1zdGFjay1pZGVu
dGl0eS1kdWUtdG8tc2lua2luZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitm
dW5jdGlvbiBmb28ocCwgYSkgeworICAgIGlmIChwKSB7CisgICAgICAgIHZhciB0bXAgPSBhcmd1
bWVudHM7CisgICAgfQorICAgIHJldHVybiBhOworfQorCitmdW5jdGlvbiBiYXIocCwgYSkgewor
ICAgIHJldHVybiBmb28ocCwgYSk7Cit9CisKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoZmFsc2UsIDQyKTsK
KyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dldC1zdGFjay1tYXBwaW5nLXdpdGgtZGVhZC1nZXQtc3RhY2suanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtc3RhY2stbWFwcGluZy13aXRo
LWRlYWQtZ2V0LXN0YWNrLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZXQtc3RhY2stbWFwcGluZy13aXRoLWRlYWQtZ2V0LXN0YWNrLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICBpZiAo
Zm9vLmFyZ3VtZW50c1swXSA9PT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGZvby5h
cmd1bWVudHNbMF0gc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQgYnV0IGlzLiIKK30KKworbm9Jbmxp
bmUoYmFyKTsKKworZnVuY3Rpb24gZm9vKGEsIHApIHsKKyAgICB2YXIgdG1wID0gYTsKKyAgICBl
ZmZlY3RmdWw0MigpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAg
ICBiYXIoKTsKKyAgICAgICAgYSA9IGk7CisgICAgfQorICAgIGlmIChwKSB7CisgICAgICAgIHZh
ciB0bXAgPSBhcmd1bWVudHM7CisgICAgfQorICAgIHJldHVybiBhOworfQorCitub0lubGluZShm
b28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vKDAsIGZhbHNlKTsKKyAgICBpZiAocmVzdWx0ICE9IDkpCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LXN0YWNrLW1hcHBpbmcuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtc3RhY2stbWFwcGluZy5qcwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LXN0YWNr
LW1hcHBpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAorZnVuY3Rpb24gYmFy
KCkgeworICAgIGlmIChmb28uYXJndW1lbnRzWzBdID09PSB2b2lkIDApCisgICAgICAgIHRocm93
ICJFcnJvcjogZm9vLmFyZ3VtZW50c1swXSBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCBidXQgaXMu
IgorfQorCitub0lubGluZShiYXIpOworCitmdW5jdGlvbiBmb28oYSwgcCkgeworICAgIGVmZmVj
dGZ1bDQyKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIGJh
cigpOworICAgICAgICBhID0gaTsKKyAgICB9CisgICAgaWYgKHApIHsKKyAgICAgICAgdmFyIHRt
cCA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgcmV0dXJuIGE7Cit9CisKK25vSW5saW5lKGZvbyk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBm
b28oMCwgZmFsc2UpOworICAgIGlmIChyZXN1bHQgIT0gOSkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy93ZWlyZC1wdXQtc3RhY2stdmFyYXJncy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dlaXJkLXB1dC1zdGFjay12YXJhcmdz
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy93
ZWlyZC1wdXQtc3RhY2stdmFyYXJncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBA
CitmdW5jdGlvbiBiYXooKSB7CisgICAgaWYgKCFmb28uYXJndW1lbnRzWzFdKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGZvby5hcmd1bWVudHNbMV0gc2hvdWxkIGJlIHRydXRoeSBidXQgaXMgZmFs
c3k6ICIgKyBmb28uYXJndW1lbnRzWzFdOworfQorCitub0lubGluZShiYXopOworCitmdW5jdGlv
biBmb28oYSwgYikgeworICAgIGlmIChhKQorICAgICAgICBiID0gNDI7CisgICAgYmF6KCk7Cit9
CisKK2Z1bmN0aW9uIGZ1enooYSwgYikgeworICAgIHJldHVybiBhICsgYjsKK30KKworZnVuY3Rp
b24gYmFyKGFycmF5MSwgYXJyYXkyKSB7CisgICAgZnV6ei5hcHBseSh0aGlzLCBhcnJheTEpOwor
ICAgIGZvby5hcHBseSh0aGlzLCBhcnJheTIpOworfQorCitub0lubGluZShiYXIpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGJhcihbZmFsc2UsIGZhbHNlXSwgW2Zh
bHNlLCB0cnVlXSk7Cg==
</data>
<flag name="review"
          id="273575"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>