<?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>17113</bug_id>
          
          <creation_ts>2008-01-31 01:54:22 -0800</creation_ts>
          <short_desc>&quot;event.ctrlKey&quot; is always false when dragging an element with &quot;ctrl&quot; key down</short_desc>
          <delta_ts>2010-03-15 13:12:55 -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>WebCore Misc.</component>
          <version>523.x (Safari 3)</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="fengjin">fengjin</reporter>
          <assigned_to name="Jessie Berlin">jberlin</assigned_to>
          <cc>ap</cc>
    
    <cc>jberlin</cc>
    
    <cc>mitz</cc>
    
    <cc>rboucher</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68902</commentid>
    <comment_count>0</comment_count>
    <who name="fengjin">fengjin</who>
    <bug_when>2008-01-31 01:54:22 -0800</bug_when>
    <thetext>repro:
(1) Keeping the ctrl key down, and drag a link 
(2) Drag it over a &quot;div&quot; element
(3) On the onDragOver event of the &quot;div&quot; element, testing the event.ctrlKey property, its always &quot;false&quot;. It should be &quot;true&quot;


------- HTML source repro this: -------
&lt;html&gt;
&lt;script language=&quot;javascript&quot;&gt;

window.onload = function()
{
	var oDrop = document.getElementById(&quot;divDrop&quot;);
	oDrop.addEventListener(&quot;dragover&quot;, onDragOverDiv, false);
	oDrop.addEventListener(&quot;dragenter&quot;, onDragOverDiv, false);
}

function onDragOverDiv(e)
{
	e = e || window.event;
	e.dataTransfer.dropEffect = &quot;copy&quot;;
	shwTxt(&quot;e.ctrlKey == : &quot; + e.ctrlKey);
}

function shwTxt(s)
{	
	document.getElementById(&quot;divOutput&quot;).innerHTML += &quot;&lt;br&gt;&quot; + s;	
}
&lt;/script&gt;

&lt;body&gt;

&lt;div id=&quot;divDrop&quot;&gt;drop on me&lt;/div&gt;
&lt;a href=&quot;www.google.com&quot; id=&quot;divDrag&quot;&gt;Drag me&lt;/a&gt;

&lt;div id=&quot;divOutput&quot; style=&quot;top:200px&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68908</commentid>
    <comment_count>1</comment_count>
      <attachid>18814</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-01-31 03:00:49 -0800</bug_when>
    <thetext>Created attachment 18814
test case

Same test, as an attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68909</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-01-31 03:07:21 -0800</bug_when>
    <thetext>Confirmed with r29869.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159387</commentid>
    <comment_count>3</comment_count>
    <who name="boucher">rboucher</who>
    <bug_when>2009-10-30 11:57:19 -0700</bug_when>
    <thetext>Should be noted that this isn&apos;t just true for the control key. It&apos;s all keyboard information (shift, meta, alt, etc.).

Section 7.9.3 of HTML5 states:

&quot;the mouse and key attributes [must be] set according to the state of the input devices as they would be for user interaction events&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199398</commentid>
    <comment_count>4</comment_count>
      <attachid>50662</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-13 13:18:12 -0800</bug_when>
    <thetext>Created attachment 50662
Implement returning the correct state of the modifier keys being pressed or not during a drag for Mac, Chromium, Haiku, and Windows platforms.

Tested on Mac OS X 10.6

As noted in the ChangeLog, did not add in tests here because of a bug with DumpRenderTree:

 I have written a test for the Mac platform that is not included in this patch and depends on https://bugs.webkit.org/show_bug.cgi?id=36085 (DumpRenderTree eventSender.mouseDown should change NSApp currentEvent return value) being fixed. Should I include it in this fix and just add it to the skip list until that bug is fixed?

Also, should I split off this bug into multiple smaller bugs, one per each platform which I did not provide an implementation? (Qt, GTK, EFL, WX)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199403</commentid>
    <comment_count>5</comment_count>
      <attachid>50662</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-13 13:31:37 -0800</bug_when>
    <thetext>Comment on attachment 50662
Implement returning the correct state of the modifier keys being pressed or not during a drag for Mac, Chromium, Haiku, and Windows platforms.

Will post a patch soon that usesPlatformKeyboardEvent::getCurrentModifierState() from http://trac.webkit.org/changeset/55909 instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199434</commentid>
    <comment_count>6</comment_count>
      <attachid>50665</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-13 17:36:06 -0800</bug_when>
    <thetext>Created attachment 50665
Use the new PlatformKeyboardEvent::getCurrentModifierState() to add the information about which modifier keys are pressed to the drag event

