<?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>69154</bug_id>
          
          <creation_ts>2011-09-30 10:25:26 -0700</creation_ts>
          <short_desc>feBlend uses a table of function pointers which reduces inlineability inside the main loop</short_desc>
          <delta_ts>2011-09-30 11:25:16 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476156</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-09-30 10:25:26 -0700</bug_when>
    <thetext>Before:

1 blend 2083500 pixel image took 8408 us
2 blend 2083500 pixel image took 8576 us
3 blend 2083500 pixel image took 9006 us
4 blend 2083500 pixel image took 9942 us
5 blend 2083500 pixel image took 9592 us

After:

1 blend 2083500 pixel image took 6792 us
2 blend 2083500 pixel image took 6592 us
3 blend 2083500 pixel image took 6896 us
4 blend 2083500 pixel image took 8368 us
5 blend 2083500 pixel image took 7974 us

20% speedup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476159</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-09-30 10:26:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/10215221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476164</commentid>
    <comment_count>2</comment_count>
      <attachid>109310</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-09-30 10:41:13 -0700</bug_when>
    <thetext>Created attachment 109310
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476165</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-09-30 10:41:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=109310) [details]
&gt; patch + caching bbox

autofill :-\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476167</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-30 10:44:19 -0700</bug_when>
    <thetext>Attachment 109310 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/filters/FEBlend.cpp:124:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476171</commentid>
    <comment_count>5</comment_count>
      <attachid>109312</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-09-30 10:50:16 -0700</bug_when>
    <thetext>Created attachment 109312
style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476175</commentid>
    <comment_count>6</comment_count>
      <attachid>109312</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-30 10:51:23 -0700</bug_when>
    <thetext>Comment on attachment 109312
style

Putting the switch inside the loop speeds things up by 20%. Could you speed up even more by putting the switch outside the loop? With template functions you could even inline the functions and have the switch statement outside the entire apply function. How much more would that speed things up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476182</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-09-30 11:01:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 109312 [details])
&gt; Putting the switch inside the loop speeds things up by 20%. Could you speed up even more by putting the switch outside the loop? With template functions you could even inline the functions and have the switch statement outside the entire apply function. How much more would that speed things up?

Probably not much thanks to the advanced branch predictors. But templates probably could be an easy way to do this refactor, and we can see what happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476189</commentid>
    <comment_count>8</comment_count>
      <attachid>109312</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-30 11:08:21 -0700</bug_when>
    <thetext>Comment on attachment 109312
style

Clearing flags on attachment: 109312

Committed r96407: &lt;http://trac.webkit.org/changeset/96407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476190</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-30 11:08:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476199</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-09-30 11:25:16 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 109312 [details] [details])
&gt; &gt; Putting the switch inside the loop speeds things up by 20%. Could you speed up even more by putting the switch outside the loop? With template functions you could even inline the functions and have the switch statement outside the entire apply function. How much more would that speed things up?
&gt; 
&gt; Probably not much thanks to the advanced branch predictors. But templates probably could be an easy way to do this refactor, and we can see what happens.

Seems to be a very small change, if at all; I guess I got it to the point where the compiler could do the rest of the work and hoist the switch out of the loop. I&apos;m testing with release builds; I bet your proposed optimizations would show a bigger change in a debug build.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109310</attachid>
            <date>2011-09-30 10:41:13 -0700</date>
            <delta_ts>2011-09-30 10:50:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>feblend-dispatch.patch</filename>
            <type>text/plain</type>
            <size>5224</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjdhZjhhLi43NDJkYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDktMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgZmVCbGVuZCB1c2VzIGEgdGFibGUgb2YgZnVuY3Rpb24gcG9pbnRlcnMgd2hpY2gg
