<?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>87915</bug_id>
          
          <creation_ts>2012-05-30 18:24:27 -0700</creation_ts>
          <short_desc>[chromium] Fix min/max bounds error in CCMathUtil.cpp</short_desc>
          <delta_ts>2012-05-30 23:05:51 -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>Layout and Rendering</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>637904</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-30 18:24:27 -0700</bug_when>
    <thetext>To compute bounds of vertices in CCMathUtil.cpp, there were two places where min/max values were assigned to initial opposite max/min values.

There was a mistake in this code however, because numeric_limits&lt;float&gt;::min() is actually zero, not -flt_max.  The desired correct behavior is to use -flt_max.

Patch coming in a moment:
  - moves some code around so that unit testing is nice and clean
  - fixes the numeric_limits mistake in two places (computeEnclosingRectForVertices and computeEnclosingClippedRect)
  - adds two unit tests to cover the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637905</commentid>
    <comment_count>1</comment_count>
      <attachid>144967</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-30 18:31:42 -0700</bug_when>
    <thetext>Created attachment 144967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637910</commentid>
    <comment_count>2</comment_count>
      <attachid>144967</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-30 18:43:04 -0700</bug_when>
    <thetext>Comment on attachment 144967
Patch

numeric_limits&lt;float&gt;::min() is actually something like the least positive representable number (can&apos;t remember if it&apos;s a denormal or not).  Pretty much never what you want.

Looks good, do we expect any impact on pages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637931</commentid>
    <comment_count>3</comment_count>
      <attachid>144967</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-30 19:13:41 -0700</bug_when>
    <thetext>Comment on attachment 144967
Patch

