<?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>104376</bug_id>
          
          <creation_ts>2012-12-07 09:51:04 -0800</creation_ts>
          <short_desc>Remove unnecessary float casts in transformations</short_desc>
          <delta_ts>2012-12-07 16:40:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>jamesr</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>785939</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-12-07 09:51:04 -0800</bug_when>
    <thetext>I recently noticed a number of float casts in the transformation classes. These are likely vestiges from the time with TransformationMatrix.cpp used all float values internally.  This bug cleans up these unnecessary casts to help clarify the meaning of the code.  It may provide a slight performance benefit, as the cast operations on variables requires a couple of additional instructions to convert the data types.  Consider the following two cases, one with the cast in place and the other without:

        mat.m_matrix[1][1] = (float)cosTheta;
5D409F05  fld         qword ptr [cosTheta] 
5D409F08  fstp        dword ptr [ebp-0B0h] 
5D409F0E  fld         dword ptr [ebp-0B0h] 
5D409F14  fstp        qword ptr [ebp-78h] 
        mat.m_matrix[1][2] = sinTheta;
5D409F17  fld         qword ptr [sinTheta] 
5D409F1A  fstp        qword ptr [ebp-70h] 

The double-to-double store is done in two instructions, rather than the four required for the casting case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785953</commentid>
    <comment_count>1</comment_count>
      <attachid>178235</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-12-07 10:10:13 -0800</bug_when>
    <thetext>Created attachment 178235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785993</commentid>
    <comment_count>2</comment_count>
      <attachid>178235</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 11:10:59 -0800</bug_when>
    <thetext>Comment on attachment 178235
Patch

Clearing flags on attachment: 178235

Committed r136964: &lt;http://trac.webkit.org/changeset/136964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785995</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 11:11:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786286</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-07 16:33:48 -0800</bug_when>
    <thetext>This changes the precision of some blending results more than our current test allows (although maybe they&apos;re too precise).  Example:

The difference between (1.0823489449280947471976333) and (to).m11() is 2.3295135154199897e-08, which exceeds (1e-14)

for a test that blends skewX(45) for values (0, 0.25, 0.5, 1).  Is the extra imprecision desirable here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786290</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-07 16:38:51 -0800</bug_when>
    <thetext>Brent points out that the difference in output is more plausibly the result of precalculated values that depended on the double-&gt;float truncation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786292</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-12-07 16:40:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; This changes the precision of some blending results more than our current test allows (although maybe they&apos;re too precise).  Example:
&gt; 
&gt; The difference between (1.0823489449280947471976333) and (to).m11() is 2.3295135154199897e-08, which exceeds (1e-14)
&gt; 
&gt; for a test that blends skewX(45) for values (0, 0.25, 0.5, 1).  Is the extra imprecision desirable here?

The patch simply removed a couple of cases where values were being cast to float before being assigned to a double.

It&apos;s hard to see how removing that operation would cause a loss of precision; it seems more likely that we were basing our existing results on truncated values caused by the conversion of double-&gt;float-&gt;double.  By removing that undesired drop in precision we should be removing some imprecision.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178235</attachid>
            <date>2012-12-07 10:10:13 -0800</date>
            <delta_ts>2012-12-07 11:10:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104376-20121207100743.patch</filename>
            <type>text/plain</type>
            <size>11368</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3Nh
