<?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>79601</bug_id>
          
          <creation_ts>2012-02-26 01:15:41 -0800</creation_ts>
          <short_desc>[EFL] [DRT] Implement scheduleAsynchronousKeyDown.</short_desc>
          <delta_ts>2012-03-13 08:41:29 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565134</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-02-26 01:15:41 -0800</bug_when>
    <thetext>EFL port DRT doesn&apos;t support scheduleAsynchronousKeyDown api.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565140</commentid>
    <comment_count>1</comment_count>
      <attachid>128912</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-02-26 01:57:03 -0800</bug_when>
    <thetext>Created attachment 128912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565191</commentid>
    <comment_count>2</comment_count>
      <attachid>128912</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-26 13:25:20 -0800</bug_when>
    <thetext>Comment on attachment 128912
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:109
&gt; +typedef struct {
&gt; +    EvasKeyModifier modifiers;
&gt; +    const char* keyName;
&gt; +} KeyEventInfo;

This is C++, declaring the struct with &quot;struct KeyEventInfo&quot; works just fine.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:409
&gt; +static KeyEventInfo* createKeyEventInfo(JSContextRef context, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)

I&apos;d rather have this function return a PassOwnPtr so you don&apos;t need to worry about manual memory handling.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:428
&gt; +    KeyEventInfo* keyEventInfo = static_cast&lt;KeyEventInfo*&gt;(malloc(sizeof(KeyEventInfo)));
&gt; +    if (!keyEventInfo)
&gt; +        return 0;

Please don&apos;t use malloc in C++ code unless there&apos;s no other option; using &quot;new&quot; also brings the benefit of not having to check for its return, as it never returns NULL.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:431
&gt;      if (argumentCount &gt;= 2)
&gt; -        setEvasModifiers(evas, modifiersFromJSValue(context, arguments[1]));
&gt; +        keyEventInfo-&gt;modifiers = modifiersFromJSValue(context, arguments[1]);

