<?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>36616</bug_id>
          
          <creation_ts>2010-03-25 12:47:38 -0700</creation_ts>
          <short_desc>Dvorak-Qwerty keyboard layout gives unexpected results in javascript keydown</short_desc>
          <delta_ts>2010-04-20 16:46:09 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Pouliot">andpoul</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>harrison</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204195</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Pouliot">andpoul</who>
    <bug_when>2010-03-25 12:47:38 -0700</bug_when>
    <thetext>Webkit is reporting incorrect key codes to web apps when the meta/command key is down in the dvorak - qwerty command layout.

Steps to reproduce:

1. Enable the &quot;Dvorak - Qwerty &lt;command&gt;&quot; layout in system preferences and switch to it

2. Open test page in Safari

3. Type command-k with the text field selected (hit command and the k key on the keyboard)

console log is :
key pressed. code:84 char:0 meta:true fromCharCode:T keyIdentifier:U+0054 keyLocation:0

expected:
key pressed. code:75 char:0 meta:true fromCharCode:K keyIdentifier:U+004B keyLocation:0

The point of the dvorak-qwerty layout is that it should send qwerty-mapped characters when the command key is held down, otherwise behaving like a dvorak keyboard. This is so that commands are still in their familiar and ergonomic places ie command-c, etc.

The impacts of this bug on dvorak-qwerty users are far and wide, as many websites trap keyboard shortcuts and prevent the default action. Thus, typing command-V, which usually results in a &quot;paste&quot; action can instead trigger whatever is mapped to command-K in the web app.

For a real-world example, try to use the http://stackoverflow.com code editor in this layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204196</commentid>
    <comment_count>1</comment_count>
      <attachid>51671</attachid>
    <who name="Andrew Pouliot">andpoul</who>
    <bug_when>2010-03-25 12:48:05 -0700</bug_when>
    <thetext>Created attachment 51671
Here is the test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204340</commentid>
    <comment_count>2</comment_count>
    <who name="Andrew Pouliot">andpoul</who>
    <bug_when>2010-03-25 17:44:35 -0700</bug_when>
    <thetext>I&apos;m currently looking at KeyEventMac.mm where it creates a PlatformKeyboardEvent from an NSEvent. 

If I print out the NSEvent going into here, I see:

NSEvent: type=KeyDown loc=(0,1158) time=56678.2 flags=0x100108 win=0x0 winNum=13159 ctxt=0x0 chars=&quot;k&quot; unmodchars=&quot;t&quot; repeat=0 keyCode=40&quot;


In this case, I think the modified chars reflect the intent of the user. There may be other cases like option-e on the mac (dead key), where it might be desirable to send &quot;e&quot;=unmodified rather than &quot;&quot;=modified on to javascript. Does anyone depend on this behavior?

I&apos;m still trying to track down where in code the calculation of the keyCode/keyIdentifier to report to javascript is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204381</commentid>
    <comment_count>3</comment_count>
      <attachid>51711</attachid>
    <who name="Andrew Pouliot">andpoul</who>
    <bug_when>2010-03-25 19:27:59 -0700</bug_when>
    <thetext>Created attachment 51711
Test case: logs both keypress and keydown

Now logging both keypress and keydown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204383</commentid>
    <comment_count>4</comment_count>
    <who name="Andrew Pouliot">andpoul</who>
    <bug_when>2010-03-25 19:32:16 -0700</bug_when>
    <thetext>Interesting: it took my reading the source code to realize that the behavior
for keypress is different than that of keydown.

Keydown is working correctly, ie returning k, whereas keydown returns T.

I updated the test case and here are the results for typing command-k:

onkeydown :  code:84 char:0 meta:true fromCharCode:T keyIdentifier:U+0054
keyLocation:0
onkeypress :  code:107 char:107 meta:true fromCharCode:k keyIdentifier:
keyLocation:0

Is keypress the canonical event to use for making keyboard commands, and I
didn&apos;t realize it, or is this still a bug with keydown?

In any case, the behavior of keydown is causing problems &quot;in the real world,&quot;
as few developers even are aware of the existence of alternate keyboard
layouts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204877</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-26 17:51:04 -0700</bug_when>
    <thetext>I think it&apos;s a bug with keydown. The code that provides keyCode in keydown is nonsense - we end up with 0 for non-Roman keyboard layouts!

Will need to check IE to be sure that this nonsense isn&apos;t expected behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206078</commentid>
    <comment_count>6</comment_count>
      <attachid>52056</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-30 11:02:43 -0700</bug_when>
    <thetext>Created attachment 52056
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206131</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-30 13:02:58 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/56804&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206181</commentid>
    <comment_count>8</comment_count>
      <attachid>52082</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-30 14:18:01 -0700</bug_when>
    <thetext>Created attachment 52082
regression tests... who would believe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206186</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-30 14:27:45 -0700</bug_when>
    <thetext>DumpRenderTree fix committed revision 56808.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206188</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-30 14:28:17 -0700</bug_when>
    <thetext>Why can&apos;t we use hashmaps for any of this?  These long if-blocks are super ugly, and we&apos;re adding more of them. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215063</commentid>
    <comment_count>11</comment_count>
    <who name="David Harrison">harrison</who>
    <bug_when>2010-04-20 16:46:09 -0700</bug_when>
    <thetext>This patch is thought to have caused https://bugs.webkit.org/show_bug.cgi?id=37776</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51671</attachid>
            <date>2010-03-25 12:48:05 -0700</date>
            <delta_ts>2010-03-25 19:27:59 -0700</delta_ts>
            <desc>Here is the test case</desc>
            <filename>keypress.html</filename>
            <type>text/html</type>
            <size>440</size>
            <attacher name="Andrew Pouliot">andpoul</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgpmdW5jdGlvbiBmb28oZSkgewoJaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT0gIk1ldGEiKSByZXR1cm47CgoJY29uc29sZS5sb2coImtleSBwcmVzc2VkLiIg
