<?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>142920</bug_id>
          
          <creation_ts>2015-03-20 14:04:54 -0700</creation_ts>
          <short_desc>Observably effectful nodes in DFG IR should come last in their bytecode instruction (i.e. forExit section), except for Hint nodes</short_desc>
          <delta_ts>2015-03-20 16:30:00 -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>142921</blocked>
    
    <blocked>142924</blocked>
    
    <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>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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078939</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-20 14:04:54 -0700</bug_when>
    <thetext>Observably effectful, n.: If we reexecute the bytecode instruction after this node has executed, then something other than the bytecode instruction&apos;s specified outcome will happen.

We almost never had observably effectful nodes except at the end of the bytecode instruction.  The exception is a lowered transitioning PutById:

PutStructure(@o, S1 -&gt; S2)
PutByOffset(@o, @o, @v)

The PutStructure is observably effectful: if you try to reexecute the bytecode after doing the PutStructure, then we&apos;ll most likely crash.  The generic PutById handling means first checking what the old structure of the object is; but if we reexecute, the old structure will seem to be the new structure.  But the property ensured by the new structure hasn&apos;t been stored yet, so any attempt to load it or scan it will crash.

Intriguingly, however, none of the other operations involved in the PutById are observably effectful.  Consider this example:

PutByOffset(@o, @o, @v)
PutStructure(@o, S1 -&gt; S2)

Note that the PutStructure node doesn&apos;t reallocate property storage; see further below for an example that does that. Because no property storage is happening, we know that we already had room for the new property.  This means that the PutByOffset is no observable until the PutStructure executes and &quot;reveals&quot; the property.  Hence, PutByOffset is not observably effectful.

Now consider this:

b: AllocatePropertyStorage(@o)
PutByOffset(@b, @o, @v)
PutStructure(@o, S1 -&gt; S2)

Surprisingly, this is also safe, because the AllocatePropertyStorage is not observably effectful. It *does* reallocate the property storage and the new property storage pointer is stored into the object. But until the PutStructure occurs, the world will just think that the reallocation didn&apos;t happen, in the sense that we&apos;ll think that the property storage is using less memory than what we just allocated. That&apos;s harmless.