As in the last patch, I did not add in tests here (hence the No new tests (OOPS!) in the ChangeLog) because of a bug with DumpRenderTree, similar to the bug https://bugs.webkit.org/show_bug.cgi?id=36085 . At least on the Mac, the mechanism used to implement getCurrentModifierState (GetCurrentKeyModifiers()) does not appear to get modified by the eventSender.mouseDown method.

Should I include that failing test in this fix and just add it to the skip list for now? Any ideas on what might be used to make GetCurrentKeyModifiers (which appears to be a Carbon method) use the information from the eventSender.mouseDown method?

The other option would be a manual test, but I talked earlier to Krit, and he strongly suggested against that (for the good reason that manual tests are less likely to get run).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199436</commentid>
    <comment_count>7</comment_count>
      <attachid>50665</attachid>
    <who name="">mitz</who>
    <bug_when>2010-03-13 17:44:56 -0800</bug_when>
    <thetext>Comment on attachment 50665
Use the new PlatformKeyboardEvent::getCurrentModifierState() to add the information about which modifier keys are pressed to the drag event

Resolving bug 36085 will not affect the testability of this change, because getCurrentModifierState does not use -currentEvent on Mac OS X. I think it cannot use -currentEvent because changes to modifier key state don’t result in an event, but I could be wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199438</commentid>
    <comment_count>8</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-13 19:08:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 50665 [details])
&gt; Resolving bug 36085 will not affect the testability of this change

Right, resolving that bug won&apos;t do anything in this case. It would have helped with my previous patch. However, I am still fairly sure that there is an issue with eventSender.mouseDown that is causing my layout test to fail while my manual testing works. Should I just leave this with no tests?

&gt; , because
&gt; getCurrentModifierState does not use -currentEvent on Mac OS X. I think it
&gt; cannot use -currentEvent because changes to modifier key state don’t result in
&gt; an event, but I could be wrong.

Do you know of any way to essentially trick getCurrentModifierState into believing that there is a modifier key being held down? 

As it currently stands, eventSender.mouseDown just sends the new event with the modifier key state set according to the arguments to eventSender.mouseDown to the NSView. If there is a way to get that information to getCurrentModifierState, then I am pretty sure my layout test would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199441</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-13 19:22:32 -0800</bug_when>
    <thetext>As an aside, it&apos;s rather suspicious that PlatformKeyboardEvent::getCurrentModifierState() uses GetCurrentKeyModifiers(), and not GetCurrentEventKeyModifiers(). But I don&apos;t think that even the latter will be affected by anything done at AppKit level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199445</commentid>
    <comment_count>10</comment_count>
      <attachid>50665</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-03-13 21:16:01 -0800</bug_when>
    <thetext>Comment on attachment 50665
Use the new PlatformKeyboardEvent::getCurrentModifierState() to add the information about which modifier keys are pressed to the drag event

Please remove the Oops before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199446</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-03-13 21:19:46 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; As an aside, it&apos;s rather suspicious that
&gt; PlatformKeyboardEvent::getCurrentModifierState() uses GetCurrentKeyModifiers(),
&gt; and not GetCurrentEventKeyModifiers().

Why? It is used (in EventHandler.cpp) to fabricate a fake event with the current state of the modifier keys, not their last known state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199448</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-13 21:33:22 -0800</bug_when>
    <thetext>That&apos;s I didn&apos;t say it was incorrect, just suspicious. Why do we want to use modifier state that isn&apos;t event-synchronized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199468</commentid>
    <comment_count>13</comment_count>
      <attachid>50665</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-14 08:45:44 -0700</bug_when>
    <thetext>Comment on attachment 50665
Use the new PlatformKeyboardEvent::getCurrentModifierState() to add the information about which modifier keys are pressed to the drag event

Committed in r55974: http://trac.webkit.org/changeset/55974</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199705</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-15 10:00:16 -0700</bug_when>
    <thetext>Looking at this change though, I&apos;d say that using non-synchronized modifier state is likely incorrect! This difference can become noticeable on a busy machine.

Jessie, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199710</commentid>
    <comment_count>15</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-15 10:23:52 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Looking at this change though, I&apos;d say that using non-synchronized modifier
&gt; state is likely incorrect! This difference can become noticeable on a busy
&gt; machine.
&gt; 
&gt; Jessie, what do you think?

I could see how on a busy / slow enough machine if we know that GetCurrentEventKeyModifiers remains in sync with the slower execution of this DragController code, then it might be correct to use GetCurrentEventKeyModifiers instead of GetCurrentKeyModifiers (which might report the immediate state instead of the one in sync with the slowed down DragController code).