CgkrICIgY29kZToiICsgZS5rZXlDb2RlCgkrICIgY2hhcjoiICsgZS5jaGFyQ29kZQoJKyAiIG1l
dGE6IiArIGUubWV0YUtleQoJKyAiIGZyb21DaGFyQ29kZToiICsgU3RyaW5nLmZyb21DaGFyQ29k
ZShlLmtleUNvZGUpCgkrICIga2V5SWRlbnRpZmllcjoiICsgZXZlbnQua2V5SWRlbnRpZmllcgoJ
KyAiIGtleUxvY2F0aW9uOiIgKyBldmVudC5rZXlMb2NhdGlvbgoJCgkpOwoJLypjb25zb2xlLmxv
ZyhlKTsqLwp9Cjwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KPHRleHRhcmVhIG9ua2V5ZG93bj0i
Zm9vKGV2ZW50KSI+CjwvdGV4dGFyZWE+CjwvYm9keT4KCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51711</attachid>
            <date>2010-03-25 19:27:59 -0700</date>
            <delta_ts>2010-03-25 19:27:59 -0700</delta_ts>
            <desc>Test case: logs both keypress and keydown</desc>
            <filename>keypress.html</filename>
            <type>text/html</type>
            <size>494</size>
            <attacher name="Andrew Pouliot">andpoul</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgpmdW5jdGlvbiBmb28obmFtZSwgZSkgewoJaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT0gIk1ldGEiKSByZXR1cm47CgoJY29uc29sZS5sb2cobmFtZSArICIg
OiAiIAoJKyAiIGNvZGU6IiArIGUua2V5Q29kZQoJKyAiIGNoYXI6IiArIGUuY2hhckNvZGUKCSsg
IiBtZXRhOiIgKyBlLm1ldGFLZXkKCSsgIiBmcm9tQ2hhckNvZGU6IiArIFN0cmluZy5mcm9tQ2hh
ckNvZGUoZS5rZXlDb2RlKQoJKyAiIGtleUlkZW50aWZpZXI6IiArIGV2ZW50LmtleUlkZW50aWZp
ZXIKCSsgIiBrZXlMb2NhdGlvbjoiICsgZXZlbnQua2V5TG9jYXRpb24KCQoJKTsKCS8qY29uc29s
ZS5sb2coZSk7Ki8KfQo8L3NjcmlwdD4KPC9oZWFkPgoKPGJvZHk+Cjx0ZXh0YXJlYSBvbmtleXBy
ZXNzPSJmb28oJ29ua2V5cHJlc3MnLCBldmVudCkiIG9ua2V5ZG93bj0iZm9vKCdvbmtleWRvd24n
LGV2ZW50KSI+CjwvdGV4dGFyZWE+CjwvYm9keT4KCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52056</attachid>
            <date>2010-03-30 11:02:43 -0700</date>
            <delta_ts>2010-03-30 12:55:19 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>KeyCode.txt</filename>
            <type>text/plain</type>
            <size>12917</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Njc5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjE2CisgICAgICAgIER2