The AllocatePropertyStorage is safe in other ways, too. Even if we GC&apos;d after the AllocatePropertyStorage but before the PutByOffset (or before the PutStructure), everything could be expected to be fine, so long as all of @o, @v and @b are on the stack. If they are all on the stack, then the GC will leave the property storage alone (so the extra memory we just allocated would be safe). The GC will not scan the part of the property storage that contains @v, but that&apos;s fine, so long as @v is on the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078944</commentid>
    <comment_count>1</comment_count>
      <attachid>249135</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-20 14:25:30 -0700</bug_when>
    <thetext>Created attachment 249135
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078945</commentid>
    <comment_count>2</comment_count>
      <attachid>249135</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-20 14:27:17 -0700</bug_when>
    <thetext>Comment on attachment 249135
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=249135&amp;action=review

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1785
&gt; -        }
&gt;          m_insertionSet.insertOutOfOrderNode(

This doesn&apos;t have to insertOUtOfOrderNode anymore.  I&apos;ll try that...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078949</commentid>
    <comment_count>3</comment_count>
      <attachid>249136</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-20 14:37:44 -0700</bug_when>
    <thetext>Created attachment 249136
the patch

Revised patch with more simplification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078953</commentid>
    <comment_count>4</comment_count>
      <attachid>249136</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-20 14:46:20 -0700</bug_when>
    <thetext>Comment on attachment 249136
the patch

r=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078964</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-20 15:04:57 -0700</bug_when>
    <thetext>The patch that I will land will kill some dead code that mlam added, per his request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078986</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-20 16:30:00 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/181817</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249135</attachid>
            <date>2015-03-20 14:25:30 -0700</date>
            <delta_ts>2015-03-20 14:37:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10547</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE1LTAzLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2JzZXJ2YWJseSBlZmZlY3RmdWwgbm9kZXMgaW4gREZHIElSIHNob3VsZCBjb21lIGxhc3QgaW4g
dGhlaXIgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gKGkuZS4gZm9yRXhpdCBzZWN0aW9uKSwgZXhjZXB0
IGZvciBIaW50IG5vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIE9ic2VydmFibHkgZWZmZWN0ZnVsLCBuLjogSWYgd2UgcmVleGVjdXRl
IHRoZSBieXRlY29kZSBpbnN0cnVjdGlvbiBhZnRlciB0aGlzIG5vZGUgaGFzCisgICAgICAgIGV4
ZWN1dGVkLCB0aGVuIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBieXRlY29kZSBpbnN0cnVjdGlv
bidzIHNwZWNpZmllZCBvdXRjb21lIHdpbGwKKyAgICAgICAgaGFwcGVuLgorCisgICAgICAgIFdl
IGFsbW9zdCBuZXZlciBoYWQgb2JzZXJ2YWJseSBlZmZlY3RmdWwgbm9kZXMgZXhjZXB0IGF0IHRo
ZSBlbmQgb2YgdGhlIGJ5dGVjb2RlCisgICAgICAgIGluc3RydWN0aW9uLiAgVGhlIGV4Y2VwdGlv
biBpcyBhIGxvd2VyZWQgdHJhbnNpdGlvbmluZyBQdXRCeUlkOgorCisgICAgICAgIFB1dFN0cnVj
dHVyZShAbywgUzEgLT4gUzIpCisgICAgICAgIFB1dEJ5T2Zmc2V0KEBvLCBAbywgQHYpCisKKyAg
ICAgICAgVGhlIFB1dFN0cnVjdHVyZSBpcyBvYnNlcnZhYmx5IGVmZmVjdGZ1bDogaWYgeW91IHRy
eSB0byByZWV4ZWN1dGUgdGhlIGJ5dGVjb2RlIGFmdGVyCisgICAgICAgIGRvaW5nIHRoZSBQdXRT
dHJ1Y3R1cmUsIHRoZW4gd2UnbGwgbW9zdCBsaWtlbHkgY3Jhc2guICBUaGUgZ2VuZXJpYyBQdXRC
eUlkIGhhbmRsaW5nIG1lYW5zCisgICAgICAgIGZpcnN0IGNoZWNraW5nIHdoYXQgdGhlIG9sZCBz
dHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCBpczsgYnV0IGlmIHdlIHJlZXhlY3V0ZSwgdGhlIG9sZAor
ICAgICAgICBzdHJ1Y3R1cmUgd2lsbCBzZWVtIHRvIGJlIHRoZSBuZXcgc3RydWN0dXJlLiAgQnV0
IHRoZSBwcm9wZXJ0eSBlbnN1cmVkIGJ5IHRoZSBuZXcKKyAgICAgICAgc3RydWN0dXJlIGhhc24n
dCBiZWVuIHN0b3JlZCB5ZXQsIHNvIGFueSBhdHRlbXB0IHRvIGxvYWQgaXQgb3Igc2NhbiBpdCB3
aWxsIGNyYXNoLgorCisgICAgICAgIEludHJpZ3VpbmdseSwgaG93ZXZlciwgbm9uZSBvZiB0aGUg
b3RoZXIgb3BlcmF0aW9ucyBpbnZvbHZlZCBpbiB0aGUgUHV0QnlJZCBhcmUKKyAgICAgICAgb2Jz
ZXJ2YWJseSBlZmZlY3RmdWwuICBDb25zaWRlciB0aGlzIGV4YW1wbGU6CisKKyAgICAgICAgUHV0
QnlPZmZzZXQoQG8sIEBvLCBAdikKKyAgICAgICAgUHV0U3RydWN0dXJlKEBvLCBTMSAtPiBTMikK
KworICAgICAgICBOb3RlIHRoYXQgdGhlIFB1dFN0cnVjdHVyZSBub2RlIGRvZXNuJ3QgcmVhbGxv
Y2F0ZSBwcm9wZXJ0eSBzdG9yYWdlOyBzZWUgZnVydGhlciBiZWxvdworICAgICAgICBmb3IgYW4g
ZXhhbXBsZSB0aGF0IGRvZXMgdGhhdC4gQmVjYXVzZSBubyBwcm9wZXJ0eSBzdG9yYWdlIGlzIGhh
cHBlbmluZywgd2Uga25vdyB0aGF0IHdlCisgICAgICAgIGFscmVhZHkgaGFkIHJvb20gZm9yIHRo
ZSBuZXcgcHJvcGVydHkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIFB1dEJ5T2Zmc2V0IGlzIG5vIG9i
c2VydmFibGUKKyAgICAgICAgdW50aWwgdGhlIFB1dFN0cnVjdHVyZSBleGVjdXRlcyBhbmQgInJl
dmVhbHMiIHRoZSBwcm9wZXJ0eS4gIEhlbmNlLCBQdXRCeU9mZnNldCBpcyBub3QKKyAgICAgICAg
b2JzZXJ2YWJseSBlZmZlY3RmdWwuCisKKyAgICAgICAgTm93IGNvbnNpZGVyIHRoaXM6CisKKyAg
ICAgICAgYjogQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoQG8pCisgICAgICAgIFB1dEJ5T2Zmc2V0
KEBiLCBAbywgQHYpCisgICAgICAgIFB1dFN0cnVjdHVyZShAbywgUzEgLT4gUzIpCisKKyAgICAg
ICAgU3VycHJpc2luZ2x5LCB0aGlzIGlzIGFsc28gc2FmZSwgYmVjYXVzZSB0aGUgQWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UgaXMgbm90IG9ic2VydmFibHkKKyAgICAgICAgZWZmZWN0ZnVsLiBJdCAq
ZG9lcyogcmVhbGxvY2F0ZSB0aGUgcHJvcGVydHkgc3RvcmFnZSBhbmQgdGhlIG5ldyBwcm9wZXJ0
eSBzdG9yYWdlIHBvaW50ZXIKKyAgICAgICAgaXMgc3RvcmVkIGludG8gdGhlIG9iamVjdC4gQnV0
IHVudGlsIHRoZSBQdXRTdHJ1Y3R1cmUgb2NjdXJzLCB0aGUgd29ybGQgd2lsbCBqdXN0IHRoaW5r
CisgICAgICAgIHRoYXQgdGhlIHJlYWxsb2NhdGlvbiBkaWRuJ3QgaGFwcGVuLCBpbiB0aGUgc2Vu
c2UgdGhhdCB3ZSdsbCB0aGluayB0aGF0IHRoZSBwcm9wZXJ0eQorICAgICAgICBzdG9yYWdlIGlz
IHVzaW5nIGxlc3MgbWVtb3J5IHRoYW4gd2hhdCB3ZSBqdXN0IGFsbG9jYXRlZC4gVGhhdCdzIGhh
cm1sZXNzLgorCisgICAgICAgIFRoZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSBpcyBzYWZlIGlu
IG90aGVyIHdheXMsIHRvby4gRXZlbiBpZiB3ZSBHQydkIGFmdGVyIHRoZQorICAgICAgICBBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSBidXQgYmVmb3JlIHRoZSBQdXRCeU9mZnNldCAob3IgYmVmb3Jl
IHRoZSBQdXRTdHJ1Y3R1cmUpLAorICAgICAgICBldmVyeXRoaW5nIGNvdWxkIGJlIGV4cGVjdGVk
IHRvIGJlIGZpbmUsIHNvIGxvbmcgYXMgYWxsIG9mIEBvLCBAdiBhbmQgQGIgYXJlIG9uIHRoZQor
ICAgICAgICBzdGFjay4gSWYgdGhleSBhcmUgYWxsIG9uIHRoZSBzdGFjaywgdGhlbiB0aGUgR0Mg
d2lsbCBsZWF2ZSB0aGUgcHJvcGVydHkgc3RvcmFnZSBhbG9uZQorICAgICAgICAoc28gdGhlIGV4
dHJhIG1lbW9yeSB3ZSBqdXN0IGFsbG9jYXRlZCB3b3VsZCBiZSBzYWZlKS4gVGhlIEdDIHdpbGwg
bm90IHNjYW4gdGhlIHBhcnQgb2YKKyAgICAgICAgdGhlIHByb3BlcnR5IHN0b3JhZ2UgdGhhdCBj
b250YWlucyBAdiwgYnV0IHRoYXQncyBmaW5lLCBzbyBsb25nIGFzIEB2IGlzIG9uIHRoZSBzdGFj
ay4KKyAgICAgICAgCisgICAgICAgIFRoZSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uIGlzIHBy
b2JhYmx5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjEuCisg
ICAgICAgIAorICAgICAgICBCdXQgZm9yIG5vdywgdGhpczoKKyAgICAgICAgCisgICAgICAgIC0g
Rml4ZXMgYW4gb2JqZWN0IG1hdGVyaWFsaXphdGlvbiBidWcsIGV4ZW1wbGlmaWVkIGJ5IHRoZSB0
d28gdGVzdHMsIHRoYXQgcHJldmlvdXNseQorICAgICAgICAgIGNyYXNoZWQgMTAwJSBvZiB0aGUg
dGltZSB3aXRoIEZUTCBlbmFibGVkIGFuZCBjb25jdXJyZW50IEpJVCBkaXNhYmxlZC4KKyAgICAg
ICAgCisgICAgICAgIC0gQWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgd29ya2Fyb3VuZCBpbnRyb2R1
Y2VkIGluIHIxNzQ4NTYuCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZzZXQpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbnNlcnRD
aGVjayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGVyaWFsaXplLXBhc3QtYnV0dGVyZmx5
LWFsbG9jYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoYmFyKToKKyAgICAgICAgKGZvbzApOgor
ICAgICAgICAoZm9vMSk6CisgICAgICAgIChmb28yKToKKyAgICAgICAgKGZvbzMpOgorICAgICAg
ICAoZm9vNCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGVyaWFsaXplLXBhc3QtcHV0LXN0
cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDE1LTAzLTE4ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBl
LnRvU3RyaW5nIHNob3VsZCBub3QgZGVjb21waWxlIHRoZSBBU1QKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxODE4
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQyMiw4ICsyNDIyLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dy
YXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRUb0dyYXBo
KFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKLQogICAgICAgICBTdG9y
YWdlQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsK
ICAgICAgICAgZGF0YS0+b2Zmc2V0ID0gdmFyaWFudC5vZmZzZXQoKTsKICAgICAgICAgZGF0YS0+
aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CkBAIC0yNDM1LDYgKzI0MzMsMTAg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgIGJhc2Us
CiAgICAgICAgICAgICB2YWx1ZSk7CiAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVjdHVyZSBn
b2VzIGxhc3QgdW50aWwgd2UgZml4CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDI5MjEuCisgICAgICAgIGFkZFRvR3JhcGgoUHV0U3RydWN0dXJl
LCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworCiAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBp
bGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGlu
ZWRQdXRCeUlkKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAx
ODE4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDIwICs1NjgsMTggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UocmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZh
cmlhbnQ6OlRyYW5zaXRpb24pIHsKLSAgICAgICAgICAgIE5vZGUqIHB1dFN0cnVjdHVyZSA9IG1f
Z3JhcGguYWRkTm9kZShTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBvcmlnaW4sIE9wSW5mbyh0cmFu
c2l0aW9uKSwgY2hpbGRFZGdlKTsKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3RvcmVCYXJyaWVyLCBvcmlnaW4sIEVkZ2Uobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBLbm93bkNlbGxVc2UpKTsKLSAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydChpbmRleEluQmxvY2ssIHB1dFN0cnVjdHVyZSk7Ci0gICAgICAgIH0KLQog
ICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3RvcmFnZUFjY2Vz
c0RhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEub2Zmc2V0ID0gdmFyaWFudC5vZmZzZXQoKTsKICAg
ICAgICAgZGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAg
CiAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1B1dEJ5T2Zmc2V0KGRhdGEsIHByb3BlcnR5U3RvcmFn
ZSk7Ci0gICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBpbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBTdG9yZUJhcnJpZXIsIG9yaWdpbiwgCi0gICAgICAgICAgICBF
ZGdlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgS25vd25DZWxsVXNlKSk7CisKKyAgICAgICAgaWYg
KHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogUHV0U3RydWN0dXJlIGdvZXMgbGFzdCB1bnRpbCB3ZSBmaXgKKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjEu
CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBQdXRTdHJ1Y3R1cmUsIG9yaWdpbiwgT3BJbmZv
KHRyYW5zaXRpb24pLCBjaGlsZEVkZ2UpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQmFzZUNoZWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODE4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgyLDE4ICsxNzgyLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGluc2VydENoZWNrKHVuc2lnbmVkIGluZGV4SW5CbG9jaywg
Tm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPHVzZUtpbmQ+
KG5vZGUpOwotICAgICAgICBDb2RlT3JpZ2luJiBjaGVja2VkTm9kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5mb3JFeGl0OwotICAgICAgICBDb2RlT3JpZ2luJiBjdXJyZW50Tm9kZU9yaWdpbiA9IG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5mb3JFeGl0OwotICAgICAgICBpZiAoY3VycmVudE5vZGVPcmln
aW4gPT0gY2hlY2tlZE5vZGVPcmlnaW4pIHsKLSAgICAgICAgICAgIC8vIFRoZSBjaGVja2VkIG5v
ZGUgaXMgd2l0aGluIHRoZSBzYW1lIGJ5dGVjb2RlLiBIZW5jZSwgdGhlIGVhcmxpZXN0Ci0gICAg
ICAgICAgICAvLyBwb3NpdGlvbiB3ZSBjYW4gaW5zZXJ0IHRoZSBjaGVjayBpcyByaWdodCBhZnRl
ciB0aGUgY2hlY2tlZCBub2RlLgotICAgICAgICAgICAgaW5kZXhJbkJsb2NrID0gaW5kZXhPZk5v
ZGUobm9kZSwgaW5kZXhJbkJsb2NrKSArIDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAvLyBUaGUgY2hlY2tlZCBub2RlIGlzIGZyb20gYSBwcmVjZWRpbmcgYnl0ZWNvZGUuIEhlbmNl
LCB0aGUgZWFybGllc3QKLSAgICAgICAgICAgIC8vIHBvc2l0aW9uIHdlIGNhbiBpbnNlcnQgdGhl
IGNoZWNrIGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVudAotICAgICAgICAgICAgLy8gYnl0
ZWNvZGUuCi0gICAgICAgICAgICBpbmRleEluQmxvY2sgPSBpbmRleE9mRmlyc3ROb2RlT2ZFeGl0
T3JpZ2luKGN1cnJlbnROb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwotICAgICAgICB9CiAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE91dE9mT3JkZXJOb2RlKAogICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG1fY3VycmVudE5vZGUtPm9yaWdpbiwgRWRnZShu
b2RlLCB1c2VLaW5kKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9tYXRlcmlhbGl6ZS1wYXN0LWJ1dHRlcmZseS1hbGxvY2F0aW9uLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0ZXJpYWxpemUtcGFz
dC1idXR0ZXJmbHktYWxsb2NhdGlvbi5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0ZXJpYWxpemUtcGFzdC1idXR0ZXJmbHktYWxsb2NhdGlv
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACitmdW5jdGlvbiBiYXIoKSB7Cisg
ICAgcmV0dXJuIHtmOjQyfTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZnVuY3Rpb24gZm9vMChi
KSB7CisgICAgdmFyIG8gPSB7Zjo0Mn07CisgICAgaWYgKGIpIHsKKyAgICAgICAgdmFyIHAgPSBi
YXIoKTsKKyAgICAgICAgcC5nID0gbzsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorfQorCitm
dW5jdGlvbiBmb28xKGIpIHsKKyAgICB2YXIgbyA9IHtmOjQyfTsKKyAgICBpZiAoYikgeworICAg
ICAgICB2YXIgcCA9IGJhcigpOworICAgICAgICBwLmYxID0gMTsKKyAgICAgICAgcC5nID0gbzsK
KyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorfQorCitmdW5jdGlvbiBmb28yKGIpIHsKKyAgICB2
YXIgbyA9IHtmOjQyfTsKKyAgICBpZiAoYikgeworICAgICAgICB2YXIgcCA9IGJhcigpOworICAg
ICAgICBwLmYxID0gMTsKKyAgICAgICAgcC5mMiA9IDI7CisgICAgICAgIHAuZyA9IG87CisgICAg
ICAgIHJldHVybiBwOworICAgIH0KK30KKworZnVuY3Rpb24gZm9vMyhiKSB7CisgICAgdmFyIG8g
PSB7Zjo0Mn07CisgICAgaWYgKGIpIHsKKyAgICAgICAgdmFyIHAgPSBiYXIoKTsKKyAgICAgICAg
cC5mMSA9IDE7CisgICAgICAgIHAuZjIgPSAyOworICAgICAgICBwLmYzID0gMzsKKyAgICAgICAg
cC5nID0gbzsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorfQorCitmdW5jdGlvbiBmb280KGIp
IHsKKyAgICB2YXIgbyA9IHtmOjQyfTsKKyAgICBpZiAoYikgeworICAgICAgICB2YXIgcCA9IGJh
cigpOworICAgICAgICBwLmYxID0gMTsKKyAgICAgICAgcC5mMiA9IDI7CisgICAgICAgIHAuZjMg
PSAzOworICAgICAgICBwLmY0ID0gNDsKKyAgICAgICAgcC5nID0gbzsKKyAgICAgICAgcmV0dXJu
IHA7CisgICAgfQorfQorCitub0lubGluZShmb28wKTsKK25vSW5saW5lKGZvbzEpOworbm9Jbmxp
bmUoZm9vMik7Citub0lubGluZShmb28zKTsKK25vSW5saW5lKGZvbzQpOworCit2YXIgYXJyYXkg
PSBuZXcgQXJyYXkoMTAwMCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDQwMDAwMDA7ICsraSkgewor
ICAgIHZhciBvID0gZm9vMCh0cnVlKTsKKyAgICBhcnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG87
Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDQwMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gZm9v
MSh0cnVlKTsKKyAgICBhcnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG87Cit9Citmb3IgKHZhciBp
ID0gMDsgaSA8IDQwMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gZm9vMih0cnVlKTsKKyAgICBh
cnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG87Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDQwMDAw
MDA7ICsraSkgeworICAgIHZhciBvID0gZm9vMyh0cnVlKTsKKyAgICBhcnJheVtpICUgYXJyYXku
bGVuZ3RoXSA9IG87Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDQwMDAwMDA7ICsraSkgeworICAg
IHZhciBvID0gZm9vNCh0cnVlKTsKKyAgICBhcnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG87Cit9
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0ZXJpYWxpemUt
cGFzdC1wdXQtc3RydWN0dXJlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvbWF0ZXJpYWxpemUtcGFzdC1wdXQtc3RydWN0dXJlLmpzCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRlcmlhbGl6ZS1w
YXN0LXB1dC1zdHJ1Y3R1cmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVu
Y3Rpb24gZm9vKHApIHsKKyAgICB2YXIgbyA9IHtmOjQyfTsKKyAgICBpZiAocCkKKyAgICAgICAg
cmV0dXJuIHtmOjQyLCBnOm99OworfQorCitub0lubGluZShmb28pOworCit2YXIgYXJyYXkgPSBu
ZXcgQXJyYXkoMTAwMCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDQwMDAwMDA7ICsraSkgeworICAg
IHZhciBvID0gZm9vKHRydWUpOworICAgIGFycmF5W2kgJSBhcnJheS5sZW5ndGhdID0gbzsKK30K
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249136</attachid>
            <date>2015-03-20 14:37:44 -0700</date>
            <delta_ts>2015-03-20 14:40:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10549</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE1LTAzLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2JzZXJ2YWJseSBlZmZlY3RmdWwgbm9kZXMgaW4gREZHIElSIHNob3VsZCBjb21lIGxhc3QgaW4g
dGhlaXIgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gKGkuZS4gZm9yRXhpdCBzZWN0aW9uKSwgZXhjZXB0
IGZvciBIaW50IG5vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIE9ic2VydmFibHkgZWZmZWN0ZnVsLCBuLjogSWYgd2UgcmVleGVjdXRl
IHRoZSBieXRlY29kZSBpbnN0cnVjdGlvbiBhZnRlciB0aGlzIG5vZGUgaGFzCisgICAgICAgIGV4
ZWN1dGVkLCB0aGVuIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBieXRlY29kZSBpbnN0cnVjdGlv
bidzIHNwZWNpZmllZCBvdXRjb21lIHdpbGwKKyAgICAgICAgaGFwcGVuLgorCisgICAgICAgIFdl
IGFsbW9zdCBuZXZlciBoYWQgb2JzZXJ2YWJseSBlZmZlY3RmdWwgbm9kZXMgZXhjZXB0IGF0IHRo
ZSBlbmQgb2YgdGhlIGJ5dGVjb2RlCisgICAgICAgIGluc3RydWN0aW9uLiAgVGhlIGV4Y2VwdGlv
biBpcyBhIGxvd2VyZWQgdHJhbnNpdGlvbmluZyBQdXRCeUlkOgorCisgICAgICAgIFB1dFN0cnVj
dHVyZShAbywgUzEgLT4gUzIpCisgICAgICAgIFB1dEJ5T2Zmc2V0KEBvLCBAbywgQHYpCisKKyAg
ICAgICAgVGhlIFB1dFN0cnVjdHVyZSBpcyBvYnNlcnZhYmx5IGVmZmVjdGZ1bDogaWYgeW91IHRy
eSB0byByZWV4ZWN1dGUgdGhlIGJ5dGVjb2RlIGFmdGVyCisgICAgICAgIGRvaW5nIHRoZSBQdXRT
dHJ1Y3R1cmUsIHRoZW4gd2UnbGwgbW9zdCBsaWtlbHkgY3Jhc2guICBUaGUgZ2VuZXJpYyBQdXRC
eUlkIGhhbmRsaW5nIG1lYW5zCisgICAgICAgIGZpcnN0IGNoZWNraW5nIHdoYXQgdGhlIG9sZCBz
dHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCBpczsgYnV0IGlmIHdlIHJlZXhlY3V0ZSwgdGhlIG9sZAor
ICAgICAgICBzdHJ1Y3R1cmUgd2lsbCBzZWVtIHRvIGJlIHRoZSBuZXcgc3RydWN0dXJlLiAgQnV0
IHRoZSBwcm9wZXJ0eSBlbnN1cmVkIGJ5IHRoZSBuZXcKKyAgICAgICAgc3RydWN0dXJlIGhhc24n
dCBiZWVuIHN0b3JlZCB5ZXQsIHNvIGFueSBhdHRlbXB0IHRvIGxvYWQgaXQgb3Igc2NhbiBpdCB3
aWxsIGNyYXNoLgorCisgICAgICAgIEludHJpZ3VpbmdseSwgaG93ZXZlciwgbm9uZSBvZiB0aGUg
b3RoZXIgb3BlcmF0aW9ucyBpbnZvbHZlZCBpbiB0aGUgUHV0QnlJZCBhcmUKKyAgICAgICAgb2Jz
ZXJ2YWJseSBlZmZlY3RmdWwuICBDb25zaWRlciB0aGlzIGV4YW1wbGU6CisKKyAgICAgICAgUHV0
QnlPZmZzZXQoQG8sIEBvLCBAdikKKyAgICAgICAgUHV0U3RydWN0dXJlKEBvLCBTMSAtPiBTMikK
KworICAgICAgICBOb3RlIHRoYXQgdGhlIFB1dFN0cnVjdHVyZSBub2RlIGRvZXNuJ3QgcmVhbGxv
Y2F0ZSBwcm9wZXJ0eSBzdG9yYWdlOyBzZWUgZnVydGhlciBiZWxvdworICAgICAgICBmb3IgYW4g
ZXhhbXBsZSB0aGF0IGRvZXMgdGhhdC4gQmVjYXVzZSBubyBwcm9wZXJ0eSBzdG9yYWdlIGlzIGhh
cHBlbmluZywgd2Uga25vdyB0aGF0IHdlCisgICAgICAgIGFscmVhZHkgaGFkIHJvb20gZm9yIHRo
ZSBuZXcgcHJvcGVydHkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIFB1dEJ5T2Zmc2V0IGlzIG5vIG9i
c2VydmFibGUKKyAgICAgICAgdW50aWwgdGhlIFB1dFN0cnVjdHVyZSBleGVjdXRlcyBhbmQgInJl
dmVhbHMiIHRoZSBwcm9wZXJ0eS4gIEhlbmNlLCBQdXRCeU9mZnNldCBpcyBub3QKKyAgICAgICAg
b2JzZXJ2YWJseSBlZmZlY3RmdWwuCisKKyAgICAgICAgTm93IGNvbnNpZGVyIHRoaXM6CisKKyAg
ICAgICAgYjogQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoQG8pCisgICAgICAgIFB1dEJ5T2Zmc2V0
KEBiLCBAbywgQHYpCisgICAgICAgIFB1dFN0cnVjdHVyZShAbywgUzEgLT4gUzIpCisKKyAgICAg
ICAgU3VycHJpc2luZ2x5LCB0aGlzIGlzIGFsc28gc2FmZSwgYmVjYXVzZSB0aGUgQWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UgaXMgbm90IG9ic2VydmFibHkKKyAgICAgICAgZWZmZWN0ZnVsLiBJdCAq
ZG9lcyogcmVhbGxvY2F0ZSB0aGUgcHJvcGVydHkgc3RvcmFnZSBhbmQgdGhlIG5ldyBwcm9wZXJ0
eSBzdG9yYWdlIHBvaW50ZXIKKyAgICAgICAgaXMgc3RvcmVkIGludG8gdGhlIG9iamVjdC4gQnV0
IHVudGlsIHRoZSBQdXRTdHJ1Y3R1cmUgb2NjdXJzLCB0aGUgd29ybGQgd2lsbCBqdXN0IHRoaW5r
CisgICAgICAgIHRoYXQgdGhlIHJlYWxsb2NhdGlvbiBkaWRuJ3QgaGFwcGVuLCBpbiB0aGUgc2Vu
c2UgdGhhdCB3ZSdsbCB0aGluayB0aGF0IHRoZSBwcm9wZXJ0eQorICAgICAgICBzdG9yYWdlIGlz
IHVzaW5nIGxlc3MgbWVtb3J5IHRoYW4gd2hhdCB3ZSBqdXN0IGFsbG9jYXRlZC4gVGhhdCdzIGhh
cm1sZXNzLgorCisgICAgICAgIFRoZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSBpcyBzYWZlIGlu
IG90aGVyIHdheXMsIHRvby4gRXZlbiBpZiB3ZSBHQydkIGFmdGVyIHRoZQorICAgICAgICBBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSBidXQgYmVmb3JlIHRoZSBQdXRCeU9mZnNldCAob3IgYmVmb3Jl
IHRoZSBQdXRTdHJ1Y3R1cmUpLAorICAgICAgICBldmVyeXRoaW5nIGNvdWxkIGJlIGV4cGVjdGVk
IHRvIGJlIGZpbmUsIHNvIGxvbmcgYXMgYWxsIG9mIEBvLCBAdiBhbmQgQGIgYXJlIG9uIHRoZQor
ICAgICAgICBzdGFjay4gSWYgdGhleSBhcmUgYWxsIG9uIHRoZSBzdGFjaywgdGhlbiB0aGUgR0Mg
d2lsbCBsZWF2ZSB0aGUgcHJvcGVydHkgc3RvcmFnZSBhbG9uZQorICAgICAgICAoc28gdGhlIGV4
dHJhIG1lbW9yeSB3ZSBqdXN0IGFsbG9jYXRlZCB3b3VsZCBiZSBzYWZlKS4gVGhlIEdDIHdpbGwg
bm90IHNjYW4gdGhlIHBhcnQgb2YKKyAgICAgICAgdGhlIHByb3BlcnR5IHN0b3JhZ2UgdGhhdCBj
b250YWlucyBAdiwgYnV0IHRoYXQncyBmaW5lLCBzbyBsb25nIGFzIEB2IGlzIG9uIHRoZSBzdGFj
ay4KKyAgICAgICAgCisgICAgICAgIFRoZSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uIGlzIHBy
b2JhYmx5IGJ1ZyAxNDI5MjEuCisgICAgICAgIAorICAgICAgICBCdXQgZm9yIG5vdywgdGhpczoK
KyAgICAgICAgCisgICAgICAgIC0gRml4ZXMgYW4gb2JqZWN0IG1hdGVyaWFsaXphdGlvbiBidWcs
IGV4ZW1wbGlmaWVkIGJ5IHRoZSB0d28gdGVzdHMsIHRoYXQgcHJldmlvdXNseQorICAgICAgICAg
IGNyYXNoZWQgMTAwJSBvZiB0aGUgdGltZSB3aXRoIEZUTCBlbmFibGVkIGFuZCBjb25jdXJyZW50
IEpJVCBkaXNhYmxlZC4KKyAgICAgICAgCisgICAgICAgIC0gQWxsb3dzIHVzIHRvIHJlbW92ZSB0
aGUgd29ya2Fyb3VuZCBpbnRyb2R1Y2VkIGluIHIxNzQ4NTYuCisKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZz
ZXQpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjppbnNlcnRDaGVjayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGVy
aWFsaXplLXBhc3QtYnV0dGVyZmx5LWFsbG9jYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoYmFy
KToKKyAgICAgICAgKGZvbzApOgorICAgICAgICAoZm9vMSk6CisgICAgICAgIChmb28yKToKKyAg
ICAgICAgKGZvbzMpOgorICAgICAgICAoZm9vNCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21h
dGVyaWFsaXplLXBhc3QtcHV0LXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgIChmb28pOgor
CiAyMDE1LTAzLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nIHNob3VsZCBub3QgZGVjb21waWxlIHRoZSBB
U1QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxODE4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyMiw4ICsyNDIyLDYgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBi
YXNlKTsKLQogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdG9y
YWdlQWNjZXNzRGF0YS5hZGQoKTsKICAgICAgICAgZGF0YS0+b2Zmc2V0ID0gdmFyaWFudC5vZmZz
ZXQoKTsKICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7
CkBAIC0yNDM1LDYgKzI0MzMsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKICAgICAgICAgICAgIGJhc2UsCiAgICAgICAgICAgICB2YWx1ZSk7CiAKKyAgICAgICAgLy8g
RklYTUU6IFB1dFN0cnVjdHVyZSBnb2VzIGxhc3QgdW50aWwgd2UgZml4CisgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjEuCisgICAgICAgIGFk
ZFRvR3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworCiAgICAg
ICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBp
bGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAxODE4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDIwICs1
NjgsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UocmVh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmFyaWFu
dC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKLSAgICAgICAgICAgIE5v
ZGUqIHB1dFN0cnVjdHVyZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwgUHV0U3RydWN0dXJl
LCBvcmlnaW4sIE9wSW5mbyh0cmFuc2l0aW9uKSwgY2hpbGRFZGdlKTsKLSAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3RvcmVCYXJy
aWVyLCBvcmlnaW4sIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBLbm93bkNlbGxVc2UpKTsK
LSAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChpbmRleEluQmxvY2ssIHB1dFN0cnVj
dHVyZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgZGF0YSA9ICpt
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEub2Zmc2V0ID0g
dmFyaWFudC5vZmZzZXQoKTsKICAgICAgICAgZGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRp
Zmllck51bWJlcjsKICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1B1dEJ5T2Zmc2V0
KGRhdGEsIHByb3BlcnR5U3RvcmFnZSk7Ci0gICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdG9yZUJhcnJpZXIsIG9y
aWdpbiwgCi0gICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgS25vd25DZWxs
VXNlKSk7CisKKyAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpU
cmFuc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogUHV0U3RydWN0dXJlIGdvZXMgbGFz
dCB1bnRpbCB3ZSBmaXgKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDI5MjEuCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBQdXRTdHJ1
Y3R1cmUsIG9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb24pLCBjaGlsZEVkZ2UpOworICAgICAgICB9
CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkQmFzZUNoZWNrKApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODE4MTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgyLDE5ICsxNzgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc2VydENoZWNrKHVu
c2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIG9ic2VydmVV
c2VLaW5kT25Ob2RlPHVzZUtpbmQ+KG5vZGUpOwotICAgICAgICBDb2RlT3JpZ2luJiBjaGVja2Vk
Tm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5mb3JFeGl0OwotICAgICAgICBDb2RlT3JpZ2luJiBj
dXJyZW50Tm9kZU9yaWdpbiA9IG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JFeGl0OwotICAgICAg
ICBpZiAoY3VycmVudE5vZGVPcmlnaW4gPT0gY2hlY2tlZE5vZGVPcmlnaW4pIHsKLSAgICAgICAg
ICAgIC8vIFRoZSBjaGVja2VkIG5vZGUgaXMgd2l0aGluIHRoZSBzYW1lIGJ5dGVjb2RlLiBIZW5j
ZSwgdGhlIGVhcmxpZXN0Ci0gICAgICAgICAgICAvLyBwb3NpdGlvbiB3ZSBjYW4gaW5zZXJ0IHRo
ZSBjaGVjayBpcyByaWdodCBhZnRlciB0aGUgY2hlY2tlZCBub2RlLgotICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrID0gaW5kZXhPZk5vZGUobm9kZSwgaW5kZXhJbkJsb2NrKSArIDE7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGUgY2hlY2tlZCBub2RlIGlzIGZyb20gYSBwcmVj
ZWRpbmcgYnl0ZWNvZGUuIEhlbmNlLCB0aGUgZWFybGllc3QKLSAgICAgICAgICAgIC8vIHBvc2l0
aW9uIHdlIGNhbiBpbnNlcnQgdGhlIGNoZWNrIGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVu
dAotICAgICAgICAgICAgLy8gYnl0ZWNvZGUuCi0gICAgICAgICAgICBpbmRleEluQmxvY2sgPSBp
bmRleE9mRmlyc3ROb2RlT2ZFeGl0T3JpZ2luKGN1cnJlbnROb2RlT3JpZ2luLCBpbmRleEluQmxv
Y2spOwotICAgICAgICB9Ci0gICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE91dE9mT3JkZXJO
b2RlKAorICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG1fY3VycmVudE5vZGUtPm9yaWdpbiwgRWRnZShu
b2RlLCB1c2VLaW5kKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL21hdGVyaWFsaXplLXBhc3QtYnV0dGVyZmx5LWFsbG9jYXRpb24uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRlcmlhbGl6ZS1w
YXN0LWJ1dHRlcmZseS1hbGxvY2F0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRlcmlhbGl6ZS1wYXN0LWJ1dHRlcmZseS1hbGxvY2F0
aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKK2Z1bmN0aW9uIGJhcigpIHsK
KyAgICByZXR1cm4ge2Y6NDJ9OworfQorCitub0lubGluZShiYXIpOworCitmdW5jdGlvbiBmb28w
KGIpIHsKKyAgICB2YXIgbyA9IHtmOjQyfTsKKyAgICBpZiAoYikgeworICAgICAgICB2YXIgcCA9
IGJhcigpOworICAgICAgICBwLmcgPSBvOworICAgICAgICByZXR1cm4gcDsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGZvbzEoYikgeworICAgIHZhciBvID0ge2Y6NDJ9OworICAgIGlmIChiKSB7Cisg
ICAgICAgIHZhciBwID0gYmFyKCk7CisgICAgICAgIHAuZjEgPSAxOworICAgICAgICBwLmcgPSBv
OworICAgICAgICByZXR1cm4gcDsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZvbzIoYikgeworICAg
IHZhciBvID0ge2Y6NDJ9OworICAgIGlmIChiKSB7CisgICAgICAgIHZhciBwID0gYmFyKCk7Cisg
ICAgICAgIHAuZjEgPSAxOworICAgICAgICBwLmYyID0gMjsKKyAgICAgICAgcC5nID0gbzsKKyAg
ICAgICAgcmV0dXJuIHA7CisgICAgfQorfQorCitmdW5jdGlvbiBmb28zKGIpIHsKKyAgICB2YXIg
byA9IHtmOjQyfTsKKyAgICBpZiAoYikgeworICAgICAgICB2YXIgcCA9IGJhcigpOworICAgICAg
ICBwLmYxID0gMTsKKyAgICAgICAgcC5mMiA9IDI7CisgICAgICAgIHAuZjMgPSAzOworICAgICAg
ICBwLmcgPSBvOworICAgICAgICByZXR1cm4gcDsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZvbzQo
YikgeworICAgIHZhciBvID0ge2Y6NDJ9OworICAgIGlmIChiKSB7CisgICAgICAgIHZhciBwID0g
YmFyKCk7CisgICAgICAgIHAuZjEgPSAxOworICAgICAgICBwLmYyID0gMjsKKyAgICAgICAgcC5m
MyA9IDM7CisgICAgICAgIHAuZjQgPSA0OworICAgICAgICBwLmcgPSBvOworICAgICAgICByZXR1
cm4gcDsKKyAgICB9Cit9CisKK25vSW5saW5lKGZvbzApOworbm9JbmxpbmUoZm9vMSk7Citub0lu
bGluZShmb28yKTsKK25vSW5saW5lKGZvbzMpOworbm9JbmxpbmUoZm9vNCk7CisKK3ZhciBhcnJh
eSA9IG5ldyBBcnJheSgxMDAwKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgNDAwMDAwMDsgKytpKSB7
CisgICAgdmFyIG8gPSBmb28wKHRydWUpOworICAgIGFycmF5W2kgJSBhcnJheS5sZW5ndGhdID0g
bzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgNDAwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBm
b28xKHRydWUpOworICAgIGFycmF5W2kgJSBhcnJheS5sZW5ndGhdID0gbzsKK30KK2ZvciAodmFy
IGkgPSAwOyBpIDwgNDAwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBmb28yKHRydWUpOworICAg
IGFycmF5W2kgJSBhcnJheS5sZW5ndGhdID0gbzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgNDAw
MDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBmb28zKHRydWUpOworICAgIGFycmF5W2kgJSBhcnJh
eS5sZW5ndGhdID0gbzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgNDAwMDAwMDsgKytpKSB7Cisg
ICAgdmFyIG8gPSBmb280KHRydWUpOworICAgIGFycmF5W2kgJSBhcnJheS5sZW5ndGhdID0gbzsK
K30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRlcmlhbGl6
ZS1wYXN0LXB1dC1zdHJ1Y3R1cmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9tYXRlcmlhbGl6ZS1wYXN0LXB1dC1zdHJ1Y3R1cmUuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGVyaWFsaXpl
LXBhc3QtcHV0LXN0cnVjdHVyZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitm
dW5jdGlvbiBmb28ocCkgeworICAgIHZhciBvID0ge2Y6NDJ9OworICAgIGlmIChwKQorICAgICAg
ICByZXR1cm4ge2Y6NDIsIGc6b307Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciBhcnJheSA9
IG5ldyBBcnJheSgxMDAwKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgNDAwMDAwMDsgKytpKSB7Cisg
ICAgdmFyIG8gPSBmb28odHJ1ZSk7CisgICAgYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0gPSBvOwor
fQorCg==
</data>
<flag name="review"
          id="273976"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>