You need to set &apos;modifiers&apos; if argumentCount &lt; 2 too, otherwise it&apos;ll have a random value.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:446
&gt; +    if (evas) {

The code currently doesn&apos;t check for that, and evas_object_evas_get() shouln&apos;t return NULL in normal conditions. I&apos;d replace the checks for keyEventInfo and evas with an ASSERT.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:545
&gt; +    return FALSE;

You shouldn&apos;t use FALSE in C++ code, false exits for the same purpose. In this case, it&apos;s better to return ECORE_CALLBACK_CANCEL to be explicit.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:551
&gt; +    if (keyEventInfo)

You&apos;re not checking if it&apos;s not 0 in keyDownCallback, either check if there too or remove the check here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565246</commentid>
    <comment_count>3</comment_count>
      <attachid>128912</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-26 18:09:50 -0800</bug_when>
    <thetext>Comment on attachment 128912
Patch

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

By the way, can&apos;t this patch remove skipped test cases? If so, you need to update Skipped file.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:445
&gt; +        return;

It looks it is better to add an empty line to here.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:460
&gt; +    free(keyEventInfo);

When you change malloc with new. You have to change free() with delete as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573771</commentid>
    <comment_count>4</comment_count>
      <attachid>130807</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-03-08 04:59:45 -0800</bug_when>
    <thetext>Created attachment 130807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573774</commentid>
    <comment_count>5</comment_count>
      <attachid>128912</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-03-08 05:08:40 -0800</bug_when>
    <thetext>Comment on attachment 128912
Patch

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

Thanks for comments :)

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:109
&gt;&gt; +} KeyEventInfo;
&gt; 
&gt; This is C++, declaring the struct with &quot;struct KeyEventInfo&quot; works just fine.

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:409
&gt;&gt; +static KeyEventInfo* createKeyEventInfo(JSContextRef context, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
&gt; 
&gt; I&apos;d rather have this function return a PassOwnPtr so you don&apos;t need to worry about manual memory handling.

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:428
&gt;&gt; +        return 0;
&gt; 
&gt; Please don&apos;t use malloc in C++ code unless there&apos;s no other option; using &quot;new&quot; also brings the benefit of not having to check for its return, as it never returns NULL.

Replaced it to &apos;new&apos;.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:431
&gt;&gt; +        keyEventInfo-&gt;modifiers = modifiersFromJSValue(context, arguments[1]);
&gt; 
&gt; You need to set &apos;modifiers&apos; if argumentCount &lt; 2 too, otherwise it&apos;ll have a random value.

Initialized it with EvasKeyModifierNone.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:446
&gt;&gt; +    if (evas) {
&gt; 
&gt; The code currently doesn&apos;t check for that, and evas_object_evas_get() shouln&apos;t return NULL in normal conditions. I&apos;d replace the checks for keyEventInfo and evas with an ASSERT.

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:460
&gt;&gt; +    free(keyEventInfo);
&gt; 
&gt; When you change malloc with new. You have to change free() with delete as well.

Replaced it to OwnPtr. So we don&apos;t need to free manually.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:545
&gt;&gt; +    return FALSE;
&gt; 
&gt; You shouldn&apos;t use FALSE in C++ code, false exits for the same purpose. In this case, it&apos;s better to return ECORE_CALLBACK_CANCEL to be explicit.

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:551
&gt;&gt; +    if (keyEventInfo)
&gt; 
&gt; You&apos;re not checking if it&apos;s not 0 in keyDownCallback, either check if there too or remove the check here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574413</commentid>
    <comment_count>6</comment_count>
      <attachid>130807</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-08 17:16:10 -0800</bug_when>
    <thetext>Comment on attachment 130807
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:540
&gt; +static Eina_Bool sendAsynchronousKeyDown(void* userData)

We need to use standard boolean instead of Eina_Bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574437</commentid>
    <comment_count>7</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-03-08 17:49:49 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 130807 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130807&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:540
&gt; &gt; +static Eina_Bool sendAsynchronousKeyDown(void* userData)
&gt; 
&gt; We need to use standard boolean instead of Eina_Bool.

Do you mean we should replace all Eina_Bool to bool that has been used?
sendClick has also used Eina_Bool in the same file. There are so many places using Eina_Bool, too. I just hope to make a consistence. 
In my opinion, using Eina_Bool is proper here. Because sendClick &amp; sendAsynchronousKeydown are called by EFL, so we need to meet EFL&apos;s interface.
For such reasons, GTK port also uses its own type, gboolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574464</commentid>
    <comment_count>8</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-08 18:29:34 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 130807 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130807&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:540
&gt; &gt; &gt; +static Eina_Bool sendAsynchronousKeyDown(void* userData)
&gt; &gt; 
&gt; &gt; We need to use standard boolean instead of Eina_Bool.
&gt; 
&gt; Do you mean we should replace all Eina_Bool to bool that has been used?

Please let&apos;s not have this discussion again for the 38213921th time :-(

This is a minor issue that&apos;s not really related to this patch; I think we can just leave it as is and not worry about this for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574487</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-08 19:01:06 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (From update of attachment 130807 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130807&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:540
&gt; &gt; &gt; &gt; +static Eina_Bool sendAsynchronousKeyDown(void* userData)
&gt; &gt; &gt; 
&gt; &gt; &gt; We need to use standard boolean instead of Eina_Bool.
&gt; &gt; 
&gt; &gt; Do you mean we should replace all Eina_Bool to bool that has been used?
&gt; 
&gt; Please let&apos;s not have this discussion again for the 38213921th time :-(
&gt; 
&gt; This is a minor issue that&apos;s not really related to this patch; I think we can just leave it as is and not worry about this for now.

I don&apos;t want to file bugs related to coding style in future again. So, IMHO, we need to review coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574489</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-08 19:04:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 130807 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130807&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:540
&gt; &gt; &gt; +static Eina_Bool sendAsynchronousKeyDown(void* userData)
&gt; &gt; 
&gt; &gt; We need to use standard boolean instead of Eina_Bool.
&gt; 
&gt; Do you mean we should replace all Eina_Bool to bool that has been used?
&gt; sendClick has also used Eina_Bool in the same file. There are so many places using Eina_Bool, too. I just hope to make a consistence. 
&gt; In my opinion, using Eina_Bool is proper here. Because sendClick &amp; sendAsynchronousKeydown are called by EFL, so we need to meet EFL&apos;s interface.
&gt; For such reasons, GTK port also uses its own type, gboolean.

Anyway, let&apos;s do not discuss coding style in here anymore. I&apos;m ok for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574905</commentid>
    <comment_count>11</comment_count>
      <attachid>130807</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-09 08:33:47 -0800</bug_when>
    <thetext>Comment on attachment 130807
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:463
&gt; +    OwnPtr&lt;KeyEventInfo&gt; keyEventInfo = createKeyEventInfo(context, argumentCount, arguments, exception);

This will need the adoptPtr(), see bellow.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:464
&gt; +    sendKeyDown(evas_object_evas_get(browser-&gt;mainFrame()), keyEventInfo.release());

This should be keyEventInfo.get()

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:543
&gt; +    sendKeyDown(evas_object_evas_get(browser-&gt;mainFrame()), keyEventInfo.release());

This should be keyEventInfo.get().

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:550
&gt; +    OwnPtr&lt;KeyEventInfo&gt; keyEventInfo = createKeyEventInfo(context, argumentCount, arguments, exception);
&gt; +    ecore_idler_add(sendAsynchronousKeyDown, static_cast&lt;void*&gt;(keyEventInfo.leakPtr()));

Churn =( I think it makes more sense to have createKeyEventInfo return a normal pointer, you&apos;re essentially not using this OwnPtr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574976</commentid>
    <comment_count>12</comment_count>
      <attachid>131052</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-03-09 10:10:48 -0800</bug_when>
    <thetext>Created attachment 131052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574978</commentid>
    <comment_count>13</comment_count>
      <attachid>130807</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-03-09 10:12:35 -0800</bug_when>
    <thetext>Comment on attachment 130807
Patch

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

Thank you for the review! :)

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:463
&gt;&gt; +    OwnPtr&lt;KeyEventInfo&gt; keyEventInfo = createKeyEventInfo(context, argumentCount, arguments, exception);
&gt; 
&gt; This will need the adoptPtr(), see bellow.

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:464
&gt;&gt; +    sendKeyDown(evas_object_evas_get(browser-&gt;mainFrame()), keyEventInfo.release());
&gt; 
&gt; This should be keyEventInfo.get()

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:543
&gt;&gt; +    sendKeyDown(evas_object_evas_get(browser-&gt;mainFrame()), keyEventInfo.release());
&gt; 
&gt; This should be keyEventInfo.get().

Done.

&gt;&gt; Tools/DumpRenderTree/efl/EventSender.cpp:550
&gt;&gt; +    ecore_idler_add(sendAsynchronousKeyDown, static_cast&lt;void*&gt;(keyEventInfo.leakPtr()));
&gt; 
&gt; Churn =( I think it makes more sense to have createKeyEventInfo return a normal pointer, you&apos;re essentially not using this OwnPtr here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577353</commentid>
    <comment_count>14</comment_count>
      <attachid>131052</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 08:41:07 -0700</bug_when>
    <thetext>Comment on attachment 131052
Patch

Clearing flags on attachment: 131052

Committed r110568: &lt;http://trac.webkit.org/changeset/110568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577354</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 08:41:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128912</attachid>
            <date>2012-02-26 01:57:03 -0800</date>
            <delta_ts>2012-03-08 05:08:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79601-20120226185701.patch</filename>
            <type>text/plain</type>
            <size>10043</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNTc2MjI0ZmY4
ZTZhNzMzZTI1NGI0NzdjODQ4ZGJhYTIxZDNiOTI1MC4uYzNlOTE1OWVlZTEzNTUyYTFiMTI3YmUw
NDk2Y2NjMTc5ZDI3MTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAyLTI2ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBb
RUZMXVtEUlRdIEltcGxlbWVudCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTYwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IEFQSSB0
byBkZWxpdmVyIGFsbCBtdXRhdGlvbnMgZXhwbGljaXRseS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OmRlbGl2ZXJBbGxNdXRhdGlvbnNJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6CisKIDIwMTItMDIt
MjQgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgc2V0VmFsdWVGb3JVc2VyIGFuZCBzZXRBdXRvZmls
bGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggZmQzZDZiNTBiODc4OGYzMGNkN2Jh
NDEwYzgyZDg5Y2ZhNGE3NDdiYi4uY2M3NWY1ZGNmMjZlZWE5MjM1MzZlMDAzMjc5OTQxNmJiNmY5
MTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSA8UHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8UmVuZGVyVHJlZUFzVGV4dC5oPgogI2lu
Y2x1ZGUgPFNldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViS2l0TXV0YXRpb25PYnNlcnZlci5oPgog
I2luY2x1ZGUgPGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPGhpc3Rvcnkv
SGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRlIDx3b3JrZXJzL1dvcmtlclRocmVhZC5oPgpAQCAtNDA1
LDMgKzQwNiwxMCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVtcENvbmZpZ3Vy
YXRpb25Gb3JWaWV3cG9ydChFdmFzX09iamVjdCogZXdrVmlldwogICAgIHJlc3RyaWN0U2NhbGVG
YWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMpOwogICAgIGZw
cmludGYoc3Rkb3V0LCAidmlld3BvcnQgc2l6ZSAlZHglZCBzY2FsZSAlZiB3aXRoIGxpbWl0cyBb
JWYsICVmXSBhbmQgdXNlclNjYWxhYmxlICVmXG4iLCBhdHRyaWJ1dGVzLmxheW91dFNpemUud2lk
dGgoKSwgYXR0cmlidXRlcy5sYXlvdXRTaXplLmhlaWdodCgpLCBhdHRyaWJ1dGVzLmluaXRpYWxT
Y2FsZSwgYXR0cmlidXRlcy5taW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWF4aW11bVNjYWxlLCBh
dHRyaWJ1dGVzLnVzZXJTY2FsYWJsZSk7CiB9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQoreworI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisgICAgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11
dGF0aW9ucygpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCmluZGV4IDk1MGE3OGQ2
N2FlMjJkMDFlMWM1MDdmN2IwODJiYTI0Y2RkYTY3YzcuLjdmZmMzMzU4MzhiMzZhOWE3M2E3NmYy
OTkwZWEyZDRkMTYyZGZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCkBAIC03OSw2ICs3OSw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoYm9v
bCk7CiAKICAgICBzdGF0aWMgdm9pZCBkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBpbnQgZGV2aWNlRFBJLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBk
ZXZpY2VTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBhdmFpbGFibGVTaXplKTsKKworICAg
IHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxNdXRhdGlvbnNJZk5lY2Vzc2FyeSgpOwogfTsKIAogI2Vu
ZGlmIC8vIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbF9oCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTMwN2MzM2YxNjA4MTk1YmVjMzQ1ODQ2Y2Q5
NTNkOGE4NGM0Nzk2OS4uODliODQ5YTBhYzNlNzNmODM3ZjRlNDk0ZTI4NTQ1ZjdlZDliZDliMCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTAyLTI2ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNv
bT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCBzY2hlZHVsZUFzeW5jaHJvbm91c0tl
eURvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
dHJhY3RlZCBzaGFyZWFibGUgY29kZSBmcm9tIGtleURvd25DYWxsYmFjayBhbmQgdGhlbiBhZGRl
ZCBjcmVhdGVLZXlFdmVudEluZm8uCisgICAgICAgIGNyZWF0ZUtleUV2ZW50SW5mbyBjcmVhdGVz
IGEgbmV3IHN0cnVjdHVyZSBLZXlFdmVudEluZm8gdGhhdCBoYXMga2V5TmFtZSBhbmQgbW9kaWZp
ZXJzCisgICAgICAgIGFuZCBpcyB0YWtlbiBvdmVyIHRvIHNlbmRLZXlEb3duLgorICAgICAgICBB
ZGRlZCBzZW5kS2V5RG93biBhbmQgc2VuZEFzeW5jaHJvbm91c0tleURvd24gdG8gZXZhbHVhdGUg
a2V5RG93biBldmVudCBkaXJlY3RseQorICAgICAgICBhbmQgYXN5bmNocm9ub3VzbHkuIEV2ZW50
dWFsbHksIHNlbmRBc3luY2hyb25vdXNLZXlEb3duIGNhbGxzIHNlbmRLZXlEb3duLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKGNyZWF0
ZUtleUV2ZW50SW5mbyk6CisgICAgICAgIChzZW5kS2V5RG93bik6CisgICAgICAgIChrZXlEb3du
Q2FsbGJhY2spOgorICAgICAgICAoc2VuZEFzeW5jaHJvbm91c0tleURvd24pOgorICAgICAgICAo
c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2spOgorCiAyMDEyLTAyLTI1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ2hhbmdlIEJ1
aWxkIGJvdCB3aXRoIEJ1aWxkQW5kVGVzdCBib3QgZm9yIEVGTCBwb3J0LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKaW5kZXggOTNmYWZiOWNkYThmZmI5NGNlYzQyMGYy
Zjc0NDJiMWFkNDEwMzk1Yi4uZTg3NGIzOTJhN2NlMmQxMmQ3NDgxODk3YTM1ODcwNGE4MmFhMWM4
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCkBAIC00LDcgKzQs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBQ
cm9GVVNJT04gRW1iZWRkZWQgU3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMyw2ICsxMDMsMTEgQEAg
ZW51bSBab29tRXZlbnQgewogICAgIFpvb21PdXQKIH07CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAg
ICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIGtleU5hbWU7Cit9
IEtleUV2ZW50SW5mbzsKKwogc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFz
LCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBt
b2RpZmllck5hbWVzW10gPSB7ICJDb250cm9sIiwgIlNoaWZ0IiwgIkFsdCIsICJTdXBlciIgfTsK
QEAgLTQwMSwxNCArNDA2LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBrZXlOYW1lRnJvbUpTVmFs
dWUoSlNTdHJpbmdSZWYgY2hhcmFjdGVyKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgSlNW
YWx1ZVJlZiBrZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3Rh
dGljIEtleUV2ZW50SW5mbyogY3JlYXRlS2V5RXZlbnRJbmZvKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0gZXdrX2ZyYW1l
X3ZpZXdfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBpZiAoIWV3a19mcmFt
ZV92aWV3X2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpCisgICAgICAgIHJldHVybiAwOwogCiAg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gaGFuZGxlIGxvY2F0
aW9uIGFyZ3VtZW50LgogICAgIGludCBsb2NhdGlvbiA9IERvbUtleUxvY2F0aW9uU3RhbmRhcmQ7
CkBAIC00MTcsMjQgKzQyMSw0OSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBrZXlEb3duQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKUwogCiAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNoYXJhY3RlcihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIGlmIChleGNlcHRpb24g
JiYgKmV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworICAgICAgICByZXR1cm4gMDsKKworICAgIEtleUV2ZW50SW5mbyoga2V5RXZlbnRJbmZv
ID0gc3RhdGljX2Nhc3Q8S2V5RXZlbnRJbmZvKj4obWFsbG9jKHNpemVvZihLZXlFdmVudEluZm8p
KSk7CisgICAgaWYgKCFrZXlFdmVudEluZm8pCisgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8g
c2VuZCB0aGUgZXZlbnQKLSAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQodmll
dyk7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPj0gMikKLSAgICAgICAgc2V0RXZhc01vZGlmaWVy
cyhldmFzLCBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250ZXh0LCBhcmd1bWVudHNbMV0pKTsKKyAg
ICAgICAga2V5RXZlbnRJbmZvLT5tb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250
ZXh0LCBhcmd1bWVudHNbMV0pOwogCiAgICAgY29uc3QgQ1N0cmluZyBjQ2hhcmFjdGVyID0gY2hh
cmFjdGVyLmdldCgpLT51c3RyaW5nKCkudXRmOCgpOwogICAgIGNvbnN0IGNoYXIqIGtleU5hbWUg
PSAobG9jYXRpb24gPT0gRG9tS2V5TG9jYXRpb25OdW1wYWQpID8ga2V5UGFkTmFtZUZyb21KU1Zh
bHVlKGNoYXJhY3Rlci5nZXQoKSkgOiBrZXlOYW1lRnJvbUpTVmFsdWUoY2hhcmFjdGVyLmdldCgp
KTsKLQogICAgIGlmICgha2V5TmFtZSkKICAgICAgICAga2V5TmFtZSA9IGNDaGFyYWN0ZXIuZGF0
YSgpOworICAgIGtleUV2ZW50SW5mby0+a2V5TmFtZSA9IGtleU5hbWU7CiAKLSAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKGJyb3dzZXItPm1haW5GcmFtZSgpKTsKLSAg
ICBldmFzX2V2ZW50X2ZlZWRfa2V5X2Rvd24oZXZhcywga2V5TmFtZSwga2V5TmFtZSwga2V5TmFt
ZSwgMCwgMCwgMCk7Ci0gICAgZXZhc19ldmVudF9mZWVkX2tleV91cChldmFzLCBrZXlOYW1lLCBr
ZXlOYW1lLCBrZXlOYW1lLCAwLCAxLCAwKTsKKyAgICByZXR1cm4ga2V5RXZlbnRJbmZvOworfQog
Ci0gICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKK3N0YXRp
YyB2b2lkIHNlbmRLZXlEb3duKEV2YXMqIGV2YXMsIEtleUV2ZW50SW5mbyoga2V5RXZlbnRJbmZv
KQoreworICAgIGlmICgha2V5RXZlbnRJbmZvKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2
YXMpIHsKKyAgICAgICAgY29uc3QgY2hhcioga2V5TmFtZSA9IGtleUV2ZW50SW5mby0+a2V5TmFt
ZTsKKyAgICAgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IGtleUV2ZW50SW5mby0+bW9k
aWZpZXJzOworCisgICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bGF5b3V0RnJhbWUo
YnJvd3Nlci0+bWFpbkZyYW1lKCkpOworCisgICAgICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywg
bW9kaWZpZXJzKTsKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX2tleV9kb3duKGV2YXMsIGtleU5h
bWUsIGtleU5hbWUsIGtleU5hbWUsIDAsIDAsIDApOworICAgICAgICBldmFzX2V2ZW50X2ZlZWRf
a2V5X3VwKGV2YXMsIGtleU5hbWUsIGtleU5hbWUsIGtleU5hbWUsIDAsIDEsIDApOworICAgICAg
ICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlNb2RpZmllck5vbmUpOworCisgICAgICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZGVsaXZlckFsbE11dGF0aW9uc0lmTmVjZXNzYXJ5
KCk7CisgICAgfQorCisgICAgZnJlZShrZXlFdmVudEluZm8pOworfQorCitzdGF0aWMgSlNWYWx1
ZVJlZiBrZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAg
IEtleUV2ZW50SW5mbyoga2V5RXZlbnRJbmZvID0gY3JlYXRlS2V5RXZlbnRJbmZvKGNvbnRleHQs
IGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKTsKKyAgICBzZW5kS2V5RG93bihl
dmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIGtleUV2ZW50SW5mbyk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CkBAIC01MTAs
NiArNTM5LDIxIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHpvb21QYWdlT3V0Q2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgRWluYV9Cb29sIHNlbmRBc3luY2hy
b25vdXNLZXlEb3duKHZvaWQqIHVzZXJEYXRhKQoreworICAgIHNlbmRLZXlEb3duKGV2YXNfb2Jq
ZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgc3RhdGljX2Nhc3Q8S2V5RXZlbnRJ
bmZvKj4odXNlckRhdGEpKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBLZXlFdmVudEluZm8qIGtleUV2ZW50SW5mbyA9IGNyZWF0ZUtl
eUV2ZW50SW5mbyhjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbik7
CisgICAgaWYgKGtleUV2ZW50SW5mbykKKyAgICAgICAgZWNvcmVfaWRsZXJfYWRkKHNlbmRBc3lu
Y2hyb25vdXNLZXlEb3duLCBzdGF0aWNfY2FzdDx2b2lkKj4oa2V5RXZlbnRJbmZvKSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0
YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnki
LCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VT
Y3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTUx
OCw2ICs1NjIsNyBAQCBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9
IHsKICAgICB7ICJtb3VzZU1vdmVUbyIsIG1vdXNlTW92ZVRvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICB7ICJrZXlEb3duIiwga2V5RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAic2NoZWR1bGVB
c3luY2hyb25vdXNDbGljayIsIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2tDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgIHsgInNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biIsIHNjaGVkdWxlQXN5bmNo
cm9ub3VzS2V5RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAic2NhbGVQYWdlQnkiLCBzY2Fs
ZVBhZ2VCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAidGV4dFpvb21JbiIsIHRleHRab29tSW5D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgIHsgInRleHRab29tT3V0IiwgdGV4dFpvb21PdXRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130807</attachid>
            <date>2012-03-08 04:59:45 -0800</date>
            <delta_ts>2012-03-09 10:12:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79601-20120308215937.patch</filename>
            <type>text/plain</type>
            <size>11430</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMjUxMjkzNGU0
YjVkZjc1MGFlNzRiM2ViNzEzZDAxNGQ0NDFhZjUwZC4uYzU4M2E4NDIzNzY2NGZhZDZhNmFiYjRi
NzYxNGFkM2U5ZTRjYjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAzLTA4ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBb
RUZMXSBbRFJUXSBJbXBsZW1lbnQgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyBBUEkg
dG8gZGVsaXZlciBhbGwgbXV0YXRpb25zIGV4cGxpY2l0bHkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorCiAyMDEyLTAz
LTAyICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIEVuYWJsaW5nICdJbnNwZWN0IEVsZW1lbnQnIGluIEV3a19Db250ZXh0X01l
bnVfQWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggZmQzZDZiNTBiODc4OGYz
MGNkN2JhNDEwYzgyZDg5Y2ZhNGE3NDdiYi4uOGQxNGExODYxODQ0MjEyNzlhMzQxZmUyMzQyNGMy
NDA2NDBhOWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSA8UHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8UmVuZGVyVHJlZUFzVGV4dC5o
PgogI2luY2x1ZGUgPFNldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViS2l0TXV0YXRpb25PYnNlcnZl
ci5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPGhp
c3RvcnkvSGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRlIDx3b3JrZXJzL1dvcmtlclRocmVhZC5oPgpA
QCAtNDA1LDMgKzQwNiwxMCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVtcENv
bmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChFdmFzX09iamVjdCogZXdrVmlldwogICAgIHJlc3RyaWN0
U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMpOwog
ICAgIGZwcmludGYoc3Rkb3V0LCAidmlld3BvcnQgc2l6ZSAlZHglZCBzY2FsZSAlZiB3aXRoIGxp
bWl0cyBbJWYsICVmXSBhbmQgdXNlclNjYWxhYmxlICVmXG4iLCBhdHRyaWJ1dGVzLmxheW91dFNp
emUud2lkdGgoKSwgYXR0cmlidXRlcy5sYXlvdXRTaXplLmhlaWdodCgpLCBhdHRyaWJ1dGVzLmlu
aXRpYWxTY2FsZSwgYXR0cmlidXRlcy5taW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWF4aW11bVNj
YWxlLCBhdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZSk7CiB9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQoreworI2lmIEVOQUJM
RShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgV2ViQ29yZTo6V2ViS2l0TXV0YXRpb25PYnNlcnZl
cjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
CmluZGV4IDk1MGE3OGQ2N2FlMjJkMDFlMWM1MDdmN2IwODJiYTI0Y2RkYTY3YzcuLjdmZmMzMzU4
MzhiMzZhOWE3M2E3NmYyOTkwZWEyZDRkMTYyZGZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
CkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrU2Nyb2xs
YmFyc0VuYWJsZWQoYm9vbCk7CiAKICAgICBzdGF0aWMgdm9pZCBkdW1wQ29uZmlndXJhdGlvbkZv
clZpZXdwb3J0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgZGV2aWNlRFBJLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBkZXZpY2VTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBhdmFpbGFi
bGVTaXplKTsKKworICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxNdXRhdGlvbnNJZk5lY2Vzc2Fy
eSgpOwogfTsKIAogI2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbF9oCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJlYWRiMzU5Y2Qy
OGI3ZDhkNTQzZDJkOTkyYjQxODE3MDkyMzc0NC4uZDE1MTY5OWM4MzE3MWM2NWE1NjdhZjYwYWQ0
YzgwNmUxMTY4Zjk4MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAzLTA4ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2
YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXSBbRFJUXSBJbXBsZW1lbnQgc2NoZWR1
bGVBc3luY2hyb25vdXNLZXlEb3duLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzk2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHRyYWN0ZWQgc2hhcmVhYmxlIGNvZGUgZnJvbSBrZXlEb3duQ2FsbGJh
Y2sgYW5kIHRoZW4gYWRkZWQgY3JlYXRlS2V5RXZlbnRJbmZvLgorICAgICAgICBjcmVhdGVLZXlF
dmVudEluZm8gY3JlYXRlcyBhIG5ldyBzdHJ1Y3R1cmUgS2V5RXZlbnRJbmZvIHRoYXQgaGFzIGtl
eU5hbWUgYW5kIG1vZGlmaWVycworICAgICAgICBhbmQgaXMgdGFrZW4gb3ZlciB0byBzZW5kS2V5
RG93bi4KKyAgICAgICAgQWRkZWQgc2VuZEtleURvd24gYW5kIHNlbmRBc3luY2hyb25vdXNLZXlE
b3duIHRvIGV2YWx1YXRlIGtleURvd24gZXZlbnQgZGlyZWN0bHkKKyAgICAgICAgYW5kIGFzeW5j
aHJvbm91c2x5LiBFdmVudHVhbGx5LCBzZW5kQXN5bmNocm9ub3VzS2V5RG93biBjYWxscyBzZW5k
S2V5RG93bi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHA6
CisgICAgICAgIChLZXlFdmVudEluZm86OktleUV2ZW50SW5mbyk6CisgICAgICAgIChLZXlFdmVu
dEluZm8pOgorICAgICAgICAoY3JlYXRlS2V5RXZlbnRJbmZvKToKKyAgICAgICAgKHNlbmRLZXlE
b3duKToKKyAgICAgICAgKGtleURvd25DYWxsYmFjayk6CisgICAgICAgIChzZW5kQXN5bmNocm9u
b3VzS2V5RG93bik6CisgICAgICAgIChzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFj
ayk6CisKIDIwMTItMDMtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTAxMTUuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3YTRjYTMwZWJmNzczZmRiMTEw
YWUxN2M4MjMxZTRlZmExOGM0ZjE4Li4xMzBjODc4Njk4NDIyZjVlOGYyODQxOWU5ZWM5ZTc1ZTZk
MzQ5ODEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKQEAgLTQs
NyArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0IChDKSAy
MDExIFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAzLDYgKzEwMywx
NyBAQCBlbnVtIFpvb21FdmVudCB7CiAgICAgWm9vbU91dAogfTsKIAorc3RydWN0IEtleUV2ZW50
SW5mbyB7CisgICAgS2V5RXZlbnRJbmZvKGNvbnN0IGNoYXIqIGtleU5hbWUsIEV2YXNLZXlNb2Rp
ZmllciBtb2RpZmllcnMpCisgICAgICAgIDoga2V5TmFtZShrZXlOYW1lKQorICAgICAgICAsIG1v
ZGlmaWVycyhtb2RpZmllcnMpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGtleU5h
bWU7CisgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVyczsKK307CisKIHN0YXRpYyB2b2lkIHNl
dEV2YXNNb2RpZmllcnMoRXZhcyogZXZhcywgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKIHsK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogbW9kaWZpZXJOYW1lc1tdID0geyAiQ29udHJvbCIsICJT
aGlmdCIsICJBbHQiLCAiU3VwZXIiIH07CkBAIC0zOTksMTQgKzQxMCwxMyBAQCBzdGF0aWMgY29u
c3QgY2hhcioga2V5TmFtZUZyb21KU1ZhbHVlKEpTU3RyaW5nUmVmIGNoYXJhY3RlcikKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYga2V5RG93bkNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBQYXNzT3duUHRyPEtleUV2ZW50SW5mbz4gY3Jl
YXRlS2V5RXZlbnRJbmZvKEpTQ29udGV4dFJlZiBjb250ZXh0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0gZXdrX2ZyYW1lX3ZpZXdfZ2V0KGJyb3dzZXItPm1h
aW5GcmFtZSgpKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKyAgICBpZiAoIWV3a19mcmFtZV92aWV3X2dldChicm93c2VyLT5t
YWluRnJhbWUoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGFyZ3VtZW50
Q291bnQgPCAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gaGFuZGxlIGxvY2F0aW9uIGFyZ3Vt
ZW50LgogICAgIGludCBsb2NhdGlvbiA9IERvbUtleUxvY2F0aW9uU3RhbmRhcmQ7CkBAIC00MTUs
MjUgKzQyNSw0NCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBrZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKUwogCiAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGNoYXJhY3RlcihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2Vw
dGlvbikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIHNlbmQgdGhlIGV2ZW50Ci0gICAgRXZhcyog
ZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHZpZXcpOworICAgIEV2YXNLZXlNb2RpZmllciBt
b2RpZmllcnMgPSBFdmFzS2V5TW9kaWZpZXJOb25lOwogICAgIGlmIChhcmd1bWVudENvdW50ID49
IDIpCi0gICAgICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgbW9kaWZpZXJzRnJvbUpTVmFsdWUo
Y29udGV4dCwgYXJndW1lbnRzWzFdKSk7CisgICAgICAgIG1vZGlmaWVycyA9IG1vZGlmaWVyc0Zy
b21KU1ZhbHVlKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CiAKICAgICBjb25zdCBDU3RyaW5nIGND
aGFyYWN0ZXIgPSBjaGFyYWN0ZXIuZ2V0KCktPnVzdHJpbmcoKS51dGY4KCk7CiAgICAgY29uc3Qg
Y2hhcioga2V5TmFtZSA9IChsb2NhdGlvbiA9PSBEb21LZXlMb2NhdGlvbk51bXBhZCkgPyBrZXlQ
YWROYW1lRnJvbUpTVmFsdWUoY2hhcmFjdGVyLmdldCgpKSA6IGtleU5hbWVGcm9tSlNWYWx1ZShj
aGFyYWN0ZXIuZ2V0KCkpOwotCiAgICAgaWYgKCFrZXlOYW1lKQogICAgICAgICBrZXlOYW1lID0g
Y0NoYXJhY3Rlci5kYXRhKCk7CiAKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEtleUV2ZW50SW5m
byhrZXlOYW1lLCBtb2RpZmllcnMpKTsKK30KKworc3RhdGljIHZvaWQgc2VuZEtleURvd24oRXZh
cyogZXZhcywgUGFzc093blB0cjxLZXlFdmVudEluZm8+IGtleUV2ZW50SW5mbykKK3sKKyAgICBp
ZiAoIWtleUV2ZW50SW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhcioga2V5
TmFtZSA9IGtleUV2ZW50SW5mby0+a2V5TmFtZTsKKyAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZp
ZXJzID0ga2V5RXZlbnRJbmZvLT5tb2RpZmllcnM7CisKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmxheW91dEZyYW1lKGJyb3dzZXItPm1haW5GcmFtZSgpKTsKKworICAgIEFTU0VSVChl
dmFzKTsKKyAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIG1vZGlmaWVycyk7CiAgICAgZXZhc19l
dmVudF9mZWVkX2tleV9kb3duKGV2YXMsIGtleU5hbWUsIGtleU5hbWUsIGtleU5hbWUsIDAsIDAs
IDApOwogICAgIGV2YXNfZXZlbnRfZmVlZF9rZXlfdXAoZXZhcywga2V5TmFtZSwga2V5TmFtZSwg
a2V5TmFtZSwgMCwgMSwgMCk7Ci0KICAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlN
b2RpZmllck5vbmUpOwogCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyQWxs
TXV0YXRpb25zSWZOZWNlc3NhcnkoKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYga2V5RG93bkNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBPd25QdHI8S2V5RXZl
bnRJbmZvPiBrZXlFdmVudEluZm8gPSBjcmVhdGVLZXlFdmVudEluZm8oY29udGV4dCwgYXJndW1l
bnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24pOworICAgIHNlbmRLZXlEb3duKGV2YXNfb2Jq
ZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwga2V5RXZlbnRJbmZvLnJlbGVhc2Uo
KSk7CisKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAg
LTUwOCw2ICs1MzcsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgem9vbVBhZ2VPdXRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgc2VuZEFz
eW5jaHJvbm91c0tleURvd24odm9pZCogdXNlckRhdGEpCit7CisgICAgT3duUHRyPEtleUV2ZW50
SW5mbz4ga2V5RXZlbnRJbmZvID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8S2V5RXZlbnRJbmZvKj4o
dXNlckRhdGEpKTsKKyAgICBzZW5kS2V5RG93bihldmFzX29iamVjdF9ldmFzX2dldChicm93c2Vy
LT5tYWluRnJhbWUoKSksIGtleUV2ZW50SW5mby5yZWxlYXNlKCkpOworICAgIHJldHVybiBFQ09S
RV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNjaGVkdWxlQXN5bmNo
cm9ub3VzS2V5RG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBPd25QdHI8S2V5RXZlbnRJbmZvPiBrZXlFdmVudEluZm8gPSBjcmVhdGVLZXlFdmVudEluZm8o
Y29udGV4dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24pOworICAgIGVjb3Jl
X2lkbGVyX2FkZChzZW5kQXN5bmNocm9ub3VzS2V5RG93biwgc3RhdGljX2Nhc3Q8dm9pZCo+KGtl
eUV2ZW50SW5mby5sZWFrUHRyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1td
ID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9s
bEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTUxNiw2ICs1NTksNyBAQCBzdGF0aWMgSlNTdGF0aWNG
dW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZU1vdmVUbyIsIG1vdXNl
TW92ZVRvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJrZXlEb3duIiwga2V5RG93bkNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgeyAic2NoZWR1bGVBc3luY2hyb25vdXNDbGljayIsIHNjaGVkdWxlQXN5
bmNocm9ub3VzQ2xpY2tDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInNjaGVkdWxlQXN5bmNocm9u
b3VzS2V5RG93biIsIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgeyAic2NhbGVQYWdlQnkiLCBzY2FsZVBhZ2VCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
eyAidGV4dFpvb21JbiIsIHRleHRab29tSW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInRleHRa
b29tT3V0IiwgdGV4dFpvb21PdXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU3NzVmZjUzMzZk
MzNhN2M5ZDVlZmQxYjIwNTEzYWY0YWI1ZGRkZDIuLjU0YjA3Yjg0ZTQ3ZjY3ZGI2NWZiYzE3YTI1
ZGU4YmM1MjJmY2M1ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMy0wOCAgQ2hhbmdT
ZW9rIE9oICA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gW0RSVF0gSW1w
bGVtZW50IHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBmb2xsb3dpbmcgdHdvIHNraXBwZWQg
dGVzdHMuCisgICAgICAgIGZhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAor
ICAgICAgICBmYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0ZW5lci5odG1sCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wMy0wOCAgU2hpbnlhIEthd2FuYWth
ICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgPHNoYWRvdz4gc2hvdWxkIGJlIHJl
bmRlcmVkIGNvcnJlY3RseS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggOWNlNGRhMTdj
ODc3MWJmYzYyYjUwMTA2ZjI4NDk3YmI4MGNjYjdlOS4uNjY1N2VjYmQxZGFmODVkZjBlMTNlMTFh
YWU1YzdkYzhkZGE1ZmFiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTEyMjYsMTEg
KzEyMjYsNiBAQCBodHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkKICMgUGFzdGVCb2FyZDo6cGxhaW5U
ZXh0KCkgZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG5hbWVzLgogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctZmlsZXMtdG8tZWRpdGFibGUtZWxlbWVudC5odG1sCiAKLSMgRmFpbHMgYmVjYXVzZSBNdXRh
dGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlmaWVkIGF0IGVuZC1vZi10YXNrCi0jIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAotZmFzdC9tdXRhdGlvbi9lbmQt
b2YtdGFzay1kZWxpdmVyeS5odG1sCi1mYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0ZW5l
ci5odG1sCi0KICMgRmFpbHMgYmVjYXVzZSBvZiB0aGUgc2VjdXJpdHkgcG9saWN5IG9mIHRoZSB1
c2VyIGFnZW50PwogIyBodHRwOi8vd2Via2l0Lm9yZy9iLzc5NjA0CiBmYXN0L211dGF0aW9uL2Rh
dGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131052</attachid>
            <date>2012-03-09 10:10:48 -0800</date>
            <delta_ts>2012-03-13 08:41:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79601-20120310031046.patch</filename>
            <type>text/plain</type>
            <size>11373</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggOTQ0ZTM3ODdk
ZGYwZWI3NzA5MTdjMTVkMGZlNjM0ZThmNzdjNmI5Ni4uZTlkOTZmYWYyMzkwMzMwMmU1MjVlZDE0
NTNmZTEyODAzMzkxMjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAzLTA5ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBb
RUZMXSBbRFJUXSBJbXBsZW1lbnQgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyBBUEkg
dG8gZGVsaXZlciBhbGwgbXV0YXRpb25zIGV4cGxpY2l0bHkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorCiAyMDEyLTAz
LTA4ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbVGV4
bWFwXVtFRkxdIEltcGxlbWVudGF0aW9uIG9mIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
IGZvciBFRkwgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggZmQzZDZiNTBiODc4
OGYzMGNkN2JhNDEwYzgyZDg5Y2ZhNGE3NDdiYi4uOGQxNGExODYxODQ0MjEyNzlhMzQxZmUyMzQy
NGMyNDA2NDBhOWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSA8UHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8UmVuZGVyVHJlZUFzVGV4
dC5oPgogI2luY2x1ZGUgPFNldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViS2l0TXV0YXRpb25PYnNl
cnZlci5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUg
PGhpc3RvcnkvSGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRlIDx3b3JrZXJzL1dvcmtlclRocmVhZC5o
PgpAQCAtNDA1LDMgKzQwNiwxMCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVt
cENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChFdmFzX09iamVjdCogZXdrVmlldwogICAgIHJlc3Ry
aWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMp
OwogICAgIGZwcmludGYoc3Rkb3V0LCAidmlld3BvcnQgc2l6ZSAlZHglZCBzY2FsZSAlZiB3aXRo
IGxpbWl0cyBbJWYsICVmXSBhbmQgdXNlclNjYWxhYmxlICVmXG4iLCBhdHRyaWJ1dGVzLmxheW91
dFNpemUud2lkdGgoKSwgYXR0cmlidXRlcy5sYXlvdXRTaXplLmhlaWdodCgpLCBhdHRyaWJ1dGVz
LmluaXRpYWxTY2FsZSwgYXR0cmlidXRlcy5taW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWF4aW11
bVNjYWxlLCBhdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZSk7CiB9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQoreworI2lmIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgV2ViQ29yZTo6V2ViS2l0TXV0YXRpb25PYnNl
cnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oCmluZGV4IDk1MGE3OGQ2N2FlMjJkMDFlMWM1MDdmN2IwODJiYTI0Y2RkYTY3YzcuLjdmZmMz
MzU4MzhiMzZhOWE3M2E3NmYyOTkwZWEyZDRkMTYyZGZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrU2Ny
b2xsYmFyc0VuYWJsZWQoYm9vbCk7CiAKICAgICBzdGF0aWMgdm9pZCBkdW1wQ29uZmlndXJhdGlv
bkZvclZpZXdwb3J0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgZGV2aWNlRFBJLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBkZXZpY2VTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBhdmFp
bGFibGVTaXplKTsKKworICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxNdXRhdGlvbnNJZk5lY2Vz
c2FyeSgpOwogfTsKIAogI2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbF9oCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjM5OGIyNTJi
Mzg3MzVlODAzM2NiMjU1ZDhmNTkzMjhjYmYwYjkzMi4uZDJmZDRlMTUzODNkZTI0ZDJhNmZkZTFm
NTg0NzVkMDFhNjk1Yjg4NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAzLTA5ICBDaGFuZ1Nlb2sgT2ggIDxz
aGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXSBbRFJUXSBJbXBsZW1lbnQgc2No
ZWR1bGVBc3luY2hyb25vdXNLZXlEb3duLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgc2hhcmVhYmxlIGNvZGUgZnJvbSBrZXlEb3duQ2Fs
bGJhY2sgYW5kIHRoZW4gYWRkZWQgY3JlYXRlS2V5RXZlbnRJbmZvLgorICAgICAgICBjcmVhdGVL
ZXlFdmVudEluZm8gY3JlYXRlcyBhIG5ldyBzdHJ1Y3R1cmUgS2V5RXZlbnRJbmZvIHRoYXQgaGFz
IGtleU5hbWUgYW5kIG1vZGlmaWVycworICAgICAgICBhbmQgaXMgdGFrZW4gb3ZlciB0byBzZW5k
S2V5RG93bi4KKyAgICAgICAgQWRkZWQgc2VuZEtleURvd24gYW5kIHNlbmRBc3luY2hyb25vdXNL
ZXlEb3duIHRvIGV2YWx1YXRlIGtleURvd24gZXZlbnQgZGlyZWN0bHkKKyAgICAgICAgYW5kIGFz
eW5jaHJvbm91c2x5LiBFdmVudHVhbGx5LCBzZW5kQXN5bmNocm9ub3VzS2V5RG93biBjYWxscyBz
ZW5kS2V5RG93bi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5j
cHA6CisgICAgICAgIChLZXlFdmVudEluZm86OktleUV2ZW50SW5mbyk6CisgICAgICAgIChLZXlF
dmVudEluZm8pOgorICAgICAgICAoY3JlYXRlS2V5RXZlbnRJbmZvKToKKyAgICAgICAgKHNlbmRL
ZXlEb3duKToKKyAgICAgICAgKGtleURvd25DYWxsYmFjayk6CisgICAgICAgIChzZW5kQXN5bmNo
cm9ub3VzS2V5RG93bik6CisgICAgICAgIChzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxs
YmFjayk6CisKIDIwMTItMDMtMDkgIElvbnV0IEJpcnUgIDxpYmlydUBhcmNobGludXgub3JnPgog
CiAgICAgICAgIFtCVUlMRF0gdXNlIGRldGVjdGVkIHB5dGhvbiB0byBydW4gZ2VuZXJhdGUtZ3Rr
ZG9jCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3YTRjYTMw
ZWJmNzczZmRiMTEwYWUxN2M4MjMxZTRlZmExOGM0ZjE4Li41OTM0ZDRjN2Y1MGI2MGEyOTcwODlj
N2VlOGM0MmY1YzliYmVkYTMwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
RXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRl
ci5jcHAKQEAgLTQsNyArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICogQ29w
eXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1zCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTAzLDYgKzEwMywxNyBAQCBlbnVtIFpvb21FdmVudCB7CiAgICAgWm9vbU91dAogfTsKIAorc3Ry
dWN0IEtleUV2ZW50SW5mbyB7CisgICAgS2V5RXZlbnRJbmZvKGNvbnN0IGNoYXIqIGtleU5hbWUs
IEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMpCisgICAgICAgIDoga2V5TmFtZShrZXlOYW1lKQor
ICAgICAgICAsIG1vZGlmaWVycyhtb2RpZmllcnMpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IGNoYXIqIGtleU5hbWU7CisgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVyczsKK307CisKIHN0
YXRpYyB2b2lkIHNldEV2YXNNb2RpZmllcnMoRXZhcyogZXZhcywgRXZhc0tleU1vZGlmaWVyIG1v
ZGlmaWVycykKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogbW9kaWZpZXJOYW1lc1tdID0geyAi
Q29udHJvbCIsICJTaGlmdCIsICJBbHQiLCAiU3VwZXIiIH07CkBAIC0zOTksMTQgKzQxMCwxMyBA
QCBzdGF0aWMgY29uc3QgY2hhcioga2V5TmFtZUZyb21KU1ZhbHVlKEpTU3RyaW5nUmVmIGNoYXJh
Y3RlcikKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYga2V5RG93bkNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBLZXlFdmVudEluZm8qIGNy
ZWF0ZUtleUV2ZW50SW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKLSAgICBFdmFzX09iamVjdCogdmlldyA9IGV3a19mcmFtZV92aWV3X2dldChicm93c2VyLT5t
YWluRnJhbWUoKSk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisgICAgaWYgKCFld2tfZnJhbWVfdmlld19nZXQoYnJvd3Nlci0+
bWFpbkZyYW1lKCkpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChhcmd1bWVudENvdW50
IDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAg
ICAgICByZXR1cm4gMDsKIAogICAgIC8vIGhhbmRsZSBsb2NhdGlvbiBhcmd1bWVudC4KICAgICBp
bnQgbG9jYXRpb24gPSBEb21LZXlMb2NhdGlvblN0YW5kYXJkOwpAQCAtNDE1LDI1ICs0MjUsNDQg
QEAgc3RhdGljIEpTVmFsdWVSZWYga2V5RG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBjaGFyYWN0ZXIoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRz
WzBdLCBleGNlcHRpb24pKTsKICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICAvLyBzZW5kIHRoZSBldmVudAotICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVj
dF9ldmFzX2dldCh2aWV3KTsKKyAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gRXZhc0tl
eU1vZGlmaWVyTm9uZTsKICAgICBpZiAoYXJndW1lbnRDb3VudCA+PSAyKQotICAgICAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXMsIG1vZGlmaWVyc0Zyb21KU1ZhbHVlKGNvbnRleHQsIGFyZ3VtZW50
c1sxXSkpOworICAgICAgICBtb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250ZXh0
LCBhcmd1bWVudHNbMV0pOwogCiAgICAgY29uc3QgQ1N0cmluZyBjQ2hhcmFjdGVyID0gY2hhcmFj
dGVyLmdldCgpLT51c3RyaW5nKCkudXRmOCgpOwogICAgIGNvbnN0IGNoYXIqIGtleU5hbWUgPSAo
bG9jYXRpb24gPT0gRG9tS2V5TG9jYXRpb25OdW1wYWQpID8ga2V5UGFkTmFtZUZyb21KU1ZhbHVl
KGNoYXJhY3Rlci5nZXQoKSkgOiBrZXlOYW1lRnJvbUpTVmFsdWUoY2hhcmFjdGVyLmdldCgpKTsK
LQogICAgIGlmICgha2V5TmFtZSkKICAgICAgICAga2V5TmFtZSA9IGNDaGFyYWN0ZXIuZGF0YSgp
OwogCisgICAgcmV0dXJuIG5ldyBLZXlFdmVudEluZm8oa2V5TmFtZSwgbW9kaWZpZXJzKTsKK30K
Kworc3RhdGljIHZvaWQgc2VuZEtleURvd24oRXZhcyogZXZhcywgS2V5RXZlbnRJbmZvKiBrZXlF
dmVudEluZm8pCit7CisgICAgaWYgKCFrZXlFdmVudEluZm8pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbnN0IGNoYXIqIGtleU5hbWUgPSBrZXlFdmVudEluZm8tPmtleU5hbWU7CisgICAgRXZh
c0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IGtleUV2ZW50SW5mby0+bW9kaWZpZXJzOworCiAgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpsYXlvdXRGcmFtZShicm93c2VyLT5tYWluRnJhbWUo
KSk7CisKKyAgICBBU1NFUlQoZXZhcyk7CisgICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBtb2Rp
ZmllcnMpOwogICAgIGV2YXNfZXZlbnRfZmVlZF9rZXlfZG93bihldmFzLCBrZXlOYW1lLCBrZXlO
YW1lLCBrZXlOYW1lLCAwLCAwLCAwKTsKICAgICBldmFzX2V2ZW50X2ZlZWRfa2V5X3VwKGV2YXMs
IGtleU5hbWUsIGtleU5hbWUsIGtleU5hbWUsIDAsIDEsIDApOwotCiAgICAgc2V0RXZhc01vZGlm
aWVycyhldmFzLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKIAorICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6ZGVsaXZlckFsbE11dGF0aW9uc0lmTmVjZXNzYXJ5KCk7Cit9CisKK3N0YXRpYyBK
U1ZhbHVlUmVmIGtleURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgT3duUHRyPEtleUV2ZW50SW5mbz4ga2V5RXZlbnRJbmZvID0gYWRvcHRQdHIoY3JlYXRl
S2V5RXZlbnRJbmZvKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9u
KSk7CisgICAgc2VuZEtleURvd24oZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZy
YW1lKCkpLCBrZXlFdmVudEluZm8uZ2V0KCkpOworCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC01MDgsNiArNTM3LDIwIEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHpvb21QYWdlT3V0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQog
CitzdGF0aWMgRWluYV9Cb29sIHNlbmRBc3luY2hyb25vdXNLZXlEb3duKHZvaWQqIHVzZXJEYXRh
KQoreworICAgIE93blB0cjxLZXlFdmVudEluZm8+IGtleUV2ZW50SW5mbyA9IGFkb3B0UHRyKHN0
YXRpY19jYXN0PEtleUV2ZW50SW5mbyo+KHVzZXJEYXRhKSk7CisgICAgc2VuZEtleURvd24oZXZh
c19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBrZXlFdmVudEluZm8uZ2V0
KCkpOworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBLZXlFdmVudEluZm8qIGtleUV2ZW50SW5mbyA9IGNyZWF0
ZUtleUV2ZW50SW5mbyhjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlv
bik7CisgICAgZWNvcmVfaWRsZXJfYWRkKHNlbmRBc3luY2hyb25vdXNLZXlEb3duLCBzdGF0aWNf
Y2FzdDx2b2lkKj4oa2V5RXZlbnRJbmZvKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlv
bnNbXSA9IHsKICAgICB7ICJtb3VzZVNjcm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgeyAiY29udGludW91c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VT
Y3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC01MTYsNiArNTU5LDcgQEAgc3RhdGljIEpTU3Rh
dGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAibW91c2VNb3ZlVG8iLCBt
b3VzZU1vdmVUb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAia2V5RG93biIsIGtleURvd25DYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgIHsgInNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2siLCBzY2hlZHVs
ZUFzeW5jaHJvbm91c0NsaWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJzY2hlZHVsZUFzeW5j
aHJvbm91c0tleURvd24iLCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgIHsgInNjYWxlUGFnZUJ5Iiwgc2NhbGVQYWdlQnlDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgIHsgInRleHRab29tSW4iLCB0ZXh0Wm9vbUluQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJ0
ZXh0Wm9vbU91dCIsIHRleHRab29tT3V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYWQ0Y2Nk
MGY2NWE0MzExMDAxOWM5NzNkZWY2MmFlYjI5MzIzMTMxLi45ZTNhYjlkYzZmMTUyMDI2YWM0YjNl
MGY2MTVkNTM2OTcwMjJiOWYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDMtMDkgIENo
YW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFtFRkxdIFtEUlRd
IEltcGxlbWVudCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTYwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgZm9sbG93aW5nIHR3byBza2lw
cGVkIHRlc3RzLgorICAgICAgICBmYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0
bWwKKyAgICAgICAgZmFzdC9tdXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisKIDIwMTItMDMtMDkgIFN0ZXBoZW4gV2hp
dGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJl
dmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggZjc3NDZkNjVj
ZDBiZjhmMWY2NzAyYjMyMGM0ODVmNWYxMmIyYWRhZC4uNTZkMDgxNTFjZDE1MjY1YzkzNDk1MmE2
Yzk4NjIyMDdmZGYxMDE3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTEyMjksMTEg
KzEyMjksNiBAQCBodHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkKICMgUGFzdGVCb2FyZDo6cGxhaW5U
ZXh0KCkgZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG5hbWVzLgogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctZmlsZXMtdG8tZWRpdGFibGUtZWxlbWVudC5odG1sCiAKLSMgRmFpbHMgYmVjYXVzZSBNdXRh
dGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlmaWVkIGF0IGVuZC1vZi10YXNrCi0jIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAotZmFzdC9tdXRhdGlvbi9lbmQt
b2YtdGFzay1kZWxpdmVyeS5odG1sCi1mYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0ZW5l
ci5odG1sCi0KICMgRmFpbHMgYmVjYXVzZSBvZiB0aGUgc2VjdXJpdHkgcG9saWN5IG9mIHRoZSB1
c2VyIGFnZW50PwogIyBodHRwOi8vd2Via2l0Lm9yZy9iLzc5NjA0CiBmYXN0L211dGF0aW9uL2Rh
dGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>