b3Jhay1Rd2VydHkga2V5Ym9hcmQgbGF5b3V0IGdpdmVzIHVuZXhwZWN0ZWQgcmVzdWx0cyBpbiBq
YXZhc2NyaXB0IGtleWRvd24KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzY3OTcKKyAgICAgICAgRm9yIG5vbi1Sb21hbiBsYXlvdXRzLCBrZXlkb3du
IEV2ZW50LmtleUNvZGUgaXMgYWx3YXlzIDAKKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0tl
eUV2ZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktleUNv
ZGUpOiBUaGlzIGlzIG5vdyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcKKyAg
ICAgICAgV2luZG93cyBrZXkgY29kZSAtIHRoZXJlIGlzIG5vIHJlYXNvbiB0byByb3VuZCB0cmlw
IGEgdmlydHVhbCBrZXkgY29kZSB2aWEgY2hhcmFjdGVyIGNvZGUgdG8KKyAgICAgICAgZ2V0IFdp
bmRvd3MgdmlydHVhbCBrZXkgY29kZSwgYW5kIHRoaXMgY2FuJ3Qgd29yayBmb3Igbm9uLVJvbWFu
IGFscGhhYmV0cy4KKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUp
OiBSZW1vdmVkIGtleXMgdGhhdCBhcmUgbm93IGhhbmRsZWQgaW4gd2luZG93c0tleUNvZGVGb3JL
ZXlDb2RlKCksCisgICAgICAgIG9ubHkga2VlcGluZyB0aG9zZSBmb3Igd2hpY2ggd2UgZG9uJ3Qg
aGF2ZSBrbm93biBrZXkgY29kZXMgKHlldD8pLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL0tl
eUV2ZW50TWFjLm1tOiAoV2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JLZXlFdmVudCk6IEFkZGVk
IGNvbW1lbnRzLgorCiAyMDEwLTAzLTMwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQkocmV2aXNpb24gNTY3MjUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMz
MSwxNTMgKzMzMSwxNTkgQEAgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZSh1bmljaGFy
IAogCiBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKHVpbnQxNl90IGtleUNvZGUpCiB7Ci0g
ICAgc3dpdGNoIChrZXlDb2RlKSB7Ci0gICAgICAgIGNhc2UgNDg6IHJldHVybiBWS19UQUI7Cisg
ICAgc3RhdGljIGNvbnN0IGludCB3aW5kb3dzS2V5Q29kZVtdID0geworICAgICAgICAvKiAwICov
IFZLX0EsCisgICAgICAgIC8qIDEgKi8gVktfUywKKyAgICAgICAgLyogMiAqLyBWS19ELAorICAg
ICAgICAvKiAzICovIFZLX0YsCisgICAgICAgIC8qIDQgKi8gVktfSCwKKyAgICAgICAgLyogNSAq
LyBWS19HLAorICAgICAgICAvKiA2ICovIFZLX1osCisgICAgICAgIC8qIDcgKi8gVktfWCwKKyAg
ICAgICAgLyogOCAqLyBWS19DLAorICAgICAgICAvKiA5ICovIFZLX1YsCisgICAgICAgIC8qIDB4
MEEgKi8gVktfT0VNXzMsIC8vICJTZWN0aW9uIiAtIGtleSB0byB0aGUgbGVmdCBmcm9tIDEgKElT
TyBLZXlib2FyZCBPbmx5KQorICAgICAgICAvKiAweDBCICovIFZLX0IsCisgICAgICAgIC8qIDB4
MEMgKi8gVktfUSwKKyAgICAgICAgLyogMHgwRCAqLyBWS19XLAorICAgICAgICAvKiAweDBFICov
IFZLX0UsCisgICAgICAgIC8qIDB4MEYgKi8gVktfUiwKKyAgICAgICAgLyogMHgxMCAqLyBWS19Z
LAorICAgICAgICAvKiAweDExICovIFZLX1QsCisgICAgICAgIC8qIDB4MTIgKi8gVktfMSwKKyAg
ICAgICAgLyogMHgxMyAqLyBWS18yLAorICAgICAgICAvKiAweDE0ICovIFZLXzMsCisgICAgICAg
IC8qIDB4MTUgKi8gVktfNCwKKyAgICAgICAgLyogMHgxNiAqLyBWS182LAorICAgICAgICAvKiAw
eDE3ICovIFZLXzUsCisgICAgICAgIC8qIDB4MTggKi8gVktfT0VNX1BMVVMsIC8vID0rCisgICAg
ICAgIC8qIDB4MTkgKi8gVktfOSwKKyAgICAgICAgLyogMHgxQSAqLyBWS183LAorICAgICAgICAv
KiAweDFCICovIFZLX09FTV9NSU5VUywgLy8gLV8KKyAgICAgICAgLyogMHgxQyAqLyBWS184LAor
ICAgICAgICAvKiAweDFEICovIFZLXzAsCisgICAgICAgIC8qIDB4MUUgKi8gVktfT0VNXzYsIC8v
IF19CisgICAgICAgIC8qIDB4MUYgKi8gVktfTywKKyAgICAgICAgLyogMHgyMCAqLyBWS19VLAor
ICAgICAgICAvKiAweDIxICovIFZLX09FTV80LCAvLyB7WworICAgICAgICAvKiAweDIyICovIFZL
X0ksCisgICAgICAgIC8qIDB4MjMgKi8gVktfUCwKKyAgICAgICAgLyogMHgyNCAqLyBWS19SRVRV
Uk4sIC8vIFJldHVybgorICAgICAgICAvKiAweDI1ICovIFZLX0wsCisgICAgICAgIC8qIDB4MjYg
Ki8gVktfSiwKKyAgICAgICAgLyogMHgyNyAqLyBWS19PRU1fNywgLy8gJyIKKyAgICAgICAgLyog
MHgyOCAqLyBWS19LLAorICAgICAgICAvKiAweDI5ICovIFZLX09FTV8xLCAvLyA7OgorICAgICAg
ICAvKiAweDJBICovIFZLX09FTV81LCAvLyBcfAorICAgICAgICAvKiAweDJCICovIFZLX09FTV9D
T01NQSwgLy8gLDwKKyAgICAgICAgLyogMHgyQyAqLyBWS19PRU1fMiwgLy8gLz8KKyAgICAgICAg
LyogMHgyRCAqLyBWS19OLAorICAgICAgICAvKiAweDJFICovIFZLX00sCisgICAgICAgIC8qIDB4
MkYgKi8gVktfT0VNX1BFUklPRCwgLy8gLj4KKyAgICAgICAgLyogMHgzMCAqLyBWS19UQUIsCisg
ICAgICAgIC8qIDB4MzEgKi8gVktfU1BBQ0UsCisgICAgICAgIC8qIDB4MzIgKi8gVktfT0VNXzMs
IC8vIGB+CisgICAgICAgIC8qIDB4MzMgKi8gVktfQkFDSywgLy8gQmFja3NwYWNlCisgICAgICAg
IC8qIDB4MzQgKi8gMCwgLy8gbi9hCisgICAgICAgIC8qIDB4MzUgKi8gVktfRVNDQVBFLAorICAg
ICAgICAvKiAweDM2ICovIFZLX0FQUFMsIC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAgLyogMHgz
NyAqLyBWS19MV0lOLCAvLyBMZWZ0IENvbW1hbmQKKyAgICAgICAgLyogMHgzOCAqLyBWS19TSElG
VCwgLy8gTGVmdCBTaGlmdAorICAgICAgICAvKiAweDM5ICovIFZLX0NBUElUQUwsIC8vIENhcHMg
TG9jaworICAgICAgICAvKiAweDNBICovIFZLX01FTlUsIC8vIExlZnQgT3B0aW9uCisgICAgICAg
IC8qIDB4M0IgKi8gVktfQ09OVFJPTCwgLy8gTGVmdCBDdHJsCisgICAgICAgIC8qIDB4M0MgKi8g
VktfU0hJRlQsIC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgIC8qIDB4M0QgKi8gVktfTUVOVSwgLy8g
UmlnaHQgT3B0aW9uCisgICAgICAgIC8qIDB4M0UgKi8gVktfQ09OVFJPTCwgLy8gUmlnaHQgQ3Ry
bAorICAgICAgICAvKiAweDNGICovIDAsIC8vIGZuCisgICAgICAgIC8qIDB4NDAgKi8gVktfRjE3
LAorICAgICAgICAvKiAweDQxICovIFZLX0RFQ0lNQUwsIC8vIE51bSBQYWQgLgorICAgICAgICAv
KiAweDQyICovIDAsIC8vIG4vYQorICAgICAgICAvKiAweDQzICovIFZLX01VTFRJUExZLCAvLyBO
dW0gUGFkICoKKyAgICAgICAgLyogMHg0NCAqLyAwLCAvLyBuL2EKKyAgICAgICAgLyogMHg0NSAq
LyBWS19BREQsIC8vIE51bSBQYWQgKworICAgICAgICAvKiAweDQ2ICovIDAsIC8vIG4vYQorICAg
ICAgICAvKiAweDQ3ICovIFZLX0NMRUFSLCAvLyBOdW0gUGFkIENsZWFyCisgICAgICAgIC8qIDB4
NDggKi8gVktfVk9MVU1FX1VQLAorICAgICAgICAvKiAweDQ5ICovIFZLX1ZPTFVNRV9ET1dOLAor
ICAgICAgICAvKiAweDRBICovIFZLX1ZPTFVNRV9NVVRFLAorICAgICAgICAvKiAweDRCICovIFZL
X0RJVklERSwgLy8gTnVtIFBhZCAvCisgICAgICAgIC8qIDB4NEMgKi8gVktfUkVUVVJOLCAvLyBO
dW0gUGFkIEVudGVyCisgICAgICAgIC8qIDB4NEQgKi8gMCwgLy8gbi9hCisgICAgICAgIC8qIDB4
NEUgKi8gVktfU1VCVFJBQ1QsIC8vIE51bSBQYWQgLQorICAgICAgICAvKiAweDRGICovIFZLX0Yx
OCwKKyAgICAgICAgLyogMHg1MCAqLyBWS19GMTksCisgICAgICAgIC8qIDB4NTEgKi8gVktfT0VN
X1BMVVMsIC8vIE51bSBQYWQgPS4gVGhlcmUgaXMgbm8gc3VjaCBrZXkgb24gY29tbW9uIFBDIGtl
eWJvYXJkcywgbWFwcGluZyB0byBub3JtYWwgIis9Ii4KKyAgICAgICAgLyogMHg1MiAqLyBWS19O
VU1QQUQwLAorICAgICAgICAvKiAweDUzICovIFZLX05VTVBBRDEsCisgICAgICAgIC8qIDB4NTQg
Ki8gVktfTlVNUEFEMiwKKyAgICAgICAgLyogMHg1NSAqLyBWS19OVU1QQUQzLAorICAgICAgICAv
KiAweDU2ICovIFZLX05VTVBBRDQsCisgICAgICAgIC8qIDB4NTcgKi8gVktfTlVNUEFENSwKKyAg
ICAgICAgLyogMHg1OCAqLyBWS19OVU1QQUQ2LAorICAgICAgICAvKiAweDU5ICovIFZLX05VTVBB
RDcsCisgICAgICAgIC8qIDB4NUEgKi8gVktfRjIwLAorICAgICAgICAvKiAweDVCICovIFZLX05V
TVBBRDgsCisgICAgICAgIC8qIDB4NUMgKi8gVktfTlVNUEFEOSwKKyAgICAgICAgLyogMHg1RCAq
LyAwLCAvLyBZZW4gKEpJUyBLZXlib2FyZCBPbmx5KQorICAgICAgICAvKiAweDVFICovIDAsIC8v
IFVuZGVyc2NvcmUgKEpJUyBLZXlib2FyZCBPbmx5KQorICAgICAgICAvKiAweDVGICovIDAsIC8v
IEtleXBhZENvbW1hIChKSVMgS2V5Ym9hcmQgT25seSkKKyAgICAgICAgLyogMHg2MCAqLyBWS19G
NSwKKyAgICAgICAgLyogMHg2MSAqLyBWS19GNiwKKyAgICAgICAgLyogMHg2MiAqLyBWS19GNywK
KyAgICAgICAgLyogMHg2MyAqLyBWS19GMywKKyAgICAgICAgLyogMHg2NCAqLyBWS19GOCwKKyAg
ICAgICAgLyogMHg2NSAqLyBWS19GOSwKKyAgICAgICAgLyogMHg2NiAqLyAwLCAvLyBFaXN1IChK
SVMgS2V5Ym9hcmQgT25seSkKKyAgICAgICAgLyogMHg2NyAqLyBWS19GMTEsCisgICAgICAgIC8q
IDB4NjggKi8gMCwgLy8gS2FuYSAoSklTIEtleWJvYXJkIE9ubHkpCisgICAgICAgIC8qIDB4Njkg
Ki8gVktfRjEzLAorICAgICAgICAvKiAweDZBICovIFZLX0YxNiwKKyAgICAgICAgLyogMHg2QiAq
LyBWS19GMTQsCisgICAgICAgIC8qIDB4NkMgKi8gMCwgLy8gbi9hCisgICAgICAgIC8qIDB4NkQg
Ki8gVktfRjEwLAorICAgICAgICAvKiAweDZFICovIDAsIC8vIG4vYSAoV2luZG93czk1IGtleT8p
CisgICAgICAgIC8qIDB4NkYgKi8gVktfRjEyLAorICAgICAgICAvKiAweDcwICovIDAsIC8vIG4v
YQorICAgICAgICAvKiAweDcxICovIFZLX0YxNSwKKyAgICAgICAgLyogMHg3MiAqLyBWS19JTlNF
UlQsIC8vIEhlbHAKKyAgICAgICAgLyogMHg3MyAqLyBWS19IT01FLCAvLyBIb21lCisgICAgICAg
IC8qIDB4NzQgKi8gVktfUFJJT1IsIC8vIFBhZ2UgVXAKKyAgICAgICAgLyogMHg3NSAqLyBWS19E
RUxFVEUsIC8vIEZvcndhcmQgRGVsZXRlCisgICAgICAgIC8qIDB4NzYgKi8gVktfRjQsCisgICAg
ICAgIC8qIDB4NzcgKi8gVktfRU5ELCAvLyBFbmQKKyAgICAgICAgLyogMHg3OCAqLyBWS19GMiwK
KyAgICAgICAgLyogMHg3OSAqLyBWS19ORVhULCAvLyBQYWdlIERvd24KKyAgICAgICAgLyogMHg3
QSAqLyBWS19GMSwKKyAgICAgICAgLyogMHg3QiAqLyBWS19MRUZULCAvLyBMZWZ0IEFycm93Cisg
ICAgICAgIC8qIDB4N0MgKi8gVktfUklHSFQsIC8vIFJpZ2h0IEFycm93CisgICAgICAgIC8qIDB4
N0QgKi8gVktfRE9XTiwgLy8gRG93biBBcnJvdworICAgICAgICAvKiAweDdFICovIFZLX1VQLCAv
LyBVcCBBcnJvdworICAgICAgICAvKiAweDdGICovIDAgLy8gbi9hCisgICAgfTsKIAotICAgICAg
ICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAgICAgICByZXR1cm4gVktfQVBQUzsK
KyAgICBpZiAoa2V5Q29kZSA+PSAweDgwKQorICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBj
YXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKLSAgICAgICAgICAgIHJldHVybiBWS19MV0lOOwotCi0g
ICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCi0gICAgICAgICAgICByZXR1cm4gVktfQ0FQSVRB
TDsKLQotICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgIGNhc2UgNjA6IC8v
IFJpZ2h0IFNoaWZ0Ci0gICAgICAgICAgICByZXR1cm4gVktfU0hJRlQ7Ci0KLSAgICAgICAgY2Fz
ZSA1ODogLy8gTGVmdCBBbHQKLSAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTUVOVTsKLQotICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKLSAg
ICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAgICAgcmV0dXJuIFZLX0NPTlRS
T0w7Ci0KLSAgICAgICAgY2FzZSA3MTogcmV0dXJuIFZLX0NMRUFSOwotCi0gICAgICAgIGNhc2Ug
ODI6IHJldHVybiBWS19OVU1QQUQwOwotICAgICAgICBjYXNlIDgzOiByZXR1cm4gVktfTlVNUEFE
MTsKLSAgICAgICAgY2FzZSA4NDogcmV0dXJuIFZLX05VTVBBRDI7Ci0gICAgICAgIGNhc2UgODU6
IHJldHVybiBWS19OVU1QQUQzOwotICAgICAgICBjYXNlIDg2OiByZXR1cm4gVktfTlVNUEFENDsK
LSAgICAgICAgY2FzZSA4NzogcmV0dXJuIFZLX05VTVBBRDU7Ci0gICAgICAgIGNhc2UgODg6IHJl
dHVybiBWS19OVU1QQUQ2OwotICAgICAgICBjYXNlIDg5OiByZXR1cm4gVktfTlVNUEFENzsKLSAg
ICAgICAgY2FzZSA5MTogcmV0dXJuIFZLX05VTVBBRDg7Ci0gICAgICAgIGNhc2UgOTI6IHJldHVy
biBWS19OVU1QQUQ5OwotICAgICAgICBjYXNlIDY3OiByZXR1cm4gVktfTVVMVElQTFk7Ci0gICAg
ICAgIGNhc2UgNjk6IHJldHVybiBWS19BREQ7Ci0gICAgICAgIGNhc2UgNzg6IHJldHVybiBWS19T
VUJUUkFDVDsKLSAgICAgICAgY2FzZSA2NTogcmV0dXJuIFZLX0RFQ0lNQUw7Ci0gICAgICAgIGNh
c2UgNzU6IHJldHVybiBWS19ESVZJREU7Ci0gICAgIH0KLQotICAgICByZXR1cm4gMDsKKyAgICAg
cmV0dXJuIHdpbmRvd3NLZXlDb2RlW2tleUNvZGVdOwogfQogCiBpbnQgd2luZG93c0tleUNvZGVG
b3JDaGFyQ29kZSh1bmljaGFyIGNoYXJDb2RlKQogeworICAgIC8vIEFwcEtpdCBnZW5lcmF0ZXMg
VW5pY29kZSBQVUEgY2hhcmFjdGVyIGNvZGVzIGZvciBzb21lIGZ1bmN0aW9uIGtleXM7IHVzaW5n
IHRoZXNlIHdoZW4ga2V5IGNvZGUgaXMgbm90IGtub3duLgogICAgIHN3aXRjaCAoY2hhckNvZGUp
IHsKLSAgICAgICAgY2FzZSA4OiBjYXNlIDB4N0Y6IHJldHVybiBWS19CQUNLOwotICAgICAgICBj
YXNlIDk6IHJldHVybiBWS19UQUI7Ci0KLSAgICAgICAgY2FzZSAweEQ6IGNhc2UgMzogcmV0dXJu
IFZLX1JFVFVSTjsKLQogICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleTogcmV0dXJuIFZL
X1BBVVNFOwotCi0gICAgICAgIGNhc2UgMHgxQjogcmV0dXJuIFZLX0VTQ0FQRTsKLQotICAgICAg
ICBjYXNlICcgJzogcmV0dXJuIFZLX1NQQUNFOwotICAgICAgICBjYXNlIE5TUGFnZVVwRnVuY3Rp
b25LZXk6IHJldHVybiBWS19QUklPUjsKLSAgICAgICAgY2FzZSBOU1BhZ2VEb3duRnVuY3Rpb25L
ZXk6IHJldHVybiBWS19ORVhUOwotICAgICAgICBjYXNlIE5TRW5kRnVuY3Rpb25LZXk6IHJldHVy
biBWS19FTkQ7Ci0gICAgICAgIGNhc2UgTlNIb21lRnVuY3Rpb25LZXk6IHJldHVybiBWS19IT01F
OwotICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6IHJldHVybiBWS19MRUZUOwot
ICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gVktfVVA7Ci0gICAgICAg
IGNhc2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6IHJldHVybiBWS19SSUdIVDsKLSAgICAgICAg
Y2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gVktfRE9XTjsKICAgICAgICAgY2Fz
ZSBOU1NlbGVjdEZ1bmN0aW9uS2V5OiByZXR1cm4gVktfU0VMRUNUOwogICAgICAgICBjYXNlIE5T
UHJpbnRGdW5jdGlvbktleTogcmV0dXJuIFZLX1BSSU5UOwogICAgICAgICBjYXNlIE5TRXhlY3V0
ZUZ1bmN0aW9uS2V5OiByZXR1cm4gVktfRVhFQ1VURTsKICAgICAgICAgY2FzZSBOU1ByaW50U2Ny
ZWVuRnVuY3Rpb25LZXk6IHJldHVybiBWS19TTkFQU0hPVDsKLSAgICAgICAgY2FzZSBOU0luc2Vy
dEZ1bmN0aW9uS2V5OiBjYXNlIE5TSGVscEZ1bmN0aW9uS2V5OiByZXR1cm4gVktfSU5TRVJUOwot
ICAgICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6IHJldHVybiBWS19ERUxFVEU7Ci0gICAg
ICAgIGNhc2UgJzAnOiBjYXNlICcpJzogcmV0dXJuIFZLXzA7Ci0gICAgICAgIGNhc2UgJzEnOiBj
YXNlICchJzogcmV0dXJuIFZLXzE7Ci0gICAgICAgIGNhc2UgJzInOiBjYXNlICdAJzogcmV0dXJu
IFZLXzI7Ci0gICAgICAgIGNhc2UgJzMnOiBjYXNlICcjJzogcmV0dXJuIFZLXzM7Ci0gICAgICAg
IGNhc2UgJzQnOiBjYXNlICckJzogcmV0dXJuIFZLXzQ7Ci0gICAgICAgIGNhc2UgJzUnOiBjYXNl
ICclJzogcmV0dXJuIFZLXzU7Ci0gICAgICAgIGNhc2UgJzYnOiBjYXNlICdeJzogcmV0dXJuIFZL
XzY7Ci0gICAgICAgIGNhc2UgJzcnOiBjYXNlICcmJzogcmV0dXJuIFZLXzc7Ci0gICAgICAgIGNh
c2UgJzgnOiBjYXNlICcqJzogcmV0dXJuIFZLXzg7Ci0gICAgICAgIGNhc2UgJzknOiBjYXNlICco
JzogcmV0dXJuIFZLXzk7Ci0gICAgICAgIGNhc2UgJ2EnOiBjYXNlICdBJzogcmV0dXJuIFZLX0E7
Ci0gICAgICAgIGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIFZLX0I7Ci0gICAgICAgIGNhc2Ug
J2MnOiBjYXNlICdDJzogcmV0dXJuIFZLX0M7Ci0gICAgICAgIGNhc2UgJ2QnOiBjYXNlICdEJzog
cmV0dXJuIFZLX0Q7Ci0gICAgICAgIGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIFZLX0U7Ci0g
ICAgICAgIGNhc2UgJ2YnOiBjYXNlICdGJzogcmV0dXJuIFZLX0Y7Ci0gICAgICAgIGNhc2UgJ2cn
OiBjYXNlICdHJzogcmV0dXJuIFZLX0c7Ci0gICAgICAgIGNhc2UgJ2gnOiBjYXNlICdIJzogcmV0
dXJuIFZLX0g7Ci0gICAgICAgIGNhc2UgJ2knOiBjYXNlICdJJzogcmV0dXJuIFZLX0k7Ci0gICAg
ICAgIGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIFZLX0o7Ci0gICAgICAgIGNhc2UgJ2snOiBj
YXNlICdLJzogcmV0dXJuIFZLX0s7Ci0gICAgICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogcmV0dXJu
IFZLX0w7Ci0gICAgICAgIGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIFZLX007Ci0gICAgICAg
IGNhc2UgJ24nOiBjYXNlICdOJzogcmV0dXJuIFZLX047Ci0gICAgICAgIGNhc2UgJ28nOiBjYXNl
ICdPJzogcmV0dXJuIFZLX087Ci0gICAgICAgIGNhc2UgJ3AnOiBjYXNlICdQJzogcmV0dXJuIFZL
X1A7Ci0gICAgICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogcmV0dXJuIFZLX1E7Ci0gICAgICAgIGNh
c2UgJ3InOiBjYXNlICdSJzogcmV0dXJuIFZLX1I7Ci0gICAgICAgIGNhc2UgJ3MnOiBjYXNlICdT
JzogcmV0dXJuIFZLX1M7Ci0gICAgICAgIGNhc2UgJ3QnOiBjYXNlICdUJzogcmV0dXJuIFZLX1Q7
Ci0gICAgICAgIGNhc2UgJ3UnOiBjYXNlICdVJzogcmV0dXJuIFZLX1U7Ci0gICAgICAgIGNhc2Ug
J3YnOiBjYXNlICdWJzogcmV0dXJuIFZLX1Y7Ci0gICAgICAgIGNhc2UgJ3cnOiBjYXNlICdXJzog
cmV0dXJuIFZLX1c7Ci0gICAgICAgIGNhc2UgJ3gnOiBjYXNlICdYJzogcmV0dXJuIFZLX1g7Ci0g
ICAgICAgIGNhc2UgJ3knOiBjYXNlICdZJzogcmV0dXJuIFZLX1k7Ci0gICAgICAgIGNhc2UgJ3on
OiBjYXNlICdaJzogcmV0dXJuIFZLX1o7Ci0KLSAgICAgICAgY2FzZSBOU0YxRnVuY3Rpb25LZXk6
IHJldHVybiBWS19GMTsKLSAgICAgICAgY2FzZSBOU0YyRnVuY3Rpb25LZXk6IHJldHVybiBWS19G
MjsKLSAgICAgICAgY2FzZSBOU0YzRnVuY3Rpb25LZXk6IHJldHVybiBWS19GMzsKLSAgICAgICAg
Y2FzZSBOU0Y0RnVuY3Rpb25LZXk6IHJldHVybiBWS19GNDsKLSAgICAgICAgY2FzZSBOU0Y1RnVu
Y3Rpb25LZXk6IHJldHVybiBWS19GNTsKLSAgICAgICAgY2FzZSBOU0Y2RnVuY3Rpb25LZXk6IHJl
dHVybiBWS19GNjsKLSAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6IHJldHVybiBWS19GNzsK
LSAgICAgICAgY2FzZSBOU0Y4RnVuY3Rpb25LZXk6IHJldHVybiBWS19GODsKLSAgICAgICAgY2Fz
ZSBOU0Y5RnVuY3Rpb25LZXk6IHJldHVybiBWS19GOTsKLSAgICAgICAgY2FzZSBOU0YxMEZ1bmN0
aW9uS2V5OiByZXR1cm4gVktfRjEwOwotICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6IHJl
dHVybiBWS19GMTE7Ci0gICAgICAgIGNhc2UgTlNGMTJGdW5jdGlvbktleTogcmV0dXJuIFZLX0Yx
MjsKLSAgICAgICAgY2FzZSBOU0YxM0Z1bmN0aW9uS2V5OiByZXR1cm4gVktfRjEzOwotICAgICAg
ICBjYXNlIE5TRjE0RnVuY3Rpb25LZXk6IHJldHVybiBWS19GMTQ7Ci0gICAgICAgIGNhc2UgTlNG
MTVGdW5jdGlvbktleTogcmV0dXJuIFZLX0YxNTsKLSAgICAgICAgY2FzZSBOU0YxNkZ1bmN0aW9u
S2V5OiByZXR1cm4gVktfRjE2OwotICAgICAgICBjYXNlIE5TRjE3RnVuY3Rpb25LZXk6IHJldHVy
biBWS19GMTc7Ci0gICAgICAgIGNhc2UgTlNGMThGdW5jdGlvbktleTogcmV0dXJuIFZLX0YxODsK
LSAgICAgICAgY2FzZSBOU0YxOUZ1bmN0aW9uS2V5OiByZXR1cm4gVktfRjE5OwotICAgICAgICBj
YXNlIE5TRjIwRnVuY3Rpb25LZXk6IHJldHVybiBWS19GMjA7CisgICAgICAgIGNhc2UgTlNJbnNl
cnRGdW5jdGlvbktleTogcmV0dXJuIFZLX0lOU0VSVDsKKwogICAgICAgICBjYXNlIE5TRjIxRnVu
Y3Rpb25LZXk6IHJldHVybiBWS19GMjE7CiAgICAgICAgIGNhc2UgTlNGMjJGdW5jdGlvbktleTog
cmV0dXJuIFZLX0YyMjsKICAgICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OiByZXR1cm4gVktf
RjIzOwogICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6IHJldHVybiBWS19GMjQ7CiAgICAg
ICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25LZXk6IHJldHVybiBWS19TQ1JPTEw7Ci0KLSAg
ICAgICAgY2FzZSAnOyc6IGNhc2UgJzonOiByZXR1cm4gVktfT0VNXzE7Ci0gICAgICAgIGNhc2Ug
Jz0nOiBjYXNlICcrJzogcmV0dXJuIFZLX09FTV9QTFVTOwotICAgICAgICBjYXNlICcsJzogY2Fz
ZSAnPCc6IHJldHVybiBWS19PRU1fQ09NTUE7Ci0gICAgICAgIGNhc2UgJy0nOiBjYXNlICdfJzog
cmV0dXJuIFZLX09FTV9NSU5VUzsKLSAgICAgICAgY2FzZSAnLic6IGNhc2UgJz4nOiByZXR1cm4g
VktfT0VNX1BFUklPRDsKLSAgICAgICAgY2FzZSAnLyc6IGNhc2UgJz8nOiByZXR1cm4gVktfT0VN
XzI7Ci0gICAgICAgIGNhc2UgJ2AnOiBjYXNlICd+JzogcmV0dXJuIFZLX09FTV8zOwotICAgICAg
ICBjYXNlICdbJzogY2FzZSAneyc6IHJldHVybiBWS19PRU1fNDsKLSAgICAgICAgY2FzZSAnXFwn
OiBjYXNlICd8JzogcmV0dXJuIFZLX09FTV81OwotICAgICAgICBjYXNlICddJzogY2FzZSAnfSc6
IHJldHVybiBWS19PRU1fNjsKLSAgICAgICAgY2FzZSAnXCcnOiBjYXNlICciJzogcmV0dXJuIFZL
X09FTV83OwogICAgIH0KIAogICAgIHJldHVybiAwOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvS2V5RXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5
RXZlbnRNYWMubW0JKHJldmlzaW9uIDU2NzI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5
RXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMCArMTYxLDE1IEBAIHN0YXRpYyBT
dHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE4KIAogc3RhdGljIGludCB3aW5kb3dzS2V5
Q29kZUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQogeworICAgIC8vIFZpcnR1YWwga2V5IGNv
ZGVzIGRvbid0IGRlcGVuZCBvbiBhY3RpdmUga2V5Ym9hcmQgbGF5b3V0IC0gb25lIGdldHMgdGhl
IHNhbWUgRXZlbnQua2V5Q29kZSB3aGVuIHByZXNzaW5nIHRoZSBrZXkgbmV4dCB0byBDYXBzIExv
Y2sKKyAgICAvLyBvbiBVLlMuIGtleWJvYXJkICgnQScpIGFuZCBvbiBSdXNzaWFuIGtleWJvYXJk
IChDWVJJTExJQyBMRVRURVIgRUYpLgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCB0cnVlIGZv
ciBjZXJ0YWluIG5vbi1hbHBoYWJldGljIGtleXMgdGhhdCBoYXZlIFZLX09FTV8qIGtleSBjb2Rl
cyBvbiBXaW5kb3dzLiBUaGVzZSBjYW4gZ2V0IGRpZmZlcmVudCBWS19PRU1fKgorICAgIC8vIGNv
ZGVzIGRlcGVuZGluZyBvbiBhY3RpdmUga2V5Ym9hcmQgbGF5b3V0LCBhbmQgd2UgZG9uJ3QgY3Vy
cmVudGx5IGltcGxlbWVudCB0aGlzIHF1aXJrIG9uIE1hYyBPUyBYLgogICAgIGludCBjb2RlID0g
d2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7CiAgICAgaWYgKGNvZGUp
CiAgICAgICAgIHJldHVybiBjb2RlOwogCisgICAgLy8gU29tZSBmdW5jdGlvbiBrZXlzIGhhdmUg
a25vd24gImNoYXJhY3RlciBjb2RlIiBmcm9tIFVuaWNvZGUgcHJpdmF0ZSB1c2UgYXJlYSBnZW5l
cmF0ZWQgYnkgQXBwS2l0LCBidXQgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZS4KICAgICBOU1N0
cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwogICAgIGlmIChb
cyBsZW5ndGhdICE9IDEpCiAgICAgICAgIHJldHVybiAwOwo=
</data>
<flag name="review"
          id="35447"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52082</attachid>
            <date>2010-03-30 14:18:01 -0700</date>
            <delta_ts>2010-03-30 14:25:58 -0700</delta_ts>
            <desc>regression tests... who would believe?</desc>
            <filename>KeyCode2.txt</filename>
            <type>text/plain</type>
            <size>6501</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2ODA3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMzAgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjE2
