<?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>120783</bug_id>
          
          <creation_ts>2013-09-05 11:16:54 -0700</creation_ts>
          <short_desc>Custom CSS cursors do not use -webkit-image-set on retina displays</short_desc>
          <delta_ts>2015-04-15 16:22:52 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsbin.com/ewilah</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>evan.exe</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>devongovett+webkit</cc>
    
    <cc>dino</cc>
    
    <cc>jond</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>925134</commentid>
    <comment_count>0</comment_count>
    <who name="">evan.exe</who>
    <bug_when>2013-09-05 11:16:54 -0700</bug_when>
    <thetext>Visit http://jsbin.com/ewilah and move the mouse over the first red square on a retina display. The expected result is a high-resolution checkerboard where one checkerboard square fills one physical pixel. This demo uses the -webkit-image-set(url(lowres.png) 1x, url(highres.png) 2x) to specify a specific cursor image to use on retina displays. WebKit correctly uses the high-resolution image but incorrectly shows it twice as big as it should be (it shows up huge and blurry). This was recently fixed in Chrome and now works correctly in Chrome Canary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925170</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-05 12:45:55 -0700</bug_when>
    <thetext>This was fixed under an ifdef in bug 99493, but Mac port doesn&apos;t turn it on (ENABLE_MOUSE_CURSOR_SCALE).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925171</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-05 12:46:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/14921432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927150</commentid>
    <comment_count>3</comment_count>
      <attachid>211167</attachid>
    <who name="">evan.exe</who>
    <bug_when>2013-09-09 23:17:23 -0700</bug_when>
    <thetext>Created attachment 211167
Patch to use -webkit-image-set for custom CSS cursors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927441</commentid>
    <comment_count>4</comment_count>
      <attachid>211167</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-10 12:56:39 -0700</bug_when>
    <thetext>Comment on attachment 211167
Patch to use -webkit-image-set for custom CSS cursors

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

&gt; Source/WebCore/platform/mac/CursorMac.mm:56
&gt; +    NSSize size = NSMakeSize(image-&gt;width() / scale, image-&gt;height() / scale);

Did you test with a cursor that has a non-integral pixel height? Like a 31x31 pixel cursor with a 2X scale factor?

&gt; Source/WebKit2/ChangeLog:13
&gt; +        (CoreIPC::::encode):
&gt; +        (CoreIPC::::decode):

Should fix the incorrect function names here. It should be:

    (CoreIPC::ArgumentCoder&lt;Cursor&gt;::encode):

Too bad the script got it wrong, but it would be great if you fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927836</commentid>
    <comment_count>5</comment_count>
      <attachid>211322</attachid>
    <who name="">evan.exe</who>
    <bug_when>2013-09-11 10:01:00 -0700</bug_when>
    <thetext>Created attachment 211322
Updated patch with fixes and manual test html page

The previous patch doesn&apos;t work as expected for odd sizes. I hadn&apos;t tested that because -webkit-image-set doesn&apos;t work as expected for regular CSS background images at odd sizes either, but you&apos;re right that it should work. Added a manual test html page for different image sizes and hotspot locations and fixed all related bugs. The test page is also live at http://jsbin.com/IkuCATe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928014</commentid>
    <comment_count>6</comment_count>
      <attachid>211322</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-11 15:25:51 -0700</bug_when>
    <thetext>Comment on attachment 211322
Updated patch with fixes and manual test html page

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

&gt; Source/WebCore/platform/mac/CursorMac.mm:62
&gt; +        RetainPtr&lt;NSImage&gt; intImage = adoptNS([[NSImage alloc] initWithSize:intSize]);

Sure would have been nice to use imageWithSize:flipped:drawingHandler: instead on OS X 10.8 or later.

&gt; Source/WebCore/platform/mac/CursorMac.mm:66
&gt; +        [intImage.get() lockFocus];

Could have used lockFocusFlipped:YES and then the toRect would be slightly less strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928145</commentid>
    <comment_count>7</comment_count>
    <who name="">evan.exe</who>
    <bug_when>2013-09-11 22:00:33 -0700</bug_when>
    <thetext>The documentation for imageWithSize:flipped:drawingHandler: says that the provided drawing handler is invoked at a later time and may be invoked on a separate thread. I&apos;m not familiar enough with the WebKit codebase to feel confident evaluating and resolving the potential threading issues, so I&apos;d like to keep the code simple and straightforward if possible.

If I use lockFocusFlipped: then the image would be upside down, which would require an additional translation and scale transform to fix. Just using lockFocus with an offset seemed simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936359</commentid>
    <comment_count>8</comment_count>
    <who name="">evan.exe</who>
    <bug_when>2013-10-04 13:51:14 -0700</bug_when>
    <thetext>Is there still a problem with this patch? Should I try to use imageWithSize:flipped:drawingHandler: despite potential threading issues, or is the current approach ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980249</commentid>
    <comment_count>9</comment_count>
      <attachid>211167</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-13 04:11:58 -0800</bug_when>
    <thetext>Comment on attachment 211167
Patch to use -webkit-image-set for custom CSS cursors

Cleared Darin Adler&apos;s review+ from obsolete attachment 211167 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043716</commentid>
    <comment_count>10</comment_count>
    <who name="Devon Govett">devongovett+webkit</who>
    <bug_when>2014-10-23 01:04:42 -0700</bug_when>
    <thetext>Any updates on this?  Seems it works in Chrome but not Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083136</commentid>
    <comment_count>11</comment_count>
    <who name="Jon Davis">jond</who>
    <bug_when>2015-04-06 12:08:09 -0700</bug_when>
    <thetext>Can we get any more traction on this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085698</commentid>
    <comment_count>12</comment_count>
      <attachid>250865</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-15 14:54:55 -0700</bug_when>
    <thetext>Created attachment 250865
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085739</commentid>
    <comment_count>13</comment_count>
      <attachid>250865</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-15 15:44:33 -0700</bug_when>
    <thetext>Comment on attachment 250865
rebased

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

&gt; Source/WebCore/platform/mac/CursorMac.mm:48
&gt; +#if ENABLE(MOUSE_CURSOR_SCALE)
&gt; +static RetainPtr&lt;NSCursor&gt; createCustomCursor(Image* image, const IntPoint&amp; hotSpot, float scale)
&gt; +#else
&gt;  static RetainPtr&lt;NSCursor&gt; createCustomCursor(Image* image, const IntPoint&amp; hotSpot)
&gt; +#endif

I don&apos;t like #ifdefs that changes signatures. Can we just always pass in scale and UNUSED_PARAM() it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085758</commentid>
    <comment_count>14</comment_count>
      <attachid>250865</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-15 16:22:45 -0700</bug_when>
    <thetext>Comment on attachment 250865
rebased

Clearing flags on attachment: 250865

Committed r182869: &lt;http://trac.webkit.org/changeset/182869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085759</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-15 16:22:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211167</attachid>
            <date>2013-09-09 23:17:23 -0700</date>
            <delta_ts>2014-02-13 04:11:56 -0800</delta_ts>
            <desc>Patch to use -webkit-image-set for custom CSS cursors</desc>
            <filename>retina-cursors.patch</filename>
            <type>text/plain</type>
            <size>4411</size>
            <attacher>evan.exe</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA5LTA5ICBFdmFuIFdh