cmVkdWNlcyBpbmxpbmVhYmlsaXR5IGluc2lkZSB0aGUgbWFpbiBsb29wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE1NAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTAyMTUyMjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRG9uJ3QgdXNlIGEgdGFibGUgb2YgZnVuY3Rpb24gcG9pbnRlcnMgaW5zaWRl
IHRoZSBmZUJsZW5kIGlubmVyIGxvb3AsIGluc3RlYWQKKyAgICAgICAgdXNlIHN3aXRjaCBhbmQg
aW5saW5lIGZ1bmN0aW9ucywgYnJpbmdpbmcgYSAyMCUgcGVyZm9ybWFuY2UgZ2FpbiBhY3Jvc3Mg
dGhlCisgICAgICAgIGJvYXJkIHRvIGZlQmxlbmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBt
aW5vciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRhcmtlbik6CisgICAgICAgIChXZWJDb3JlOjpsaWdodGVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmFwcGx5KToKKwogMjAxMS0wOS0yOCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyOTM4NTgpOiBD
YW4ndCB0eXBlIGFueXRoaW5nIGludG8gaW5wdXQgZWxlbWVudHMgd2hlbiBtYXhsZW5ndGggaXMg
Z3JlYXRlciB0aGFuIDJeMzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDkxODA5OTAuLjc2OTc5OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cApAQCAtNjEsMzIgKzYxLDI3IEBAIGJvb2wgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9k
ZVR5cGUgbW9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGNoYXIg
dW5rbm93bih1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNp
Z25lZCBjaGFyKQotewotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdW5zaWduZWQgY2hhciBu
b3JtYWwodW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1bnNpZ25l
ZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhcikKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hh
ciBub3JtYWwodW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1bnNp
Z25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhcikKIHsKICAgICByZXR1cm4gKCgoMjU1IC0g
YWxwaGFBKSAqIGNvbG9yQiArIGNvbG9yQSAqIDI1NSkgLyAyNTUpOwogfQogCi1zdGF0aWMgdW5z
aWduZWQgY2hhciBtdWx0aXBseSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hhciBj
b2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFscGhhQikKK3N0YXRp
YyBpbmxpbmUgdW5zaWduZWQgY2hhciBtdWx0aXBseSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5z
aWduZWQgY2hhciBjb2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFs
cGhhQikKIHsKICAgICByZXR1cm4gKCgoMjU1IC0gYWxwaGFBKSAqIGNvbG9yQiArICgyNTUgLSBh
bHBoYUIgKyBjb2xvckIpICogY29sb3JBKSAvIDI1NSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBj
aGFyIHNjcmVlbih1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hhciBjb2xvckIsIHVu
c2lnbmVkIGNoYXIsIHVuc2lnbmVkIGNoYXIpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIg
c2NyZWVuKHVuc2lnbmVkIGNoYXIgY29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWdu
ZWQgY2hhciwgdW5zaWduZWQgY2hhcikKIHsKICAgICByZXR1cm4gKCgoY29sb3JCICsgY29sb3JB
KSAqIDI1NSAtIGNvbG9yQSAqIGNvbG9yQikgLyAyNTUpOwogfQogCi1zdGF0aWMgdW5zaWduZWQg
Y2hhciBkYXJrZW4odW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1
bnNpZ25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhciBhbHBoYUIpCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGNoYXIgZGFya2VuKHVuc2lnbmVkIGNoYXIgY29sb3JBLCB1bnNpZ25lZCBjaGFy
IGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEsIHVuc2lnbmVkIGNoYXIgYWxwaGFCKQogewog
ICAgIHJldHVybiAoKHN0ZDo6bWluKCgyNTUgLSBhbHBoYUEpICogY29sb3JCICsgY29sb3JBICog
MjU1LCAoMjU1IC0gYWxwaGFCKSAqIGNvbG9yQSArIGNvbG9yQiAqIDI1NSkpIC8gMjU1KTsKIH0K
IAotc3RhdGljIHVuc2lnbmVkIGNoYXIgbGlnaHRlbih1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5z
aWduZWQgY2hhciBjb2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFs
cGhhQikKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBsaWdodGVuKHVuc2lnbmVkIGNoYXIg
Y29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEsIHVuc2ln
bmVkIGNoYXIgYWxwaGFCKQogewogICAgIHJldHVybiAoKHN0ZDo6bWF4KCgyNTUgLSBhbHBoYUEp
ICogY29sb3JCICsgY29sb3JBICogMjU1LCAoMjU1IC0gYWxwaGFCKSAqIGNvbG9yQSArIGNvbG9y
QiAqIDI1NSkpIC8gMjU1KTsKIH0KQEAgLTExNSw5ICsxMTAsNiBAQCB2b2lkIEZFQmxlbmQ6OmFw
cGx5KCkKICAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9m
SW5wdXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBSZWZQdHI8Qnl0
ZUFycmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0
QkRyYXdpbmdSZWN0KTsKIAotICAgIC8vIEtlZXAgc3luY2hyb25pemVkIHdpdGggQmxlbmRNb2Rl
VHlwZQotICAgIHN0YXRpYyBjb25zdCBCbGVuZFR5cGUgY2FsbEVmZmVjdFtdID0ge3Vua25vd24s
IG5vcm1hbCwgbXVsdGlwbHksIHNjcmVlbiwgZGFya2VuLCBsaWdodGVufTsKLQogICAgIHVuc2ln
bmVkIHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQaXhlbEFycmF5QS0+bGVuZ3RoKCk7CiAgICAgQVNT
RVJUKHBpeGVsQXJyYXlMZW5ndGggPT0gc3JjUGl4ZWxBcnJheUItPmxlbmd0aCgpKTsKICAgICBm
b3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVu
Z3RoOyBwaXhlbE9mZnNldCArPSA0KSB7CkBAIC0xMjYsOCArMTE4LDMwIEBAIHZvaWQgRkVCbGVu
ZDo6YXBwbHkoKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWwgPSAwOyBjaGFubmVsIDwg
MzsgKytjaGFubmVsKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yQSA9IHNyY1Bp
eGVsQXJyYXlBLT5nZXQocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgY29sb3JCID0gc3JjUGl4ZWxBcnJheUItPmdldChwaXhlbE9mZnNldCArIGNoYW5u
ZWwpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZXN1bHQ7CisKKyAgICAgICAgICAgIHN3
aXRjaCAobV9tb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGRUJMRU5EX01PREVfTk9STUFM
OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBub3JtYWwoY29sb3JBLCBjb2xvckIsIGFs
cGhhQSwgYWxwaGFCKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBGRUJMRU5EX01PREVfTVVMVElQTFk6CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG11bHRpcGx5KGNvbG9yQSwgY29sb3JCLCBhbHBoYUEsIGFscGhhQik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRkVCTEVORF9NT0RFX1NDUkVF
TjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2NyZWVuKGNvbG9yQSwgY29sb3JCLCBh
bHBoYUEsIGFscGhhQik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgRkVCTEVORF9NT0RFX0RBUktFTjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gZGFya2VuKGNvbG9yQSwgY29sb3JCLCBhbHBoYUEsIGFscGhhQik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRkVCTEVORF9NT0RFX0xJR0hURU46
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpZ2h0ZW4oY29sb3JBLCBjb2xvckIsIGFs
cGhhQSwgYWxwaGFCKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBGRUJMRU5EX01PREVfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAwOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZXN1bHQgPSAo
KmNhbGxFZmZlY3RbbV9tb2RlXSkoY29sb3JBLCBjb2xvckIsIGFscGhhQSwgYWxwaGFCKTsKICAg
ICAgICAgICAgIGRzdFBpeGVsQXJyYXktPnNldChwaXhlbE9mZnNldCArIGNoYW5uZWwsIHJlc3Vs
dCk7CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYVIgPSAyNTUgLSAoKDI1
NSAtIGFscGhhQSkgKiAoMjU1IC0gYWxwaGFCKSkgLyAyNTU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109312</attachid>
            <date>2011-09-30 10:50:16 -0700</date>
            <delta_ts>2011-09-30 11:08:21 -0700</delta_ts>
            <desc>style</desc>
            <filename>feblend-dispatch.patch</filename>
            <type>text/plain</type>
            <size>5148</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjdhZjhhLi43NDJkYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDktMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgZmVCbGVuZCB1c2VzIGEgdGFibGUgb2YgZnVuY3Rpb24gcG9pbnRlcnMgd2hpY2gg