(In reply to comment #2)
&gt; (From update of attachment 144967 [details])
&gt; numeric_limits&lt;float&gt;::min() is actually something like the least positive representable number (can&apos;t remember if it&apos;s a denormal or not).  Pretty much never what you want.
&gt; 
&gt; Looks good, do we expect any impact on pages?

Thanks for the review

I wouldn&apos;t be surprised if a few rare uncommon pages broke because of this, but I have not actually encountered them.  On pages that have been already working, there would not be any performance benefit or any other change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638016</commentid>
    <comment_count>4</comment_count>
      <attachid>144967</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 23:05:47 -0700</bug_when>
    <thetext>Comment on attachment 144967
Patch

Clearing flags on attachment: 144967

Committed r119058: &lt;http://trac.webkit.org/changeset/119058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638017</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 23:05:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144967</attachid>
            <date>2012-05-30 18:31:42 -0700</date>
            <delta_ts>2012-05-30 23:05:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87915-20120530183141.patch</filename>
            <type>text/plain</type>
            <size>15420</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFkOTc1MDEyYmU5ODhh
OWVjYjk4ZWM1MGYxNmU5ZTNjNzliN2IyYy4uMWM4MGI4OTVjODc4YWVhYjQzYjE1MmM0MWM0OGM2
OWJkMzJlNTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTMwICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Rml4IG1pbi9tYXggYm91bmRzIGVycm9yIGluIENDTWF0aFV0aWwuY3BwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzkxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR3byB1bml0IHRlc3RzIGFkZGVkIHRv
IENDTWF0aFV0aWxUZXN0OgorICAgICAgICAgICAgQ0NNYXRoVXRpbFRlc3QudmVyaWZ5RW5jbG9z
aW5nQ2xpcHBlZFJlY3RVc2VzQ29ycmVjdEluaXRpYWxCb3VuZHMKKyAgICAgICAgICAgIENDTWF0
aFV0aWxUZXN0LnZlcmlmeUVuY2xvc2luZ1JlY3RPZlZlcnRpY2VzVXNlc0NvcnJlY3RJbml0aWFs
Qm91bmRzCisKKyAgICAgICAgV2hpbGUgY29tcHV0aW5nIGJvdW5kcywgdGhlIGluaXRpYWwgdmFs
dWVzIGZvciB4bWF4IGFuZCB5bWF4IGFyZQorICAgICAgICBpbnRlbmRlZCB0byBiZSBzZXQgdG8g
LWZsb2F0X21heC4gSXQgdHVybnMgb3V0IHRoYXQKKyAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46Om1pbigpIGFjdHVhbGx5IHJldHVybnMgdGhlIHNtYWxsZXN0CisgICAgICAgIHBv
c2l0aXZlIHZhbHVlIGNsb3NlIHRvIHplcm8sIHdoaWNoIGlzIG5vdCB3aGF0IHdhcyBpbnRlbmRl
ZC4gVGhpcworICAgICAgICBwYXRjaCBmaXhlcyB0aGUgY29kZSB0byB1c2UgLWZsb2F0X21heCBp
bnN0ZWFkLCB3aGljaCBpcyB0aGUKKyAgICAgICAgaW50ZW5kZWQgdmFsdWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTWF0aFV0aWw6OnByb2plY3RDbGlwcGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ01h
dGhVdGlsOjpjb21wdXRlRW5jbG9zaW5nUmVjdE9mVmVydGljZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NNYXRoVXRpbDo6Y29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0
aWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhvbW9nZW5lb3VzQ29vcmRpbmF0ZTo6SG9tb2dlbmVv
dXNDb29yZGluYXRlKToKKyAgICAgICAgKEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIb21vZ2VuZW91c0Nvb3JkaW5hdGU6OnNob3VsZEJlQ2xpcHBlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIb21vZ2VuZW91c0Nvb3JkaW5hdGU6OmNhcnRlc2lhblBvaW50MmQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ01hdGhVdGlsKToKKwogMjAxMi0wNS0yOSAg
VmljdG9yIENhcmJ1bmUgIDx2aWN0b3JAcm9zZWR1Lm9yZz4KIAogICAgICAgICBEaXNwbGF5IGN1
ZXMgaW4gdGhlIGNvbnRyb2xzIGFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWIz
OGQ2ZGJkMjgwYzRmNDlhZjU2OWM3OGZjOTNmZTFmNGE5MGQwMy4uNzliMGUyMThhNGMzOTZjODgw
OWRmNTBlMjU4ZWUwM2EyMjRhNjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wNS0zMCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBtaW4vbWF4IGJvdW5kcyBlcnJvciBpbiBD
Q01hdGhVdGlsLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODc5MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL0NDTWF0aFV0aWxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMjkgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQWxpZ24gY29kZXMgYW5kIG5h
bWVzIGZvciBJREItc3BlY2lmaWMgYW5kIERPTS1zcGVjaWZpYyBlcnJvcnMvZXhjZXB0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NNYXRoVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ01hdGhVdGlsLmNwcAppbmRleCA0MjkzMzY4OGJiZDM2N2E0NjQ1Y2NlNDA5Y2IyYWUz
MDJiNDExYTIwLi5hODEyZTgyNDczMDhkNDc3ZTVmMmM0MmYxODM1MWU3OGZkYmY5ZGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01h
dGhVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ01hdGhVdGlsLmNwcApAQCAtMzMsMzcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdHJ1Y3QgSG9tb2dlbmVvdXNDb29yZGluYXRlIHsKLSAgICBIb21vZ2VuZW91c0Nv
b3JkaW5hdGUoZG91YmxlIG5ld1gsIGRvdWJsZSBuZXdZLCBkb3VibGUgbmV3WiwgZG91YmxlIG5l
d1cpCi0gICAgICAgIDogeChuZXdYKQotICAgICAgICAsIHkobmV3WSkKLSAgICAgICAgLCB6KG5l
d1opCi0gICAgICAgICwgdyhuZXdXKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIHNob3VsZEJl
Q2xpcHBlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdyA8PSAwOwotICAgIH0KLQot
ICAgIEZsb2F0UG9pbnQgY2FydGVzaWFuUG9pbnQyZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAodyA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoeCwgeSk7Ci0KLSAgICAg
ICAgLy8gRm9yIG5vdywgYmVjYXVzZSB0aGlzIGNvZGUgaXMgdXNlZCBwcml2YXRlbHkgb25seSBi
eSBDQ01hdGhVdGlsLCBpdCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdyA9PSAwLCBhbmQg
d2UgZG8gbm90IHlldCBuZWVkIHRvIGhhbmRsZSB0aGF0IGNhc2UuCi0gICAgICAgIEFTU0VSVCh3
KTsKLSAgICAgICAgZG91YmxlIGludlcgPSAxLjAgLyB3OwotICAgICAgICByZXR1cm4gRmxvYXRQ
b2ludCh4ICogaW52VywgeSAqIGludlcpOwotICAgIH0KLQotICAgIGRvdWJsZSB4OwotICAgIGRv
dWJsZSB5OwotICAgIGRvdWJsZSB6OwotICAgIGRvdWJsZSB3OwotfTsKLQogc3RhdGljIEhvbW9n
ZW5lb3VzQ29vcmRpbmF0ZSBwcm9qZWN0UG9pbnQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcCkKIHsKICAgICAvLyBJbiB0aGlzIGNhc2Us
IHRoZSBsYXllciB3ZSBhcmUgdHJ5aW5nIHRvIHByb2plY3Qgb250byBpcyBwZXJwZW5kaWN1bGFy
IHRvIHJheQpAQCAtMTM4LDU1ICsxMDcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXhwYW5kQm91
bmRzVG9JbmNsdWRlUG9pbnQoZmxvYXQmIHhtaW4sIGZsb2F0JiB4bWF4LCBmbG9hdCYgeQogICAg
IHltYXggPSBzdGQ6Om1heChwLnkoKSwgeW1heCk7CiB9CiAKLXN0YXRpYyBGbG9hdFJlY3QgY29t
cHV0ZUVuY2xvc2luZ1JlY3QoY29uc3QgSG9tb2dlbmVvdXNDb29yZGluYXRlJiBoMSwgY29uc3Qg
SG9tb2dlbmVvdXNDb29yZGluYXRlJiBoMiwgY29uc3QgSG9tb2dlbmVvdXNDb29yZGluYXRlJiBo
MywgY29uc3QgSG9tb2dlbmVvdXNDb29yZGluYXRlJiBoNCkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0
aW9uIHBlcmZvcm1zIGNsaXBwaW5nIGFzIG5lY2Vzc2FyeSBhbmQgY29tcHV0ZXMgdGhlIGVuY2xv
c2luZyAyZAotICAgIC8vIEZsb2F0UmVjdCBvZiB0aGUgdmVydGljZXMuIERvaW5nIHRoZXNlIHR3
byBzdGVwcyBzaW11bHRhbmVvdXNseSBhbGxvd3MgdXMgdG8gYXZvaWQKLSAgICAvLyB0aGUgb3Zl
cmhlYWQgb2Ygc3RvcmluZyBhbiB1bmtub3duIG51bWJlciBvZiBjbGlwcGVkIHZlcnRpY2VzLgot
Ci0gICAgLy8gSWYgbm8gdmVydGljZXMgb24gdGhlIHF1YWQgYXJlIGNsaXBwZWQsIHRoZW4gd2Ug
Y2FuIHNpbXBseSByZXR1cm4gdGhlIGVuY2xvc2luZyByZWN0IGRpcmVjdGx5LgotICAgIGJvb2wg
c29tZXRoaW5nQ2xpcHBlZCA9IGgxLnNob3VsZEJlQ2xpcHBlZCgpIHx8IGgyLnNob3VsZEJlQ2xp
cHBlZCgpIHx8IGgzLnNob3VsZEJlQ2xpcHBlZCgpIHx8IGg0LnNob3VsZEJlQ2xpcHBlZCgpOwot
ICAgIGlmICghc29tZXRoaW5nQ2xpcHBlZCkgewotICAgICAgICBGbG9hdFF1YWQgbWFwcGVkUXVh
ZCA9IEZsb2F0UXVhZChoMS5jYXJ0ZXNpYW5Qb2ludDJkKCksIGgyLmNhcnRlc2lhblBvaW50MmQo
KSwgaDMuY2FydGVzaWFuUG9pbnQyZCgpLCBoNC5jYXJ0ZXNpYW5Qb2ludDJkKCkpOwotICAgICAg
ICByZXR1cm4gbWFwcGVkUXVhZC5ib3VuZGluZ0JveCgpOwotICAgIH0KLQotICAgIGJvb2wgZXZl
cnl0aGluZ0NsaXBwZWQgPSBoMS5zaG91bGRCZUNsaXBwZWQoKSAmJiBoMi5zaG91bGRCZUNsaXBw
ZWQoKSAmJiBoMy5zaG91bGRCZUNsaXBwZWQoKSAmJiBoNC5zaG91bGRCZUNsaXBwZWQoKTsKLSAg
ICBpZiAoZXZlcnl0aGluZ0NsaXBwZWQpCi0gICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLQot
ICAgIGZsb2F0IHhtaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7Ci0gICAg
ZmxvYXQgeG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKTsKLSAgICBmbG9h
dCB5bWluID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOwotICAgIGZsb2F0IHlt
YXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCk7Ci0KLSAgICBpZiAoIWgxLnNo
b3VsZEJlQ2xpcHBlZCgpKQotICAgICAgICBleHBhbmRCb3VuZHNUb0luY2x1ZGVQb2ludCh4bWlu
LCB4bWF4LCB5bWluLCB5bWF4LCBoMS5jYXJ0ZXNpYW5Qb2ludDJkKCkpOwotCi0gICAgaWYgKGgx
LnNob3VsZEJlQ2xpcHBlZCgpIF4gaDIuc2hvdWxkQmVDbGlwcGVkKCkpCi0gICAgICAgIGV4cGFu
ZEJvdW5kc1RvSW5jbHVkZVBvaW50KHhtaW4sIHhtYXgsIHltaW4sIHltYXgsIGNvbXB1dGVDbGlw
cGVkUG9pbnRGb3JFZGdlKGgxLCBoMikuY2FydGVzaWFuUG9pbnQyZCgpKTsKLQotICAgIGlmICgh
aDIuc2hvdWxkQmVDbGlwcGVkKCkpCi0gICAgICAgIGV4cGFuZEJvdW5kc1RvSW5jbHVkZVBvaW50
KHhtaW4sIHhtYXgsIHltaW4sIHltYXgsIGgyLmNhcnRlc2lhblBvaW50MmQoKSk7Ci0KLSAgICBp
ZiAoaDIuc2hvdWxkQmVDbGlwcGVkKCkgXiBoMy5zaG91bGRCZUNsaXBwZWQoKSkKLSAgICAgICAg
ZXhwYW5kQm91bmRzVG9JbmNsdWRlUG9pbnQoeG1pbiwgeG1heCwgeW1pbiwgeW1heCwgY29tcHV0
ZUNsaXBwZWRQb2ludEZvckVkZ2UoaDIsIGgzKS5jYXJ0ZXNpYW5Qb2ludDJkKCkpOwotCi0gICAg
aWYgKCFoMy5zaG91bGRCZUNsaXBwZWQoKSkKLSAgICAgICAgZXhwYW5kQm91bmRzVG9JbmNsdWRl
UG9pbnQoeG1pbiwgeG1heCwgeW1pbiwgeW1heCwgaDMuY2FydGVzaWFuUG9pbnQyZCgpKTsKLQot
ICAgIGlmIChoMy5zaG91bGRCZUNsaXBwZWQoKSBeIGg0LnNob3VsZEJlQ2xpcHBlZCgpKQotICAg
ICAgICBleHBhbmRCb3VuZHNUb0luY2x1ZGVQb2ludCh4bWluLCB4bWF4LCB5bWluLCB5bWF4LCBj
b21wdXRlQ2xpcHBlZFBvaW50Rm9yRWRnZShoMywgaDQpLmNhcnRlc2lhblBvaW50MmQoKSk7Ci0K
LSAgICBpZiAoIWg0LnNob3VsZEJlQ2xpcHBlZCgpKQotICAgICAgICBleHBhbmRCb3VuZHNUb0lu
Y2x1ZGVQb2ludCh4bWluLCB4bWF4LCB5bWluLCB5bWF4LCBoNC5jYXJ0ZXNpYW5Qb2ludDJkKCkp
OwotCi0gICAgaWYgKGg0LnNob3VsZEJlQ2xpcHBlZCgpIF4gaDEuc2hvdWxkQmVDbGlwcGVkKCkp
Ci0gICAgICAgIGV4cGFuZEJvdW5kc1RvSW5jbHVkZVBvaW50KHhtaW4sIHhtYXgsIHltaW4sIHlt
YXgsIGNvbXB1dGVDbGlwcGVkUG9pbnRGb3JFZGdlKGg0LCBoMSkuY2FydGVzaWFuUG9pbnQyZCgp
KTsKLQotICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCh4bWluLCB5bWluKSwgRmxvYXRT
aXplKHhtYXggLSB4bWluLCB5bWF4IC0geW1pbikpOwotfQotCiBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkVmVydGV4VG9DbGlwcGVkUXVhZChjb25zdCBGbG9hdFBvaW50JiBuZXdWZXJ0ZXgsIEZsb2F0
UG9pbnQgY2xpcHBlZFF1YWRbOF0sIGludCYgbnVtVmVydGljZXNJbkNsaXBwZWRRdWFkKQogewog
ICAgIGNsaXBwZWRRdWFkW251bVZlcnRpY2VzSW5DbGlwcGVkUXVhZF0gPSBuZXdWZXJ0ZXg7CkBA
IC0yMTMsNyArMTMzLDcgQEAgRmxvYXRSZWN0IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKICAgICBIb21vZ2VuZW91
c0Nvb3JkaW5hdGUgaDMgPSBtYXBQb2ludCh0cmFuc2Zvcm0sIHEucDMoKSk7CiAgICAgSG9tb2dl
bmVvdXNDb29yZGluYXRlIGg0ID0gbWFwUG9pbnQodHJhbnNmb3JtLCBxLnA0KCkpOwogCi0gICAg
cmV0dXJuIGNvbXB1dGVFbmNsb3NpbmdSZWN0KGgxLCBoMiwgaDMsIGg0KTsKKyAgICByZXR1cm4g
Y29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0KGgxLCBoMiwgaDMsIGg0KTsKIH0KIAogRmxvYXRS
ZWN0IENDTWF0aFV0aWw6OnByb2plY3RDbGlwcGVkUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCkBAIC0yMjUsNyArMTQ1
LDcgQEAgRmxvYXRSZWN0IENDTWF0aFV0aWw6OnByb2plY3RDbGlwcGVkUmVjdChjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLAogICAgIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBo
MyA9IHByb2plY3RQb2ludCh0cmFuc2Zvcm0sIHEucDMoKSk7CiAgICAgSG9tb2dlbmVvdXNDb29y
ZGluYXRlIGg0ID0gcHJvamVjdFBvaW50KHRyYW5zZm9ybSwgcS5wNCgpKTsKIAotICAgIHJldHVy
biBjb21wdXRlRW5jbG9zaW5nUmVjdChoMSwgaDIsIGgzLCBoNCk7CisgICAgcmV0dXJuIGNvbXB1
dGVFbmNsb3NpbmdDbGlwcGVkUmVjdChoMSwgaDIsIGgzLCBoNCk7CiB9CiAKIHZvaWQgQ0NNYXRo
VXRpbDo6bWFwQ2xpcHBlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRRdWFkJiBzcmNRdWFkLCBGbG9hdFBvaW50IGNsaXBwZWRRdWFkWzhdLCBp
bnQmIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCkKQEAgLTI3Miw5ICsxOTIsOSBAQCBGbG9hdFJl
Y3QgQ0NNYXRoVXRpbDo6Y29tcHV0ZUVuY2xvc2luZ1JlY3RPZlZlcnRpY2VzKEZsb2F0UG9pbnQg
dmVydGljZXNbXSwgaW50CiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIGZsb2F0
IHhtaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7Ci0gICAgZmxvYXQgeG1h
eCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKTsKKyAgICBmbG9hdCB4bWF4ID0g
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKTsKICAgICBmbG9hdCB5bWluID0gc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOwotICAgIGZsb2F0IHltYXggPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCk7CisgICAgZmxvYXQgeW1heCA9IC1zdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVZl
cnRpY2VzOyArK2kpCiAgICAgICAgIGV4cGFuZEJvdW5kc1RvSW5jbHVkZVBvaW50KHhtaW4sIHht
YXgsIHltaW4sIHltYXgsIHZlcnRpY2VzW2ldKTsKQEAgLTI4Miw2ICsyMDIsNTYgQEAgRmxvYXRS
ZWN0IENDTWF0aFV0aWw6OmNvbXB1dGVFbmNsb3NpbmdSZWN0T2ZWZXJ0aWNlcyhGbG9hdFBvaW50
IHZlcnRpY2VzW10sIGludAogICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCh4bWluLCB5
bWluKSwgRmxvYXRTaXplKHhtYXggLSB4bWluLCB5bWF4IC0geW1pbikpOwogfQogCitGbG9hdFJl
Y3QgQ0NNYXRoVXRpbDo6Y29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0KGNvbnN0IEhvbW9nZW5l
b3VzQ29vcmRpbmF0ZSYgaDEsIGNvbnN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDIsIGNvbnN0
IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDMsIGNvbnN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYg
aDQpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBjbGlwcGluZyBhcyBuZWNlc3Nh
cnkgYW5kIGNvbXB1dGVzIHRoZSBlbmNsb3NpbmcgMmQKKyAgICAvLyBGbG9hdFJlY3Qgb2YgdGhl
IHZlcnRpY2VzLiBEb2luZyB0aGVzZSB0d28gc3RlcHMgc2ltdWx0YW5lb3VzbHkgYWxsb3dzIHVz
IHRvIGF2b2lkCisgICAgLy8gdGhlIG92ZXJoZWFkIG9mIHN0b3JpbmcgYW4gdW5rbm93biBudW1i
ZXIgb2YgY2xpcHBlZCB2ZXJ0aWNlcy4KKworICAgIC8vIElmIG5vIHZlcnRpY2VzIG9uIHRoZSBx
dWFkIGFyZSBjbGlwcGVkLCB0aGVuIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBlbmNsb3Npbmcg
cmVjdCBkaXJlY3RseS4KKyAgICBib29sIHNvbWV0aGluZ0NsaXBwZWQgPSBoMS5zaG91bGRCZUNs
aXBwZWQoKSB8fCBoMi5zaG91bGRCZUNsaXBwZWQoKSB8fCBoMy5zaG91bGRCZUNsaXBwZWQoKSB8
fCBoNC5zaG91bGRCZUNsaXBwZWQoKTsKKyAgICBpZiAoIXNvbWV0aGluZ0NsaXBwZWQpIHsKKyAg
ICAgICAgRmxvYXRRdWFkIG1hcHBlZFF1YWQgPSBGbG9hdFF1YWQoaDEuY2FydGVzaWFuUG9pbnQy
ZCgpLCBoMi5jYXJ0ZXNpYW5Qb2ludDJkKCksIGgzLmNhcnRlc2lhblBvaW50MmQoKSwgaDQuY2Fy
dGVzaWFuUG9pbnQyZCgpKTsKKyAgICAgICAgcmV0dXJuIG1hcHBlZFF1YWQuYm91bmRpbmdCb3go
KTsKKyAgICB9CisKKyAgICBib29sIGV2ZXJ5dGhpbmdDbGlwcGVkID0gaDEuc2hvdWxkQmVDbGlw
cGVkKCkgJiYgaDIuc2hvdWxkQmVDbGlwcGVkKCkgJiYgaDMuc2hvdWxkQmVDbGlwcGVkKCkgJiYg
aDQuc2hvdWxkQmVDbGlwcGVkKCk7CisgICAgaWYgKGV2ZXJ5dGhpbmdDbGlwcGVkKQorICAgICAg
ICByZXR1cm4gRmxvYXRSZWN0KCk7CisKKworICAgIGZsb2F0IHhtaW4gPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCk7CisgICAgZmxvYXQgeG1heCA9IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCk7CisgICAgZmxvYXQgeW1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKTsKKyAgICBmbG9hdCB5bWF4ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKTsKKworICAgIGlmICghaDEuc2hvdWxkQmVDbGlwcGVkKCkpCisgICAgICAgIGV4
cGFuZEJvdW5kc1RvSW5jbHVkZVBvaW50KHhtaW4sIHhtYXgsIHltaW4sIHltYXgsIGgxLmNhcnRl
c2lhblBvaW50MmQoKSk7CisKKyAgICBpZiAoaDEuc2hvdWxkQmVDbGlwcGVkKCkgXiBoMi5zaG91
bGRCZUNsaXBwZWQoKSkKKyAgICAgICAgZXhwYW5kQm91bmRzVG9JbmNsdWRlUG9pbnQoeG1pbiwg
eG1heCwgeW1pbiwgeW1heCwgY29tcHV0ZUNsaXBwZWRQb2ludEZvckVkZ2UoaDEsIGgyKS5jYXJ0
ZXNpYW5Qb2ludDJkKCkpOworCisgICAgaWYgKCFoMi5zaG91bGRCZUNsaXBwZWQoKSkKKyAgICAg
ICAgZXhwYW5kQm91bmRzVG9JbmNsdWRlUG9pbnQoeG1pbiwgeG1heCwgeW1pbiwgeW1heCwgaDIu
Y2FydGVzaWFuUG9pbnQyZCgpKTsKKworICAgIGlmIChoMi5zaG91bGRCZUNsaXBwZWQoKSBeIGgz
LnNob3VsZEJlQ2xpcHBlZCgpKQorICAgICAgICBleHBhbmRCb3VuZHNUb0luY2x1ZGVQb2ludCh4
bWluLCB4bWF4LCB5bWluLCB5bWF4LCBjb21wdXRlQ2xpcHBlZFBvaW50Rm9yRWRnZShoMiwgaDMp
LmNhcnRlc2lhblBvaW50MmQoKSk7CisKKyAgICBpZiAoIWgzLnNob3VsZEJlQ2xpcHBlZCgpKQor
ICAgICAgICBleHBhbmRCb3VuZHNUb0luY2x1ZGVQb2ludCh4bWluLCB4bWF4LCB5bWluLCB5bWF4
LCBoMy5jYXJ0ZXNpYW5Qb2ludDJkKCkpOworCisgICAgaWYgKGgzLnNob3VsZEJlQ2xpcHBlZCgp
IF4gaDQuc2hvdWxkQmVDbGlwcGVkKCkpCisgICAgICAgIGV4cGFuZEJvdW5kc1RvSW5jbHVkZVBv
aW50KHhtaW4sIHhtYXgsIHltaW4sIHltYXgsIGNvbXB1dGVDbGlwcGVkUG9pbnRGb3JFZGdlKGgz
LCBoNCkuY2FydGVzaWFuUG9pbnQyZCgpKTsKKworICAgIGlmICghaDQuc2hvdWxkQmVDbGlwcGVk
KCkpCisgICAgICAgIGV4cGFuZEJvdW5kc1RvSW5jbHVkZVBvaW50KHhtaW4sIHhtYXgsIHltaW4s
IHltYXgsIGg0LmNhcnRlc2lhblBvaW50MmQoKSk7CisKKyAgICBpZiAoaDQuc2hvdWxkQmVDbGlw
cGVkKCkgXiBoMS5zaG91bGRCZUNsaXBwZWQoKSkKKyAgICAgICAgZXhwYW5kQm91bmRzVG9JbmNs
dWRlUG9pbnQoeG1pbiwgeG1heCwgeW1pbiwgeW1heCwgY29tcHV0ZUNsaXBwZWRQb2ludEZvckVk
Z2UoaDQsIGgxKS5jYXJ0ZXNpYW5Qb2ludDJkKCkpOworCisgICAgcmV0dXJuIEZsb2F0UmVjdChG
bG9hdFBvaW50KHhtaW4sIHltaW4pLCBGbG9hdFNpemUoeG1heCAtIHhtaW4sIHltYXggLSB5bWlu
KSk7Cit9CisKIEZsb2F0UXVhZCBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UXVhZCYgcSwgYm9vbCYgY2xpcHBlZCkK
IHsKICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0
aFV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TWF0aFV0aWwuaAppbmRleCAzOTg2MDRkOWE3NDVmMDM3ODA1ZDI1YWEwNDBjYzU5YzFmMjcwOTZl
Li42YWZiNDM2MGU0NzIzZTg4M2ZlNzRiNGU5MjdiNjAxNWE5OTc4ZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRo
VXRpbC5oCkBAIC0yNSw2ICsyNSw4IEBACiAjaWZuZGVmIENDTWF0aFV0aWxfaAogI2RlZmluZSBD
Q01hdGhVdGlsX2gKIAorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJbnRSZWN0OwpAQCAtMzMsNiArMzUsMzcgQEAgY2xhc3MgRmxvYXRSZWN0
OwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKK3N0cnVj
dCBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgeworICAgIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZShkb3Vi
bGUgbmV3WCwgZG91YmxlIG5ld1ksIGRvdWJsZSBuZXdaLCBkb3VibGUgbmV3VykKKyAgICAgICAg
OiB4KG5ld1gpCisgICAgICAgICwgeShuZXdZKQorICAgICAgICAsIHoobmV3WikKKyAgICAgICAg
LCB3KG5ld1cpCisgICAgeworICAgIH0KKworICAgIGJvb2wgc2hvdWxkQmVDbGlwcGVkKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiB3IDw9IDA7CisgICAgfQorCisgICAgRmxvYXRQb2lu
dCBjYXJ0ZXNpYW5Qb2ludDJkKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICh3ID09IDEpCisg
ICAgICAgICAgICByZXR1cm4gRmxvYXRQb2ludCh4LCB5KTsKKworICAgICAgICAvLyBGb3Igbm93
LCBiZWNhdXNlIHRoaXMgY29kZSBpcyB1c2VkIHByaXZhdGVseSBvbmx5IGJ5IENDTWF0aFV0aWws
IGl0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB3ID09IDAsIGFuZCB3ZSBkbyBub3QgeWV0
IG5lZWQgdG8gaGFuZGxlIHRoYXQgY2FzZS4KKyAgICAgICAgQVNTRVJUKHcpOworICAgICAgICBk
b3VibGUgaW52VyA9IDEuMCAvIHc7CisgICAgICAgIHJldHVybiBGbG9hdFBvaW50KHggKiBpbnZX
LCB5ICogaW52Vyk7CisgICAgfQorCisgICAgZG91YmxlIHg7CisgICAgZG91YmxlIHk7CisgICAg
ZG91YmxlIHo7CisgICAgZG91YmxlIHc7Cit9OworCiAvLyBUaGlzIGNsYXNzIGNvbnRhaW5zIG1h
dGggaGVscGVyIGZ1bmN0aW9uYWxpdHkgdGhhdCBkb2VzIG5vdCBiZWxvbmcgaW4gV2ViQ29yZS4K
IC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZSBtaWdy
YXRlZCB0byBXZWJDb3JlIGV2ZW50dWFsbHkuCiBjbGFzcyBDQ01hdGhVdGlsIHsKQEAgLTU1LDcg
Kzg4LDkgQEAgcHVibGljOgogICAgIC8vIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCBtYXkgYmUg
emVybywgd2hpY2ggbWVhbnMgdGhlIGVudGlyZSBxdWFkIHdhcyBjbGlwcGVkLCBhbmQKICAgICAv
LyBub25lIG9mIHRoZSB2ZXJ0aWNlcyBpbiB0aGUgYXJyYXkgYXJlIHZhbGlkLgogICAgIHN0YXRp
YyB2b2lkIG1hcENsaXBwZWRRdWFkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRRdWFkJiBzcmNRdWFkLCBGbG9hdFBvaW50IGNsaXBwZWRRdWFkWzhdLCBpbnQmIG51bVZl
cnRpY2VzSW5DbGlwcGVkUXVhZCk7CisKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNvbXB1dGVFbmNs
b3NpbmdSZWN0T2ZWZXJ0aWNlcyhGbG9hdFBvaW50IHZlcnRpY2VzW10sIGludCBudW1WZXJ0aWNl
cyk7CisgICAgc3RhdGljIEZsb2F0UmVjdCBjb21wdXRlRW5jbG9zaW5nQ2xpcHBlZFJlY3QoY29u
c3QgSG9tb2dlbmVvdXNDb29yZGluYXRlJiBoMSwgY29uc3QgSG9tb2dlbmVvdXNDb29yZGluYXRl
JiBoMiwgY29uc3QgSG9tb2dlbmVvdXNDb29yZGluYXRlJiBoMywgY29uc3QgSG9tb2dlbmVvdXND
b29yZGluYXRlJiBoNCk7CiAKICAgICAvLyBOT1RFOiBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IGRv
IGNvcnJlY3QgY2xpcHBpbmcgYWdhaW5zdCB3ID0gMCBwbGFuZSwgYnV0IHRoZXkKICAgICAvLyBj
b3JyZWN0bHkgZGV0ZWN0IHRoZSBjbGlwcGVkIGNvbmRpdGlvbiB2aWEgdGhlIGJvb2xlYW4gY2xp
cHBlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NNYXRoVXRp
bFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ01hdGhVdGlsVGVzdC5j
cHAKaW5kZXggMzkwOTY3N2E1MmE1MzA2YWVmOGQwZTE3NzNmOWMwNjMxODBmNzkyOS4uNTg4YWY5
Y2MyNTQzOGRhMTY5ODEzYzM1OTEwMWEwMDg3NmViZDYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ01hdGhVdGlsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ01hdGhVdGlsVGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKIAorI2luY2x1ZGUgIkNDTGF5ZXJUcmVlVGVzdENv
bW1vbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKICNpbmNsdWRlIDxn
bW9jay9nbW9jay5oPgpAQCAtMTE2LDQgKzExNywzOCBAQCBURVNUKENDTWF0aFV0aWxUZXN0LCB2
ZXJpZnlQcm9qZWN0aW9uT2ZQZXJwZW5kaWN1bGFyUGxhbmUpCiAgICAgRVhQRUNUX1RSVUUocHJv
amVjdGVkUmVjdC5pc0VtcHR5KCkpOwogfQogCitURVNUKENDTWF0aFV0aWxUZXN0LCB2ZXJpZnlF
bmNsb3NpbmdDbGlwcGVkUmVjdFVzZXNDb3JyZWN0SW5pdGlhbEJvdW5kcykKK3sKKyAgICBIb21v
Z2VuZW91c0Nvb3JkaW5hdGUgaDEoLTEwMCwgLTEwMCwgMCwgMSk7CisgICAgSG9tb2dlbmVvdXND
b29yZGluYXRlIGgyKC0xMCwgLTEwLCAwLCAxKTsKKyAgICBIb21vZ2VuZW91c0Nvb3JkaW5hdGUg
aDMoMTAsIDEwLCAwLCAtMSk7CisgICAgSG9tb2dlbmVvdXNDb29yZGluYXRlIGg0KDEwMCwgMTAw
LCAwLCAtMSk7CisKKyAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBlbmNsb3NpbmcgY2xpcHBlZCBy
ZWN0IHNob3VsZCBiZSAtMTAwIHRvIC0xMCBmb3IgYm90aCB4IGFuZCB5LgorICAgIC8vIEhvd2V2
ZXIsIGlmIHRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBpbml0aWFsIHhtaW4veG1heC95bWluL3lt
YXggYXJlIGluaXRpYWxpemVkIHRvCisgICAgLy8gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4o
KSAod2hpY2ggaXMgemVybywgbm90IC1mbHRfbWF4KSB0aGVuIHRoZSBlbmNsb3NpbmcKKyAgICAv
LyBjbGlwcGVkIHJlY3Qgd2lsbCBiZSBjb21wdXRlZCBpbmNvcnJlY3RseS4KKyAgICBGbG9hdFJl
Y3QgcmVzdWx0ID0gQ0NNYXRoVXRpbDo6Y29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0KGgxLCBo
MiwgaDMsIGg0KTsKKworICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChGbG9hdFBv
aW50KC0xMDAsIC0xMDApLCBGbG9hdFNpemUoOTAsIDkwKSksIHJlc3VsdCk7Cit9CisKK1RFU1Qo
Q0NNYXRoVXRpbFRlc3QsIHZlcmlmeUVuY2xvc2luZ1JlY3RPZlZlcnRpY2VzVXNlc0NvcnJlY3RJ
bml0aWFsQm91bmRzKQoreworICAgIEZsb2F0UG9pbnQgdmVydGljZXNbM107CisgICAgaW50IG51
bVZlcnRpY2VzID0gMzsKKworICAgIHZlcnRpY2VzWzBdID0gRmxvYXRQb2ludCgtMTAsIC0xMDAp
OworICAgIHZlcnRpY2VzWzFdID0gRmxvYXRQb2ludCgtMTAwLCAtMTApOworICAgIHZlcnRpY2Vz
WzJdID0gRmxvYXRQb2ludCgtMzAsIC0zMCk7CisKKyAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBl
bmNsb3NpbmcgcmVjdCBzaG91bGQgYmUgLTEwMCB0byAtMTAgZm9yIGJvdGggeCBhbmQgeS4gSG93
ZXZlciwKKyAgICAvLyBpZiB0aGVyZSBpcyBhIGJ1ZyB3aGVyZSB0aGUgaW5pdGlhbCB4bWluL3ht
YXgveW1pbi95bWF4IGFyZSBpbml0aWFsaXplZCB0bworICAgIC8vIG51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6bWluKCkgKHdoaWNoIGlzIHplcm8sIG5vdCAtZmx0X21heCkgdGhlbiB0aGUgZW5jbG9z
aW5nCisgICAgLy8gY2xpcHBlZCByZWN0IHdpbGwgYmUgY29tcHV0ZWQgaW5jb3JyZWN0bHkuCisg
ICAgRmxvYXRSZWN0IHJlc3VsdCA9IENDTWF0aFV0aWw6OmNvbXB1dGVFbmNsb3NpbmdSZWN0T2ZW
ZXJ0aWNlcyh2ZXJ0aWNlcywgbnVtVmVydGljZXMpOworCisgICAgRVhQRUNUX0ZMT0FUX1JFQ1Rf
RVEoRmxvYXRSZWN0KEZsb2F0UG9pbnQoLTEwMCwgLTEwMCksIEZsb2F0U2l6ZSg5MCwgOTApKSwg
cmVzdWx0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>