bGxhY2UgIDxldmFuLmV4ZUBnbWFpbC5jb20+CisKKyAgICAgICAgQ3VzdG9tIENTUyBjdXJzb3Jz
IGRvIG5vdCB1c2UgLXdlYmtpdC1pbWFnZS1zZXQgb24gcmV0aW5hIGRpc3BsYXlzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA3ODMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY2FsZSBOU0N1cnNvciBp
bWFnZXMgY29ycmVjdGx5IHNvIGN1c3RvbSBDU1MgY3Vyc29ycyB3b3JrIHdpdGgKKyAgICAgICAg
LXdlYmtpdC1pbWFnZS1zZXQgb24gcmV0aW5hIGRpc3BsYXlzLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6
OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKToKKwogMjAxMy0wOS0wOSAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0Q29udHJvbGxlciBzaG91bGQgaGF2ZSBh
IEZyYW1lJiBpbnRlcm5hbGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1
NTM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTI2LDYgKzE5MjYsNyBAQAogX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5v
ZGVFCiBfX1pON1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29y
ZTZDdXJzb3JDMUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQorX19aTjdXZWJDb3JlNkN1cnNv
ckMxRVBOU181SW1hZ2VFUktOU184SW50UG9pbnRFZgogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJL
UzBfCiBfX1pON1dlYkNvcmU2Q3Vyc29yRDFFdgogX19aTjdXZWJDb3JlNkN1cnNvcmFTRVJLUzBf
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9u
IDE1NTM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwyMiBAQAogLy8gU2ltcGxlIE5TQ3Vyc29yIGNhbGxz
IHNob3VsZG4ndCBuZWVkIHByb3RlY3Rpb24sCiAvLyBidXQgY3JlYXRpbmcgYSBjdXJzb3Igd2l0
aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJvdy4KIAorI2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NB
TEUpCitzdGF0aWMgUmV0YWluUHRyPE5TQ3Vyc29yPiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCwgZmxvYXQgc2NhbGUpCisjZWxzZQogc3Rh
dGljIFJldGFpblB0cjxOU0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCisjZW5kaWYKIHsKICAgICAvLyBGSVhNRTogVGhlIGN1
cnNvciB3b24ndCBhbmltYXRlLiAgTm90IHN1cmUgaWYgdGhhdCdzIGEgYmlnIGRlYWwuCiAgICAg
TlNJbWFnZSogbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYgKCFuc0ltYWdl
KQogICAgICAgICByZXR1cm4gMDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cisj
aWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKKyAgICBOU1NpemUgc2l6ZSA9IE5TTWFrZVNp
emUoaW1hZ2UtPndpZHRoKCkgLyBzY2FsZSwgaW1hZ2UtPmhlaWdodCgpIC8gc2NhbGUpOworICAg
IFtuc0ltYWdlIHNldFNpemU6c2l6ZV07CisgICAgW1tbbnNJbWFnZSByZXByZXNlbnRhdGlvbnNd
IG9iamVjdEF0SW5kZXg6MF0gc2V0U2l6ZTpzaXplXTsKKyNlbmRpZgogICAgIHJldHVybiBhZG9w
dE5TKFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6bnNJbWFnZSBob3RTcG90OmhvdFNw
b3RdKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiAwOwpAQCAt
MjMzLDcgKzI0MiwxMSBAQAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpDdXN0
b206CisjaWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKKyAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcihtX2ltYWdlLmdldCgpLCBtX2hvdFNwb3QsIG1faW1h
Z2VTY2FsZUZhY3Rvcik7CisjZWxzZQogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRl
Q3VzdG9tQ3Vyc29yKG1faW1hZ2UuZ2V0KCksIG1faG90U3BvdCk7CisjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1NDE3KQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTMtMDktMDkgIEV2YW4gV2FsbGFjZSAgPGV2YW4uZXhlQGdtYWlsLmNvbT4KKworICAgICAgICBD
dXN0b20gQ1NTIGN1cnNvcnMgZG8gbm90IHVzZSAtd2Via2l0LWltYWdlLXNldCBvbiByZXRpbmEg
ZGlzcGxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDc4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNlcmlhbGl6ZSB0aGUgY3Vyc29yIGltYWdlIHNjYWxlIGZvciBTZXRDdXJzb3IgbWVzc2FnZXMg
c28gY3VzdG9tCisgICAgICAgIENTUyBjdXJzb3JzIHdvcmsgd2l0aCAtd2Via2l0LWltYWdlLXNl
dCBvbiByZXRpbmEgZGlzcGxheXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJ
UEM6Ojo6ZGVjb2RlKToKKwogMjAxMy0wOS0wOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5j
b20+CiAKICAgICAgICAgW1dlYkdMXSBBbGxvdyBtdWx0aXRocmVhZGVkIE9wZW5HTCBjb250ZXh0
cwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAJKHJldmlzaW9uIDE1NTM2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDkgQEAKICAg
ICBlbmNvZGVyIDw8IHRydWU7CiAgICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgY3Vyc29yLmltYWdl
KCkpOwogICAgIGVuY29kZXIgPDwgY3Vyc29yLmhvdFNwb3QoKTsKKyNpZiBFTkFCTEUoTU9VU0Vf
Q1VSU09SX1NDQUxFKQorICAgIGVuY29kZXIgPDwgY3Vyc29yLmltYWdlU2NhbGVGYWN0b3IoKTsK
KyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgQ3Vyc29yJiBjdXJzb3IpCkBAIC0zNjgsNyArMzcxLDE1IEBACiAg
ICAgaWYgKCFpbWFnZS0+cmVjdCgpLmNvbnRhaW5zKGhvdFNwb3QpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyNpZiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQorICAgIGZsb2F0IHNjYWxl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NhbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjdXJzb3IgPSBDdXJzb3IoaW1hZ2UuZ2V0KCksIGhvdFNwb3QsIHNjYWxlKTsKKyNl
bHNlCiAgICAgY3Vyc29yID0gQ3Vyc29yKGltYWdlLmdldCgpLCBob3RTcG90KTsKKyNlbmRpZgog
ICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211322</attachid>
            <date>2013-09-11 10:01:00 -0700</date>
            <delta_ts>2015-04-15 14:54:48 -0700</delta_ts>
            <desc>Updated patch with fixes and manual test html page</desc>
            <filename>retina-cursors.patch</filename>
            <type>text/plain</type>
            <size>10353</size>
            <attacher>evan.exe</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTUz
NykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA5
LTExICBFdmFuIFdhbGxhY2UgIDxldmFuLmV4ZUBnbWFpbC5jb20+CisKKyAgICAgICAgQ3VzdG9t
IENTUyBjdXJzb3JzIGRvIG5vdCB1c2UgLXdlYmtpdC1pbWFnZS1zZXQgb24gcmV0aW5hIGRpc3Bs
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA3
ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBtYW51YWwgdGVzdCBmb3IgY3VzdG9tIENTUyBjdXJzb3JzIG9uIHJldGluYSBkaXNwbGF5cy4K
KworICAgICAgICAqIE1hbnVhbFRlc3RzL3JldGluYS1jdXJzb3JzLmh0bWw6IEFkZGVkLgorCiAy
MDEzLTA5LTExICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIEdhaWwgZGVwZW5kZW5jeSBmcm9tIGJ1aWxkIHN5c3Rl
bSBmb3IgR1RLMwpJbmRleDogTWFudWFsVGVzdHMvcmV0aW5hLWN1cnNvcnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBNYW51YWxUZXN0cy9yZXRpbmEtY3Vyc29ycy5odG1sCShyZXZpc2lvbiAwKQorKysg
TWFudWFsVGVzdHMvcmV0aW5hLWN1cnNvcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgzIEBACis8Ym9keT4KK1RoaXMgaXMgYSB0ZXN0IGZvciBjdXN0b20gQ1NTIGN1cnNvcnMgb24g
cmV0aW5hIGRpc3BsYXlzLgorTW92ZSB0aGUgbW91c2Ugb3ZlciB0aGUgZ3JlZW4gcGl4ZWwgaW4g
ZWFjaCByZWQgc3F1YXJlIGFuZCB0aGUgbGVmdCBzaG91bGQgbWF0Y2ggdGhlIHJpZ2h0LgorTm90
ZSB0aGF0IE5TQ3Vyc29yIGhhcyBidWdzIHdpdGggcHJlY2lzZSBzdWItcGl4ZWwgcG9zaXRpb25p
bmcgb24gcmV0aW5hIGRpc3BsYXlzIGJ1dCBpZiB5b3Ugem9vbSBpbiB1c2luZyB0aGUgY29udHJv
bCtzY3JvbGwgc2hvcnRjdXQgdGhlbiB0aGUgY3Vyc29yIHdpbGwgc2hpZnQgdG8gdGhlIGNvcnJl
Y3QgcG9zaXRpb24uCitTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDc4My4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAhPT0gMikg
eworICBkb2N1bWVudC53cml0ZSgnPGgxPk5vdGU6IFRoaXMgdGVzdCBvbmx5IG1ha2VzIHNlbnNl
IG9uIGEgcmV0aW5hIGRpc3BsYXkuPC9oMT4nKTsKK30KKwordmFyIGRlbW9XaWR0aCA9IDY0Owor
dmFyIGRlbW9IZWlnaHQgPSA2NDsKKworZnVuY3Rpb24gY3JlYXRlQ2hlY2tlcmJvYXJkKHdpZHRo
LCBoZWlnaHQpIHsKKyAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5n
ZXRDb250ZXh0KCcyZCcpOworICB2YXIgaW1hZ2VEYXRhID0gYy5jcmVhdGVJbWFnZURhdGEod2lk
dGgsIGhlaWdodCk7CisgIHZhciBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CisgIGMuY2FudmFzLndp
ZHRoID0gd2lkdGg7CisgIGMuY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgZm9yICh2YXIgeSA9
IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgr
KykgeworICAgICAgdmFyIGkgPSB4ICsgeSAqIHdpZHRoIDw8IDI7CisgICAgICBkYXRhW2ldID0g
ZGF0YVtpICsgMV0gPSBkYXRhW2kgKyAyXSA9ICh4IF4geSkgJiAxID8gMjU1IDogMDsKKyAgICAg
IGRhdGFbaSArIDNdID0gMjU1OworICAgIH0KKyAgfQorICBjLnB1dEltYWdlRGF0YShpbWFnZURh
dGEsIDAsIDApOworICByZXR1cm4gYy5jYW52YXM7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVJlbmRl
cih4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzY2FsZSkgeworICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7CisgIHZhciBjaGVja2VyYm9hcmQg
PSBjcmVhdGVDaGVja2VyYm9hcmQod2lkdGgsIGhlaWdodCk7CisgIGMuY2FudmFzLndpZHRoID0g
ZGVtb1dpZHRoICogMjsKKyAgYy5jYW52YXMuaGVpZ2h0ID0gZGVtb0hlaWdodCAqIDI7CisgIGMu
Y2FudmFzLnN0eWxlLndpZHRoID0gZGVtb1dpZHRoICsgJ3B4JzsKKyAgYy5jYW52YXMuc3R5bGUu
aGVpZ2h0ID0gZGVtb0hlaWdodCArICdweCc7CisgIGMuZmlsbFN0eWxlID0gJyNGMDAnOyBjLmZp
bGxSZWN0KDAsIDAsIGRlbW9XaWR0aCAqIDIsIGRlbW9IZWlnaHQgKiAyKTsKKyAgYy5maWxsU3R5
bGUgPSAnI0QwMCc7IGMuZmlsbFJlY3QoMCwgMCwgZGVtb1dpZHRoLCBkZW1vSGVpZ2h0KTsKKyAg
Yy5maWxsU3R5bGUgPSAnIzBGMCc7IGMuZmlsbFJlY3QoZGVtb1dpZHRoLCBkZW1vSGVpZ2h0LCAy
LCAyKTsKKyAgYy5kcmF3SW1hZ2UoY2hlY2tlcmJvYXJkLCBkZW1vV2lkdGggLSAyICogeCwgZGVt
b0hlaWdodCAtIDIgKiB5LCBjaGVja2VyYm9hcmQud2lkdGggKiAyIC8gc2NhbGUsIGNoZWNrZXJi
b2FyZC5oZWlnaHQgKiAyIC8gc2NhbGUpOworICByZXR1cm4gYy5jYW52YXM7Cit9CisKK3ZhciBu
dW1iZXIgPSAwOworCitmdW5jdGlvbiBjcmVhdGVDdXJzb3JEZW1vKHgsIHksIHdpZHRoLCBoZWln
aHQsIHNjYWxlKSB7CisgIHZhciBjdXJzb3IgPSAnLXdlYmtpdC1pbWFnZS1zZXQodXJsKCcgKyBj
cmVhdGVDaGVja2VyYm9hcmQod2lkdGgsIGhlaWdodCkudG9EYXRhVVJMKCkgKyAnKSAnICsgc2Nh
bGUgKyAneCkgJyArIHggKyAnICcgKyB5ICsgJywgaGVscCc7CisgIGRvY3VtZW50LndyaXRlKCc8
aDMgc3R5bGU9Im1hcmdpbi1ib3R0b206MDsiPlRlc3QgJyArICsrbnVtYmVyICsgJzwvaDM+JyAr
CisgICAgJzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOicgKyBkZW1vV2lkdGgg
KyAncHg7aGVpZ2h0OicgKyBkZW1vSGVpZ2h0ICsgJ3B4O2JhY2tncm91bmQ6I0YwMDtkaXNwbGF5
OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6MjBweDsiPicgKworICAgICAgJzxkaXYgc3R5bGU9
InBvc2l0aW9uOmFic29sdXRlO3dpZHRoOicgKyBkZW1vV2lkdGggLyAyICsgJ3B4O2hlaWdodDon
ICsgZGVtb0hlaWdodCAvIDIgKyAncHg7YmFja2dyb3VuZDojRDAwOyI+PC9kaXY+JyArCisgICAg
ICAnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDonICsgZGVtb1dpZHRoIC8gMiAr
ICdweDt0b3A6JyArIGRlbW9IZWlnaHQgLyAyICsgJ3B4O3dpZHRoOjFweDtoZWlnaHQ6MXB4O2Jh
Y2tncm91bmQ6IzBGMDtjdXJzb3I6JyArIGN1cnNvciArICc7Ij48L2Rpdj4nICsKKyAgICAnPC9k
aXY+Jyk7CisgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlUmVuZGVyKHgsIHksIHdp
ZHRoLCBoZWlnaHQsIHNjYWxlKSk7Cit9CisKK2RvY3VtZW50LndyaXRlKCc8aDI+U2l6ZSB0ZXN0
czwvaDI+Jyk7CitjcmVhdGVDdXJzb3JEZW1vKDAsIDAsIDY0LCA2NCwgMik7CitjcmVhdGVDdXJz
b3JEZW1vKDAsIDAsIDYzLCA2NCwgMik7CitjcmVhdGVDdXJzb3JEZW1vKDAsIDAsIDY0LCA2Mywg
Mik7CitjcmVhdGVDdXJzb3JEZW1vKDAsIDAsIDYzLCA2MywgMik7CitjcmVhdGVDdXJzb3JEZW1v
KDAsIDAsIDUsIDQsIDIpOworY3JlYXRlQ3Vyc29yRGVtbygwLCAwLCA1LCAzLCAyKTsKK2NyZWF0
ZUN1cnNvckRlbW8oMCwgMCwgNCwgMywgMik7CitjcmVhdGVDdXJzb3JEZW1vKDAsIDAsIDIsIDIs
IDIpOworY3JlYXRlQ3Vyc29yRGVtbygwLCAwLCAxLCAxLCAyKTsKKworZG9jdW1lbnQud3JpdGUo
JzxoMj5Ib3Qgc3BvdCB0ZXN0czwvaDI+Jyk7CitjcmVhdGVDdXJzb3JEZW1vKDE1LCAxNSwgNjQs
IDY0LCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMTUsIDE1LCAzMiwgMzIsIDEpOworY3JlYXRlQ3Vy
c29yRGVtbygzMSwgMzEsIDY0LCA2NCwgMik7CitjcmVhdGVDdXJzb3JEZW1vKDMxLCAzMSwgMzIs
IDMyLCAxKTsKK2NyZWF0ZUN1cnNvckRlbW8oMSwgMSwgOSwgOSwgMik7CitjcmVhdGVDdXJzb3JE
ZW1vKDE2LCAwLCA2NCwgNjQsIDIpOworY3JlYXRlQ3Vyc29yRGVtbygwLCAxNiwgNjQsIDY0LCAy
KTsKK2NyZWF0ZUN1cnNvckRlbW8oMywgNCwgOCwgMTAsIDIpOworY3JlYXRlQ3Vyc29yRGVtbygy
LCAzLCA3LCA5LCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMSwgMCwgNSwgMywgMik7CitjcmVhdGVD
dXJzb3JEZW1vKDIsIDEsIDUsIDMsIDIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1NTUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA5LTExICBFdmFuIFdhbGxhY2UgIDxl
dmFuLmV4ZUBnbWFpbC5jb20+CisKKyAgICAgICAgQ3VzdG9tIENTUyBjdXJzb3JzIGRvIG5vdCB1
c2UgLXdlYmtpdC1pbWFnZS1zZXQgb24gcmV0aW5hIGRpc3BsYXlzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA3ODMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY2FsZSBOU0N1cnNvciBpbWFnZXMgY29y
cmVjdGx5IHNvIGN1c3RvbSBDU1MgY3Vyc29ycyB3b3JrIHdpdGgKKyAgICAgICAgLXdlYmtpdC1p
bWFnZS1zZXQgb24gcmV0aW5hIGRpc3BsYXlzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcik6CisKIDIwMTMtMDktMTEgIHBl
YXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJv
XSBDb21waWxlIGVycm9ycy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTUz
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTkyNiw2ICsxOTI2LDcgQEAKIF9fWk43V2ViQ29yZTVGcmFtZTlub2RlSW1hZ2VFUE5TXzROb2Rl
RQogX19aTjdXZWJDb3JlNkN1cnNvcjhmcm9tVHlwZUVOUzBfNFR5cGVFCiBfX1pON1dlYkNvcmU2
Q3Vyc29yQzFFUE5TXzVJbWFnZUVSS05TXzhJbnRQb2ludEUKK19fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RWYKIF9fWk43V2ViQ29yZTZDdXJzb3JDMUVSS1Mw
XwogX19aTjdXZWJDb3JlNkN1cnNvckQxRXYKIF9fWk43V2ViQ29yZTZDdXJzb3JhU0VSS1MwXwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTU1MzY4KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzM5LDcgKzEzMzksNiBAQAogICAgICAgICAgICAgZmxvYXQgc2NhbGUgPSBzdHlsZUltYWdl
LT5pbWFnZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgICAgICAvLyBHZXQgaG90c3BvdCBhbmQgY29u
dmVydCBmcm9tIGxvZ2ljYWwgcGl4ZWxzIHRvIHBoeXNpY2FsIHBpeGVscy4KICAgICAgICAgICAg
IEludFBvaW50IGhvdFNwb3QgPSAoKmN1cnNvcnMpW2ldLmhvdFNwb3QoKTsKLSAgICAgICAgICAg
IGhvdFNwb3Quc2NhbGUoc2NhbGUsIHNjYWxlKTsKICAgICAgICAgICAgIEludFNpemUgc2l6ZSA9
IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+c2l6ZSgpOwogICAgICAg
ICAgICAgaWYgKGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0J
KHJldmlzaW9uIDE1NTM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSw0MCBAQAogLy8gU2ltcGxlIE5TQ3Vy
c29yIGNhbGxzIHNob3VsZG4ndCBuZWVkIHByb3RlY3Rpb24sCiAvLyBidXQgY3JlYXRpbmcgYSBj
dXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJvdy4KIAorI2lmIEVOQUJMRShNT1VTRV9D
VVJTT1JfU0NBTEUpCitzdGF0aWMgUmV0YWluUHRyPE5TQ3Vyc29yPiBjcmVhdGVDdXN0b21DdXJz
b3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCwgZmxvYXQgc2NhbGUpCisj
ZWxzZQogc3RhdGljIFJldGFpblB0cjxOU0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdl
KiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCisjZW5kaWYKIHsKICAgICAvLyBGSVhN
RTogVGhlIGN1cnNvciB3b24ndCBhbmltYXRlLiAgTm90IHN1cmUgaWYgdGhhdCdzIGEgYmlnIGRl
YWwuCiAgICAgTlNJbWFnZSogbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYg
KCFuc0ltYWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyNpZiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQorICAgIE5TU2l6ZSBzaXpl
ID0gTlNNYWtlU2l6ZShpbWFnZS0+d2lkdGgoKSAvIHNjYWxlLCBpbWFnZS0+aGVpZ2h0KCkgLyBz
Y2FsZSk7CisgICAgTlNTaXplIGludFNpemUgPSBOU01ha2VTaXplKGNlaWwoc2l6ZS53aWR0aCks
IGNlaWwoc2l6ZS5oZWlnaHQpKTsKKworICAgIC8vIFBhZCB0aGUgaW1hZ2Ugd2l0aCB0cmFuc3Bh
cmVudCBwaXhlbHMgc28gaXQgaGFzIGFuIGludGVnZXIgYm91bmRhcnkuCisgICAgaWYgKHNpemUu
d2lkdGggIT0gaW50U2l6ZS53aWR0aCB8fCBzaXplLmhlaWdodCAhPSBpbnRTaXplLmhlaWdodCkg
eworICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gaW50SW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhTaXplOmludFNpemVdKTsKKyAgICAgICAgTlNSZWN0IHRvUmVjdCA9
IE5TTWFrZVJlY3QoMCwgaW50U2l6ZS5oZWlnaHQgLSBzaXplLmhlaWdodCwgc2l6ZS53aWR0aCwg
c2l6ZS5oZWlnaHQpOworICAgICAgICBOU1JlY3QgZnJvbVJlY3QgPSBOU01ha2VSZWN0KDAsIDAs
IGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOworCisgICAgICAgIFtpbnRJbWFnZS5n
ZXQoKSBsb2NrRm9jdXNdOworICAgICAgICBbbnNJbWFnZSBkcmF3SW5SZWN0OnRvUmVjdCBmcm9t
UmVjdDpmcm9tUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGVTb3VyY2VPdmVyIGZyYWN0aW9uOjFd
OworICAgICAgICBbaW50SW1hZ2UuZ2V0KCkgdW5sb2NrRm9jdXNdOworCisgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW50SW1hZ2UuZ2V0KCkg
aG90U3BvdDpob3RTcG90XSk7CisgICAgfQorCisgICAgLy8gU2NhbGUgdGhlIGltYWdlIGFuZCBp
dHMgcmVwcmVzZW50YXRpb24gdG8gbWF0Y2ggcmV0aW5hIHJlc29sdXRpb24uCisgICAgW25zSW1h
Z2Ugc2V0U2l6ZTppbnRTaXplXTsKKyAgICBbW1tuc0ltYWdlIHJlcHJlc2VudGF0aW9uc10gb2Jq
ZWN0QXRJbmRleDowXSBzZXRTaXplOmludFNpemVdOworI2VuZGlmCisKICAgICByZXR1cm4gYWRv
cHROUyhbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdlOm5zSW1hZ2UgaG90U3BvdDpob3RT
cG90XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gMDsKQEAg
LTIzMyw3ICsyNjAsMTEgQEAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Q3Vz
dG9tOgorI2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCisgICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBjcmVhdGVDdXN0b21DdXJzb3IobV9pbWFnZS5nZXQoKSwgbV9ob3RTcG90LCBtX2lt
YWdlU2NhbGVGYWN0b3IpOworI2Vsc2UKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0
ZUN1c3RvbUN1cnNvcihtX2ltYWdlLmdldCgpLCBtX2hvdFNwb3QpOworI2VuZGlmCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTUzNykKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDEzLTA5LTExICBFdmFuIFdhbGxhY2UgIDxldmFuLmV4ZUBnbWFpbC5jb20+CisKKyAgICAgICAg
Q3VzdG9tIENTUyBjdXJzb3JzIGRvIG5vdCB1c2UgLXdlYmtpdC1pbWFnZS1zZXQgb24gcmV0aW5h
IGRpc3BsYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjA3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTZXJpYWxpemUgdGhlIGN1cnNvciBpbWFnZSBzY2FsZSBmb3IgU2V0Q3Vyc29yIG1lc3NhZ2Vz
IHNvIGN1c3RvbQorICAgICAgICBDU1MgY3Vyc29ycyB3b3JrIHdpdGggLXdlYmtpdC1pbWFnZS1z
ZXQgb24gcmV0aW5hIGRpc3BsYXlzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudENvZGVyPEN1cnNvcj46OmVu
Y29kZSk6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudENvZGVyPEN1cnNvcj46OmRlY29kZSk6
CisKIDIwMTMtMDktMTEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbR1RLXSBSZW1vdmUgR2FpbCBkZXBlbmRlbmN5IGZyb20gYnVpbGQg
c3lzdGVtIGZvciBHVEszCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTU1MzY4KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw2
ICszMjcsOSBAQAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICBlbmNvZGVJbWFnZShlbmNvZGVy
LCBjdXJzb3IuaW1hZ2UoKSk7CiAgICAgZW5jb2RlciA8PCBjdXJzb3IuaG90U3BvdCgpOworI2lm
IEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCisgICAgZW5jb2RlciA8PCBjdXJzb3IuaW1hZ2VT
Y2FsZUZhY3RvcigpOworI2VuZGlmCiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxDdXJzb3I+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNvcikKQEAgLTM2OCw3
ICszNzEsMTUgQEAKICAgICBpZiAoIWltYWdlLT5yZWN0KCkuY29udGFpbnMoaG90U3BvdCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCisg
ICAgZmxvYXQgc2NhbGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY2FsZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGN1cnNvciA9IEN1cnNvcihpbWFnZS5nZXQoKSwgaG90U3Bv
dCwgc2NhbGUpOworI2Vsc2UKICAgICBjdXJzb3IgPSBDdXJzb3IoaW1hZ2UuZ2V0KCksIGhvdFNw
b3QpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250865</attachid>
            <date>2015-04-15 14:54:55 -0700</date>
            <delta_ts>2015-04-15 16:22:45 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug-120783-20150415145358.patch</filename>
            <type>text/plain</type>
            <size>11378</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ4OTQzYWRjZTNlMjY2