CisgICAgICAgIER2b3Jhay1Rd2VydHkga2V5Ym9hcmQgbGF5b3V0IGdpdmVzIHVuZXhwZWN0ZWQg
cmVzdWx0cyBpbiBqYXZhc2NyaXB0IGtleWRvd24KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3OTcKKyAgICAgICAgRm9yIG5vbi1Sb21hbiBsYXlv
dXRzLCBrZXlkb3duIEV2ZW50LmtleUNvZGUgaXMgYWx3YXlzIDAKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVu
dFNlbmRpbmdDb250cm9sbGVyIGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6
IEdlbmVyYXRlIGEgY29ycmVjdCBrZXlDb2RlCisgICAgICAgIGZvciBrZXlzIHVzZWQgaW4gdGVz
dHMgKHdlIHVzZWQgdG8gYWx3YXlzIHBhc3MgMCBmb3IgJ0EnKS4KKwogMjAxMC0wMy0zMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDU2NzI1KQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTU0NiwzMyArNTQ2LDQzIEBAICsgKHZvaWQpY2xlYXJTYXZlZEV2ZW50cwog
LSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJT
Y3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWtleUxv
Y2F0aW9uCiB7CiAgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAg
IHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwogICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CiAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xl
ZnRBcnJvd0Z1bmN0aW9uS2V5OwogICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
QjsKICAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJv
dyJdKSB7CiAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktl
eTsKICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CiAgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgewogICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CiAgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDdFOwogICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJkb3duQXJyb3ciXSkgewogICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3du
QXJyb3dGdW5jdGlvbktleTsKICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7
CiAgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7
CiAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OwogICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKICAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewogICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwogICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3OTsKICAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
aG9tZSJdKSB7CiAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsK
ICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7CiAgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CiAgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwogICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHg3NzsKICAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVs
ZXRlIl0pIHsKICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4N2Y7CiAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDc1OwogICAgIH0KIAogICAgIC8vIENvbXBhcmUgdGhlIGlu
cHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9N
IHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgpAQCAtNTgxLDkgKzU5MSw1OSBAQCAtICh2b2lk
KWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAgICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkg
ewogICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0g
MSk7CiAgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBr
ZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0g
MHg3NjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA5
OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29k
ZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3
OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAx
Njoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNv
ZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0
RjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlz
IHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI3Il0pCisgICAgICAgIGtleUNvZGUgPSAweDFB
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiNSJdKQorICAgICAg
ICBrZXlDb2RlID0gMHgxNzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIjkiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MTk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCIwIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFEOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgwMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJkIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsK
KwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudENoYXJh
Y3RlcjsKIAogICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKQEAgLTYwOSw3ICs2NjksNyBAQCAt
ICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
CiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGtleUNvZGU6MF07CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNv
ZGVdOwogCiAgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVy
XSBrZXlEb3duOmV2ZW50XTsKIApAQCAtNjIyLDcgKzY4Miw3IEBAIC0gKHZvaWQpa2V5RG93bjoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
cnM6ZXZlbnRDaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTow
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CiAKICAgICBbW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsK
IH0K
</data>
<flag name="review"
          id="35471"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>