cnkgY2FzdHMgaW4gdHJhbnNmb3JtYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0Mzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2V2ZXJhbCBjYXN0cyBmcm9tIGZsb2F0LXRvLWRvdWJsZSBh
cmUgcGVyZm9ybWVkIHByaW9yIHRvCisgICAgICAgIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiBhIGRv
dWJsZSB0eXBlLiBUaGVzZSBjYXN0cyBhcmUgdW5uZWNlc3NhcnkKKyAgICAgICAgb3ZlcmhlYWQg
YW5kIHJlZHVjZSB0aGUgY2xhcml0eSBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIENTUyB0ZXN0IGNhc2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOgorCiAyMDEyLTEyLTA3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUHJvdmlkZSB0aGUgYmFja2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxh
eWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Jv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDEzNjg5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTUgKzU2LDE1IEBAIFBhc3NSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiBSb3RhdGVUcmEKICAgICAvLyBDcmVhdGUgdGhlIDIgcm90YXRpb24g
bWF0cmljZXMKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tVDsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0b1Q7Ci0gICAgZnJvbVQucm90YXRlM2QoKGZsb2F0KShmcm9tT3AgPyBmcm9t
T3AtPm1feCA6IDApLAotICAgICAgICAgICAgICAgICAgIChmbG9hdCkoZnJvbU9wID8gZnJvbU9w
LT5tX3kgOiAwKSwKLSAgICAgICAgICAgICAgICAgICAoZmxvYXQpKGZyb21PcCA/IGZyb21PcC0+
bV96IDogMSksCi0gICAgICAgICAgICAgICAgICAgKGZsb2F0KShmcm9tT3AgPyBmcm9tT3AtPm1f
YW5nbGUgOiAwKSk7CisgICAgZnJvbVQucm90YXRlM2QoKGZyb21PcCA/IGZyb21PcC0+bV94IDog
MCksCisgICAgICAgIChmcm9tT3AgPyBmcm9tT3AtPm1feSA6IDApLAorICAgICAgICAoZnJvbU9w
ID8gZnJvbU9wLT5tX3ogOiAxKSwKKyAgICAgICAgKGZyb21PcCA/IGZyb21PcC0+bV9hbmdsZSA6
IDApKTsKIAotICAgIHRvVC5yb3RhdGUzZCgoZmxvYXQpKHRvT3AgPyB0b09wLT5tX3ggOiAwKSwK
LSAgICAgICAgICAgICAgICAgKGZsb2F0KSh0b09wID8gdG9PcC0+bV95IDogMCksCi0gICAgICAg
ICAgICAgICAgIChmbG9hdCkodG9PcCA/IHRvT3AtPm1feiA6IDEpLAotICAgICAgICAgICAgICAg
ICAoZmxvYXQpKHRvT3AgPyB0b09wLT5tX2FuZ2xlIDogMCkpOworICAgIHRvVC5yb3RhdGUzZCgo
dG9PcCA/IHRvT3AtPm1feCA6IDApLAorICAgICAgICAodG9PcCA/IHRvT3AtPm1feSA6IDApLAor
ICAgICAgICAodG9PcCA/IHRvT3AtPm1feiA6IDEpLAorICAgICAgICAodG9PcCA/IHRvT3AtPm1f
YW5nbGUgOiAwKSk7CiAgICAgCiAgICAgLy8gQmxlbmQgdGhlbQogICAgIHRvVC5ibGVuZChmcm9t
VCwgcHJvZ3Jlc3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAJKHJldmlzaW9uIDEzNjg5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MzEsMTIgKzUzMSwxMiBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRy
CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZmxpcFgoKQog
ewotICAgIHJldHVybiBzY2FsZU5vblVuaWZvcm0oLTEuMGYsIDEuMGYpOworICAgIHJldHVybiBz
Y2FsZU5vblVuaWZvcm0oLTEuMCwgMS4wKTsKIH0KIAogVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpmbGlwWSgpCiB7Ci0gICAgcmV0dXJuIHNjYWxlTm9uVW5pZm9y
bSgxLjBmLCAtMS4wZik7CisgICAgcmV0dXJuIHNjYWxlTm9uVW5pZm9ybSgxLjAsIC0xLjApOwog
fQogCiBGbG9hdFBvaW50IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpwcm9qZWN0UG9pbnQoY29uc3Qg
RmxvYXRQb2ludCYgcCwgYm9vbCogY2xhbXBlZCkgY29uc3QKQEAgLTc1Miw0NSArNzUyLDQ1IEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHIKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtYXQ7CiAKICAgICAvLyBPcHRpbWl6ZSBjYXNlcyB3aGVyZSB0aGUgYXhpcyBp
cyBhbG9uZyBhIG1ham9yIGF4aXMKLSAgICBpZiAoeCA9PSAxLjBmICYmIHkgPT0gMC4wZiAmJiB6
ID09IDAuMGYpIHsKLSAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gMS4wZjsKLSAgICAgICAg
bWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wZjsKLSAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0g
MC4wZjsKLSAgICAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wZjsKKyAgICBpZiAoeCA9PSAx
LjAgJiYgeSA9PSAwLjAgJiYgeiA9PSAwLjApIHsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzBd
ID0gMS4wOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSAwLjA7CisgICAgICAgIG1hdC5t
X21hdHJpeFswXVsyXSA9IDAuMDsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wOwog
ICAgICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSBjb3NUaGV0YTsKICAgICAgICAgbWF0Lm1fbWF0
cml4WzFdWzJdID0gc2luVGhldGE7Ci0gICAgICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDAuMGY7
CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDAuMDsKICAgICAgICAgbWF0Lm1fbWF0cml4
WzJdWzFdID0gLXNpblRoZXRhOwogICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSBjb3NUaGV0
YTsKLSAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFdWzNdID0gbWF0
Lm1fbWF0cml4WzJdWzNdID0gMC4wZjsKLSAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0
Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKLSAgICAgICAgbWF0
Lm1fbWF0cml4WzNdWzNdID0gMS4wZjsKLSAgICB9IGVsc2UgaWYgKHggPT0gMC4wZiAmJiB5ID09
IDEuMGYgJiYgeiA9PSAwLjBmKSB7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5t
X21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMDsKKyAgICAgICAgbWF0Lm1f
bWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0g
MC4wOworICAgICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjA7CisgICAgfSBlbHNlIGlmICh4
ID09IDAuMCAmJiB5ID09IDEuMCAmJiB6ID09IDAuMCkgewogICAgICAgICBtYXQubV9tYXRyaXhb
MF1bMF0gPSBjb3NUaGV0YTsKLSAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wZjsKKyAg
ICAgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wOwogICAgICAgICBtYXQubV9tYXRyaXhbMF1b
Ml0gPSAtc2luVGhldGE7Ci0gICAgICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IDAuMGY7Ci0gICAg
ICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGY7Ci0gICAgICAgIG1hdC5tX21hdHJpeFsxXVsy
XSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IDAuMDsKKyAgICAgICAgbWF0
Lm1fbWF0cml4WzFdWzFdID0gMS4wOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAwLjA7
CiAgICAgICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IHNpblRoZXRhOwotICAgICAgICBtYXQubV9t
YXRyaXhbMl1bMV0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMV0gPSAwLjA7CiAg
ICAgICAgIG1hdC5tX21hdHJpeFsyXVsyXSA9IGNvc1RoZXRhOwotICAgICAgICBtYXQubV9tYXRy
aXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhbMl1bM10gPSAwLjBm
OwotICAgICAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQu
bV9tYXRyaXhbM11bMl0gPSAwLjBmOwotICAgICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBm
OwotICAgIH0gZWxzZSBpZiAoeCA9PSAwLjBmICYmIHkgPT0gMC4wZiAmJiB6ID09IDEuMGYpIHsK
KyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFdWzNdID0gbWF0Lm1f
bWF0cml4WzJdWzNdID0gMC4wOworICAgICAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9t
YXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjA7CisgICAgICAgIG1hdC5tX21h
dHJpeFszXVszXSA9IDEuMDsKKyAgICB9IGVsc2UgaWYgKHggPT0gMC4wICYmIHkgPT0gMC4wICYm
IHogPT0gMS4wKSB7CiAgICAgICAgIG1hdC5tX21hdHJpeFswXVswXSA9IGNvc1RoZXRhOwogICAg
ICAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSBzaW5UaGV0YTsKLSAgICAgICAgbWF0Lm1fbWF0cml4
WzBdWzJdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMC4wOwogICAgICAg
ICBtYXQubV9tYXRyaXhbMV1bMF0gPSAtc2luVGhldGE7CiAgICAgICAgIG1hdC5tX21hdHJpeFsx
XVsxXSA9IGNvc1RoZXRhOwotICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAwLjBmOwotICAg
ICAgICBtYXQubV9tYXRyaXhbMl1bMF0gPSAwLjBmOwotICAgICAgICBtYXQubV9tYXRyaXhbMl1b
MV0gPSAwLjBmOwotICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmOwotICAgICAgICBt
YXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhbMl1b
M10gPSAwLjBmOwotICAgICAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11b
MV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOwotICAgICAgICBtYXQubV9tYXRyaXhbM11b
M10gPSAxLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAwLjA7CisgICAgICAgIG1h
dC5tX21hdHJpeFsyXVswXSA9IDAuMDsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMC4w
OworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjA7CisgICAgICAgIG1hdC5tX21hdHJp
eFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMDsK
KyAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1f
bWF0cml4WzNdWzJdID0gMC4wOworICAgICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjA7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIHRoZSByb3RhdGlvbiBhYm91dCBh
biBhcmJpdHJhcnkgdW5pdCB2ZWN0b3IuCiAgICAgICAgIC8vCkBAIC04MDksOSArODA5LDkgQEAg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cgogICAgICAgICBtYXQubV9t
YXRyaXhbMl1bMF0gPSB4ICogeiAqIG9uZU1pbnVzQ29zVGhldGEgKyB5ICogc2luVGhldGE7CiAg
ICAgICAgIG1hdC5tX21hdHJpeFsyXVsxXSA9IHkgKiB6ICogb25lTWludXNDb3NUaGV0YSAtIHgg
KiBzaW5UaGV0YTsKICAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0gY29zVGhldGEgKyB6ICog
eiAqIG9uZU1pbnVzQ29zVGhldGE7Ci0gICAgICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5t
X21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMGY7Ci0gICAgICAgIG1hdC5t
X21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9
IDAuMGY7Ci0gICAgICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7CisgICAgICAgIG1hdC5t
X21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9
IDAuMDsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0g
bWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wOworICAgICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAx
LjA7CiAgICAgfQogICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlzOwpAQCAtODMx
LDE2ICs4MzEsMTYgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cgog
ICAgIAogICAgIG1hdC5tX21hdHJpeFswXVswXSA9IGNvc1RoZXRhOwogICAgIG1hdC5tX21hdHJp
eFswXVsxXSA9IHNpblRoZXRhOwotICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IDAuMGY7CisgICAg
bWF0Lm1fbWF0cml4WzBdWzJdID0gMC4wOwogICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IC1zaW5U
aGV0YTsKICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSBjb3NUaGV0YTsKLSAgICBtYXQubV9tYXRy
aXhbMV1bMl0gPSAwLjBmOwotICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDAuMGY7Ci0gICAgbWF0
Lm1fbWF0cml4WzJdWzFdID0gMC4wZjsKLSAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmOwot
ICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJp
eFsyXVszXSA9IDAuMGY7Ci0gICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNd
WzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKLSAgICBtYXQubV9tYXRyaXhbM11bM10g
PSAxLjBmOworICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDAuMDsKKyAgICBtYXQubV9tYXRyaXhb
Ml1bMF0gPSAwLjA7CisgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMC4wOworICAgIG1hdC5tX21h
dHJpeFsyXVsyXSA9IDEuMDsKKyAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhb
MV1bM10gPSBtYXQubV9tYXRyaXhbMl1bM10gPSAwLjA7CisgICAgbWF0Lm1fbWF0cml4WzNdWzBd
ID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wOworICAgIG1h
dC5tX21hdHJpeFszXVszXSA9IDEuMDsKICAgICAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBy
bWF0KG1hdCk7CiAgICAgCkBAIC04NDgsMzUgKzg0OCwzNSBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgVHJhbnNmb3JtYXRpb25NYXRyCiAgICAgY29zVGhldGEgPSBjb3MocnkpOwogICAgIAogICAg
IG1hdC5tX21hdHJpeFswXVswXSA9IGNvc1RoZXRhOwotICAgIG1hdC5tX21hdHJpeFswXVsxXSA9
IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wOwogICAgIG1hdC5tX21hdHJpeFsw
XVsyXSA9IC1zaW5UaGV0YTsKLSAgICBtYXQubV9tYXRyaXhbMV1bMF0gPSAwLjBmOwotICAgIG1h
dC5tX21hdHJpeFsxXVsxXSA9IDEuMGY7Ci0gICAgbWF0Lm1fbWF0cml4WzFdWzJdID0gMC4wZjsK
KyAgICBtYXQubV9tYXRyaXhbMV1bMF0gPSAwLjA7CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0g
MS4wOworICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDAuMDsKICAgICBtYXQubV9tYXRyaXhbMl1b
MF0gPSBzaW5UaGV0YTsKLSAgICBtYXQubV9tYXRyaXhbMl1bMV0gPSAwLjBmOworICAgIG1hdC5t
X21hdHJpeFsyXVsxXSA9IDAuMDsKICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSBjb3NUaGV0YTsK
LSAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRy
aXhbMl1bM10gPSAwLjBmOwotICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFsz
XVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7Ci0gICAgbWF0Lm1fbWF0cml4WzNdWzNd
ID0gMS4wZjsKKyAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBt
YXQubV9tYXRyaXhbMl1bM10gPSAwLjA7CisgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1f
bWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wOworICAgIG1hdC5tX21hdHJp
eFszXVszXSA9IDEuMDsKIAogICAgIHJtYXQubXVsdGlwbHkobWF0KTsKIAogICAgIHNpblRoZXRh
ID0gc2luKHJ4KTsKICAgICBjb3NUaGV0YSA9IGNvcyhyeCk7CiAgICAgCi0gICAgbWF0Lm1fbWF0
cml4WzBdWzBdID0gMS4wZjsKLSAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSAwLjBmOwotICAgIG1h
dC5tX21hdHJpeFswXVsyXSA9IDAuMGY7Ci0gICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wZjsK
KyAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjA7CisgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0g
MC4wOworICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IDAuMDsKKyAgICBtYXQubV9tYXRyaXhbMV1b
MF0gPSAwLjA7CiAgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gY29zVGhldGE7CiAgICAgbWF0Lm1f
bWF0cml4WzFdWzJdID0gc2luVGhldGE7Ci0gICAgbWF0Lm1fbWF0cml4WzJdWzBdID0gMC4wZjsK
KyAgICBtYXQubV9tYXRyaXhbMl1bMF0gPSAwLjA7CiAgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0g
LXNpblRoZXRhOwogICAgIG1hdC5tX21hdHJpeFsyXVsyXSA9IGNvc1RoZXRhOwotICAgIG1hdC5t
X21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9
IDAuMGY7Ci0gICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0
Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKLSAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOwor
ICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJp
eFsyXVszXSA9IDAuMDsKKyAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11b
MV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjA7CisgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0g
MS4wOwogCiAgICAgcm1hdC5tdWx0aXBseShtYXQpOwogCkBAIC0xMjk5LDEzICsxMjk5LDEzIEBA
IHZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZShjb24KICAgICBtYWtlSWRlbnRp
dHkoKTsKICAgICAKICAgICAvLyBmaXJzdCBhcHBseSBwZXJzcGVjdGl2ZQotICAgIG1fbWF0cml4
WzBdWzNdID0gKGZsb2F0KSBkZWNvbXAucGVyc3BlY3RpdmVYOwotICAgIG1fbWF0cml4WzFdWzNd
ID0gKGZsb2F0KSBkZWNvbXAucGVyc3BlY3RpdmVZOwotICAgIG1fbWF0cml4WzJdWzNdID0gKGZs
b2F0KSBkZWNvbXAucGVyc3BlY3RpdmVaOwotICAgIG1fbWF0cml4WzNdWzNdID0gKGZsb2F0KSBk
ZWNvbXAucGVyc3BlY3RpdmVXOworICAgIG1fbWF0cml4WzBdWzNdID0gZGVjb21wLnBlcnNwZWN0
aXZlWDsKKyAgICBtX21hdHJpeFsxXVszXSA9IGRlY29tcC5wZXJzcGVjdGl2ZVk7CisgICAgbV9t
YXRyaXhbMl1bM10gPSBkZWNvbXAucGVyc3BlY3RpdmVaOworICAgIG1fbWF0cml4WzNdWzNdID0g
ZGVjb21wLnBlcnNwZWN0aXZlVzsKICAgICAKICAgICAvLyBub3cgdHJhbnNsYXRlCi0gICAgdHJh
bnNsYXRlM2QoKGZsb2F0KSBkZWNvbXAudHJhbnNsYXRlWCwgKGZsb2F0KSBkZWNvbXAudHJhbnNs
YXRlWSwgKGZsb2F0KSBkZWNvbXAudHJhbnNsYXRlWik7CisgICAgdHJhbnNsYXRlM2QoZGVjb21w
LnRyYW5zbGF0ZVgsIGRlY29tcC50cmFuc2xhdGVZLCBkZWNvbXAudHJhbnNsYXRlWik7CiAgICAg
CiAgICAgLy8gYXBwbHkgcm90YXRpb24KICAgICBkb3VibGUgeHggPSBkZWNvbXAucXVhdGVybmlv
blggKiBkZWNvbXAucXVhdGVybmlvblg7CkBAIC0xMzI5LDI0ICsxMzI5LDI0IEBAIHZvaWQgVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZShjb24KICAgICAvLyBub3cgYXBwbHkgc2tldwog
ICAgIGlmIChkZWNvbXAuc2tld1laKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRt
cDsKLSAgICAgICAgdG1wLnNldE0zMigoZmxvYXQpIGRlY29tcC5za2V3WVopOworICAgICAgICB0
bXAuc2V0TTMyKGRlY29tcC5za2V3WVopOwogICAgICAgICBtdWx0aXBseSh0bXApOwogICAgIH0K
ICAgICAKICAgICBpZiAoZGVjb21wLnNrZXdYWikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0bXA7Ci0gICAgICAgIHRtcC5zZXRNMzEoKGZsb2F0KSBkZWNvbXAuc2tld1haKTsKKyAg
ICAgICAgdG1wLnNldE0zMShkZWNvbXAuc2tld1haKTsKICAgICAgICAgbXVsdGlwbHkodG1wKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKGRlY29tcC5za2V3WFkpIHsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdG1wOwotICAgICAgICB0bXAuc2V0TTIxKChmbG9hdCkgZGVjb21wLnNrZXdY
WSk7CisgICAgICAgIHRtcC5zZXRNMjEoZGVjb21wLnNrZXdYWSk7CiAgICAgICAgIG11bHRpcGx5
KHRtcCk7CiAgICAgfQogICAgIAogICAgIC8vIGZpbmFsbHksIGFwcGx5IHNjYWxlCi0gICAgc2Nh
bGUzZCgoZmxvYXQpIGRlY29tcC5zY2FsZVgsIChmbG9hdCkgZGVjb21wLnNjYWxlWSwgKGZsb2F0
KSBkZWNvbXAuc2NhbGVaKTsKKyAgICBzY2FsZTNkKGRlY29tcC5zY2FsZVgsIGRlY29tcC5zY2Fs
ZVksIGRlY29tcC5zY2FsZVopOwogfQogCiBib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0lu
dGVnZXJUcmFuc2xhdGlvbigpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>