N2Q3YmIyZmU1NTM0ODhhYmQ3YzNlZDBjMi4uYjM4YTQwMGJhMmFmMzZjNjViMzA4Mjk5ZjAyNTA4
ZGUwMDcyYTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTE1ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBDdXN0b20g
Q1NTIGN1cnNvcnMgZG8gbm90IHVzZSAtd2Via2l0LWltYWdlLXNldCBvbiByZXRpbmEgZGlzcGxh
eXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDc4
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTQ5MjE0MzI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFBhdGNoIGJ5IEV2YW4gV2FsbGFjZSA8ZXZhbi5l
eGVAZ21haWwuY29tPi4KKworICAgICAgICBTY2FsZSBOU0N1cnNvciBpbWFnZXMgY29ycmVjdGx5
IHNvIGN1c3RvbSBDU1MgY3Vyc29ycyB3b3JrIHdpdGgKKyAgICAgICAgLXdlYmtpdC1pbWFnZS1z
ZXQgb24gcmV0aW5hIGRpc3BsYXlzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcik6CisKIDIwMTUtMDQtMTQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGNyZWF0aW5nIHNl
bmQgcmlnaHRzIGZyb20gc2hhcmVkIG1lbW9yeSBtb3JlIHJvYnVzdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE1
YjEyYmFjYjcxMGRlMjZkY2Y5ODk0ZThlOTFhZjljMTRkYmU1ZWMuLjc4ZjY3N2E0OWU1ZjMzNzM1
YjVjNTE3NGI1ZTFhMjE3M2NhNmU2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
NS0wNC0xNSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ3VzdG9tIENTUyBjdXJzb3JzIGRvIG5vdCB1c2UgLXdlYmtpdC1pbWFnZS1zZXQgb24g
cmV0aW5hIGRpc3BsYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjA3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgUGF0Y2ggYnkgRXZhbiBXYWxsYWNlIDxldmFuLmV4ZUBnbWFpbC5jb20+LgorCisgICAg
ICAgIFNlcmlhbGl6ZSB0aGUgY3Vyc29yIGltYWdlIHNjYWxlIGZvciBTZXRDdXJzb3IgbWVzc2Fn
ZXMgc28gY3VzdG9tCisgICAgICAgIENTUyBjdXJzb3JzIHdvcmsgd2l0aCAtd2Via2l0LWltYWdl
LXNldCBvbiByZXRpbmEgZGlzcGxheXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6
ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZGVjb2Rl
KToKKwogMjAxNS0wNC0xNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTmV0d29yayBDYWNoZTogSW5saW5lIHNtYWxsIGJvZHkgZGF0YSB0byByZWNvcmQgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDk4YTVkMzk0N2M5MjFjNzA0
MTkxMTZjMDM0MDBkMWY0MGZkZDZhZWMuLjFmNDJhOTE3YzliYTljOGE1NzE0ZWJkMzhiYThkNzIw
Y2I0MDM1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE0MTMsNyAr
MTQxMyw2IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAgICAgICAgICAgICBmbG9hdCBzY2Fs
ZSA9IHN0eWxlSW1hZ2UtPmltYWdlU2NhbGVGYWN0b3IoKTsKICAgICAgICAgICAgIC8vIEdldCBo
b3RzcG90IGFuZCBjb252ZXJ0IGZyb20gbG9naWNhbCBwaXhlbHMgdG8gcGh5c2ljYWwgcGl4ZWxz
LgogICAgICAgICAgICAgSW50UG9pbnQgaG90U3BvdCA9ICgqY3Vyc29ycylbaV0uaG90U3BvdCgp
OwotICAgICAgICAgICAgaG90U3BvdC5zY2FsZShzY2FsZSwgc2NhbGUpOwogICAgICAgICAgICAg
RmxvYXRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcikt
PnNpemUoKTsKICAgICAgICAgICAgIGlmIChjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAppbmRleCBi
NDdmNDAxM2YzOTdhMjc4YmRkNzI2MTdjZjUzNDQ1MTllNzZiNjRhLi4wNTg2ZjRlMzExZDRjNGI3
Yzk3MjkxMjE4MWU4YTcxNDQyOTNlZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaApAQCAt
MTQ2LDcgKzE0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNT1VTRV9D
VVJTT1JfU0NBTEUpCiAgICAgICAgIC8vIEhvdCBzcG90IGlzIGluIGltYWdlIHBpeGVscy4KLSAg
ICAgICAgQ3Vyc29yKEltYWdlKiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QsIGZsb2F0IGltYWdl
U2NhbGVGYWN0b3IpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDdXJzb3IoSW1hZ2UqLCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCwgZmxvYXQgaW1hZ2VTY2FsZUZhY3Rvcik7CiAjZW5kaWYKIAog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB+Q3Vyc29yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0N1cnNvck1hYy5tbQppbmRleCAyN2NkZjZlYTRhZTcxM2Q0MjgxMDA4ZWZmMGFkYTQ1NjU4
NmVhY2Q2Li43NjU2NDIzZDk2MjYxN2M4YTUyZTNkMTJmMzA3Y2M3NmNlNjk1MjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0KQEAgLTQxLDE2ICs0MSw0MyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBTaW1wbGUgTlNDdXJzb3IgY2FsbHMgc2hvdWxkbid0IG5l
ZWQgcHJvdGVjdGlvbiwKIC8vIGJ1dCBjcmVhdGluZyBhIGN1cnNvciB3aXRoIGEgYmFkIGltYWdl
IG1pZ2h0IHRocm93LgogCisjaWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFBvaW50JiBob3RTcG90LCBmbG9hdCBzY2FsZSkKKyNlbHNlCiBzdGF0aWMgUmV0YWluUHRy
PE5TQ3Vyc29yPiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgaG90U3BvdCkKKyNlbmRpZgogewogICAgIC8vIEZJWE1FOiBUaGUgY3Vyc29yIHdvbid0IGFu
aW1hdGUuICBOb3Qgc3VyZSBpZiB0aGF0J3MgYSBiaWcgZGVhbC4KICAgICBOU0ltYWdlKiBuc0lt
YWdlID0gaW1hZ2UtPmdldE5TSW1hZ2UoKTsKICAgICBpZiAoIW5zSW1hZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworI2lmIEVOQUJMRShN
T1VTRV9DVVJTT1JfU0NBTEUpCisgICAgTlNTaXplIHNpemUgPSBOU01ha2VTaXplKGltYWdlLT53
aWR0aCgpIC8gc2NhbGUsIGltYWdlLT5oZWlnaHQoKSAvIHNjYWxlKTsKKyAgICBOU1NpemUgZXhw
YW5kZWRTaXplID0gTlNNYWtlU2l6ZShjZWlsKHNpemUud2lkdGgpLCBjZWlsKHNpemUuaGVpZ2h0
KSk7CisKKyAgICAvLyBQYWQgdGhlIGltYWdlIHdpdGggdHJhbnNwYXJlbnQgcGl4ZWxzIHNvIGl0
IGhhcyBhbiBpbnRlZ2VyIGJvdW5kYXJ5LgorICAgIGlmIChzaXplLndpZHRoICE9IGV4cGFuZGVk
U2l6ZS53aWR0aCB8fCBzaXplLmhlaWdodCAhPSBleHBhbmRlZFNpemUuaGVpZ2h0KSB7CisgICAg
ICAgIFJldGFpblB0cjxOU0ltYWdlPiBleHBhbmRlZEltYWdlID0gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoU2l6ZTpleHBhbmRlZFNpemVdKTsKKyAgICAgICAgTlNSZWN0IHRvUmVj
dCA9IE5TTWFrZVJlY3QoMCwgZXhwYW5kZWRTaXplLmhlaWdodCAtIHNpemUuaGVpZ2h0LCBzaXpl
LndpZHRoLCBzaXplLmhlaWdodCk7CisgICAgICAgIE5TUmVjdCBmcm9tUmVjdCA9IE5TTWFrZVJl
Y3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CisKKyAgICAgICAgW2V4
cGFuZGVkSW1hZ2UgbG9ja0ZvY3VzXTsKKyAgICAgICAgW25zSW1hZ2UgZHJhd0luUmVjdDp0b1Jl
Y3QgZnJvbVJlY3Q6ZnJvbVJlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRlU291cmNlT3ZlciBmcmFj
dGlvbjoxXTsKKyAgICAgICAgW2V4cGFuZGVkSW1hZ2UgdW5sb2NrRm9jdXNdOworCisgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6ZXhwYW5kZWRJ
bWFnZS5nZXQoKSBob3RTcG90OmhvdFNwb3RdKTsKKyAgICB9CisKKyAgICAvLyBTY2FsZSB0aGUg
aW1hZ2UgYW5kIGl0cyByZXByZXNlbnRhdGlvbiB0byBtYXRjaCByZXRpbmEgcmVzb2x1dGlvbi4K
KyAgICBbbnNJbWFnZSBzZXRTaXplOmV4cGFuZGVkU2l6ZV07CisgICAgW1tbbnNJbWFnZSByZXBy
ZXNlbnRhdGlvbnNdIG9iamVjdEF0SW5kZXg6MF0gc2V0U2l6ZTpleHBhbmRlZFNpemVdOworI2Vu
ZGlmCisKICAgICByZXR1cm4gYWRvcHROUyhbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdl
Om5zSW1hZ2UgaG90U3BvdDpob3RTcG90XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBDdXJzb3I6
OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29uc3QKQEAgLTIwNSw3ICsyMzIsMTEgQEAgdm9pZCBD
dXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29uc3QKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEN1cnNvcjo6Q3VzdG9tOgorI2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVDdXN0b21DdXJzb3IobV9pbWFnZS5nZXQo
KSwgbV9ob3RTcG90LCBtX2ltYWdlU2NhbGVGYWN0b3IpOworI2Vsc2UKICAgICAgICAgbV9wbGF0
Zm9ybUN1cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcihtX2ltYWdlLmdldCgpLCBtX2hvdFNwb3Qp
OworI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOTY2Y2Q4ZjkzMjQ2MjJmOGQ3
NmIwOTE2NmVjMGRkOWNkYjNmYzI3Ni4uZjkxOTcxOGJmZThkOWQ1MDdhMjg3NzJjNjU2NTAyZWYw
ZWJhODA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTc2Niw2ICs3NjYsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3Vyc29yJiBjdXJzbwogICAg
IGVuY29kZXIgPDwgdHJ1ZTsKICAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCBjdXJzb3IuaW1hZ2Uo
KSk7CiAgICAgZW5jb2RlciA8PCBjdXJzb3IuaG90U3BvdCgpOworI2lmIEVOQUJMRShNT1VTRV9D
VVJTT1JfU0NBTEUpCisgICAgZW5jb2RlciA8PCBjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpOwor
I2VuZGlmCiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxDdXJzb3I+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNvcikKQEAgLTgwNyw3ICs4MTAsMTUgQEAgYm9v
bCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IEN1cnNvciYgY3Vyc29yKQogICAgIGlmICghaW1hZ2UtPnJlY3QoKS5jb250YWlucyhob3RTcG90
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9TQ0FM
RSkKKyAgICBmbG9hdCBzY2FsZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjYWxlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY3Vyc29yID0gQ3Vyc29yKGltYWdlLmdldCgpLCBo
b3RTcG90LCBzY2FsZSk7CisjZWxzZQogICAgIGN1cnNvciA9IEN1cnNvcihpbWFnZS5nZXQoKSwg
aG90U3BvdCk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDZkODkwOGYzZGZmMjM5NWEyYjA5ODFlN2Vk
ZjAwOGI4ZjYzNjY5MzMuLjExMjYyNWNiZTNkMTAyNGY3YmRlM2EzNmIzM2M2NTBhZGIzMWEyM2Eg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNS0wNC0xNSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3VzdG9tIENTUyBjdXJzb3JzIGRvIG5vdCB1c2UgLXdlYmtpdC1pbWFnZS1zZXQg
b24gcmV0aW5hIGRpc3BsYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjA3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgUGF0Y2ggYnkgRXZhbiBXYWxsYWNlIDxldmFuLmV4ZUBnbWFpbC5jb20+LgorCisg
ICAgICAgIEFkZCBhIG1hbnVhbCB0ZXN0IGZvciBjdXN0b20gQ1NTIGN1cnNvcnMgb24gcmV0aW5h
IGRpc3BsYXlzLgorCisgICAgICAgICogTWFudWFsVGVzdHMvcmV0aW5hLWN1cnNvcnMuaHRtbDog
QWRkZWQuCisKIDIwMTUtMDQtMTAgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNv
bT4KIAogICAgICAgICBDYW5ub3QgY2xpY2sgIk5leHQiIGJ1dHRvbiBvbiBHb29nbGUgdHdvLWZh
Y3RvciBhdXRoIHNldHVwIHBhZ2UKZGlmZiAtLWdpdCBhL01hbnVhbFRlc3RzL3JldGluYS1jdXJz
b3JzLmh0bWwgYi9NYW51YWxUZXN0cy9yZXRpbmEtY3Vyc29ycy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZj
MDA1MTRhYzMzMTMyZjcwODk3MDcyNzRlMDY3NDkwOTlhMDlmODIKLS0tIC9kZXYvbnVsbAorKysg
Yi9NYW51YWxUZXN0cy9yZXRpbmEtY3Vyc29ycy5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzxib2R5
PgorVGhpcyBpcyBhIHRlc3QgZm9yIGN1c3RvbSBDU1MgY3Vyc29ycyBvbiByZXRpbmEgZGlzcGxh
eXMuCitNb3ZlIHRoZSBtb3VzZSBvdmVyIHRoZSBncmVlbiBwaXhlbCBpbiBlYWNoIHJlZCBzcXVh
cmUgYW5kIHRoZSBsZWZ0IHNob3VsZCBtYXRjaCB0aGUgcmlnaHQuCitOb3RlIHRoYXQgTlNDdXJz
b3IgaGFzIGJ1Z3Mgd2l0aCBwcmVjaXNlIHN1Yi1waXhlbCBwb3NpdGlvbmluZyBvbiByZXRpbmEg
ZGlzcGxheXMgYnV0IGlmIHlvdSB6b29tIGluIHVzaW5nIHRoZSBjb250cm9sK3Njcm9sbCBzaG9y
dGN1dCB0aGVuIHRoZSBjdXJzb3Igd2lsbCBzaGlmdCB0byB0aGUgY29ycmVjdCBwb3NpdGlvbi4K
K1NlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNzgzLgorPHNj
cmlwdD4KKworaWYgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICE9PSAyKSB7CisgIGRvY3VtZW50
LndyaXRlKCc8aDE+Tm90ZTogVGhpcyB0ZXN0IG9ubHkgbWFrZXMgc2Vuc2Ugb24gYSByZXRpbmEg
ZGlzcGxheS48L2gxPicpOworfQorCit2YXIgZGVtb1dpZHRoID0gNjQ7Cit2YXIgZGVtb0hlaWdo
dCA9IDY0OworCitmdW5jdGlvbiBjcmVhdGVDaGVja2VyYm9hcmQod2lkdGgsIGhlaWdodCkgewor
ICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJk
Jyk7CisgIHZhciBpbWFnZURhdGEgPSBjLmNyZWF0ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KTsK
KyAgdmFyIGRhdGEgPSBpbWFnZURhdGEuZGF0YTsKKyAgYy5jYW52YXMud2lkdGggPSB3aWR0aDsK
KyAgYy5jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdo
dDsgeSsrKSB7CisgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICB2
YXIgaSA9IHggKyB5ICogd2lkdGggPDwgMjsKKyAgICAgIGRhdGFbaV0gPSBkYXRhW2kgKyAxXSA9
IGRhdGFbaSArIDJdID0gKHggXiB5KSAmIDEgPyAyNTUgOiAwOworICAgICAgZGF0YVtpICsgM10g
PSAyNTU7CisgICAgfQorICB9CisgIGMucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7Cisg
IHJldHVybiBjLmNhbnZhczsKK30KKworZnVuY3Rpb24gY3JlYXRlUmVuZGVyKHgsIHksIHdpZHRo
LCBoZWlnaHQsIHNjYWxlKSB7CisgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2Fu
dmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKyAgdmFyIGNoZWNrZXJib2FyZCA9IGNyZWF0ZUNoZWNr
ZXJib2FyZCh3aWR0aCwgaGVpZ2h0KTsKKyAgYy5jYW52YXMud2lkdGggPSBkZW1vV2lkdGggKiAy
OworICBjLmNhbnZhcy5oZWlnaHQgPSBkZW1vSGVpZ2h0ICogMjsKKyAgYy5jYW52YXMuc3R5bGUu
d2lkdGggPSBkZW1vV2lkdGggKyAncHgnOworICBjLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSBkZW1v
SGVpZ2h0ICsgJ3B4JzsKKyAgYy5maWxsU3R5bGUgPSAnI0YwMCc7IGMuZmlsbFJlY3QoMCwgMCwg
ZGVtb1dpZHRoICogMiwgZGVtb0hlaWdodCAqIDIpOworICBjLmZpbGxTdHlsZSA9ICcjRDAwJzsg
Yy5maWxsUmVjdCgwLCAwLCBkZW1vV2lkdGgsIGRlbW9IZWlnaHQpOworICBjLmZpbGxTdHlsZSA9
ICcjMEYwJzsgYy5maWxsUmVjdChkZW1vV2lkdGgsIGRlbW9IZWlnaHQsIDIsIDIpOworICBjLmRy
YXdJbWFnZShjaGVja2VyYm9hcmQsIGRlbW9XaWR0aCAtIDIgKiB4LCBkZW1vSGVpZ2h0IC0gMiAq
IHksIGNoZWNrZXJib2FyZC53aWR0aCAqIDIgLyBzY2FsZSwgY2hlY2tlcmJvYXJkLmhlaWdodCAq
IDIgLyBzY2FsZSk7CisgIHJldHVybiBjLmNhbnZhczsKK30KKwordmFyIG51bWJlciA9IDA7CisK
K2Z1bmN0aW9uIGNyZWF0ZUN1cnNvckRlbW8oeCwgeSwgd2lkdGgsIGhlaWdodCwgc2NhbGUpIHsK
KyAgdmFyIGN1cnNvciA9ICctd2Via2l0LWltYWdlLXNldCh1cmwoJyArIGNyZWF0ZUNoZWNrZXJi
b2FyZCh3aWR0aCwgaGVpZ2h0KS50b0RhdGFVUkwoKSArICcpICcgKyBzY2FsZSArICd4KSAnICsg
eCArICcgJyArIHkgKyAnLCBoZWxwJzsKKyAgZG9jdW1lbnQud3JpdGUoJzxoMyBzdHlsZT0ibWFy
Z2luLWJvdHRvbTowOyI+VGVzdCAnICsgKytudW1iZXIgKyAnPC9oMz4nICsKKyAgICAnPGRpdiBz
dHlsZT0icG9zaXRpb246cmVsYXRpdmU7d2lkdGg6JyArIGRlbW9XaWR0aCArICdweDtoZWlnaHQ6
JyArIGRlbW9IZWlnaHQgKyAncHg7YmFja2dyb3VuZDojRjAwO2Rpc3BsYXk6aW5saW5lLWJsb2Nr
O21hcmdpbi1yaWdodDoyMHB4OyI+JyArCisgICAgICAnPGRpdiBzdHlsZT0icG9zaXRpb246YWJz
b2x1dGU7d2lkdGg6JyArIGRlbW9XaWR0aCAvIDIgKyAncHg7aGVpZ2h0OicgKyBkZW1vSGVpZ2h0
IC8gMiArICdweDtiYWNrZ3JvdW5kOiNEMDA7Ij48L2Rpdj4nICsKKyAgICAgICc8ZGl2IHN0eWxl
PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OicgKyBkZW1vV2lkdGggLyAyICsgJ3B4O3RvcDonICsg
ZGVtb0hlaWdodCAvIDIgKyAncHg7d2lkdGg6MXB4O2hlaWdodDoxcHg7YmFja2dyb3VuZDojMEYw
O2N1cnNvcjonICsgY3Vyc29yICsgJzsiPjwvZGl2PicgKworICAgICc8L2Rpdj4nKTsKKyAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChjcmVhdGVSZW5kZXIoeCwgeSwgd2lkdGgsIGhlaWdodCwg
c2NhbGUpKTsKK30KKworZG9jdW1lbnQud3JpdGUoJzxoMj5TaXplIHRlc3RzPC9oMj4nKTsKK2Ny
ZWF0ZUN1cnNvckRlbW8oMCwgMCwgNjQsIDY0LCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMCwgMCwg
NjMsIDY0LCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMCwgMCwgNjQsIDYzLCAyKTsKK2NyZWF0ZUN1
cnNvckRlbW8oMCwgMCwgNjMsIDYzLCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMCwgMCwgNSwgNCwg
Mik7CitjcmVhdGVDdXJzb3JEZW1vKDAsIDAsIDUsIDMsIDIpOworY3JlYXRlQ3Vyc29yRGVtbygw
LCAwLCA0LCAzLCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMCwgMCwgMiwgMiwgMik7CitjcmVhdGVD
dXJzb3JEZW1vKDAsIDAsIDEsIDEsIDIpOworCitkb2N1bWVudC53cml0ZSgnPGgyPkhvdCBzcG90
IHRlc3RzPC9oMj4nKTsKK2NyZWF0ZUN1cnNvckRlbW8oMTUsIDE1LCA2NCwgNjQsIDIpOworY3Jl
YXRlQ3Vyc29yRGVtbygxNSwgMTUsIDMyLCAzMiwgMSk7CitjcmVhdGVDdXJzb3JEZW1vKDMxLCAz
MSwgNjQsIDY0LCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMzEsIDMxLCAzMiwgMzIsIDEpOworY3Jl
YXRlQ3Vyc29yRGVtbygxLCAxLCA5LCA5LCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMTYsIDAsIDY0
LCA2NCwgMik7CitjcmVhdGVDdXJzb3JEZW1vKDAsIDE2LCA2NCwgNjQsIDIpOworY3JlYXRlQ3Vy
c29yRGVtbygzLCA0LCA4LCAxMCwgMik7CitjcmVhdGVDdXJzb3JEZW1vKDIsIDMsIDcsIDksIDIp
OworY3JlYXRlQ3Vyc29yRGVtbygxLCAwLCA1LCAzLCAyKTsKK2NyZWF0ZUN1cnNvckRlbW8oMiwg
MSwgNSwgMywgMik7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>