cmVkdWNlcyBpbmxpbmVhYmlsaXR5IGluc2lkZSB0aGUgbWFpbiBsb29wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE1NAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTAyMTUyMjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRG9uJ3QgdXNlIGEgdGFibGUgb2YgZnVuY3Rpb24gcG9pbnRlcnMgaW5zaWRl
IHRoZSBmZUJsZW5kIGlubmVyIGxvb3AsIGluc3RlYWQKKyAgICAgICAgdXNlIHN3aXRjaCBhbmQg
aW5saW5lIGZ1bmN0aW9ucywgYnJpbmdpbmcgYSAyMCUgcGVyZm9ybWFuY2UgZ2FpbiBhY3Jvc3Mg
dGhlCisgICAgICAgIGJvYXJkIHRvIGZlQmxlbmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBt
aW5vciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRhcmtlbik6CisgICAgICAgIChXZWJDb3JlOjpsaWdodGVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmFwcGx5KToKKwogMjAxMS0wOS0yOCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyOTM4NTgpOiBD
YW4ndCB0eXBlIGFueXRoaW5nIGludG8gaW5wdXQgZWxlbWVudHMgd2hlbiBtYXhsZW5ndGggaXMg
Z3JlYXRlciB0aGFuIDJeMzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDkxODA5OTAuLmIzZWU5YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cApAQCAtNjEsMzIgKzYxLDI3IEBAIGJvb2wgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9k
ZVR5cGUgbW9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGNoYXIg
dW5rbm93bih1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNp
Z25lZCBjaGFyKQotewotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdW5zaWduZWQgY2hhciBu
b3JtYWwodW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1bnNpZ25l
ZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhcikKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hh
ciBub3JtYWwodW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1bnNp
Z25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhcikKIHsKICAgICByZXR1cm4gKCgoMjU1IC0g
YWxwaGFBKSAqIGNvbG9yQiArIGNvbG9yQSAqIDI1NSkgLyAyNTUpOwogfQogCi1zdGF0aWMgdW5z
aWduZWQgY2hhciBtdWx0aXBseSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hhciBj
b2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFscGhhQikKK3N0YXRp
YyBpbmxpbmUgdW5zaWduZWQgY2hhciBtdWx0aXBseSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5z
aWduZWQgY2hhciBjb2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFs
cGhhQikKIHsKICAgICByZXR1cm4gKCgoMjU1IC0gYWxwaGFBKSAqIGNvbG9yQiArICgyNTUgLSBh
bHBoYUIgKyBjb2xvckIpICogY29sb3JBKSAvIDI1NSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBj
aGFyIHNjcmVlbih1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hhciBjb2xvckIsIHVu
c2lnbmVkIGNoYXIsIHVuc2lnbmVkIGNoYXIpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIg
c2NyZWVuKHVuc2lnbmVkIGNoYXIgY29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWdu
ZWQgY2hhciwgdW5zaWduZWQgY2hhcikKIHsKICAgICByZXR1cm4gKCgoY29sb3JCICsgY29sb3JB
KSAqIDI1NSAtIGNvbG9yQSAqIGNvbG9yQikgLyAyNTUpOwogfQogCi1zdGF0aWMgdW5zaWduZWQg
Y2hhciBkYXJrZW4odW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1
bnNpZ25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhciBhbHBoYUIpCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGNoYXIgZGFya2VuKHVuc2lnbmVkIGNoYXIgY29sb3JBLCB1bnNpZ25lZCBjaGFy
IGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEsIHVuc2lnbmVkIGNoYXIgYWxwaGFCKQogewog
ICAgIHJldHVybiAoKHN0ZDo6bWluKCgyNTUgLSBhbHBoYUEpICogY29sb3JCICsgY29sb3JBICog
MjU1LCAoMjU1IC0gYWxwaGFCKSAqIGNvbG9yQSArIGNvbG9yQiAqIDI1NSkpIC8gMjU1KTsKIH0K
IAotc3RhdGljIHVuc2lnbmVkIGNoYXIgbGlnaHRlbih1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5z
aWduZWQgY2hhciBjb2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFs
cGhhQikKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBsaWdodGVuKHVuc2lnbmVkIGNoYXIg
Y29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEsIHVuc2ln
bmVkIGNoYXIgYWxwaGFCKQogewogICAgIHJldHVybiAoKHN0ZDo6bWF4KCgyNTUgLSBhbHBoYUEp
ICogY29sb3JCICsgY29sb3JBICogMjU1LCAoMjU1IC0gYWxwaGFCKSAqIGNvbG9yQSArIGNvbG9y
QiAqIDI1NSkpIC8gMjU1KTsKIH0KQEAgLTExNSw5ICsxMTAsNiBAQCB2b2lkIEZFQmxlbmQ6OmFw
cGx5KCkKICAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9m
SW5wdXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBSZWZQdHI8Qnl0
ZUFycmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0
QkRyYXdpbmdSZWN0KTsKIAotICAgIC8vIEtlZXAgc3luY2hyb25pemVkIHdpdGggQmxlbmRNb2Rl
VHlwZQotICAgIHN0YXRpYyBjb25zdCBCbGVuZFR5cGUgY2FsbEVmZmVjdFtdID0ge3Vua25vd24s
IG5vcm1hbCwgbXVsdGlwbHksIHNjcmVlbiwgZGFya2VuLCBsaWdodGVufTsKLQogICAgIHVuc2ln
bmVkIHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQaXhlbEFycmF5QS0+bGVuZ3RoKCk7CiAgICAgQVNT
RVJUKHBpeGVsQXJyYXlMZW5ndGggPT0gc3JjUGl4ZWxBcnJheUItPmxlbmd0aCgpKTsKICAgICBm
b3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVu
Z3RoOyBwaXhlbE9mZnNldCArPSA0KSB7CkBAIC0xMjYsOCArMTE4LDMwIEBAIHZvaWQgRkVCbGVu
ZDo6YXBwbHkoKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWwgPSAwOyBjaGFubmVsIDwg
MzsgKytjaGFubmVsKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yQSA9IHNyY1Bp
eGVsQXJyYXlBLT5nZXQocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgY29sb3JCID0gc3JjUGl4ZWxBcnJheUItPmdldChwaXhlbE9mZnNldCArIGNoYW5u
ZWwpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZXN1bHQ7CisKKyAgICAgICAgICAgIHN3
aXRjaCAobV9tb2RlKSB7CisgICAgICAgICAgICBjYXNlIEZFQkxFTkRfTU9ERV9OT1JNQUw6Cisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbm9ybWFsKGNvbG9yQSwgY29sb3JCLCBhbHBoYUEsIGFs
cGhhQik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZFQkxFTkRf
TU9ERV9NVUxUSVBMWToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtdWx0aXBseShjb2xvckEs
IGNvbG9yQiwgYWxwaGFBLCBhbHBoYUIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBGRUJMRU5EX01PREVfU0NSRUVOOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHNjcmVlbihjb2xvckEsIGNvbG9yQiwgYWxwaGFBLCBhbHBoYUIpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBGRUJMRU5EX01PREVfREFSS0VOOgorICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRhcmtlbihjb2xvckEsIGNvbG9yQiwgYWxwaGFBLCBhbHBoYUIpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGRUJMRU5EX01PREVfTElH
SFRFTjoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaWdodGVuKGNvbG9yQSwgY29sb3JCLCBh
bHBoYUEsIGFscGhhQik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEZFQkxFTkRfTU9ERV9VTktOT1dOOgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdCA9ICgqY2FsbEVmZmVjdFttX21vZGVd
KShjb2xvckEsIGNvbG9yQiwgYWxwaGFBLCBhbHBoYUIpOwogICAgICAgICAgICAgZHN0UGl4ZWxB
cnJheS0+c2V0KHBpeGVsT2Zmc2V0ICsgY2hhbm5lbCwgcmVzdWx0KTsKICAgICAgICAgfQogICAg
ICAgICB1bnNpZ25lZCBjaGFyIGFscGhhUiA9IDI1NSAtICgoMjU1IC0gYWxwaGFBKSAqICgyNTUg
LSBhbHBoYUIpKSAvIDI1NTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>