However, do we know that the GetCurrentEventKeyModifiers would necessarily remain in sync with slow execution of the DragController code? Or is this an unrealistic worry?

If we don&apos;t, then I think either solution would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199717</commentid>
    <comment_count>16</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-03-15 10:45:23 -0700</bug_when>
    <thetext>If this code runs as part of handling an event, shouldn&apos;t it just pass the event along? I&apos;m confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199785</commentid>
    <comment_count>17</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2010-03-15 13:12:55 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; If this code runs as part of handling an event, shouldn&apos;t it just pass the
&gt; event along? I&apos;m confused.

It doesn&apos;t run directly as part of handling the actual dragging event, at least on the Mac. Once DragController is told to start the drag as a result of the EventHandler figuring out that the mouse move event is actually a drag, it hands it off to doSystemDrag.

On the Mac, this means that it goes into NSCoreDragManager. When NSCoreDragTrackingProc tells the WebView about the dragging, it doesn&apos;t give it an event, it gives it an NSDraggingInfo, in which there is a lot of the information that would be in an event but not the information about the state of the keys that are pressed.

As I understand it, that is why there is no event to pass along and DragController has to create a PlatformMouseEvent to work with. We could store the original event when the drag got started and use the information from that, but that might become incorrect if the user let go of some keys in the process of doing the drag.

I don&apos;t know what event would be the &quot;CurrentEvent&quot; used by GetCurrentEventKeyModifiers, but I was going along the assumption that it would be more recent than the original one that caused DragController to call doSystemDrag in the first place but might be in sync with the DragController code executing when I was responding to Alexey&apos;s question. That probably was not an assumption I should have made.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18814</attachid>
            <date>2008-01-31 03:00:49 -0800</date>
            <delta_ts>2008-01-31 03:00:49 -0800</delta_ts>
            <desc>test case</desc>
            <filename>ctrl-drag.html</filename>
            <type>text/html</type>
            <size>682</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWw+CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgoKd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkKewogICAgICAgIHZhciBvRHJvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aXZEcm9wIik7CiAgICAgICAgb0Ryb3AuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBvbkRy
YWdPdmVyRGl2LCBmYWxzZSk7CiAgICAgICAgb0Ryb3AuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2Vu
dGVyIiwgb25EcmFnT3ZlckRpdiwgZmFsc2UpOwp9CgpmdW5jdGlvbiBvbkRyYWdPdmVyRGl2KGUp
CnsKICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgZS5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCA9ICJjb3B5IjsKICAgICAgICBzaHdUeHQoImUuY3RybEtleSA9PSA6ICIgKyBl
LmN0cmxLZXkpOwp9CgpmdW5jdGlvbiBzaHdUeHQocykKeyAgICAgICAKICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZGl2T3V0cHV0IikuaW5uZXJIVE1MICs9ICI8YnI+IiArIHM7ICAg
Cn0KPC9zY3JpcHQ+Cgo8Ym9keT4KCjxkaXYgaWQ9ImRpdkRyb3AiPmRyb3Agb24gbWU8L2Rpdj4K
PGEgaHJlZj0id3d3Lmdvb2dsZS5jb20iIGlkPSJkaXZEcmFnIj5EcmFnIG1lPC9hPgoKPGRpdiBp
ZD0iZGl2T3V0cHV0IiBzdHlsZT0idG9wOjIwMHB4Ij48L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50662</attachid>
            <date>2010-03-13 13:18:12 -0800</date>
            <delta_ts>2010-03-13 13:31:36 -0800</delta_ts>
            <desc>Implement returning the correct state of the modifier keys being pressed or not during a drag for Mac, Chromium, Haiku, and Windows platforms.</desc>
            <filename>addModifierKeyInfoToDragEvent.patch</filename>
            <type>text/plain</type>
            <size>11952</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDhiOTI3Mi4uNzcyNjY0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wMy0xMyAgSmVzc2llIEJlcmxp
biAgPGpiZXJsaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCdWcgMTcxMTMgLSAiZXZlbnQuY3RybEtleSIgaXMgYWx3YXlzIGZh
bHNlIHdoZW4gZHJhZ2dpbmcgYW4gZWxlbWVudCB3aXRoICJjdHJsIiBrZXkgZG93bi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTEzCisKKyAgICAg
ICAgUmVwbGFjZXMgaXNDb3B5S2V5RG93biB3aXRoIGlzTW9kaWZpZXJLZXlEb3duIGFuZCBhZGRz
IGJhc2ljIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIE1hYywgQ2hyb21pdW0sIEhhaWt1LCBhbmQg
V2luZG93cyBwbGF0Zm9ybXMuIEZvciBhbGwgb3RoZXIgcGxhdGZvcm1zLCBjb250aW51ZXMgdG8g
cmV0dXJuIGZhbHNlIGZvciBhbGwgbW9kaWZpZXIga2V5cy4KKworICAgICAgICBEb2VzIG5vdCBh
ZGQgYW55IG5ldyB0ZXN0cyBiZWNhdXNlIG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjA4NSAuIE9uIG90aGVyIHBsYXRmb3JtcyBiZXNpZGVzIE1hYywgSSBhc3N1
bWUgYSBzaW1pbGFyIGlzc3VlIHdpbGwgYXJpc2UgYXMgZWFjaCBwbGF0Zm9ybSBoYXMgYSBzcGVj
aWZpYyB3YXkgb2YgZ2V0dGluZyBhdCB0aGUga2V5cyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcg
aGVsZCBkb3duLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlTW91c2VFdmVudCk6CisgICAgICAgIEdl
dCB0aGUgbW9kaWZpZXIga2V5cyBjdXJyZW50bHkgYmVpbmcgaGVsZCBkb3duIGFuZCB1c2UgdGhl
bSB0byBjcmVhdGUgdGhlIFBsYXRmb3JtTW91c2VFdmVudCB0aGF0IHdpbGwgYmUgdXNlZCBmb3Ig
dGhlIGRyYWcuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0lzTW92ZSk6
CisgICAgICAgIFVzZSBpc01vZGlmaWVyS2V5RG93biBpbnN0ZWFkIG9mIGlzQ29weUtleURvd24u
CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6Oik6CisgICAgICAgIEFkZCBmdW5jdGlvbiB0byByZXR1cm4gd2hldGhlciBh
IGdpdmVuIE1vZGlmaWVyS2V5IGlzIGJlaW5nIGhlbGQgZG93bi4KKyAgICAgICAgKiBwYWdlL2Fu
ZHJvaWQvRHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
b250cm9sbGVyOjppc01vZGlmaWVyS2V5RG93bik6CisgICAgICAgIFVuc3VyZSB3aGF0IHRoZSBj
b3JyZWN0IG1hbm5lciBvZiBnZXR0aW5nIHRoZSBzdGF0ZSBvZiBrZXlzIGJlaW5nIHByZXNzZWQg
Zm9yIHRoaXMgcGxhdGZvcm0gaXMuCisgICAgICAgICogcGFnZS9jaHJvbWl1bS9EcmFnQ29udHJv
bGxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppc01v
ZGlmaWVyS2V5RG93bik6CisgICAgICAgIFVzZSBHZXRBc3luY0tleVN0YXRlIG9uIFdpbmRvd3Mg
YW5kIGFkZCBGSVhNRSB0byBmaW5kIHdoYXQgdGhlIG1ldGEga2V5IGlzIG9uIFdpbmRvd3MuCisg
ICAgICAgICogcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmlzTW9kaWZpZXJLZXlEb3duKToKKyAgICAgICAgVW5zdXJlIHdo
YXQgdGhlIGNvcnJlY3QgbWFubmVyIG9mIGdldHRpbmcgdGhlIHN0YXRlIG9mIGtleXMgYmVpbmcg
cHJlc3NlZCBmb3IgdGhpcyBwbGF0Zm9ybSBpcy4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29u
dHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6aXNNb2Rp
ZmllcktleURvd24pOgorICAgICAgICBEaXR0by4KKyAgICAgICAgKiBwYWdlL2hhaWt1L0RyYWdD
b250cm9sbGVySGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Omlz
TW9kaWZpZXJLZXlEb3duKToKKyAgICAgICAgVXNlIG1vZGlmaWVycygpIHRvIGdldCB0aGUgbW9k
aWZpZXIga2V5cyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgcHJlc3NlZCBhbmQgYWRkIGEgRklY
TUUgdG8gZmluZCB3aGF0IHRoZSBtZXRhIGtleSBpcyBvbiB0aGUgSGFpa3UgcGxhdGZvcm0uCisg
ICAgICAgICogcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6aXNNb2RpZmllcktleURvd24pOgorICAgICAgICBHZXQgdGhlIGN1
cnJlbnRFdmVudCBmcm9tIHRoZSBOU0FwcCBhbmQgY2hlY2sgd2l0aCBtb2RpZmllckZsYWdzIGFy
ZSBzZXQgb24gaXQuCisgICAgICAgICogcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppc01vZGlmaWVyS2V5RG93bik6CisgICAg
ICAgIFVuc3VyZSB3aGF0IHRoZSBjb3JyZWN0IG1hbm5lciBvZiBnZXR0aW5nIHRoZSBzdGF0ZSBv
ZiBrZXlzIGJlaW5nIHByZXNzZWQgZm9yIHRoaXMgcGxhdGZvcm0gaXMuCisgICAgICAgICogcGFn
ZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRy
b2xsZXI6OmlzTW9kaWZpZXJLZXlEb3duKToKKyAgICAgICAgQWRkZWQgYW4gaW1wbGVtZW50YXRp
b24gZm9yIFdpbmRvd3MgYW5kIGFkZCBhIEZJWE1FIHRvIGZpbmQgd2hhdCB0aGUgbWV0YSBrZXkg
aXMgb24gV2luZG93cy4KKyAgICAgICAgKiBwYWdlL3d4L0RyYWdDb250cm9sbGVyV3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmlzTW9kaWZpZXJLZXlEb3duKToKKyAg
ICAgICAgVW5zdXJlIHdoYXQgdGhlIGNvcnJlY3QgbWFubmVyIG9mIGdldHRpbmcgdGhlIHN0YXRl
IG9mIGtleXMgYmVpbmcgcHJlc3NlZCBmb3IgdGhpcyBwbGF0Zm9ybSBpcy4KKwogMjAxMC0wMy0x
MSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIENocm9taXVtIG1hYyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAw
NmQzNjQ5Li4zOTM2Yzc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTY4LDEyICs2OCwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQg
Y3JlYXRlTW91c2VFdmVudChEcmFnRGF0YSogZHJhZ0RhdGEpCitQbGF0Zm9ybU1vdXNlRXZlbnQg
RHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZU1vdXNlRXZlbnQoRHJhZ0RhdGEqIGRyYWdEYXRhKQogewot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUuCiAgICAgcmV0
dXJuIFBsYXRmb3JtTW91c2VFdmVudChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSwgZHJhZ0Rh
dGEtPmdsb2JhbFBvc2l0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0
QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBj
dXJyZW50VGltZSgpKTsKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRv
biwgTW91c2VFdmVudE1vdmVkLCAwLCBpc01vZGlmaWVyS2V5RG93bihTaGlmdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpc01vZGlmaWVyS2V5RG93bihDdHJsKSwgaXNNb2RpZmll
cktleURvd24oQWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9kaWZpZXJL
ZXlEb3duKE1ldGEpLCBjdXJyZW50VGltZSgpKTsKIH0KIAogRHJhZ0NvbnRyb2xsZXI6OkRyYWdD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIERyYWdDbGllbnQqIGNsaWVudCkKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50
RnJvbURyYWdEYXRhKERyYWdEYXRhKiBkcmFnRAogCiBib29sIERyYWdDb250cm9sbGVyOjpkcmFn
SXNNb3ZlKFNlbGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4gbV9k
b2N1bWVudFVuZGVyTW91c2UgPT0gbV9kcmFnSW5pdGlhdG9yICYmIHNlbGVjdGlvbi0+aXNDb250
ZW50RWRpdGFibGUoKSAmJiAhaXNDb3B5S2V5RG93bigpOworICAgIHJldHVybiBtX2RvY3VtZW50
VW5kZXJNb3VzZSA9PSBtX2RyYWdJbml0aWF0b3IgJiYgc2VsZWN0aW9uLT5pc0NvbnRlbnRFZGl0
YWJsZSgpICYmICFpc01vZGlmaWVyS2V5RG93bihDb3B5KTsKIH0KIAogLy8gRklYTUU6IFRoaXMg
bWV0aG9kIGlzIHBvb3JseSBuYW1lZC4gIFdlJ3JlIGp1c3QgY2xlYXJpbmcgdGhlIHNlbGVjdGlv
biBmcm9tIHRoZSBkb2N1bWVudCB0aGlzIGRyYWcgaXMgZXhpdGluZy4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKaW5kZXggM2IyYjA4My4uYjE5Mzg1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTkyLDYg
KzkyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0
IERyYWdJbWFnZUFscGhhOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZW51bSBNb2RpZmllcktl
eSB7CisgICAgICAgICAgICBDb3B5LAorICAgICAgICAgICAgU2hpZnQsCisgICAgICAgICAgICBD
dHJsLAorICAgICAgICAgICAgQWx0LAorICAgICAgICAgICAgTWV0YQorICAgICAgICB9OworCiAg
ICAgICAgIGJvb2wgY2FuUHJvY2Vzc0RyYWcoRHJhZ0RhdGEqKTsKICAgICAgICAgYm9vbCBjb25j
bHVkZUVkaXREcmFnKERyYWdEYXRhKik7CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ0VudGVy
ZWRPclVwZGF0ZWQoRHJhZ0RhdGEqKTsKQEAgLTEwMSw3ICsxMDksOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbihEcmFnRGF0YSopOwog
ICAgICAgICB2b2lkIGNhbmNlbERyYWcoKTsKICAgICAgICAgYm9vbCBkcmFnSXNNb3ZlKFNlbGVj
dGlvbkNvbnRyb2xsZXIqKTsKLSAgICAgICAgYm9vbCBpc0NvcHlLZXlEb3duKCk7CisgICAgICAg
IGJvb2wgaXNNb2RpZmllcktleURvd24oTW9kaWZpZXJLZXkpOworCisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBjcmVhdGVNb3VzZUV2ZW50KERyYWdEYXRhKik7CiAKICAgICAgICAgdm9pZCBt
b3VzZU1vdmVkSW50b0RvY3VtZW50KERvY3VtZW50Kik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9hbmRyb2lkL0RyYWdDb250cm9sbGVyQW5kcm9pZC5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5k
cm9pZC9EcmFnQ29udHJvbGxlckFuZHJvaWQuY3BwCmluZGV4IGIyMGFiNjAuLmQ4MjY2ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmRyb2lkL0RyYWdDb250cm9sbGVyQW5kcm9pZC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL2FuZHJvaWQvRHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcApAQCAt
MzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OmlzQ29weUtleURvd24oKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNNb2RpZmllcktleURv
d24oTW9kaWZpZXJLZXkpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL2Nocm9taXVtL0RyYWdDb250cm9sbGVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9w
YWdlL2Nocm9taXVtL0RyYWdDb250cm9sbGVyQ2hyb21pdW0uY3BwCmluZGV4IDdiMDk1OGQuLjY2
ZmY4MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9EcmFnQ29udHJvbGxlckNo
cm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRHJhZ0NvbnRyb2xsZXJDaHJv
bWl1bS5jcHAKQEAgLTU0LDExICs1NCwyMyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVy
OjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0RhdGEt
PmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkg
OiBEcmFnT3BlcmF0aW9uTm9uZTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5
RG93bigpCitib29sIERyYWdDb250cm9sbGVyOjppc01vZGlmaWVyS2V5RG93bihNb2RpZmllcktl
eSBrZXkpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBPUyBzcGVjaWZpYy4g
IERlbGVnYXRlIHRvIHRoZSBlbWJlZGRlciBpbnN0ZWFkLgogI2lmIE9TKFdJTkRPV1MpCi0gICAg
cmV0dXJuIDo6R2V0QXN5bmNLZXlTdGF0ZShWS19DT05UUk9MKTsKKyAgICBzd2l0Y2ggKGtleSkg
eworICAgIGNhc2UgQ29weToKKyAgICBjYXNlIEN0cmw6CisgICAgICAgIHJldHVybiA6OkdldEFz
eW5jS2V5U3RhdGUoVktfQ09OVFJPTCk7CisgICAgY2FzZSBTaGlmdDoKKyAgICAgICAgcmV0dXJu
IDo6R2V0QXN5bmNLZXlTdGF0ZShWS19TSElGVCk7CisgICAgY2FzZSBBbHQ6CisgICAgICAgIHJl
dHVybiA6OkdldEFzeW5jS2V5U3RhdGUoVktfTUVOVSk7CisgICAgY2FzZSBNZXRhOgorICAgICAg
ICAvLyBGSVhNRTogV2hhdCBpcyB0aGUgIm1ldGEiIGtleSBvbiBXaW5kb3dzPworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAjZWxzZQogICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHAgYi9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAppbmRleCAwYzVm
MDAyLi4wYjlkOWQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVy
RWZsLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tSW5z
ZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEgPSAw
Ljc1ZjsKIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bigpCitib29sIERyYWdD
b250cm9sbGVyOjppc01vZGlmaWVyS2V5RG93bihNb2RpZmllcktleSkKIHsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3Rr
LmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGMwNjRh
ODcuLjJiNTRlMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIGNvbnN0IGludCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ljb25Cb3R0b21JbnNl
dCA9IDM7CiAKIGNvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFnSW1hZ2VBbHBoYSA9IDAu
NzVmOwogCi1ib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKCkKK2Jvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmlzTW9kaWZpZXJLZXlEb3duKE1vZGlmaWVyS2V5KQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9oYWlrdS9EcmFnQ29udHJvbGxlckhh
aWt1LmNwcCBiL1dlYkNvcmUvcGFnZS9oYWlrdS9EcmFnQ29udHJvbGxlckhhaWt1LmNwcAppbmRl
eCBlZjA4YWMyLi40MmNkZWIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRHJhZ0Nv
bnRyb2xsZXJIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2hhaWt1L0RyYWdDb250cm9sbGVy
SGFpa3UuY3BwCkBAIC00NCwxMiArNDQsMjMgQEAgY29uc3QgaW50IERyYWdDb250cm9sbGVyOjpE
cmFnSWNvbkJvdHRvbUluc2V0ID0gMzsKIGNvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFn
SW1hZ2VBbHBoYSA9IDAuNzVmOwogCiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURv
d24oKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNNb2RpZmllcktleURvd24oTW9kaWZpZXJLZXkg
a2V5KQogewotICAgIGlmIChtb2RpZmllcnMoKSAmIEJfQ09NTUFORF9LRVkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIGludCBtb2RpZmllcktleXMgPSBt
b2RpZmllcnMoKTsKKyAgICBzd2l0Y2ggKGtleSkgeworICAgIGNhc2UgQ29weToKKyAgICAgICAg
cmV0dXJuIG1vZGlmaWVyS2V5cyAmIEJfQ09NTUFORF9LRVk7CisgICAgY2FzZSBTaGlmdDoKKyAg
ICAgICAgcmV0dXJuIG1vZGlmaWVyS2V5cyAmIEJfU0hJRlRfS0VZOworICAgIGNhc2UgQ3RybDoK
KyAgICAgICAgcmV0dXJuIG1vZGlmaWVyS2V5cyAmIEJfQ09OVFJPTF9LRVk7CisgICAgY2FzZSBB
bHQ6CisgICAgICAgIHJldHVybiBtb2RpZmllcktleXMgJiBCX09QVElPTl9LRVk7CisgICAgY2Fz
ZSBNZXRhOgorICAgICAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGUgIm1ldGEiIGtleSBmb3IgdGhl
IEhhaWt1IHBsYXRmb3JtPworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiB9CiAKIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJh
Z0RhdGEqIGRyYWdEYXRhKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbSBiL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KaW5kZXgg
ZjA4MDIzMi4uYTU3N2JhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBA
IC00OSwxOCArNDksMzEgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJh
dGlvbihEcmFnRGF0YSopCiAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwogfSAKIAotYm9v
bCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bigpCitib29sIERyYWdDb250cm9sbGVyOjpp
c01vZGlmaWVyS2V5RG93bihNb2RpZmllcktleSkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
ICNlbHNlCiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oKQorYm9vbCBEcmFn
Q29udHJvbGxlcjo6aXNNb2RpZmllcktleURvd24oTW9kaWZpZXJLZXkga2V5KQogewotICAgIHJl
dHVybiBbW05TQXBwIGN1cnJlbnRFdmVudF0gbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtl
eU1hc2s7CisgICAgTlNVSW50ZWdlciBtb2RpZmllckZsYWdzID0gW1tOU0FwcCBjdXJyZW50RXZl
bnRdIG1vZGlmaWVyRmxhZ3NdOworICAgIHN3aXRjaCAoa2V5KSB7CisgICAgY2FzZSBDb3B5Ogor
ICAgIGNhc2UgQWx0OgorICAgICAgICByZXR1cm4gbW9kaWZpZXJGbGFncyAmIE5TQWx0ZXJuYXRl
S2V5TWFzazsKKyAgICBjYXNlIFNoaWZ0OgorICAgICAgICByZXR1cm4gbW9kaWZpZXJGbGFncyAm
IE5TU2hpZnRLZXlNYXNrOworICAgIGNhc2UgQ3RybDoKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVy
RmxhZ3MgJiBOU0NvbnRyb2xLZXlNYXNrOworICAgIGNhc2UgTWV0YToKKyAgICAgICAgcmV0dXJu
IG1vZGlmaWVyRmxhZ3MgJiBOU0NvbW1hbmRLZXlNYXNrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CiB9Ci0gICAgCisKIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEqIGRyYWdEYXRhKQogewogICAgIEFTU0VSVChk
cmFnRGF0YSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5j
cHAgYi9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKaW5kZXggMzM4MTViNS4u
YjFmODAzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcApAQCAtNDMsNyArNDMs
NyBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tSW5zZXQgPSAzOwog
Y29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAKIAot
Ym9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bigpCitib29sIERyYWdDb250cm9sbGVy
Ojppc01vZGlmaWVyS2V5RG93bihNb2RpZmllcktleSkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1dl
YkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGYwNDA0ZmYuLjc3MmYz
YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCkBAIC01MCw5ICs1MCwy
MSBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRh
KiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlk
SW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9uZTsKIH0K
IAotYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bigpCitib29sIERyYWdDb250cm9s
bGVyOjppc01vZGlmaWVyS2V5RG93bihNb2RpZmllcktleSBrZXkpCiB7Ci0gICAgcmV0dXJuIDo6
R2V0QXN5bmNLZXlTdGF0ZShWS19DT05UUk9MKTsKKyAgICBzd2l0Y2ggKGtleSkgeworICAgIGNh
c2UgQ29weToKKyAgICBjYXNlIEN0cmw6CisgICAgICAgIHJldHVybiA6OkdldEFzeW5jS2V5U3Rh
dGUoVktfQ09OVFJPTCk7CisgICAgY2FzZSBTaGlmdDoKKyAgICAgICAgcmV0dXJuIDo6R2V0QXN5
bmNLZXlTdGF0ZShWS19TSElGVCk7CisgICAgY2FzZSBBbHQ6CisgICAgICAgIHJldHVybiA6Okdl
dEFzeW5jS2V5U3RhdGUoVktfTUVOVSk7CisgICAgY2FzZSBNZXRhOgorICAgICAgICAvLyBGSVhN
RTogV2hhdCBpcyB0aGUgIm1ldGEiIGtleSBvbiBXaW5kb3dzPworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAgICAgCiBjb25zdCBJbnRTaXplJiBEcmFnQ29u
dHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd3gv
RHJhZ0NvbnRyb2xsZXJXeC5jcHAgYi9XZWJDb3JlL3BhZ2Uvd3gvRHJhZ0NvbnRyb2xsZXJXeC5j
cHAKaW5kZXggYzI4OGEwMS4uODQyYjY5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3d4L0Ry
YWdDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93eC9EcmFnQ29udHJvbGxlcld4
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29u
Qm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdl
QWxwaGEgPSAwLjc1ZjsKIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bigpCiti
b29sIERyYWdDb250cm9sbGVyOjppc01vZGlmaWVyS2V5RG93bihNb2RpZmllcktleSkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50665</attachid>
            <date>2010-03-13 17:36:06 -0800</date>
            <delta_ts>2010-03-14 08:45:44 -0700</delta_ts>
            <desc>Use the new PlatformKeyboardEvent::getCurrentModifierState() to add the information about which modifier keys are pressed to the drag event</desc>
            <filename>addModifierKeyInfoToDragEvent.patch</filename>
            <type>text/plain</type>
            <size>1859</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmRmMDRiNS4uNDNiMDY2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMy0xMyAgSmVzc2llIEJlcmxp
biAgPGpiZXJsaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAiZXZlbnQuY3RybEtleSIgaXMgYWx3YXlzIGZhbHNlIHdoZW4gZHJh
Z2dpbmcgYW4gZWxlbWVudCB3aXRoICJjdHJsIiBrZXkgZG93bgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTMKKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTW91c2VFdmVudCk6CisgICAgICAgIFVzZSB0aGUgY3VycmVudCBz
dGF0ZSBvZiB0aGUgc2hpZnQsIGN0cmwsIGFsdCwgYW5kIG1ldGEga2V5cyB3aGVuIGNyZWF0aW5n
IHRoZSBkcmFnIG1vdXNlIGV2ZW50LgorCiAyMDEwLTAzLTEzICBLaW0gR3LDtm5ob2xtICA8a2lt
Lmdyb25ob2xtQG5vbW92b2suY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMDZkMzY0OS4uYzE5
ZTM0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVk
ZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlJl
bmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC03MCwxMCArNzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZlbnQoRHJhZ0RhdGEq
IGRyYWdEYXRhKQogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZmFrZSBtb2RpZmllciBrZXlz
IGhlcmUuCisgICAgYm9vbCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5OworICAg
IHNoaWZ0S2V5ID0gY3RybEtleSA9IGFsdEtleSA9IG1ldGFLZXkgPSBmYWxzZTsKKyAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJs
S2V5LCBhbHRLZXksIG1ldGFLZXkpOwogICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnQoZHJh
Z0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7Ci0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgc2hp
ZnRLZXksIGN0cmxLZXksIGFsdEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFLZXksIGN1cnJlbnRUaW1lKCkpOwogfQogCiBEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xs
ZXIoUGFnZSogcGFnZSwgRHJhZ0NsaWVudCogY2xpZW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>